@fullcalendar/daygrid 7.0.0-beta.1 → 7.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/internal.d.ts CHANGED
@@ -1,17 +1,10 @@
1
- import { Seg, Slicer, DayTableModel, DateRange, DateProfileGenerator, DateEnv, BaseComponent, ViewProps, DateProfile, DateMarker, DateFormatter, Dictionary, DayTableCell, Hit, EventSegUiInteractionState, DateComponent, RefMap } from '@fullcalendar/core/internal';
2
- import { createElement, Ref, ComponentChild, VNode } from '@fullcalendar/core/preact';
3
- import '@fullcalendar/core';
1
+ import { Slicer, DayGridRange, DayTableModel, DateRange, DateProfileGenerator, DateEnv, BaseComponent, ViewProps, DateMarker, DateProfile, DateFormatter, ViewContext, DayTableCell, Hit, EventRangeProps, EventSegUiInteractionState, DateComponent, ViewOptionsRefined, RefMap, SlicedCoordRange } from '@fullcalendar/core/internal';
2
+ import { createElement, Ref, VNode } from '@fullcalendar/core/preact';
3
+ import { CustomContentGenerator, ClassNamesGenerator, DidMountHandler, WillUnmountHandler, DayHeaderContentArg, CssDimValue } from '@fullcalendar/core';
4
4
 
5
- interface TableSeg extends Seg {
6
- row: number;
7
- firstCol: number;
8
- lastCol: number;
9
- isStandin?: boolean;
10
- }
11
-
12
- declare class DayTableSlicer extends Slicer<TableSeg, [DayTableModel]> {
5
+ declare class DayTableSlicer extends Slicer<DayGridRange, [DayTableModel]> {
13
6
  forceDayIfListItem: boolean;
14
- sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): TableSeg[];
7
+ sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): DayGridRange[];
15
8
  }
16
9
 
