@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
TypeScript
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;
};