internal.d.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import { Duration, CssDimValue } from '@fullcalendar/core';
  2. import { DateComponent, ViewContext, DateProfile, DayTableModel, EventStore, EventUiHash, DateSpan, EventInteractionState, Seg, Slicer, DateRange, DateProfileGenerator, DateEnv, Hit, DayTableCell, EventSegUiInteractionState, Dictionary, ViewProps, ChunkConfigRowContent, ChunkContentCallbackArgs } from '@fullcalendar/core/internal';
  3. import { createElement, VNode, RefObject } from '@fullcalendar/core/preact';
  4. interface DayTableProps {
  5. dateProfile: DateProfile;
  6. dayTableModel: DayTableModel;
  7. nextDayThreshold: Duration;
  8. businessHours: EventStore;
  9. eventStore: EventStore;
  10. eventUiBases: EventUiHash;
  11. dateSelection: DateSpan | null;
  12. eventSelection: string;
  13. eventDrag: EventInteractionState | null;
  14. eventResize: EventInteractionState | null;
  15. colGroupNode: VNode;
  16. tableMinWidth: CssDimValue;
  17. renderRowIntro?: () => VNode;
  18. dayMaxEvents: boolean | number;
  19. dayMaxEventRows: boolean | number;
  20. expandRows: boolean;
  21. showWeekNumbers: boolean;
  22. headerAlignElRef?: RefObject<HTMLElement>;
  23. clientWidth: number | null;
  24. clientHeight: number | null;
  25. forPrint: boolean;
  26. }
  27. declare class DayTable extends DateComponent<DayTableProps, ViewContext> {
  28. private slicer;
  29. private tableRef;
  30. render(): createElement.JSX.Element;
  31. }
  32. interface TableSeg extends Seg {
  33. row: number;
  34. firstCol: number;
  35. lastCol: number;
  36. }
  37. declare class DayTableSlicer extends Slicer<TableSeg, [DayTableModel]> {
  38. forceDayIfListItem: boolean;
  39. sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): TableSeg[];
  40. }
  41. declare class TableDateProfileGenerator extends DateProfileGenerator {
  42. buildRenderRange(currentRange: any, currentRangeUnit: any, isRangeAllDay: any): DateRange;
  43. }
  44. declare function buildDayTableRenderRange(props: {
  45. currentRange: DateRange;
  46. snapToWeek: boolean;
  47. fixedWeekCount: boolean;
  48. dateEnv: DateEnv;
  49. }): DateRange;
  50. interface TableRowsProps {
  51. dateProfile: DateProfile;
  52. cells: DayTableCell[][];
  53. renderRowIntro?: () => VNode;
  54. showWeekNumbers: boolean;
  55. clientWidth: number | null;
  56. clientHeight: number | null;
  57. businessHourSegs: TableSeg[];
  58. bgEventSegs: TableSeg[];
  59. fgEventSegs: TableSeg[];
  60. dateSelectionSegs: TableSeg[];
  61. eventSelection: string;
  62. eventDrag: EventSegUiInteractionState | null;
  63. eventResize: EventSegUiInteractionState | null;
  64. dayMaxEvents: boolean | number;
  65. dayMaxEventRows: boolean | number;
  66. forPrint: boolean;
  67. isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean;
  68. }
  69. declare class TableRows extends DateComponent<TableRowsProps> {
  70. private splitBusinessHourSegs;
  71. private splitBgEventSegs;
  72. private splitFgEventSegs;
  73. private splitDateSelectionSegs;
  74. private splitEventDrag;
  75. private splitEventResize;
  76. private rootEl;
  77. private rowRefs;
  78. private rowPositions;
  79. private colPositions;
  80. render(): createElement.JSX.Element;
  81. componentDidMount(): void;
  82. componentDidUpdate(): void;
  83. registerInteractiveComponent(): void;
  84. componentWillUnmount(): void;
  85. prepareHits(): void;
  86. queryHit(positionLeft: number, positionTop: number): Hit;
  87. private getCellEl;
  88. private getCellRange;
  89. }
  90. interface TableProps extends TableRowsProps {
  91. colGroupNode: VNode;
  92. tableMinWidth: CssDimValue;
  93. expandRows: boolean;
  94. headerAlignElRef?: RefObject<HTMLElement>;
  95. }
  96. declare class Table extends DateComponent<TableProps> {
  97. private elRef;
  98. private needsScrollReset;
  99. render(): createElement.JSX.Element;
  100. componentDidMount(): void;
  101. componentDidUpdate(prevProps: TableProps): void;
  102. requestScrollReset(): void;
  103. flushScrollReset(): void;
  104. }
  105. declare abstract class TableView<State = Dictionary> extends DateComponent<ViewProps, State> {
  106. protected headerElRef: RefObject<HTMLTableCellElement>;
  107. renderSimpleLayout(headerRowContent: ChunkConfigRowContent, bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode): createElement.JSX.Element;
  108. renderHScrollLayout(headerRowContent: ChunkConfigRowContent, bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode, colCnt: number, dayMinWidth: number): createElement.JSX.Element;
  109. }
  110. declare class DayTableView extends TableView {
  111. private buildDayTableModel;
  112. private headerRef;
  113. private tableRef;
  114. render(): createElement.JSX.Element;
  115. }
  116. declare function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTableModel;
  117. export { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableDateProfileGenerator, TableRows, TableSeg, TableView, buildDayTableModel, buildDayTableRenderRange };