Skip to content

Filter Hooks

Hooks for client-side filtering and searching.


useFilter

Generic filtering with multiple criteria and text search.

Signature

ts
function useFilter<T>(options: UseFilterOptions<T>): UseFilterResult<T>

UseFilterOptions<T>

PropertyTypeDefaultDescription
itemsT[]RequiredItems to filter
initialFiltersFilterCriteria<T>[][]Initial filter criteria
initialSearchstring''Initial search term
searchFields(keyof T)[][]Fields to search
customFilter(item, filters, search) => boolean-Custom filter function

UseFilterResult<T>

PropertyTypeDescription
filteredItemsT[]Filtered items
filtersFilterCriteria<T>[]Current filters
searchstringCurrent search term
hasActiveFiltersbooleanWhether any filters are active
setSearch(search: string) => voidSet search term
addFilter(filter: FilterCriteria<T>) => voidAdd filter
removeFilter(field: keyof T) => voidRemove filter by field
updateFilter(field: keyof T, value: unknown) => voidUpdate filter value
clearFilters() => voidClear all filters
clearSearch() => voidClear search
clearAll() => voidClear filters and search
setFilters(filters: FilterCriteria<T>[]) => voidSet all filters

FilterCriteria<T>

PropertyTypeDescription
fieldkeyof TField to filter
operatorFilterOperatorComparison operator
valueunknownValue to compare
caseSensitivebooleanCase-sensitive (default: false)

FilterOperator

ts
type FilterOperator = 'equals' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'notIn'

useTextSearch

Simplified text-only search.

Signature

ts
function useTextSearch<T>(options: UseTextSearchOptions<T>)

UseTextSearchOptions<T>

PropertyTypeRequiredDescription
itemsT[]YesItems to search
searchFields(keyof T)[]YesFields to search
initialSearchstringNoInitial search term

Return Type

PropertyTypeDescription
filteredItemsT[]Filtered items
searchstringCurrent search
setSearch(search: string) => voidSet search
clearSearch() => voidClear search
hasSearchbooleanWhether search is active

useMultiSelectFilter

Filter by multiple selected values.

Signature

ts
function useMultiSelectFilter<T, V = string>(
  options: UseMultiSelectFilterOptions<T, V>
)

UseMultiSelectFilterOptions<T, V>

PropertyTypeRequiredDescription
itemsT[]YesItems to filter
fieldkeyof TYesField to filter
getFieldValue(item: T) => V | V[]NoCustom value extractor
initialSelectedV[]NoInitially selected values

Return Type

PropertyTypeDescription
filteredItemsT[]Filtered items
selectedV[]Selected values
setSelected(values: V[]) => voidSet selection
toggleValue(value: V) => voidToggle value
selectValue(value: V) => voidSelect value
deselectValue(value: V) => voidDeselect value
clearSelection() => voidClear all
selectAll(values: V[]) => voidSelect all
hasSelectionbooleanWhether any selected

Utility Functions

createFilter

ts
function createFilter<T>(
  field: keyof T,
  operator: FilterOperator,
  value: unknown,
  caseSensitive?: boolean
): FilterCriteria<T>

combineFilters

ts
function combineFilters<T>(
  items: T[],
  ...filterFns: ((item: T) => boolean)[]
): T[]

See also