import { ReactElement, Key, RefObject } from 'react'; import { SuggestLayer } from 'bloko/blocks/suggest/SuggestPicker'; import { DataProvider, DataProviderItem } from 'bloko/blocks/suggest/types'; export interface SuggestProps { /** * Включает функцию автовыбора. Если найдено всего одно совпадение и * оно полностью совпадает с текстом, введенным в поле, * происходит автоматический выбор этого пункта. */ autoSelect?: boolean; /** Выбор первого элемента из найденных при потере фокуса у поля */ selectOnBlur?: boolean; /** * Выбор элемента с полностью совпадающим текстом (при наличии такого, без учета пробелов и регистра) * при потере фокуса у поля */ selectExactMatchOnBlur?: boolean; /** * Функция, возвращающая промис в `resolve` которого передается список элементов для саджеста, при вызове * функции первым параметром передается содержимое поля с применением `trim` и `toUpperCase` */ dataProvider: DataProvider; /** Инпут, на который будет навешен функционал саджеста */ children: ReactElement; /** Максимальное количество отображаемых в дропдауне результатов */ limit?: number; /** Функция рендера блока со списком элементов. См. `renderItems` в `SuggestPicker`. */ renderItems?: (items: Array, renderItem: (item: T, index: number) => ReactNode) => ReactNode; /** Функция для SuggestPicker, которая возвращает содержимое переданного в нее item */ itemContent?: (item: T) => ReactNode; /** Функция для SuggestPicker, которая возвращает key для переданного в нее item */ itemKey?: (item: T) => Key; /** * Функция, которая должна вернуть текст переданного в нее item, по умолчанию возвращает * item[Defaults.FIELD] */ itemText?: (item: T) => string; /** * Коллбэк, вызываемый при попытке изменения выбранного item, первым параметром передается сам объект item, * вторым параметром передаётся поисковая строка */ onChange?: (item: T, query: string) => void; /** Минимальное количество символов для показа SuggestPicker */ suggestStartInputLength?: number; /** * Задержка обновления списка при изменении содержимого поля в миллисекундах (лимитирование запросов * к dataProvider) */ debounceDelay?: number; /** После отображения саджеста автоматически выделять первый пункт. По enter будет выбран этот вариант */ autoHighlightFirstSuggest?: boolean; /** Положение списка по оси Z (устанавливает z-index) [Возможные варианты](#suggest-layers) */ layer?: SuggestLayer; /** * Значение саджеста, в случае, если передано - саджест будет контролируемым, как в * [этом примере](#controlled-example) */ value?: T; /** * Значение по умолчанию для саджеста, изменение этого пропа на уже отрисованном компоненте не производят * никакого эффекта */ defaultValue?: T; /** * Используется для установки первоначального children.props.value (например инпута), изменения этого * пропа на уже отрисованном компоненте не производят никакого эффекта. Будет проигнорирован, если передан * defaultValue */ defaultSearch?: string; /** * Может ли быть показан picker саджеста */ allowPicker?: boolean; /** * Принудительно ищет совпадения с введенным текстом при фокусе на инпут садежста, даже при наличии выбранного элемента. * Работает при соответствии количества символов свойству suggestStartInputLength. */ searchOnFocus?: boolean; /** Указывает на строку с компонентом в исходном коде в режиме разработки. Генерируется babel-plugin-react-source */ source?: string; /** Ref относительно которого suggest должен позиционироваться, по умолчанию будет позиционирование относительно вложенного input */ positionElementRef?: RefObject; } declare const Suggest: (props: SuggestProps) => ReactElement>; export default Suggest; export { SuggestLayer };