import { UseComboboxProps } from 'downshift'; import { MultiSelectFieldGroupByValue, MultiSelectFieldOption, MultiSelectFieldPinnedOptions } from '../types'; import { SelectItem } from '../../../../internal/types/selectFieldInternalTypes'; import { CheckState } from '../../../../types'; export type UseComboMultipleOptions = { /** An array of currently loaded options */ options: MultiSelectFieldOption[]; /** Options to pin to the top of the list */ pinned?: MultiSelectFieldPinnedOptions; /** Function to convert a group value to a display label */ groupToString?: (groupValue: MultiSelectFieldGroupByValue) => string; /** Function to sort group sections */ groupSorter?: (a: MultiSelectFieldGroupByValue, b: MultiSelectFieldGroupByValue) => number; /** Configuration for the "Select All" option (shown when search is empty) */ selectAll?: { label: string; onClick: () => void; checkState: CheckState; }; /** Function that receives the search value and returns config for "Select Filtered" */ selectFiltered?: (searchValue: string) => { label?: string; onClick: () => void; checkState: CheckState; }; /** The currently selected options (controlled from outside) */ selectedOptions: MultiSelectFieldOption[]; onSelectedOptionsChange: (options: MultiSelectFieldOption[]) => void; displayAs: "popover" | "dialog"; disabled: boolean; /** Whether options are currently loading (hides select-filtered to prevent stale selections) */ loading?: boolean; /** Whether the list is virtualized (disables built-in scroll behavior) */ virtualize?: boolean; onScrollToHighlight?: (index: number) => void; } & Pick, "onInputValueChange" | "onIsOpenChange">; /** * Hook that wraps downshift's useCombobox for multi-select behavior. * Unlike useCombo, this hook: * - Keeps the menu open after item selection * - Does not track internal selection state (controlled externally) * - Preserves input value on item selection for continued filtering * @param options - Configuration options for the hook * @returns Downshift combobox props and state */ export declare const useComboMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectFiltered, selectedOptions, onSelectedOptionsChange, onInputValueChange, onIsOpenChange, displayAs, disabled, loading, virtualize, onScrollToHighlight, }: UseComboMultipleOptions) => { inputValue: string; wrapperDivRef: import('react').RefObject; getToggleButtonProps: (options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite; getLabelProps: (options?: import('downshift').UseComboboxGetLabelPropsOptions & Options) => import('downshift').Overwrite; getMenuProps: (options?: import('downshift').UseComboboxGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite; getInputProps: (options?: import('downshift').UseComboboxGetInputPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite; getItemProps: (options: import('downshift').UseComboboxGetItemPropsOptions & Options) => Omit, "item" | "index">; highlightedIndex: number; isOpen: boolean; items: SelectItem[]; sectionsMeta: import('../../SelectField/internal/useCombo').SectionMeta[]; closeMenu: () => void; openMenu: () => void; toggleMenu: () => void; selectedOptions: import('../..').SelectFieldOption[]; };