interface.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { strings } from '@douyinfe/semi-foundation/calendar/constants';
  2. import type { ArrayElement } from '../_base/base';
  3. import type { BaseProps } from '../_base/baseComponent';
  4. import type { EventObject, weekStartsOnEnum } from '@douyinfe/semi-foundation/calendar/foundation';
  5. export interface CalendarProps extends BaseProps {
  6. displayValue?: Date;
  7. range?: Date[];
  8. header?: React.ReactNode;
  9. events?: EventObject[];
  10. mode?: ArrayElement<typeof strings.MODE>;
  11. showCurrTime?: boolean;
  12. weekStartsOn?: weekStartsOnEnum;
  13. scrollTop?: number;
  14. onClick?: (e: React.MouseEvent, value: Date) => void;
  15. onClose?: (e: React.MouseEvent) => void;
  16. renderTimeDisplay?: (time: number) => React.ReactNode;
  17. markWeekend?: boolean;
  18. minEventHeight?: number;
  19. width?: number | string;
  20. height?: number | string;
  21. renderDateDisplay?: (date: Date) => React.ReactNode;
  22. dateGridRender?: (dateString?: string, date?: Date) => React.ReactNode;
  23. allDayEventsRender?: (events: EventObject[]) => React.ReactNode
  24. }
  25. export type DayCalendarProps = Omit<CalendarProps, 'mode'>;
  26. type DayCalendarPropsKeys = 'events' | 'displayValue' | 'showCurrTime' | 'mode' | 'dateGridRender' | 'minEventHeight';
  27. export interface DayColProps extends Pick<CalendarProps, DayCalendarPropsKeys>, BaseProps {
  28. scrollHeight: number;
  29. currPos: number;
  30. isWeekend: boolean;
  31. handleClick: (e: React.MouseEvent, val: [Date, number, number, number]) => void
  32. }
  33. export type MonthCalendarProps = Omit<CalendarProps, 'range' | 'showCurrTime' | 'scrollTop' | 'renderTimeDisplay'>;
  34. export type RangeCalendarProps = CalendarProps;
  35. export interface TimeColProps {
  36. className?: string;
  37. renderTimeDisplay?: CalendarProps['renderTimeDisplay']
  38. }
  39. export type WeekCalendarProps = CalendarProps;