import { DateType } from '@mezzanine-ui/core/calendar'; import { RangePickerPickingValue, RangePickerValue } from '@mezzanine-ui/core/picker'; import { RefObject } from 'react'; import { DateRangePickerCalendarProps } from './DateRangePickerCalendar'; export interface UseDateRangePickerValueProps { /** * The format pattern for the inputs (e.g., "YYYY-MM-DD") */ format: string; /** * Function to check if there are disabled dates in the range */ hasDisabledDateInRange?: (start: DateType, end: DateType) => boolean; /** * Ref for the 'from' input element */ inputFromRef: RefObject; /** * Ref for the 'to' input element */ inputToRef: RefObject; /** * Calendar mode */ mode?: DateRangePickerCalendarProps['mode']; /** * Change handler called when range is complete */ onChange?: (value?: RangePickerValue) => void; /** * Controlled value */ value?: RangePickerValue; } /** * 管理日期區間選取器的值狀態與互動邏輯的 Hook。 * * 協調「起始日期輸入框」、「結束日期輸入框」與「日曆」三者之間的狀態同步, * 支援鍵盤輸入、日曆點選、hover 預覽以及清除功能。 * * @example * ```tsx * import { useDateRangePickerValue } from '@mezzanine-ui/react'; * * const { * value, calendarValue, inputFromValue, inputToValue, * onCalendarChange, onInputFromChange, onInputToChange, onClear, * } = useDateRangePickerValue({ * format: 'YYYY-MM-DD', * inputFromRef, * inputToRef, * value: rangePickerValue, * onChange: setRangePickerValue, * }); * ``` * * @see {@link DateRangePicker} 搭配的元件 */ export declare function useDateRangePickerValue({ format, hasDisabledDateInRange, inputFromRef: _inputFromRef, inputToRef, mode, onChange: onChangeProp, value: valueProp, }: UseDateRangePickerValueProps): { calendarValue: string[] | undefined; checkIsInRange: (_date: DateType) => boolean; hoverFromValue: string | undefined; hoverToValue: string | undefined; inputFromValue: string; inputToValue: string; onCalendarChange: (rangeValue: [DateType, DateType | undefined]) => void; onCalendarHover: import("react").Dispatch> | undefined; onChange: (target?: RangePickerPickingValue) => RangePickerPickingValue | undefined; onClear: () => void; onFromBlur: () => void; onFromFocus: () => void; onHoverClear: () => void; onInputFromChange: (formattedValue: string) => void; onInputToChange: (formattedValue: string) => void; onToBlur: () => void; onToFocus: () => void; value: RangePickerPickingValue; };