generateCalendar.d.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import type { GenerateConfig } from '../vc-picker/generate';
  2. import type { PickerPanelBaseProps as RCPickerPanelBaseProps, PickerPanelDateProps as RCPickerPanelDateProps, PickerPanelTimeProps as RCPickerPanelTimeProps } from '../vc-picker/PickerPanel';
  3. import enUS from './locale/en_US';
  4. import type { VueNode } from '../_util/type';
  5. type InjectDefaultProps<Props> = Omit<Props, 'locale' | 'generateConfig' | 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'> & {
  6. locale?: typeof enUS;
  7. size?: 'large' | 'default' | 'small';
  8. };
  9. export interface SelectInfo {
  10. source: 'year' | 'month' | 'date' | 'customize';
  11. }
  12. export type PickerPanelBaseProps<DateType> = InjectDefaultProps<RCPickerPanelBaseProps<DateType>>;
  13. export type PickerPanelDateProps<DateType> = InjectDefaultProps<RCPickerPanelDateProps<DateType>>;
  14. export type PickerPanelTimeProps<DateType> = InjectDefaultProps<RCPickerPanelTimeProps<DateType>>;
  15. export type PickerProps<DateType> = PickerPanelBaseProps<DateType> | PickerPanelDateProps<DateType> | PickerPanelTimeProps<DateType>;
  16. export type CalendarMode = 'year' | 'month';
  17. export type HeaderRender<DateType> = (config: {
  18. value: DateType;
  19. type: CalendarMode;
  20. onChange: (date: DateType) => void;
  21. onTypeChange: (type: CalendarMode) => void;
  22. }) => VueNode;
  23. type CustomRenderType<DateType> = (config: {
  24. current: DateType;
  25. }) => VueNode;
  26. export interface CalendarProps<DateType> {
  27. prefixCls?: string;
  28. locale?: typeof enUS;
  29. validRange?: [DateType, DateType];
  30. disabledDate?: (date: DateType) => boolean;
  31. dateFullCellRender?: CustomRenderType<DateType>;
  32. dateCellRender?: CustomRenderType<DateType>;
  33. monthFullCellRender?: CustomRenderType<DateType>;
  34. monthCellRender?: CustomRenderType<DateType>;
  35. headerRender?: HeaderRender<DateType>;
  36. value?: DateType | string;
  37. defaultValue?: DateType | string;
  38. mode?: CalendarMode;
  39. fullscreen?: boolean;
  40. onChange?: (date: DateType | string) => void;
  41. 'onUpdate:value'?: (date: DateType | string) => void;
  42. onPanelChange?: (date: DateType | string, mode: CalendarMode) => void;
  43. onSelect?: (date: DateType, selectInfo: SelectInfo) => void;
  44. valueFormat?: string;
  45. }
  46. declare function generateCalendar<DateType, Props extends CalendarProps<DateType> = CalendarProps<DateType>>(generateConfig: GenerateConfig<DateType>): import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props extends import("vue").ComponentPropsOptions<{
  47. [x: string]: unknown;
  48. }> ? import("vue").ExtractPropTypes<Props> : Props>, import("vue").ExtractDefaultPropTypes<Props>, {}>;
  49. export default generateCalendar;