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

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,194 +19,128 @@ 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;
99
65
  }
100
- declare class HeaderRowAdvanced<Model, ModelKey> extends BaseComponent<HeaderRowAdvancedProps<Model, ModelKey>> {
66
+ declare class DayGridHeaderRow<RenderProps extends {
67
+ text: string;
68
+ isDisabled: boolean;
69
+ }> extends BaseComponent<DayGridHeaderRowProps<RenderProps>> {
101
70
  private innerHeightRefMap;
102
71
  private currentInnerHeight?;
103
72
  render(): createElement.JSX.Element;
104
73
  private handleInnerHeights;
105
74
  }
106
75
 
76
+ declare function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTableModel;
77
+ declare function computeColWidth(colCnt: number, colMinWidth: number, viewportWidth: number | undefined): [
78
+ canvasWidth: number | undefined,
79
+ colWidth: number | undefined
80
+ ];
81
+ declare function computeColFromPosition(positionLeft: number, elWidth: number, colWidth: number | undefined, colCnt: number, isRtl: boolean): {
82
+ col: number;
83
+ left: number;
84
+ right: number;
85
+ };
86
+ declare function getRowEl(rootEl: HTMLElement, row: number): HTMLElement;
87
+ declare function getCellEl(rowEl: HTMLElement, col: number): HTMLElement;
107
88
  declare function createDayHeaderFormatter(explicitFormat: DateFormatter, datesRepDistinctDays: any, dateCnt: any): DateFormatter;
108
89
 
109
- interface DayGridLayoutProps<HeaderCellModel, HeaderCellKey> {
90
+ interface DayGridLayoutProps {
110
91
  dateProfile: DateProfile;
111
92
  todayRange: DateRange;
112
93
  cellRows: DayTableCell[][];
113
94
  forPrint: boolean;
114
95
  isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean;
115
96
  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;
97
+ headerTiers: RowConfig<{
98
+ text: string;
99
+ isDisabled: boolean;
100
+ }>[];
101
+ fgEventSegs: (DayGridRange & EventRangeProps)[];
102
+ bgEventSegs: (DayGridRange & EventRangeProps)[];
103
+ businessHourSegs: (DayGridRange & EventRangeProps)[];
104
+ dateSelectionSegs: (DayGridRange & EventRangeProps)[];
105
+ eventDrag: EventSegUiInteractionState<DayGridRange> | null;
106
+ eventResize: EventSegUiInteractionState<DayGridRange> | null;
126
107
  eventSelection: string;
127
108
  }
128
- declare class DayGridLayout<HeaderCellModel, HeaderCellKey> extends BaseComponent<DayGridLayoutProps<HeaderCellModel, HeaderCellKey>> {
109
+ declare class DayGridLayout extends BaseComponent<DayGridLayoutProps> {
129
110
  private scrollerRef;
130
111
  private rowHeightRefMap;
131
112
  private scrollDate;
132
113
  render(): createElement.JSX.Element;
133
114
  componentDidMount(): void;
134
- componentDidUpdate(prevProps: DayGridLayoutProps<unknown, unknown>): void;
115
+ componentDidUpdate(prevProps: DayGridLayoutProps): void;
135
116
  componentWillUnmount(): void;
136
117
  resetScroll(): void;
137
118
  updateScrollY: () => void;
138
119
  clearScroll: () => void;
139
120
  }
140
121
 
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[];
194
- }
195
-
196
122
  interface DayGridRowsProps {
197
123
  dateProfile: DateProfile;
198
124
  todayRange: DateRange;
199
125
  cellRows: DayTableCell[][];
200
126
  forPrint: boolean;
201
127
  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;
128
+ className?: string;
129
+ dayMaxEvents?: number | boolean;
130
+ dayMaxEventRows?: number | boolean;
131
+ fgEventSegs: (DayGridRange & EventRangeProps)[];
132
+ bgEventSegs: (DayGridRange & EventRangeProps)[];
133
+ businessHourSegs: (DayGridRange & EventRangeProps)[];
134
+ dateSelectionSegs: (DayGridRange & EventRangeProps)[];
135
+ eventDrag: EventSegUiInteractionState<DayGridRange> | null;
136
+ eventResize: EventSegUiInteractionState<DayGridRange> | null;
208
137
  eventSelection: string;
209
138
  colWidth?: number;
210
139
  width?: number | string;
140
+ visibleWidth?: number;
211
141
  rowHeightRefMap?: RefMap<string, number>;
212
142
  }
213
- interface DayGridRowsState {
214
- width?: number;
215
- }
216
- declare class DayGridRows extends DateComponent<DayGridRowsProps, DayGridRowsState> {
143
+ declare class DayGridRows extends DateComponent<DayGridRowsProps> {
217
144
  private rootEl;
218
145
  private splitBusinessHourSegs;
219
146
  private splitBgEventSegs;
@@ -222,34 +149,65 @@ declare class DayGridRows extends DateComponent<DayGridRowsProps, DayGridRowsSta
222
149
  private splitEventDrag;
223
150
  private splitEventResize;
224
151
  private rowHeightRefMap;
225
- private detachWidth?;
152
+ private disconnectWidth?;
226
153
  render(): createElement.JSX.Element;
227
154
  handleRootEl: (rootEl: HTMLDivElement) => void;
228
155
  componentDidMount(): void;
229
156
  componentWillUnmount(): void;
230
157
  queryHit(positionLeft: number, positionTop: number, elWidth: number): Hit;
231
158
  }
159
+ declare function computeRowHeight(visibleWidth: number | undefined, // should INCLUDE any scrollbar width to avoid oscillation
160
+ rowCnt: number, isHeightAuto: boolean, forPrint: boolean, options: ViewOptionsRefined): [minHeight: CssDimValue | undefined, isCompact: boolean];
232
161
 
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;
162
+ type DayRowRange = SlicedCoordRange;
163
+ type DayRowEventRange = DayRowRange & EventRangeProps;
164
+ type DayRowEventRangePart = DayRowEventRange & {
165
+ isSlice?: boolean;
166
+ standinFor?: DayRowEventRange;
245
167
  };
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
168
 
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 };
169
+ interface DayGridRowProps {
170
+ dateProfile: DateProfile;
171
+ todayRange: DateRange;
172
+ cells: DayTableCell[];
173
+ showDayNumbers: boolean;
174
+ showWeekNumbers?: boolean;
175
+ forPrint: boolean;
176
+ className?: string;
177
+ isCompact?: boolean;
178
+ isTall?: boolean;
179
+ fgEventSegs: (SlicedCoordRange & EventRangeProps)[];
180
+ bgEventSegs: (SlicedCoordRange & EventRangeProps)[];
181
+ businessHourSegs: (SlicedCoordRange & EventRangeProps)[];
182
+ dateSelectionSegs: (SlicedCoordRange & EventRangeProps)[];
183
+ eventDrag: EventSegUiInteractionState<SlicedCoordRange> | null;
184
+ eventResize: EventSegUiInteractionState<SlicedCoordRange> | null;
185
+ eventSelection: string;
186
+ dayMaxEvents: boolean | number;
187
+ dayMaxEventRows: boolean | number;
188
+ colWidth?: number;
189
+ minHeight?: number | string;
190
+ rootElRef?: Ref<HTMLElement>;
191
+ heightRef?: Ref<number>;
192
+ }
193
+ declare class DayGridRow extends BaseComponent<DayGridRowProps> {
194
+ private rootEl;
195
+ private headerHeightRefMap;
196
+ private mainHeightRefMap;
197
+ private segHeightRefMap;
198
+ private disconnectHeight?;
199
+ render(): createElement.JSX.Element;
200
+ renderFgSegs(headerHeight: number | undefined, segs: DayRowEventRangePart[], segTops: Map<string, number>, todayRange: DateRange, forcedInvisibleMap: {
201
+ [instanceId: string]: any;
202
+ }, isDragging?: boolean, isResizing?: boolean, isDateSelecting?: boolean): VNode[];
203
+ renderFillSegs(segs: DayRowEventRangePart[], fillType: string): VNode;
204
+ handleRootEl: (rootEl: HTMLElement) => void;
205
+ componentDidMount(): void;
206
+ componentWillUnmount(): void;
207
+ computeFgDims(): [maxMainTop: number | undefined, minMainHeight: number | undefined];
208
+ private handleSegPositioning;
209
+ private getMirrorSegs;
210
+ private getHighlightSegs;
211
+ }
212
+
213
+ 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 };