import { ReactElement, ReactNode } from 'react';
import TreeCollection from 'bloko/common/tree/treeCollection';
import { IdCollectionPredicate, TreeFilter, AdditionalDefault } from 'bloko/common/tree/types';
import { LabelComponentType, IconComponentType } from 'bloko/blocks/treeSelector/Dummy/types';
import 'bloko/blocks/treeSelector/treeSelector.less';
export interface TreeSelectorDummyProps {
/** Выбранные ID. */
selected?: string[];
/** ID моделей, которые всегда будут дополнительно предлагаться для выбора, если в поиске что-то нашлось */
constantlySuggested?: string[];
/** Запрещённые ID. */
disabled?: string[];
/** Изначально открытые ID. Применяются только при инициализации. */
initialExpanded?: string[];
/** Строка-фильтр для дерева, остаются только элементы с вхождением указанной строки. */
contentFilterQuery?: string;
/** Способ фильтрации дерева при поиске */
treeFilter?: TreeFilter;
/** Обработчик изменения набора выбранных ID.
* В аргументах получает `{String} id`, `{Boolean} isSelected`. */
onChange?: (id: string, isSelected: boolean) => void;
/** ID моделей которые предлагаются для выбора, если в поиске ничего не найдено */
suggestedNotFound?: string[];
/** Разрешает выбор только элементов без потомков. */
leavesOnly?: boolean;
/** Разрешает выбор только одного элемента. */
singleChoice?: boolean;
/** Показывать ли список выбранных */
showSelectedList?: boolean;
/** Имя инпута. */
inputName?: string;
/** Дерево элементов. */
collection: TreeCollection;
/** Изначально открытые ID, которые можно динамически изменять извне. */
expanded?: string[];
/** Компонент для вывода метки у элемента дерева */
LabelComponent?: LabelComponentType;
/** Компонент для вывода иконки у элемента дерева */
IconComponent?: IconComponentType;
/** Обработчик изменения состояния раскрытия элементов
* В аргументах получает список id раскрытых элементов `{Array} expanded` */
onExpand?: (expanded: string[]) => void;
/** Обработчик изменения строки contentFilterQuery
* В аргументах получает список подходящих под запрос id и сам запрос */
onChangeFilterQuery?: (ids: string[], query: string) => void;
/** Свойства обертки дерева */
wrapperTreeProps?: JSX.IntrinsicElements['div'];
/** Функция возвращает true для элементов, которые можно выбрать. При использовании
* вместе с параметром leavesOnly применяется только к элементам без потомков. */
checkSelectable?: IdCollectionPredicate;
indeterminateWithParents?: boolean;
}
interface TreeSelectorDummyComponent {
(props: TreeSelectorDummyProps): JSX.Element | null;
}
declare const TreeSelectorDummy: TreeSelectorDummyComponent;
export default TreeSelectorDummy;
export declare const isValidTreeSelectorDummyElement: (child: ReactNode) => child is ReactElement, string | import("react").JSXElementConstructor>;