woocommerce/packages/js/navigation
Sam Seay 04b74c1053
Upgrade to pnpm 7 (#34661)
* Remove -- -- from scripts that fixed issue in pnpm 6, fix a couple TS issues in sep packages
* Minor fixes to analyzer scripts and doco based on pnpm 7
* Add dompurify types to data package to avoid TS errors
* Remove pnpx in favor of pnpm exec
* Modify the code analyzer to respect pnpm version if present.
* Update instructions for running recursive lint, add comments to explain
2022-09-16 09:21:42 +12:00
..
changelog Upgrade to pnpm 7 (#34661) 2022-09-16 09:21:42 +12:00
src dev: refactor Homescreen component to use useQuery hook (#34183) 2022-08-04 16:57:53 +08:00
.eslintrc.js Add .eslintrc config to each packages 2022-03-29 16:08:07 +08:00
.gitignore Update JS packages changelogs (#33412) 2022-06-16 10:06:31 +12:00
.npmrc Moved WCA Packages 2022-03-18 14:25:26 -07:00
CHANGELOG.md Prepare Packages for Release (#33776) 2022-07-08 14:04:49 +12:00
PREVIOUS_CHANGELOG.md Update JS packages changelogs (#33412) 2022-06-16 10:06:31 +12:00
README.md Moved WCA Packages 2022-03-18 14:25:26 -07:00
babel.config.js Update dependencies and jest config to pass admin tests for pnpm 7 (#34428) 2022-08-31 12:06:51 +08:00
composer.json Changelogger: Fix PHPCS violations (#33664) 2022-07-07 08:54:48 +12:00
composer.lock Add PR numbers to changelog entries on code freeze process (#33627) 2022-06-28 11:15:39 -07:00
jest.config.json Prefixed Private JS Packages (#33218) 2022-05-31 15:42:00 -07:00
package.json Upgrade to pnpm 7 (#34661) 2022-09-16 09:21:42 +12:00
tsconfig-cjs.json Added EOF Newlines 2022-05-10 13:35:31 -07:00
tsconfig.json Add Typescript type declarations for js packages 2022-04-15 13:50:17 +08:00

README.md

Navigation

A collection of navigation-related functions for handling query parameter objects, serializing query parameters, updating query parameters, and triggering path changes.

Installation

Install the module

pnpm install @woocommerce/navigation --save

Usage

getHistory

A single history object used to perform path changes. This needs to be passed into ReactRouter to use the other path functions from this library.

import { getHistory } from '@woocommerce/navigation';

render() {
	return (
		<Router history={ getHistory() }>
			
		</Router>
	);
}

getPath() ⇒ String

Get the current path from history.

Returns: String - Current path.

getTimeRelatedQuery(query) ⇒ Object

Gets time related parameters from a query.

Returns: Object - Object containing the time related queries.

Param Type Description
query Object Query containing the parameters.

getIdsFromQuery(queryString) ⇒ Array

Get an array of IDs from a comma-separated query parameter.

Returns: Array - List of IDs converted to an array of unique integers.

Param Type Description
queryString string string value extracted from URL.

getNewPath(query, path, currentQuery) ⇒ String

Return a URL with set query parameters.

Returns: String - Updated URL merging query params into existing params.

Param Type Description
query Object object of params to be updated.
path String Relative path (defaults to current path).
currentQuery Object object of current query params (defaults to current querystring).

getQuery() ⇒ Object

Get the current query string, parsed into an object, from history.

Returns: Object - Current query object, defaults to empty object.

onQueryChange(param, path, query) ⇒ function

This function returns an event handler for the given param

Returns: function - A callback which will update param to the passed value when called.

Param Type Description
param string The parameter in the querystring which should be updated (ex page, per_page)
path string Relative path (defaults to current path).
query string object of current query params (defaults to current querystring).

updateQueryString(query, path, currentQuery)

Updates the query parameters of the current page.

Param Type Description
query Object object of params to be updated.
path String Relative path (defaults to current path).
currentQuery Object object of current query params (defaults to current querystring).

flattenFilters(filters) ⇒ Array

Collapse an array of filter values with subFilters into a 1-dimensional array.

Returns: Array - Flattened array of all filters.

Param Type Description
filters Array Set of filters with possible subfilters.

getActiveFiltersFromQuery(query, config) ⇒ Array.<activeFilters>

Given a query object, return an array of activeFilters, if any.

Returns: Array.<activeFilters> - - array of activeFilters

Param Type Description
query object query oject
config object config object

getDefaultOptionValue(config, options) ⇒ string | undefined

Get the default option's value from the configuration object for a given filter. The first option is used as default if no defaultOption is provided.

Returns: string | undefined - - the value of the default option.

Param Type Description
config object a filter config object.
options array select options.

getQueryFromActiveFilters(activeFilters, query, config) ⇒ object

Given activeFilters, create a new query object to update the url. Use previousFilters to Remove unused params.

Returns: object - - query object representing the new parameters

Param Type Description
activeFilters Array.<activeFilters> activeFilters shown in the UI
query object the current url query object
config object config object

getUrlKey(key, rule) ⇒ string

Get the url query key from the filter key and rule.

Returns: string - - url query key.

Param Type Description
key string filter key.
rule string filter rule.

activeFilter : Object

Describe activeFilter object.

Properties

Name Type Description
key string filter key.
[rule] string a modifying rule for a filter, eg 'includes' or 'is_not'.
value string filter value(s).