d613d2fde6
* Basic block construction * Register on PHP side * wc-active-filters script * Price utils * Refactor price slider so state reflects the query Moves some logic from the component to the block so that min and max price can change (via query) and be reflected by the price sliders. This allows the active filters block to change the query and have those new values reflected by the slider. * Fix type checking of numbers * Styles for filter block * Improved attribute helper for getting attribute taxonomy data from ID/taxonomy * Refactor attribute filter to use updateAttributeFilter helper * Disable checkboxes when loading to avoid multiple queries * Add todos - this is blocked * Remove checked state from Attribute Filter so it gets updated from the store (https://github.com/woocommerce/woocommerce-blocks/pull/1170) * isLoading check * active price filtering rendering * Block heading * Implement block options; chip display with clear button * Clear all should remove all attributes * Enable previews * Introduce a component to look up terms from slugs using collections (which are cached) * Correct all docblocks * activePriceFilters null return * renderRemovableListItem * Remove useMemo for hasFilters * Switch classnames notation * Ensure slug is array in removeAttributeFilterBySlug * null -> undefined return types for attributes * Remove fragment * Check we have a termObject in ActiveAttributeFilters * Refactor formatPriceRange return statements * Ensure query array index will exist * Only sort when adding a query * Remove aria-label with dupe text * hasFilters is function * Update useQueryStateByKey usage * More doc block fixes * Update getAttributeFromTaxonomy return and docblock * getAttributeFromID return/docblock |
||
---|---|---|
.. | ||
test | ||
README.md | ||
action-types.js | ||
actions.js | ||
constants.js | ||
controls.js | ||
index.js | ||
reducers.js | ||
resolvers.js | ||
selectors.js |
README.md
Collections Store.
To utilize this store you will import the COLLECTIONS_STORE_KEY in any module referencing it. Assuming @woocommerce/block-data
is registered as an external pointing to wc.wcBlocksData
you can import the key via:
import { COLLECTIONS_STORE_KEY } from '@woocommerce/block-data';
Actions
receiveCollection( namespace, resourceName, queryString, ids = [], items = [], replace = false )
This will return an action object for the given arguments used in dispatching the collection results to the store.
Note: You should rarely have to dispatch this action directly as it is used by the resolver for the
getCollection
selector.
argument | type | description |
---|---|---|
namespace |
string | The route namespace for the collection (eg. /wc/blocks ) |
resourceName |
string | The resource name for the collection (eg. products/attributes ) |
queryString |
string | An additional query string to add to the request for the collection. Note, collections are cached by the query string. (eg. '?order=ASC') |
ids |
array | If the collection route has placeholders for ids, you provide them via this argument in the order of how the placeholders appear in the route |
response |
Object | An object containing a items property with the collection items from the response (array), and a headers property that is matches the window.Headers interface containing the headers from the response. |
replace |
boolean | Whether or not to replace any existing items in the store for the given indexes (namespace, resourceName, queryString) if there are already values in the store |
Selectors
getCollection( namespace, resourceName, query = null, ids=[] )
This selector will return the collection for the given arguments. It has a sibling resolver, so if the selector has never been resolved, the resolver will make a request to the server for the collection and dispatch results to the store.
argument | type | description |
---|---|---|
namespace |
string | The route namespace for the collection (eg. /wc/blocks ) |
resourceName |
string | The resource name for the collection (eg. products/attributes ) |
query |
Object | The query arguments for the collection. Eg. { order: 'ASC', sortBy: Price } |
ids |
Array | If the collection route has placeholders for ids you provide the values for those placeholders in this array (in order). |
getCollectionHeader( namespace, resourceName, header, query = null, ids = [])
This selector will return a header from the collection response using the given arguments. It has a sibling resolver that will resolve getCollection
using the arguments if that has never been resolved.
If the collection has headers but not a matching header for the given header
argument, then undefined
will be returned.
If the collection does not have any matching headers for the given arguments, then null
is returned.
argument | type | description |
---|---|---|
namespace |
string | The route namespace for the collection (eg. /wc/blocks ) |
resourceName |
string | The resource name for the collection (eg. products/attributes ) |
header |
string | The header key for the header. |
query |
Object | The query arguments for the collection. Eg. { order: 'ASC', sortBy: Price } |
ids |
Array | If the collection route has placeholders for ids you provide the values for those placeholders in this array (in order). |