fieldnotesai
    Preparing search index...
    • useListFilter - general-purpose multi-filter hook.

      Usage:

      const { filterStates, setFilter, clearFilters, applyFilters, hasActiveFilters } =
      useListFilter(clientFilterConfigs);

      const visibleClients = applyFilters(allClients);

      Type Parameters

      • T

      Parameters

      • configs: FilterConfig<T>[]

        Static array of FilterConfig objects that describe each filterable dimension. Memoize this array (or define outside the component) to avoid effect re-runs.

      • OptionalinitialValues: Record<string, string>

      Returns {
          applyFilters: (items: T[]) => T[];
          clearFilters: () => void;
          filterStates: FilterState<T>[];
          hasActiveFilters: boolean;
          setFilter: (key: string, value: string) => void;
          values: Record<string, string>;
      }

      • applyFilters: (items: T[]) => T[]

        Pure function - applies all active filters to an item list. Items that pass every active predicate are included.

      • clearFilters: () => void

        Reset all filters to their default empty state, or to initialValues.

      • filterStates: FilterState<T>[]

        Derived list of filter states (config + value) for UI rendering.

      • hasActiveFilters: boolean

        True when at least one filter differs from its initial/empty value.

      • setFilter: (key: string, value: string) => void

        Update a single filter value by key.

      • values: Record<string, string>