import { MouseEvent } from 'react'; import { SelectValue } from '../Select/typings'; export interface UseSelectBaseValueControl { onClear?(e: MouseEvent): void; onClose?(): void; } export type UseSelectMultipleValueControl = UseSelectBaseValueControl & { defaultValue?: SelectValue[]; mode: 'multiple'; onChange?(newOptions: SelectValue[]): void; value?: SelectValue[]; }; export type UseSelectSingleValueControl = UseSelectBaseValueControl & { defaultValue?: SelectValue; mode: 'single'; onChange?(newOption: SelectValue | null): void; value?: SelectValue | null; }; export type UseSelectValueControl = UseSelectMultipleValueControl | UseSelectSingleValueControl; export interface SelectBaseValueControl { onClear(e: MouseEvent): void; } export type SelectMultipleValueControl = SelectBaseValueControl & { onChange: (v: SelectValue | SelectValue[] | null) => SelectValue[]; value: SelectValue[]; }; export type SelectSingleValueControl = SelectBaseValueControl & { onChange: (v: SelectValue | null) => SelectValue | null; value: SelectValue | null; }; export type SelectValueControl = SelectMultipleValueControl | SelectSingleValueControl; /** * 管理 Select 單選/多選值的受控狀態 Hook。 * * 根據 `mode` 分別處理單選(`single`)與多選(`multiple`)邏輯, * 提供 `value`、`onChange` 與 `onClear` 等操作介面。 * * @example * ```tsx * import { useSelectValueControl } from '@mezzanine-ui/react'; * * const control = useSelectValueControl({ * mode: 'single', * value: selectedOption, * onChange: (option) => setSelectedOption(option), * }); * ``` * * @see {@link Select} 搭配的元件 */ export declare const useSelectValueControl: (props: UseSelectValueControl) => SelectMultipleValueControl | SelectSingleValueControl;