UNPKG

@spark-ui/dropdown

Version:

Displays a list of options for the user to pick from—triggered by a button. Differs from Select in that it offers multiple select and its list is not native.

42 lines (41 loc) • 3.1 kB
import { type DropdownItem, type ItemsMap } from './types'; export interface DownshiftProps { itemsMap: ItemsMap; value: string | string[] | undefined; defaultValue: string | string[] | undefined; onValueChange: ((value: string) => void) | ((value: string[]) => void) | undefined; open: boolean | undefined; onOpenChange: ((isOpen: boolean) => void) | undefined; defaultOpen: boolean | undefined; multiple: boolean | undefined; id: string; labelId: string; } /** * This hook abstract the complexity of using downshift with both single and multiple selection. */ export declare const useDropdown: ({ itemsMap, defaultValue, value, onValueChange, open, onOpenChange, defaultOpen, multiple, id, labelId, }: DownshiftProps) => { /** There is a Downshift bug in React 19, it duplicates some selectedItems */ selectedItems: DropdownItem[]; activeIndex: number; getDropdownProps: <Options>(options?: (import("downshift").UseMultipleSelectionGetDropdownPropsOptions & Options) | undefined, extraOptions?: import("downshift").GetPropsCommonOptions | undefined) => Omit<import("downshift").Overwrite<import("downshift").UseMultipleSelectionGetDropdownReturnValue, Options>, "preventKeyAction">; getSelectedItemProps: <Options_1>(options: import("downshift").UseMultipleSelectionGetSelectedItemPropsOptions<DropdownItem> & Options_1) => Omit<import("downshift").Overwrite<import("downshift").UseMultipleSelectionGetSelectedItemReturnValue, Options_1>, "selectedItem" | "index">; reset: () => void; addSelectedItem: (item: DropdownItem) => void; removeSelectedItem: (item: DropdownItem) => void; setSelectedItems: (items: DropdownItem[]) => void; setActiveIndex: (index: number) => void; highlightedIndex: number; selectedItem: DropdownItem | null; isOpen: boolean; inputValue: string; getToggleButtonProps: <Options_2>(options?: (import("downshift").UseSelectGetToggleButtonPropsOptions & Options_2) | undefined, otherOptions?: import("downshift").GetPropsCommonOptions | undefined) => import("downshift").Overwrite<import("downshift").UseSelectGetToggleButtonReturnValue, Options_2>; getLabelProps: <Options_3>(options?: (import("downshift").UseSelectGetLabelPropsOptions & Options_3) | undefined) => import("downshift").Overwrite<import("downshift").UseSelectGetLabelPropsReturnValue, Options_3>; getMenuProps: <Options_4>(options?: (import("downshift").UseSelectGetMenuPropsOptions & Options_4) | undefined, otherOptions?: import("downshift").GetPropsCommonOptions | undefined) => import("downshift").Overwrite<import("downshift").UseSelectGetMenuReturnValue, Options_4>; getItemProps: <Options_5>(options: import("downshift").UseSelectGetItemPropsOptions<DropdownItem> & Options_5) => Omit<import("downshift").Overwrite<import("downshift").UseSelectGetItemPropsReturnValue, Options_5>, "index" | "item">; openMenu: () => void; closeMenu: () => void; toggleMenu: () => void; selectItem: (item: DropdownItem | null) => void; setHighlightedIndex: (index: number) => void; };