UNPKG

@base-ui/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

31 lines (30 loc) 1.05 kB
'use client'; import * as React from 'react'; import { createCollatorItemFilter, createSingleSelectionCollatorFilter } from "./index.js"; import { getFilter } from "../../../internals/filter.js"; /** * Matches items against a query using `Intl.Collator` for robust string matching. */ export const useCoreFilter = getFilter; /** * Matches items against a query using `Intl.Collator` for robust string matching. */ export function useComboboxFilter(options = {}) { const { multiple = false, value, ...collatorOptions } = options; const coreFilter = getFilter(collatorOptions); const contains = React.useCallback((item, query, itemToString) => { if (multiple) { return createCollatorItemFilter(coreFilter, itemToString)(item, query); } return createSingleSelectionCollatorFilter(coreFilter, itemToString, value)(item, query); }, [coreFilter, value, multiple]); return React.useMemo(() => ({ contains, startsWith: coreFilter.startsWith, endsWith: coreFilter.endsWith }), [contains, coreFilter]); }