PhoenixKitEcommerce. Web. Components. FilterHelpers
(PhoenixKitEcommerce v0.5.0)
Copy Markdown
View Source
Shared helpers for storefront filter state management.
Used by both ShopCatalog and CatalogCategory LiveViews to:
- Load enabled filters and aggregate values
- Parse filter params from URL query string
- Build query opts for product listing
- Build URLs with filter params
Summary
Functions
Counts the number of active filter values (for mobile badge).
Builds a URL path with filter query params.
Converts active filter state into keyword opts for Shop.list_products_with_count/1.
Builds a query string from active filter state (e.g. "?price_min=10&price_max=100" or "").
Returns true if any filters are currently active.
Loads enabled filters and their aggregated values.
Parses URL query params into active filter state.
Toggles a value in a checkbox-type filter. Returns updated active_filters map.
Updates price range filter. Returns updated active_filters map.
Updates a text search filter. Returns updated active_filters map; a blank term removes the filter.
Functions
Counts the number of active filter values (for mobile badge).
Builds a URL path with filter query params.
Merges filter state into a clean query string, preserving page param only
when keep_page is true.
Converts active filter state into keyword opts for Shop.list_products_with_count/1.
Builds a query string from active filter state (e.g. "?price_min=10&price_max=100" or "").
Used to append filter params to navigation links so filter state persists across page transitions.
Returns true if any filters are currently active.
Loads enabled filters and their aggregated values.
Returns {filters, filter_values} tuple.
Options:
:category_uuid- Scope aggregation to a category by UUID:category- The%Category{}being viewed (itsstorefront_filtersoverrides the global filter config for:filters- seeShop.merge_storefront_filters/2);nilfor the global catalog page:language- Translates anattribute_set/metadata_optionfilter's label to that language's attribute-set display name (seeShop.get_enabled_storefront_filters/2), and picks the same language's facet-value labels in:filter_values(forwarded toShop.aggregate_filter_values/1as part ofopts)
Parses URL query params into active filter state.
Returns a map: %{"price" => %{min: Decimal, max: Decimal}, "vendor" => ["V1", "V2"], ...}
Toggles a value in a checkbox-type filter. Returns updated active_filters map.
Updates price range filter. Returns updated active_filters map.
Updates a text search filter. Returns updated active_filters map; a blank term removes the filter.