import type { BoxProps, BoxStyleProps } from "@twilio-paste/box"; import type { UseComboboxPrimitiveProps, UseComboboxPrimitiveReturnValue, UseComboboxPrimitiveState, UseMultiSelectPrimitiveReturnValue, UseMultiSelectPrimitiveStateChange } from "@twilio-paste/combobox-primitive"; import type { InputProps, InputVariants } from "@twilio-paste/input"; import type React from "react"; import type { VirtualItem } from "react-virtual"; export type { UseComboboxPrimitiveGetItemPropsOptions, UseComboboxPrimitiveGetMenuPropsOptions, GetComboboxPrimitivePropsCommonOptions, } from "@twilio-paste/combobox-primitive"; export type Item = string | Record; export type OptionTemplateFn = (item: ProvidedItem) => React.ReactNode; type ScrollAlignment = "start" | "center" | "end" | "auto"; interface ScrollToOptions { align: ScrollAlignment; } export type RowVirtualizer = { virtualItems: VirtualItem[]; totalSize: number; scrollToOffset: (index: number, options?: ScrollToOptions | undefined) => void; scrollToIndex: (index: number, options?: ScrollToOptions | undefined) => void; }; export type HighlightedIndexChanges = { type: number; highlightedIndex: number; isOpen: boolean; selectedItem: string; inputValue: string; }; export interface ComboboxProps extends Omit { /** * Determines whether the Combobox Listbox (options list) is rendered inside a Portal. Defaults to `true`. Use `false` if you are using Combobox inside a Paste Popover to prevent interaction bugs. * * @type {boolean} * @memberof ComboboxProps * @default true */ usePortal?: boolean; /** * Activates the autocomplete/typeahead feature * * @type {boolean} * @memberof ComboboxProps */ autocomplete?: boolean; /** * The contents of the help and error text * * @type {string | NonNullable} * @memberof ComboboxProps */ helpText?: string | React.ReactNode; /** * The contents of the label text * * @type {string | NonNullable} * @memberof ComboboxProps */ labelText: string | NonNullable; /** * This function allows you to use your own jsx template for the items in the drop-down list * * @memberof ComboboxProps */ optionTemplate?: OptionTemplateFn; /** * This function allows you to use your own jsx template for the group label in the drop-down list * * @memberof ComboboxProps */ groupLabelTemplate?: (groupName: string) => React.ReactNode; /** * The name of the key in your item objects that you would like Combobox to group the items by * * @type {string} * @memberof ComboboxProps */ groupItemsBy?: string; /** * * @type {InputVariants} * @default "default" * @memberof ComboboxProps */ variant?: InputVariants; /** * * @type {any[]} * @memberof ComboboxProps */ disabledItems?: any[]; /** * A custom empty state component to render when there are no items in the list * * @type {React.FC} * @memberof ComboboxProps */ emptyState?: React.FC; /** * * @type {boolean} * @memberof ComboboxProps */ hideVisibleLabel?: boolean; /** * Overrides the default element name to apply unique styles with the Customization Provider * * @default "COMBOBOX" * @type {BoxElementProps["element"]} * @memberof ComboboxProps */ element?: BoxProps["element"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["initialIsOpen"]} * @memberof ComboboxProps */ initialIsOpen?: UseComboboxPrimitiveProps["initialIsOpen"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["initialSelectedItem"]} * @memberof ComboboxProps */ initialSelectedItem?: UseComboboxPrimitiveProps["initialSelectedItem"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["items"]} * @memberof ComboboxProps */ items: UseComboboxPrimitiveProps["items"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["itemToString"]} * @memberof ComboboxProps */ itemToString?: UseComboboxPrimitiveProps["itemToString"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["onHighlightedIndexChange"]} * @memberof ComboboxProps */ onHighlightedIndexChange?: UseComboboxPrimitiveProps["onHighlightedIndexChange"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["onInputValueChange"]} * @memberof ComboboxProps */ onInputValueChange?: UseComboboxPrimitiveProps["onInputValueChange"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["onIsOpenChange"]} * @memberof ComboboxProps */ onIsOpenChange?: UseComboboxPrimitiveProps["onIsOpenChange"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["onSelectedItemChange"]} * @memberof ComboboxProps */ onSelectedItemChange?: UseComboboxPrimitiveProps["onSelectedItemChange"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["selectedItem"]} * @memberof ComboboxProps */ selectedItem?: UseComboboxPrimitiveProps["selectedItem"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["inputValue"]} * @memberof ComboboxProps */ inputValue?: UseComboboxPrimitiveProps["inputValue"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["getA11yStatusMessage"]} * @memberof ComboboxProps */ getA11yStatusMessage?: UseComboboxPrimitiveProps["getA11yStatusMessage"]; /** * Downshift useCombobox Hook Prop (see https://github.com/downshift-js/downshift/blob/master/src/hooks/useCombobox/README.md#advanced-props docs) * * @type {UseComboboxPrimitiveProps["getA11ySelectionMessage"]} * @memberof ComboboxProps */ getA11ySelectionMessage?: UseComboboxPrimitiveProps["getA11ySelectionMessage"]; /** * Downshift useCombobox Hook return props for when you are using the hook outside of the component * * @type {Partial>} * @memberof ComboboxProps */ state?: Partial>; /** * Use `onInputValueChange` instead. * @type {never} * @memberof ComboboxProps */ onChange?: never; /** * Use `onInputValueChange` instead. * @type {never} * @memberof ComboboxProps */ onInput?: never; } export interface MultiselectComboboxProps extends Omit { /** * Sets the initial items selected when initialized * * @type {any[]} * @memberof MultiselectComboboxProps */ initialSelectedItems?: any[]; /** * Callback function for after an item is selected or deselected * * @memberof MultiselectComboboxProps */ onSelectedItemsChange?: (newSelectedItems: UseMultiSelectPrimitiveStateChange) => void; /** * Hidden helper text for screen readers * * @type {BoxStyleProps["maxHeight"]} * @memberof MultiselectComboboxProps */ selectedItemsLabelText: string; /** * Visually hidden string that has instructions for how to remove and select pills with a keyboard * * @type {string} * @memberof MultiselectComboboxProps * @default "Press Delete or Backspace to remove. Press Enter to toggle selection." */ i18nKeyboardControls?: string; /** * The maximum height of the Combobox listbox * * @type {BoxStyleProps["maxHeight"]} * @memberof MultiselectComboboxProps * @default "100%" */ maxHeight?: BoxStyleProps["maxHeight"]; /** * * @type {UseMultiSelectPrimitiveReturnValue} * @memberof MultiselectComboboxProps */ state?: UseMultiSelectPrimitiveReturnValue; /** * Overrides the default element name to apply unique styles with the Customization Provider * * @default "MULTISELECT_COMBOBOX" * @type {BoxElementProps["element"]} * @memberof MultiselectComboboxProps */ element?: BoxProps["element"]; } export interface ComboboxItemsProps extends Pick { items: Item[]; selectedItems?: Item[]; disabledItems?: Item[]; getItemProps: any; highlightedIndex: UseComboboxPrimitiveState["highlightedIndex"]; totalSize: RowVirtualizer["totalSize"]; virtualItems: RowVirtualizer["virtualItems"]; } //# sourceMappingURL=types.d.ts.map