17
10
  declare class TableDateProfileGenerator extends DateProfileGenerator {
@@ -26,171 +19,110 @@ declare function buildDayTableRenderRange(props: {
26
19
 
27
20
  declare class DayGridView extends BaseComponent<ViewProps> {
28
21
  private buildDayTableModel;
29
- private buildHeaderTiers;
22
+ private buildDateRowConfigs;
30
23
  private createDayHeaderFormatter;
31
24
  private slicer;
32
25
  render(): createElement.JSX.Element;
33
26
  }
34
27
 
35
- interface DateHeaderCellProps {
36
- dateProfile: DateProfile;
37
- todayRange: DateRange;
38
- date: DateMarker;
39
- navLink: boolean;
40
- dayHeaderFormat: DateFormatter;
41
- isSticky?: boolean;
28
+ interface CellRenderConfig<RenderProps> {
29
+ generatorName: string;
30
+ customGenerator: CustomContentGenerator<RenderProps>;
31
+ classNameGenerator: ClassNamesGenerator<RenderProps>;
32
+ didMount: DidMountHandler<RenderProps & {
33
+ el: HTMLElement;
34
+ }>;
35
+ willUnmount: WillUnmountHandler<RenderProps & {
36
+ el: HTMLElement;
37
+ }>;
38
+ }
39
+ interface CellDataConfig<RenderProps> {
40
+ key: string;
41
+ renderProps: RenderProps;
42
+ className?: string;
43
+ attrs?: any;
44
+ innerAttrs?: any;
42
45
  colSpan?: number;
43
- extraRenderProps?: Dictionary;
44
- extraDataAttrs?: Dictionary;
45
- extraClassNames?: string[];
46
- colWidth?: number;
47
- innerHeightRef?: Ref<number>;
48
- }
49
- declare class DateHeaderCell extends BaseComponent<DateHeaderCellProps> {
50
- private innerElRef;
51
- private disconectInnerHeight?;
52
- render(): createElement.JSX.Element;
53
- componentDidMount(): void;
54
- componentWillUnmount(): void;
55
- }
46
+ isNavLink?: boolean;
47
+ }
48
+ interface RowConfig<RenderProps> {
49
+ renderConfig: CellRenderConfig<RenderProps>;
50
+ dataConfigs: CellDataConfig<RenderProps>[];
51
+ }
52
+ declare function buildDateRowConfigs(...args: Parameters<typeof buildDateRowConfig>): RowConfig<DayHeaderContentArg>[];
53
+ declare function buildDateRowConfig(dates: DateMarker[], datesRepDistinctDays: boolean, dateProfile: DateProfile, todayRange: DateRange, dayHeaderFormat: DateFormatter, // TODO: rename to dateHeaderFormat?
54
+ context: ViewContext, colSpan?: number): RowConfig<DayHeaderContentArg>;
55
+ declare function buildDateRenderConfig(context: ViewContext): CellRenderConfig<DayHeaderContentArg>;
56
+ declare function buildDateDataConfigs(dates: DateMarker[], datesRepDistinctDays: boolean, dateProfile: DateProfile, todayRange: DateRange, dayHeaderFormat: DateFormatter, // TODO: rename to dateHeaderFormat?
57
+ context: ViewContext, colSpan?: number, keyPrefix?: string): CellDataConfig<DayHeaderContentArg>[];
56
58
 
57
- interface DayOfWeekHeaderCellProps {
58
- dow: number;
59
- dayHeaderFormat: DateFormatter;
59
+ interface DayGridHeaderRowProps<RenderProps> extends RowConfig<RenderProps> {
60
60
  isSticky?: boolean;
61
- colSpan?: number;
62
- extraRenderProps?: Dictionary;
63
- extraDataAttrs?: Dictionary;
64
- extraClassNames?: string[];
65
- colWidth?: number;
66
- innerHeightRef?: Ref<number>;
67
- }
68
- declare class DayOfWeekHeaderCell extends BaseComponent<DayOfWeekHeaderCellProps> {
69
- private innerElRef;
70
- private disconectInnerHeight?;
71
- render(): createElement.JSX.Element;
72
- componentDidMount(): void;
73
- componentWillUnmount(): void;
74
- }
75
-
76
- interface HeaderRowProps<Model, ModelKey> {
77
- tierNum: number;
78
- cells: Model[];
79
- renderHeaderContent: (model: Model, tier: number, innerHeightRef: Ref<number> | undefined, // unused
80
- width: number | undefined) => ComponentChild;
81
- getHeaderModelKey: (model: Model) => ModelKey;
82
- cellGroup?: boolean;
83
61
  className?: string;
62
+ height?: number;
84
63
  colWidth?: number;
85
- }
86
- declare class HeaderRow<Model, ModelKey> extends BaseComponent<HeaderRowProps<Model, ModelKey>> {
87
- render(): createElement.JSX.Element;
88
- }
89
-
90
- interface HeaderRowAdvancedProps<Model, ModelKey> {
91
- tierNum: number;
92
- cells: Model[];
93
- renderHeaderContent: (// TODO: better name
94
- model: Model, tier: number, innerHeightRef: Ref<number> | undefined, width: number | undefined) => ComponentChild;
95
- getHeaderModelKey: (model: Model) => ModelKey;
96
64
  innerHeightRef?: Ref<number>;
97
- height: number | undefined;
98
- colWidth?: number;
65
+ role?: string;
66
+ rowIndex?: number;
99
67
  }
100
- declare class HeaderRowAdvanced<Model, ModelKey> extends BaseComponent<HeaderRowAdvancedProps<Model, ModelKey>> {
68
+ declare class DayGridHeaderRow<RenderProps extends {
69
+ text: string;
70
+ isDisabled: boolean;
71
+ }> extends BaseComponent<DayGridHeaderRowProps<RenderProps>> {
101
72
  private innerHeightRefMap;
102
73
  private currentInnerHeight?;
103
74
  render(): createElement.JSX.Element;
104
75
  private handleInnerHeights;
105
76
  }
106
77
 
78
+ declare function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTableModel;
79
+ declare function computeColWidth(colCnt: number, colMinWidth: number, viewportWidth: number | undefined): [
80
+ canvasWidth: number | undefined,
81
+ colWidth: number | undefined
82
+ ];
83
+ declare function computeColFromPosition(positionLeft: number, elWidth: number, colWidth: number | undefined, colCnt: number, isRtl: boolean): {
84
+ col: number;
85
+ left: number;
86
+ right: number;
87
+ };
88
+ declare function getRowEl(rootEl: HTMLElement, row: number): HTMLElement;
89
+ declare function getCellEl(rowEl: HTMLElement, col: number): HTMLElement;
107
90
  declare function createDayHeaderFormatter(explicitFormat: DateFormatter, datesRepDistinctDays: any, dateCnt: any): DateFormatter;
108
91
 
109
- interface DayGridLayoutProps<HeaderCellModel, HeaderCellKey> {
92
+ interface DayGridLayoutProps {
93
+ labelId: string | undefined;
94
+ labelStr: string | undefined;
110
95
  dateProfile: DateProfile;
111
96
  todayRange: DateRange;
112
97
  cellRows: DayTableCell[][];
113
98
  forPrint: boolean;
114
99
  isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean;
115
100
  className: string;
116
- headerTiers: HeaderCellModel[][];
117
- renderHeaderContent: (model: HeaderCellModel, tier: number, innerHeightRef: Ref<number> | undefined, // unused... why do we have it then???
118
- width: number | undefined) => ComponentChild;
119
- getHeaderModelKey: (model: HeaderCellModel) => HeaderCellKey;
120
- fgEventSegs: TableSeg[];
121
- bgEventSegs: TableSeg[];
122
- businessHourSegs: TableSeg[];
123
- dateSelectionSegs: TableSeg[];
124
- eventDrag: EventSegUiInteractionState<TableSeg> | null;
125
- eventResize: EventSegUiInteractionState<TableSeg> | null;
101
+ headerTiers: RowConfig<{
102
+ text: string;
103
+ isDisabled: boolean;
104
+ }>[];
105
+ fgEventSegs: (DayGridRange & EventRangeProps)[];
106
+ bgEventSegs: (DayGridRange & EventRangeProps)[];
107
+ businessHourSegs: (DayGridRange & EventRangeProps)[];
108
+ dateSelectionSegs: (DayGridRange & EventRangeProps)[];
109
+ eventDrag: EventSegUiInteractionState<DayGridRange> | null;
110
+ eventResize: EventSegUiInteractionState<DayGridRange> | null;
126
111
  eventSelection: string;
127
112
  }
128
- declare class DayGridLayout<HeaderCellModel, HeaderCellKey> extends BaseComponent<DayGridLayoutProps<HeaderCellModel, HeaderCellKey>> {
113
+ declare class DayGridLayout extends BaseComponent<DayGridLayoutProps> {
129
114
  private scrollerRef;
130
115
  private rowHeightRefMap;
131
116
  private scrollDate;
132
117
  render(): createElement.JSX.Element;
133
118
  componentDidMount(): void;
134
- componentDidUpdate(prevProps: DayGridLayoutProps<unknown, unknown>): void;
119
+ componentDidUpdate(prevProps: DayGridLayoutProps): void;
135
120
  componentWillUnmount(): void;
136
121
  resetScroll(): void;
137
122
  updateScrollY: () => void;
138
- clearScroll: () => void;
139
- }
140
-
141
- interface DayGridRowProps {
142
- dateProfile: DateProfile;
143
- todayRange: DateRange;
144
- cells: DayTableCell[];
145
- showDayNumbers: boolean;
146
- showWeekNumbers?: boolean;
147
- forPrint: boolean;
148
- cellGroup?: boolean;
149
- className?: string;
150
- forceVSpacing?: boolean;
151
- compact?: boolean;
152
- fgEventSegs: TableSeg[];
153
- bgEventSegs: TableSeg[];
154
- businessHourSegs: TableSeg[];
155
- dateSelectionSegs: TableSeg[];
156
- eventDrag: EventSegUiInteractionState | null;
157
- eventResize: EventSegUiInteractionState | null;
158
- eventSelection: string;
159
- dayMaxEvents: boolean | number;
160
- dayMaxEventRows: boolean | number;
161
- colWidth?: number;
162
- minHeight?: number | string;
163
- rootElRef?: Ref<HTMLElement>;
164
- heightRef?: Ref<number>;
165
- innerHeightRef?: Ref<number>;
166
- }
167
- interface DayGridRowState {
168
- innerHeight?: number;
169
- headerHeight?: number;
170
- segHeightRev?: string;
171
- }
172
- declare const COMPACT_CELL_WIDTH = 80;
173
- declare class DayGridRow extends BaseComponent<DayGridRowProps, DayGridRowState> {
174
- private rootEl;
175
- private cellInnerHeightRefMap;
176
- private cellHeaderHeightRefMap;
177
- private segHeightRefMap;
178
- private disconnectHeight?;
179
- render(): createElement.JSX.Element;
180
- renderFgSegs(segs: TableSeg[], segTops: {
181
- [segStartId: string]: number;
182
- }, todayRange: DateRange, forcedInvisibleMap: {
183
- [instanceId: string]: any;
184
- }, isDragging?: boolean, isResizing?: boolean, isDateSelecting?: boolean): VNode[];
185
- renderFillSegs(segs: TableSeg[], fillType: string): VNode;
186
- handleRootEl: (rootEl: HTMLElement) => void;
187
- componentDidMount(): void;
188
- componentWillUnmount(): void;
189
- private handleHeaderHeights;
190
- private handleInnerHeights;
191
- private handleSegHeights;
192
- getMirrorSegs(): TableSeg[];
193
- getHighlightSegs(): TableSeg[];
123
+ handleScrollEnd: ({ isUser }: {
124
+ isUser: boolean;
125
+ }) => void;
194
126
  }
195
127
 
196
128
  interface DayGridRowsProps {
@@ -199,21 +131,22 @@ interface DayGridRowsProps {
199
131
  cellRows: DayTableCell[][];
200
132
  forPrint: boolean;
201
133
  isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean;
202
- fgEventSegs: TableSeg[];
203
- bgEventSegs: TableSeg[];
204
- businessHourSegs: TableSeg[];
205
- dateSelectionSegs: TableSeg[];
206
- eventDrag: EventSegUiInteractionState<TableSeg> | null;
207
- eventResize: EventSegUiInteractionState<TableSeg> | null;
134
+ className?: string;
135
+ dayMaxEvents?: number | boolean;
136
+ dayMaxEventRows?: number | boolean;
137
+ fgEventSegs: (DayGridRange & EventRangeProps)[];
138
+ bgEventSegs: (DayGridRange & EventRangeProps)[];
139
+ businessHourSegs: (DayGridRange & EventRangeProps)[];
140
+ dateSelectionSegs: (DayGridRange & EventRangeProps)[];
141
+ eventDrag: EventSegUiInteractionState<DayGridRange> | null;
142
+ eventResize: EventSegUiInteractionState<DayGridRange> | null;
208
143
  eventSelection: string;
209
144
  colWidth?: number;
210
145
  width?: number | string;
146
+ visibleWidth?: number;
211
147
  rowHeightRefMap?: RefMap<string, number>;
212
148
  }
213
- interface DayGridRowsState {
214
- width?: number;
215
- }
216
- declare class DayGridRows extends DateComponent<DayGridRowsProps, DayGridRowsState> {
149
+ declare class DayGridRows extends DateComponent<DayGridRowsProps> {
217
150
  private rootEl;
218
151
  private splitBusinessHourSegs;
219
152
  private splitBgEventSegs;
@@ -222,34 +155,66 @@ declare class DayGridRows extends DateComponent<DayGridRowsProps, DayGridRowsSta
222
155
  private splitEventDrag;
223
156
  private splitEventResize;
224
157
  private rowHeightRefMap;
225
- private detachWidth?;
158
+ private disconnectWidth?;
226
159
  render(): createElement.JSX.Element;
227
160
  handleRootEl: (rootEl: HTMLDivElement) => void;
228
161
  componentDidMount(): void;
229
162
  componentWillUnmount(): void;
230
163
  queryHit(positionLeft: number, positionTop: number, elWidth: number): Hit;
231
164
  }
165
+ declare function computeRowHeight(visibleWidth: number | undefined, // should INCLUDE any scrollbar width to avoid oscillation
166
+ rowCnt: number, isHeightAuto: boolean, forPrint: boolean, options: ViewOptionsRefined): [minHeight: CssDimValue | undefined, isCompact: boolean];
232
167
 
233
- declare function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTableModel;
234
- declare function computeColWidth(colCnt: number, colMinWidth: number, viewportWidth: number | undefined): [
235
- canvasWidth: number | undefined,
236
- colWidth: number | undefined
237
- ];
238
- type DateHeaderCellObj = {
239
- date: DateMarker;
240
- colSpan: number;
241
- };
242
- type DayOfWeekHeaderCellObj = {
243
- dow: number;
244
- colSpan: number;
168
+ type DayRowRange = SlicedCoordRange;
169
+ type DayRowEventRange = DayRowRange & EventRangeProps;
170
+ type DayRowEventRangePart = DayRowEventRange & {
171
+ isSlice?: boolean;
172
+ standinFor?: DayRowEventRange;
245
173
  };
246
- type HeaderCellObj = DateHeaderCellObj | DayOfWeekHeaderCellObj;
247
- declare function computeColFromPosition(positionLeft: number, elWidth: number, colWidth: number | undefined, colCnt: number, isRtl: boolean): {
248
- col: number;
249
- left: number;
250
- right: number;
251
- };
252
- declare function getRowEl(rootEl: HTMLElement, row: number): HTMLElement;
253
- declare function getCellEl(rowEl: HTMLElement, col: number): HTMLElement;
254
174
 
255
- export { COMPACT_CELL_WIDTH, DateHeaderCell, DateHeaderCellObj, DayGridLayout, DayGridLayoutProps, DayGridRow, DayGridRowProps, DayGridRows, DayGridView, DayOfWeekHeaderCell, DayOfWeekHeaderCellObj, DayTableSlicer, HeaderCellObj, HeaderRow, HeaderRowAdvanced, TableDateProfileGenerator, TableSeg, buildDayTableModel, buildDayTableRenderRange, computeColFromPosition, computeColWidth, createDayHeaderFormatter, getCellEl, getRowEl };
175
+ interface DayGridRowProps {
176
+ dateProfile: DateProfile;
177
+ todayRange: DateRange;
178
+ cells: DayTableCell[];
179
+ showDayNumbers: boolean;
180
+ showWeekNumbers?: boolean;
181
+ forPrint: boolean;
182
+ className?: string;
183
+ isCompact?: boolean;
184
+ isTall?: boolean;
185
+ role?: string;
186
+ fgEventSegs: (SlicedCoordRange & EventRangeProps)[];
187
+ bgEventSegs: (SlicedCoordRange & EventRangeProps)[];
188
+ businessHourSegs: (SlicedCoordRange & EventRangeProps)[];
189
+ dateSelectionSegs: (SlicedCoordRange & EventRangeProps)[];
190
+ eventDrag: EventSegUiInteractionState<SlicedCoordRange> | null;
191
+ eventResize: EventSegUiInteractionState<SlicedCoordRange> | null;
192
+ eventSelection: string;
193
+ dayMaxEvents: boolean | number;
194
+ dayMaxEventRows: boolean | number;
195
+ colWidth?: number;
196
+ minHeight?: number | string;
197
+ rootElRef?: Ref<HTMLElement>;
198
+ heightRef?: Ref<number>;
199
+ }
200
+ declare class DayGridRow extends BaseComponent<DayGridRowProps> {
201
+ private rootEl;
202
+ private headerHeightRefMap;
203
+ private mainHeightRefMap;
204
+ private segHeightRefMap;
205
+ private disconnectHeight?;
206
+ render(): createElement.JSX.Element;
207
+ renderFgSegs(headerHeight: number | undefined, segs: DayRowEventRangePart[], segTops: Map<string, number>, todayRange: DateRange, forcedInvisibleMap: {
208
+ [instanceId: string]: any;
209
+ }, isDragging?: boolean, isResizing?: boolean, isDateSelecting?: boolean): VNode[];
210
+ renderFillSegs(segs: DayRowEventRangePart[], fillType: string): VNode;
211
+ handleRootEl: (rootEl: HTMLElement) => void;
212
+ componentDidMount(): void;
213
+ componentWillUnmount(): void;
214
+ computeFgDims(): [maxMainTop: number | undefined, minMainHeight: number | undefined];
215
+ private handleSegPositioning;
216
+ private getMirrorSegs;
217
+ private getHighlightSegs;
218
+ }
219
+
220
+ export { CellDataConfig, CellRenderConfig, DayGridHeaderRow, DayGridHeaderRowProps, DayGridLayout, DayGridLayoutProps, DayGridRow, DayGridRowProps, DayGridRows, DayGridView, DayTableSlicer, RowConfig, TableDateProfileGenerator, buildDateDataConfigs, buildDateRenderConfig, buildDateRowConfig, buildDateRowConfigs, buildDayTableModel, buildDayTableRenderRange, computeColFromPosition, computeColWidth, computeRowHeight, createDayHeaderFormatter, getCellEl, getRowEl };