import React from 'react'; import { NativeAttributes } from '../Box'; declare type DefaultContentProps = { itemToString: (item: T) => string; removeItem: (item: T) => void; value: T[]; isOpen: boolean; }; export declare type MultiComboboxProps = Omit, 'value' | 'onChange'> & { /** Callback when the selection changes */ onChange: (value: T[]) => void; /** The label associated with this dropdown form element */ label: string; /** The variant of the component that decides the colors */ variant?: 'solid' | 'outline'; /** Whether the label should get visually hidden */ hideLabel?: boolean; /** A list of entries that the dropdown will have as options */ items: T[]; /** * A function that converts the an item to a string. This is the value that the dropdown will * expose to the user. This is also the value that the dropdown will use internally for comparisons * so it should be unique (which should be by default since you wouldn't want to expose duplicate * values to the user) */ itemToString?: (item: T) => string; /** * A function used to group the Menu Items. */ itemToGroup?: (item: T) => string; /** * A function that accepts an item as a parameter and returns `true` if the item should be * disabled or `false` otherwise. Defaults to `() => false`. */ disableItem?: (item: T) => boolean; /** * The value of the item that is currently selected. The component is a controlled one, * so the the selected value should be provided explicitly to the dropdown * */ value: T[]; /** Whether the multi-combobox has an invalid value */ invalid?: boolean; /** Whether the multi-combobox is required or not */ required?: boolean; /** Override the default tag content */ renderContent?: ({ itemToString, removeItem, value, isOpen, }: DefaultContentProps) => React.ReactNode; /** Whether the multi-combobox is disabled or not */ disabled?: boolean; /** A placeholder that's visible when the user focuses on the Combobox */ placeholder?: string; /** Whether the MultiCombobox should have an input to search results */ searchable?: boolean; /** @ignore */ hidden?: boolean; /** * Allow the user to add custom entries to the dropdown instead of limiting selections to the * predefined set of options. The `searchable` prop should be true in order for * this functionality to work. * */ allowAdditions?: boolean; /** * The maximum number of results that the MultiCombobox should show. Default value is * `undefined` to display which displays all of them. * */ maxResults?: number; /** The maximum height (in pixels) of the MultiCombobox dropdown. Defaults to 300. */ maxHeight?: number; /** The maximum height (in pixels) of the MultiCombobox's input. Defaults to 300. */ maxContainerHeight?: number; /** The maximum width (in pixels) of the MultiCombobox dropdown. Defaults to 800. */ maxWidth?: number; /** * A function that runs before a custom item is added by the user. If it returns `true`, then this * item will be added to the selection. If not, then this item won't be added * */ validateAddition?: (userEnteredInput: string, existing: T[]) => boolean; /** * This variable is used to determine if and when we are going show users the ability to clear * everything they have added to the MultiCombobox */ canClearAllAfter?: number; }; /** * A simple MultiCombobox can be thought of as a typical `