PhoenixKit.Modules.Shop.Web.Components.FilterHelpers (phoenix_kit v1.7.71)

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.

Functions

active_filter_count(active_filters)

Counts the number of active filter values (for mobile badge).

build_filter_url(base_path, active_filters, filters, opts \\ [])

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.

build_query_opts(active_filters, filters)

Converts active filter state into keyword opts for Shop.list_products_with_count/1.

build_query_string(active_filters, filters)

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.

has_active_filters?(active_filters)

Returns true if any filters are currently active.

load_filter_data(opts \\ [])

Loads enabled filters and their aggregated values.

Returns {filters, filter_values} tuple.

Options:

  • :category_uuid - Scope aggregation to a category by UUID

parse_filter_params(params, filters)

Parses URL query params into active filter state.

Returns a map: %{"price" => %{min: Decimal, max: Decimal}, "vendor" => ["V1", "V2"], ...}

toggle_filter_value(active_filters, filter_key, value)

Toggles a value in a checkbox-type filter. Returns updated active_filters map.

update_price_filter(active_filters, filter_key, min_val, max_val)

Updates price range filter. Returns updated active_filters map.