# 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
```bash
npm 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.
```jsx
import { getHistory } from '@woocommerce/navigation';
render() {
return (
…
);
}
```
### 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 numbers.
| 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). |