import type { enUS, PickerLocale } from '@antdv/ui/es/locale'; import type { VueNode } from '@antdv/ui/es/types'; import type { GenerateConfig } from '@antdv/ui/es/vue-components/vc-picker/src/generate'; import type { PickerPanelBaseProps as RCPickerPanelBaseProps, PickerPanelDateProps as RCPickerPanelDateProps, PickerPanelTimeProps as RCPickerPanelTimeProps } from '@antdv/ui/es/vue-components/vc-picker/src/PickerPanel'; import type { Ref } from 'vue'; export interface CalendarSelectInfo { source: 'year' | 'month' | 'date' | 'customize'; } export interface CalendarProps { 'prefixCls'?: string; 'locale'?: typeof enUS.DatePicker; 'validRange'?: [DateType, DateType]; 'disabledDate'?: (date: DateType) => boolean; 'dateFullCellRender'?: CustomRenderType; 'dateCellRender'?: CustomRenderType; 'monthFullCellRender'?: CustomRenderType; 'monthCellRender'?: CustomRenderType; 'headerRender'?: HeaderRender; 'value'?: DateType | string; 'defaultValue'?: DateType | string; 'mode'?: CalendarMode; 'fullscreen'?: boolean; 'onChange'?: (date: DateType | string) => void; 'onUpdate:value'?: (date: DateType | string) => void; 'onPanelChange'?: (date: DateType | string, mode: CalendarMode) => void; 'onSelect'?: (date: DateType, selectInfo: CalendarSelectInfo) => void; 'valueFormat'?: string; } export type InjectDefaultProps = Omit & { locale?: typeof enUS.DatePicker; size?: 'large' | 'default' | 'small'; }; export type PickerPanelBaseProps = InjectDefaultProps>; export type PickerPanelDateProps = InjectDefaultProps>; export type PickerPanelTimeProps = InjectDefaultProps>; export type CalendarPickerProps = PickerPanelBaseProps | PickerPanelDateProps | PickerPanelTimeProps; export type CalendarMode = 'year' | 'month'; export type HeaderRender = (config: { value: DateType; type: CalendarMode; onChange: (date: DateType) => void; onTypeChange: (type: CalendarMode) => void; }) => VueNode; export type CustomRenderType = (config: { current: DateType; }) => VueNode; export interface SharedProps { prefixCls: string; value: DateType; validRange?: [DateType, DateType]; generateConfig: GenerateConfig; locale: PickerLocale; fullscreen: boolean; divRef: Ref; onChange: (year: DateType) => void; } export interface ModeSwitchProps extends Omit, 'onChange'> { mode: CalendarMode; onModeChange: (type: CalendarMode) => void; } export interface CalendarHeaderProps { prefixCls: string; value: DateType; validRange?: [DateType, DateType]; generateConfig: GenerateConfig; locale: PickerLocale; mode: CalendarMode; fullscreen: boolean; onChange: (date: DateType, source: CalendarSelectInfo['source']) => void; onModeChange: (mode: CalendarMode) => void; }