import { SelectProps } from './Select'; import { ComponentStyleType, ComponentType, FnValueToString, PlainObject } from './common'; import { ReactNode } from 'react'; export type MultiSelectState = { value: OptionType[]; }; export type MultiSelectContext = { state: MultiSelectState; valueToString: FnValueToString; }; type MultiSelectComponentType = ComponentType & { className: string; } & PropsType>; export type SelectedValueListType = MultiSelectComponentType<{ getValueDomProps: (opts: { value: any; index: number; }) => PlainObject; renderValue: (opts: { value: any; index: number; }) => ReactNode; }, OptionType>; export type SelectedValueType = MultiSelectComponentType<{ value: any; index: number; onRemove: (item: any) => void; }, OptionType>; export type MultiSelectComponents = { SelectedValueList: SelectedValueListType; SelectedValue: SelectedValueType; }; export type MultiSelectComponentStyleType = ComponentStyleType & PropsType>; export type SelectedValueStyleType = MultiSelectComponentStyleType<{ value: any; index: number; }, OptionType>; export type MultiSelectComponentStyles = { MultiSelect: MultiSelectComponentStyleType; SelectedValueList: MultiSelectComponentStyleType; SelectedValue: SelectedValueStyleType; }; export type MultiSelectProps = Omit, 'value' | 'onSetValue'> & { value: OptionType[]; onSetValue: (newValue: OptionType[]) => void; components?: Partial>; classNames?: Partial>; }; export type MultiSelectType = (props: MultiSelectProps) => React.ReactElement; export {};