Appearance
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>
| Property | Type | Default | Description |
|---|---|---|---|
items | T[] | Required | Items to filter |
initialFilters | FilterCriteria<T>[] | [] | Initial filter criteria |
initialSearch | string | '' | Initial search term |
searchFields | (keyof T)[] | [] | Fields to search |
customFilter | (item, filters, search) => boolean | - | Custom filter function |
UseFilterResult<T>
| Property | Type | Description |
|---|---|---|
filteredItems | T[] | Filtered items |
filters | FilterCriteria<T>[] | Current filters |
search | string | Current search term |
hasActiveFilters | boolean | Whether any filters are active |
setSearch | (search: string) => void | Set search term |
addFilter | (filter: FilterCriteria<T>) => void | Add filter |
removeFilter | (field: keyof T) => void | Remove filter by field |
updateFilter | (field: keyof T, value: unknown) => void | Update filter value |
clearFilters | () => void | Clear all filters |
clearSearch | () => void | Clear search |
clearAll | () => void | Clear filters and search |
setFilters | (filters: FilterCriteria<T>[]) => void | Set all filters |
FilterCriteria<T>
| Property | Type | Description |
|---|---|---|
field | keyof T | Field to filter |
operator | FilterOperator | Comparison operator |
value | unknown | Value to compare |
caseSensitive | boolean | Case-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>
| Property | Type | Required | Description |
|---|---|---|---|
items | T[] | Yes | Items to search |
searchFields | (keyof T)[] | Yes | Fields to search |
initialSearch | string | No | Initial search term |
Return Type
| Property | Type | Description |
|---|---|---|
filteredItems | T[] | Filtered items |
search | string | Current search |
setSearch | (search: string) => void | Set search |
clearSearch | () => void | Clear search |
hasSearch | boolean | Whether search is active |
useMultiSelectFilter
Filter by multiple selected values.
Signature
ts
function useMultiSelectFilter<T, V = string>(
options: UseMultiSelectFilterOptions<T, V>
)UseMultiSelectFilterOptions<T, V>
| Property | Type | Required | Description |
|---|---|---|---|
items | T[] | Yes | Items to filter |
field | keyof T | Yes | Field to filter |
getFieldValue | (item: T) => V | V[] | No | Custom value extractor |
initialSelected | V[] | No | Initially selected values |
Return Type
| Property | Type | Description |
|---|---|---|
filteredItems | T[] | Filtered items |
selected | V[] | Selected values |
setSelected | (values: V[]) => void | Set selection |
toggleValue | (value: V) => void | Toggle value |
selectValue | (value: V) => void | Select value |
deselectValue | (value: V) => void | Deselect value |
clearSelection | () => void | Clear all |
selectAll | (values: V[]) => void | Select all |
hasSelection | boolean | Whether 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[]