import type React from 'react'; import type { GenerateConfig } from './generate'; export type Locale = { locale: string; /** Display month before year in date panel header */ monthBeforeYear?: boolean; yearFormat: string; monthFormat?: string; quarterFormat?: string; today: string; now: string; backToToday: string; ok: string; timeSelect: string; dateSelect: string; weekSelect?: string; clear: string; month: string; year: string; previousMonth: string; nextMonth: string; monthSelect: string; yearSelect: string; decadeSelect: string; dayFormat: string; dateFormat: string; dateTimeFormat: string; previousYear: string; nextYear: string; previousDecade: string; nextDecade: string; previousCentury: string; nextCentury: string; shortWeekDays?: string[]; shortMonths?: string[]; }; export type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'year' | 'decade'; export type PickerMode = Exclude; export type CellRenderInfo = { originNode: React.ReactElement; today: DateType; range?: 'start' | 'end'; type: PanelMode; locale?: Locale; subType?: 'hour' | 'minute' | 'second' | 'meridiem'; }; export type CellRender = (current: CurrentType, info: CellRenderInfo) => React.ReactNode; export type PanelRefProps = { onKeyDown?: (e: React.KeyboardEvent) => boolean; onBlur?: React.FocusEventHandler; onClose?: () => void; }; export type NullableDateType = DateType | null | undefined; export type OnSelect = (value: DateType, type: 'key' | 'mouse' | 'submit') => void; export type PanelSharedProps = { prefixCls: string; generateConfig: GenerateConfig; value?: NullableDateType; viewDate: DateType; /** * @deprecated please use `defaultValue` instead. * Set default display picker view date */ defaultPickerValue?: DateType; locale: Locale; disabledDate?: (date: DateType) => boolean; prevIcon?: React.ReactNode; nextIcon?: React.ReactNode; superPrevIcon?: React.ReactNode; superNextIcon?: React.ReactNode; /** * Typescript can not handle generic type so we can not use `forwardRef` here. * Thus, move ref into operationRef. * This is little hack which should refactor after typescript support. */ operationRef: React.MutableRefObject; onSelect: OnSelect; onViewDateChange: (value: DateType) => void; onPanelChange: (mode: PanelMode | null, viewValue: DateType) => void; }; export type DisabledTimes = { disabledHours?: () => number[]; disabledMinutes?: (hour: number) => number[]; disabledSeconds?: (hour: number, minute: number) => number[]; }; export type DisabledTime = (date: DateType | null) => DisabledTimes; export type OnPanelChange = (value: DateType, mode: PanelMode) => void; export type EventValue = DateType | null; export type RangeValue = [EventValue, EventValue] | null; export type Components = { button?: React.ComponentType | string; }; export type RangeList = { label: React.ReactNode; onClick: () => void; onMouseEnter: () => void; onMouseLeave: () => void; }[]; export type CustomFormat = (value: DateType) => string; export interface PresetDate { label: React.ReactNode; value: T | (() => T); } type Enumerate = Acc['length'] extends N ? Acc[number] : Enumerate; export type IntRange = Exclude, Enumerate>; export {};