import { ChangeEvent, HTMLAttributes, InputHTMLAttributes, ReactNode } from 'react'; import { QA } from '../common'; import { TooltipProps } from '../Tooltip'; import { CheckboxProps } from '../Checkbox'; /** Значение option */ export type CheckboxTreeOptionValue = string | number; export type CheckboxTreeOption = { /** Label */ label: ReactNode; /** Значение */ value: CheckboxTreeOptionValue; /** Дочерние option */ childs?: CheckboxTreeOption[]; /** Подпись */ tooltip?: TooltipProps['content']; } & Omit; /** Обработчик изменения значения */ export type CheckboxTreeOnChange = ( /** Новое значение */ value: CheckboxTreeOptionValue[], /** Option на котором произошло событие */ option: T, /** Событие */ event: ChangeEvent) => void; export type CheckboxTreeProps = { /** Option */ options: T[]; /** Выбранные option */ value: CheckboxTreeOptionValue[] | undefined; /** Обработчик изменения значения */ onChange: CheckboxTreeOnChange; /** Отключен */ disabled?: boolean; /** Фокусируемый без редактирования */ readOnly?: boolean; /** Раскрытые option */ opened?: CheckboxTreeOptionValue[]; /** Обработчие раскрытия option */ toggleOpened?: (value: CheckboxTreeOptionValue) => void; } & QA & Omit, 'onChange'> & Pick, 'name'>;