@fullcalendar/daygrid 7.0.0-beta.3 → 7.0.0-rc.0
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/index.global.js +185 -122
- package/index.global.min.js +2 -2
- package/internal.cjs +184 -121
- package/internal.d.ts +18 -10
- package/internal.js +184 -122
- package/package.json +2 -2
package/internal.cjs
CHANGED
|
@@ -32,10 +32,15 @@ Or ResourceApi object itself?
|
|
|
32
32
|
function buildDateRowConfig(dates, datesRepDistinctDays, dateProfile, todayRange, dayHeaderFormat, // TODO: rename to dateHeaderFormat?
|
|
33
33
|
context, colSpan) {
|
|
34
34
|
return {
|
|
35
|
+
isDateRow: true,
|
|
35
36
|
renderConfig: buildDateRenderConfig(context),
|
|
36
37
|
dataConfigs: buildDateDataConfigs(dates, datesRepDistinctDays, dateProfile, todayRange, dayHeaderFormat, context, colSpan)
|
|
37
38
|
};
|
|
38
39
|
}
|
|
40
|
+
/*
|
|
41
|
+
For header cells: how to connect w/ custom rendering
|
|
42
|
+
Applies to all cells in a row
|
|
43
|
+
*/
|
|
39
44
|
function buildDateRenderConfig(context) {
|
|
40
45
|
const { options } = context;
|
|
41
46
|
return {
|
|
@@ -46,23 +51,38 @@ function buildDateRenderConfig(context) {
|
|
|
46
51
|
willUnmount: options.dayHeaderWillUnmount,
|
|
47
52
|
};
|
|
48
53
|
}
|
|
54
|
+
const dowDates = [];
|
|
55
|
+
for (let dow = 0; dow < 7; dow++) {
|
|
56
|
+
dowDates.push(internal_cjs.addDays(new Date(259200000), dow)); // start with Sun, 04 Jan 1970 00:00:00 GMT)
|
|
57
|
+
}
|
|
58
|
+
/*
|
|
59
|
+
For header cells: data
|
|
60
|
+
*/
|
|
49
61
|
function buildDateDataConfigs(dates, datesRepDistinctDays, dateProfile, todayRange, dayHeaderFormat, // TODO: rename to dateHeaderFormat?
|
|
50
|
-
context, colSpan = 1, keyPrefix = ''
|
|
62
|
+
context, colSpan = 1, keyPrefix = '', extraRenderProps = {}, // TODO
|
|
63
|
+
extraAttrs = {}, // TODO
|
|
64
|
+
className = '') {
|
|
51
65
|
const { dateEnv, viewApi, options } = context;
|
|
52
66
|
return datesRepDistinctDays
|
|
53
67
|
? dates.map((date) => {
|
|
54
68
|
const dateMeta = internal_cjs.getDateMeta(date, todayRange, null, dateProfile);
|
|
55
69
|
const text = dateEnv.format(date, dayHeaderFormat);
|
|
56
|
-
const renderProps = Object.assign(Object.assign({}, dateMeta), { date: dateEnv.toDate(date), view: viewApi, text });
|
|
57
|
-
const isNavLink = options.navLinks && !dateMeta.isDisabled
|
|
70
|
+
const renderProps = Object.assign(Object.assign(Object.assign({}, dateMeta), { date: dateEnv.toDate(date), view: viewApi, text }), extraRenderProps);
|
|
71
|
+
const isNavLink = options.navLinks && !dateMeta.isDisabled &&
|
|
72
|
+
dates.length > 1; // don't show navlink to day if only one day
|
|
73
|
+
const fullDateStr = internal_cjs.buildDateStr(context, date);
|
|
74
|
+
// for DayGridHeaderCell
|
|
58
75
|
return {
|
|
59
76
|
key: keyPrefix + date.toUTCString(),
|
|
60
77
|
renderProps,
|
|
61
|
-
attrs: { '
|
|
62
|
-
|
|
78
|
+
attrs: Object.assign(Object.assign(Object.assign({ 'aria-label': fullDateStr }, (dateMeta.isToday ? { 'aria-current': 'date' } : {})), { 'data-date': internal_cjs.formatDayString(date) }), extraAttrs),
|
|
79
|
+
// for navlink
|
|
80
|
+
innerAttrs: isNavLink
|
|
81
|
+
? internal_cjs.buildNavLinkAttrs(context, date, undefined, fullDateStr)
|
|
82
|
+
: { 'aria-hidden': true },
|
|
63
83
|
colSpan,
|
|
64
84
|
isNavLink,
|
|
65
|
-
className: internal_cjs.getDayClassName(dateMeta),
|
|
85
|
+
className: internal_cjs.joinClassNames(className, internal_cjs.getDayClassName(dateMeta)),
|
|
66
86
|
};
|
|
67
87
|
})
|
|
68
88
|
: dates.map((date) => {
|
|
@@ -77,13 +97,19 @@ context, colSpan = 1, keyPrefix = '') {
|
|
|
77
97
|
isOther: false,
|
|
78
98
|
};
|
|
79
99
|
const text = dateEnv.format(normDate, dayHeaderFormat);
|
|
80
|
-
const renderProps = Object.assign(Object.assign({}, dayMeta), { date, view: viewApi, text });
|
|
100
|
+
const renderProps = Object.assign(Object.assign(Object.assign({}, dayMeta), { date: dowDates[dow], view: viewApi, text }), extraRenderProps);
|
|
101
|
+
const fullWeekDayStr = dateEnv.format(normDate, WEEKDAY_FORMAT);
|
|
102
|
+
// for DayGridHeaderCell
|
|
81
103
|
return {
|
|
82
104
|
key: keyPrefix + String(dow),
|
|
83
105
|
renderProps,
|
|
84
|
-
|
|
106
|
+
attrs: Object.assign({ 'aria-label': fullWeekDayStr }, extraAttrs),
|
|
107
|
+
// NOT a navlink
|
|
108
|
+
innerAttrs: {
|
|
109
|
+
'aria-hidden': true, // label already on cell
|
|
110
|
+
},
|
|
85
111
|
colSpan,
|
|
86
|
-
className: internal_cjs.getDayClassName(dayMeta),
|
|
112
|
+
className: internal_cjs.joinClassNames(className, internal_cjs.getDayClassName(dayMeta)),
|
|
87
113
|
};
|
|
88
114
|
});
|
|
89
115
|
}
|
|
@@ -167,8 +193,8 @@ class DayGridListEvent extends internal_cjs.BaseComponent {
|
|
|
167
193
|
/* slicedStart = */ undefined,
|
|
168
194
|
/* slicedEnd = */ undefined, props.isStart, props.isEnd, context,
|
|
169
195
|
/* defaultDisplayEventTime = */ true, props.defaultDisplayEventEnd);
|
|
170
|
-
let
|
|
171
|
-
return (preact_cjs.createElement(internal_cjs.EventContainer, Object.assign({}, props, { tag:
|
|
196
|
+
let [tag, attrs] = internal_cjs.getEventTagAndAttrs(eventRange, context);
|
|
197
|
+
return (preact_cjs.createElement(internal_cjs.EventContainer, Object.assign({}, props, { tag: tag, attrs: attrs, className: 'fc-daygrid-dot-event fc-daygrid-event', defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));
|
|
172
198
|
}
|
|
173
199
|
}
|
|
174
200
|
function renderInnerContent(renderProps) {
|
|
@@ -202,9 +228,34 @@ class DayGridMoreLink extends internal_cjs.BaseComponent {
|
|
|
202
228
|
class DayGridCell extends internal_cjs.DateComponent {
|
|
203
229
|
constructor() {
|
|
204
230
|
super(...arguments);
|
|
231
|
+
// memo
|
|
232
|
+
this.getDateMeta = internal_cjs.memoize(internal_cjs.getDateMeta);
|
|
205
233
|
// ref
|
|
206
234
|
this.rootElRef = preact_cjs.createRef();
|
|
207
|
-
this.
|
|
235
|
+
this.handleBodyEl = (bodyEl) => {
|
|
236
|
+
if (this.disconnectBodyHeight) {
|
|
237
|
+
this.disconnectBodyHeight();
|
|
238
|
+
this.disconnectBodyHeight = undefined;
|
|
239
|
+
internal_cjs.setRef(this.props.headerHeightRef, null);
|
|
240
|
+
internal_cjs.setRef(this.props.mainHeightRef, null);
|
|
241
|
+
}
|
|
242
|
+
if (bodyEl) {
|
|
243
|
+
// we want to fire on ANY size change, because we do more advanced stuff
|
|
244
|
+
this.disconnectBodyHeight = internal_cjs.watchSize(bodyEl, (_bodyWidth, bodyHeight) => {
|
|
245
|
+
const { props } = this;
|
|
246
|
+
const mainRect = bodyEl.getBoundingClientRect();
|
|
247
|
+
const rootRect = this.rootElRef.current.getBoundingClientRect();
|
|
248
|
+
const headerHeight = mainRect.top - rootRect.top;
|
|
249
|
+
if (!internal_cjs.isDimsEqual(this.headerHeight, headerHeight)) {
|
|
250
|
+
this.headerHeight = headerHeight;
|
|
251
|
+
internal_cjs.setRef(props.headerHeightRef, headerHeight);
|
|
252
|
+
}
|
|
253
|
+
if (props.fgLiquidHeight) {
|
|
254
|
+
internal_cjs.setRef(props.mainHeightRef, bodyHeight);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
};
|
|
208
259
|
}
|
|
209
260
|
render() {
|
|
210
261
|
let { props, context } = this;
|
|
@@ -212,38 +263,28 @@ class DayGridCell extends internal_cjs.DateComponent {
|
|
|
212
263
|
// TODO: memoize this
|
|
213
264
|
const isMonthStart = props.showDayNumber &&
|
|
214
265
|
shouldDisplayMonthStart(props.date, props.dateProfile.currentRange, dateEnv);
|
|
215
|
-
|
|
266
|
+
const dateMeta = this.getDateMeta(props.date, props.todayRange, null, props.dateProfile);
|
|
267
|
+
const baseClassName = internal_cjs.joinClassNames('fc-daygrid-day', props.borderStart && 'fc-border-s', props.width != null ? '' : 'fc-liquid', 'fc-flex-col');
|
|
268
|
+
if (dateMeta.isDisabled) {
|
|
269
|
+
return (preact_cjs.createElement("div", { role: 'gridcell', "aria-disabled": true, className: internal_cjs.joinClassNames(baseClassName, 'fc-day-disabled'), style: {
|
|
270
|
+
width: props.width
|
|
271
|
+
} }));
|
|
272
|
+
}
|
|
273
|
+
const hasDayNumber = props.showDayNumber || internal_cjs.hasCustomDayCellContent(options);
|
|
274
|
+
const isNavLink = options.navLinks;
|
|
275
|
+
const fullDateStr = internal_cjs.buildDateStr(context, props.date);
|
|
276
|
+
return (preact_cjs.createElement(internal_cjs.DayCellContainer, { tag: "div", className: internal_cjs.joinClassNames(baseClassName, props.className), attrs: Object.assign(Object.assign({}, props.attrs), { role: 'gridcell', 'aria-label': fullDateStr }), style: {
|
|
216
277
|
width: props.width
|
|
217
|
-
}, elRef: this.rootElRef, renderProps: props.renderProps, defaultGenerator: renderTopInner, date: props.date,
|
|
218
|
-
|
|
219
|
-
preact_cjs.createElement(InnerContent, { tag:
|
|
220
|
-
|
|
278
|
+
}, elRef: this.rootElRef, renderProps: props.renderProps, defaultGenerator: renderTopInner, date: props.date, dateMeta: dateMeta, showDayNumber: props.showDayNumber, isMonthStart: isMonthStart }, (InnerContent) => (preact_cjs.createElement(preact_cjs.Fragment, null,
|
|
279
|
+
hasDayNumber && (preact_cjs.createElement("div", { className: "fc-daygrid-day-header" },
|
|
280
|
+
preact_cjs.createElement(InnerContent, { tag: 'div', attrs: isNavLink
|
|
281
|
+
? internal_cjs.buildNavLinkAttrs(context, props.date, undefined, fullDateStr)
|
|
282
|
+
: { 'aria-hidden': true } // label already on cell
|
|
283
|
+
, className: internal_cjs.joinClassNames('fc-daygrid-day-number', isMonthStart && 'fc-daygrid-month-start') }))),
|
|
284
|
+
preact_cjs.createElement("div", { className: internal_cjs.joinClassNames('fc-daygrid-day-body', props.isTall && 'fc-daygrid-day-body-tall', props.fgLiquidHeight ? 'fc-liquid' : 'fc-grow'), ref: this.handleBodyEl },
|
|
221
285
|
preact_cjs.createElement("div", { className: 'fc-daygrid-day-events', style: { height: props.fgHeight } }, props.fg),
|
|
222
286
|
preact_cjs.createElement(DayGridMoreLink, { isBlock: props.isCompact, allDayDate: props.date, segs: props.segs, hiddenSegs: props.hiddenSegs, alignElRef: this.rootElRef, alignParentTop: props.showDayNumber ? '[role=row]' : '.fc-view', dateSpanProps: props.dateSpanProps, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))))));
|
|
223
287
|
}
|
|
224
|
-
componentDidMount() {
|
|
225
|
-
const bodyEl = this.bodyElRef.current;
|
|
226
|
-
// we want to fire on ANY size change, because we do more advanced stuff
|
|
227
|
-
this.disconnectBodyHeight = internal_cjs.watchSize(bodyEl, (_bodyWidth, bodyHeight) => {
|
|
228
|
-
const { props } = this;
|
|
229
|
-
const mainRect = bodyEl.getBoundingClientRect();
|
|
230
|
-
const rootRect = this.rootElRef.current.getBoundingClientRect();
|
|
231
|
-
const headerHeight = mainRect.top - rootRect.top;
|
|
232
|
-
if (!internal_cjs.isDimsEqual(this.headerHeight, headerHeight)) {
|
|
233
|
-
this.headerHeight = headerHeight;
|
|
234
|
-
internal_cjs.setRef(props.headerHeightRef, headerHeight);
|
|
235
|
-
}
|
|
236
|
-
if (props.fgLiquidHeight) {
|
|
237
|
-
internal_cjs.setRef(props.mainHeightRef, bodyHeight);
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
componentWillUnmount() {
|
|
242
|
-
this.disconnectBodyHeight();
|
|
243
|
-
const { props } = this;
|
|
244
|
-
internal_cjs.setRef(props.headerHeightRef, null);
|
|
245
|
-
internal_cjs.setRef(props.mainHeightRef, null);
|
|
246
|
-
}
|
|
247
288
|
}
|
|
248
289
|
// Utils
|
|
249
290
|
// -------------------------------------------------------------------------------------------------
|
|
@@ -471,10 +512,10 @@ function computeRowFromPosition(positionTop, cellRows, rowHeightMap) {
|
|
|
471
512
|
// Hit Element
|
|
472
513
|
// -------------------------------------------------------------------------------------------------
|
|
473
514
|
function getRowEl(rootEl, row) {
|
|
474
|
-
return rootEl.querySelectorAll('
|
|
515
|
+
return rootEl.querySelectorAll('[role=row]')[row];
|
|
475
516
|
}
|
|
476
517
|
function getCellEl(rowEl, col) {
|
|
477
|
-
return rowEl.querySelectorAll('
|
|
518
|
+
return rowEl.querySelectorAll('[role=gridcell]')[col];
|
|
478
519
|
}
|
|
479
520
|
// Header Formatting
|
|
480
521
|
// -------------------------------------------------------------------------------------------------
|
|
@@ -567,14 +608,21 @@ class DayGridRow extends internal_cjs.BaseComponent {
|
|
|
567
608
|
(props.eventDrag && props.eventDrag.affectedInstances) ||
|
|
568
609
|
(props.eventResize && props.eventResize.affectedInstances) ||
|
|
569
610
|
{};
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
611
|
+
const isNavLink = options.navLinks;
|
|
612
|
+
const fullWeekStr = internal_cjs.buildDateStr(context, weekDate, 'week');
|
|
613
|
+
return (preact_cjs.createElement("div", { role: props.role /* !!! */, "aria-label": props.role === 'row' // HACK
|
|
614
|
+
? fullWeekStr
|
|
615
|
+
: undefined // can't have label on non-role div
|
|
616
|
+
, className: internal_cjs.joinClassNames('fc-daygrid-row', props.forPrint && 'fc-daygrid-row-print', 'fc-flex-row fc-rel', props.className), style: {
|
|
617
|
+
'flex-basis': props.basis,
|
|
573
618
|
}, ref: this.handleRootEl },
|
|
619
|
+
props.showWeekNumbers && (preact_cjs.createElement(internal_cjs.WeekNumberContainer, { tag: 'div', attrs: Object.assign(Object.assign({}, (isNavLink
|
|
620
|
+
? internal_cjs.buildNavLinkAttrs(context, weekDate, 'week', fullWeekStr, /* isTabbable = */ false)
|
|
621
|
+
: {})), { 'role': undefined, 'aria-hidden': true }), className: 'fc-daygrid-week-number', date: weekDate, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),
|
|
574
622
|
this.renderFillSegs(props.businessHourSegs, 'non-business'),
|
|
575
623
|
this.renderFillSegs(props.bgEventSegs, 'bg-event'),
|
|
576
624
|
this.renderFillSegs(highlightSegs, 'highlight'),
|
|
577
|
-
|
|
625
|
+
props.cells.map((cell, col) => {
|
|
578
626
|
const normalFgNodes = this.renderFgSegs(maxMainTop, renderableSegsByCol[col], segTops, props.todayRange, forcedInvisibleMap);
|
|
579
627
|
return (preact_cjs.createElement(DayGridCell, { key: cell.key, dateProfile: props.dateProfile, todayRange: props.todayRange, date: cell.date, showDayNumber: props.showDayNumbers, isCompact: props.isCompact, isTall: props.isTall, borderStart: Boolean(col),
|
|
580
628
|
// content
|
|
@@ -585,8 +633,7 @@ class DayGridRow extends internal_cjs.BaseComponent {
|
|
|
585
633
|
fgHeight: heightsByCol[col], width: props.colWidth,
|
|
586
634
|
// refs
|
|
587
635
|
headerHeightRef: headerHeightRefMap.createRef(cell.key), mainHeightRef: mainHeightRefMap.createRef(cell.key) }));
|
|
588
|
-
})
|
|
589
|
-
props.showWeekNumbers && (preact_cjs.createElement(internal_cjs.WeekNumberContainer, { tag: "a", attrs: internal_cjs.buildNavLinkAttrs(context, weekDate, 'week'), className: 'fc-daygrid-week-number', date: weekDate, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),
|
|
636
|
+
}),
|
|
590
637
|
this.renderFgSegs(maxMainTop, mirrorSegs, segTops, props.todayRange, {}, // forcedInvisibleMap
|
|
591
638
|
Boolean(props.eventDrag), Boolean(props.eventResize), false)));
|
|
592
639
|
}
|
|
@@ -746,30 +793,22 @@ class DayGridRows extends internal_cjs.DateComponent {
|
|
|
746
793
|
let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);
|
|
747
794
|
let isHeightAuto = internal_cjs.getIsHeightAuto(options);
|
|
748
795
|
let rowHeightsRedistribute = !props.forPrint && !isHeightAuto;
|
|
749
|
-
let
|
|
750
|
-
|
|
796
|
+
let rowBasis = computeRowBasis(props.visibleWidth, rowCnt, isHeightAuto, options);
|
|
797
|
+
let isCompact = computeRowIsCompact(props.visibleWidth, options);
|
|
798
|
+
return (preact_cjs.createElement("div", { role: 'rowgroup', className: internal_cjs.joinClassNames(
|
|
751
799
|
// HACK for Safari. Can't do break-inside:avoid with flexbox items, likely b/c it's not standard:
|
|
752
800
|
// https://stackoverflow.com/a/60256345
|
|
753
|
-
!props.forPrint && 'fc-flex-col', props.className), style: { width: props.width }, ref: this.handleRootEl }, props.cellRows.map((cells, row) => (preact_cjs.createElement(DayGridRow, { key: cells[0].key, dateProfile: props.dateProfile, todayRange: props.todayRange, cells: cells, showDayNumbers: rowCnt > 1, showWeekNumbers: options.weekNumbers, forPrint: props.forPrint, isCompact: isCompact,
|
|
801
|
+
!props.forPrint && 'fc-flex-col', props.className), style: { width: props.width }, ref: this.handleRootEl }, props.cellRows.map((cells, row) => (preact_cjs.createElement(DayGridRow, { key: cells[0].key, role: 'row', dateProfile: props.dateProfile, todayRange: props.todayRange, cells: cells, showDayNumbers: rowCnt > 1, showWeekNumbers: rowCnt > 1 && options.weekNumbers, forPrint: props.forPrint, isCompact: isCompact,
|
|
754
802
|
// if not auto-height, distribute height of container somewhat evently to rows
|
|
755
|
-
|
|
756
|
-
className: internal_cjs.joinClassNames(rowHeightsRedistribute && 'fc-grow fc-basis0', rowCnt > 1 && 'fc-break-inside-avoid', // don't avoid breaks for single tall row
|
|
803
|
+
className: internal_cjs.joinClassNames(rowHeightsRedistribute && 'fc-grow', rowCnt > 1 && 'fc-break-inside-avoid', // don't avoid breaks for single tall row
|
|
757
804
|
row < rowCnt - 1 && 'fc-border-b'),
|
|
758
805
|
// content
|
|
759
806
|
fgEventSegs: fgEventSegsByRow[row], bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* HACK */, businessHourSegs: businessHourSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventSelection: props.eventSelection, eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows,
|
|
760
807
|
// dimensions
|
|
761
|
-
colWidth: props.colWidth,
|
|
808
|
+
colWidth: props.colWidth, basis: rowBasis,
|
|
762
809
|
// refs
|
|
763
810
|
heightRef: rowHeightRefMap.createRef(cells[0].key) })))));
|
|
764
811
|
}
|
|
765
|
-
componentDidMount() {
|
|
766
|
-
this.disconnectWidth = internal_cjs.watchWidth(this.rootEl, (width) => {
|
|
767
|
-
this.setState({ width });
|
|
768
|
-
});
|
|
769
|
-
}
|
|
770
|
-
componentWillUnmount() {
|
|
771
|
-
this.disconnectWidth();
|
|
772
|
-
}
|
|
773
812
|
// Hit System
|
|
774
813
|
// -----------------------------------------------------------------------------------------------
|
|
775
814
|
queryHit(positionLeft, positionTop, elWidth) {
|
|
@@ -786,8 +825,7 @@ class DayGridRows extends internal_cjs.DateComponent {
|
|
|
786
825
|
start: cellStartDate,
|
|
787
826
|
end: cellEndDate,
|
|
788
827
|
}, allDay: true }, cell.dateSpanProps),
|
|
789
|
-
|
|
790
|
-
dayEl: getCellEl(getRowEl(this.rootEl, row), col),
|
|
828
|
+
getDayEl: () => getCellEl(getRowEl(this.rootEl, row), col),
|
|
791
829
|
rect: {
|
|
792
830
|
left,
|
|
793
831
|
right,
|
|
@@ -803,27 +841,35 @@ class DayGridRows extends internal_cjs.DateComponent {
|
|
|
803
841
|
function isSegAllDay(seg) {
|
|
804
842
|
return seg.eventRange.def.allDay;
|
|
805
843
|
}
|
|
806
|
-
|
|
807
|
-
|
|
844
|
+
/*
|
|
845
|
+
Amount of height a row should consume prior to expanding
|
|
846
|
+
We don't want to use min-height with flexbox because we leverage min-height:auto,
|
|
847
|
+
which yields value based on natural height of events
|
|
848
|
+
*/
|
|
849
|
+
function computeRowBasis(visibleWidth, // should INCLUDE any scrollbar width to avoid oscillation
|
|
850
|
+
rowCnt, isHeightAuto, options) {
|
|
808
851
|
if (visibleWidth != null) {
|
|
809
852
|
// ensure a consistent row min-height modelled after a month with 6 rows respecting aspectRatio
|
|
810
853
|
// will result in same minHeight regardless of weekends, dayMinWidth, height:auto
|
|
811
|
-
const
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
// this is value that looks natural on paper for portrait/landscape
|
|
816
|
-
? '6em'
|
|
817
|
-
// don't give minHeight when single-month non-auto-height
|
|
818
|
-
// TODO: better way to detect this with DateProfile?
|
|
819
|
-
: (rowCnt > 6 || isHeightAuto)
|
|
820
|
-
? rowMinHeight
|
|
821
|
-
: undefined,
|
|
822
|
-
// isCompact?: just before most lone +more links hit bottom of cell
|
|
823
|
-
rowMinHeight < 70,
|
|
824
|
-
];
|
|
854
|
+
const rowBasis = visibleWidth / options.aspectRatio / 6;
|
|
855
|
+
// don't give minHeight when single-month non-auto-height
|
|
856
|
+
// TODO: better way to detect this with DateProfile?
|
|
857
|
+
return (rowCnt > 6 || isHeightAuto) ? rowBasis : 0;
|
|
825
858
|
}
|
|
826
|
-
return
|
|
859
|
+
return 0;
|
|
860
|
+
}
|
|
861
|
+
/*
|
|
862
|
+
Infers cell height based on overall width
|
|
863
|
+
*/
|
|
864
|
+
function computeRowIsCompact(visibleWidth, // should INCLUDE any scrollbar width to avoid oscillation
|
|
865
|
+
options) {
|
|
866
|
+
if (visibleWidth != null) {
|
|
867
|
+
// ensure a consistent row min-height modelled after a month with 6 rows respecting aspectRatio
|
|
868
|
+
// will result in same minHeight regardless of weekends, dayMinWidth, height:auto
|
|
869
|
+
const rowBasis = visibleWidth / options.aspectRatio / 6;
|
|
870
|
+
return rowBasis < 70;
|
|
871
|
+
}
|
|
872
|
+
return false;
|
|
827
873
|
}
|
|
828
874
|
|
|
829
875
|
class DayGridHeaderCell extends internal_cjs.BaseComponent {
|
|
@@ -847,14 +893,16 @@ class DayGridHeaderCell extends internal_cjs.BaseComponent {
|
|
|
847
893
|
render() {
|
|
848
894
|
const { props } = this;
|
|
849
895
|
const { renderConfig, dataConfig } = props;
|
|
850
|
-
|
|
896
|
+
// HACK
|
|
897
|
+
const isDisabled = dataConfig.renderProps.isDisabled;
|
|
898
|
+
return (preact_cjs.createElement(internal_cjs.ContentContainer, { tag: 'div', attrs: Object.assign({ role: 'columnheader', 'aria-colspan': dataConfig.colSpan }, dataConfig.attrs), className: internal_cjs.joinClassNames('fc-header-cell fc-cell fc-flex-col fc-align-center', props.borderStart && 'fc-border-s', !props.isSticky && 'fc-crop', props.colWidth == null && 'fc-liquid', dataConfig.className), style: {
|
|
851
899
|
width: props.colWidth != null
|
|
852
900
|
? props.colWidth * (dataConfig.colSpan || 1)
|
|
853
901
|
: undefined,
|
|
854
902
|
}, renderProps: dataConfig.renderProps, generatorName: renderConfig.generatorName, customGenerator: renderConfig.customGenerator, defaultGenerator: internal_cjs.renderText, classNameGenerator:
|
|
855
903
|
// don't use custom classNames if disabled
|
|
856
904
|
// TODO: make DRY with DayCellContainer
|
|
857
|
-
|
|
905
|
+
isDisabled ? undefined : renderConfig.classNameGenerator, didMount: renderConfig.didMount, willUnmount: renderConfig.willUnmount }, (InnerContainer) => (preact_cjs.createElement(InnerContainer, { tag: 'div', attrs: dataConfig.innerAttrs, className: internal_cjs.joinClassNames('fc-cell-inner fc-flex-col fc-padding-sm', props.isSticky && 'fc-sticky-s'), elRef: this.handleInnerEl }))));
|
|
858
906
|
}
|
|
859
907
|
}
|
|
860
908
|
|
|
@@ -879,7 +927,10 @@ class DayGridHeaderRow extends internal_cjs.BaseComponent {
|
|
|
879
927
|
}
|
|
880
928
|
render() {
|
|
881
929
|
const { props } = this;
|
|
882
|
-
return (preact_cjs.createElement("div", { role:
|
|
930
|
+
return (preact_cjs.createElement("div", { role: props.role /* !!! */, "aria-rowindex": props.rowIndex != null ? 1 + props.rowIndex : undefined, className: internal_cjs.joinClassNames('fc-flex-row fc-content-box', props.className), style: { height: props.height } }, props.dataConfigs.map((dataConfig, cellI) => (preact_cjs.createElement(DayGridHeaderCell, { key: dataConfig.key, renderConfig: props.renderConfig, dataConfig: dataConfig, isSticky: props.isSticky, borderStart: Boolean(cellI), colWidth: props.colWidth, innerHeightRef: props.innerHeightRef })))));
|
|
931
|
+
}
|
|
932
|
+
componentWillUnmount() {
|
|
933
|
+
internal_cjs.setRef(this.props.innerHeightRef, null);
|
|
883
934
|
}
|
|
884
935
|
}
|
|
885
936
|
|
|
@@ -889,9 +940,9 @@ TODO: kill this class in favor of DayGridHeaderRows?
|
|
|
889
940
|
class DayGridHeader extends internal_cjs.BaseComponent {
|
|
890
941
|
render() {
|
|
891
942
|
const { props } = this;
|
|
892
|
-
return (preact_cjs.createElement("div", { className: internal_cjs.joinClassNames(props.className, 'fc-flex-col', props.width == null && 'fc-liquid'), style: {
|
|
943
|
+
return (preact_cjs.createElement("div", { role: 'rowgroup', className: internal_cjs.joinClassNames(props.className, 'fc-flex-col', props.width == null && 'fc-liquid'), style: {
|
|
893
944
|
width: props.width
|
|
894
|
-
} }, props.headerTiers.map((rowConfig, tierNum) => (preact_cjs.createElement(DayGridHeaderRow, Object.assign({}, rowConfig, { key: tierNum, className: tierNum ? 'fc-border-t' : '', colWidth: props.colWidth }))))));
|
|
945
|
+
} }, props.headerTiers.map((rowConfig, tierNum) => (preact_cjs.createElement(DayGridHeaderRow, Object.assign({}, rowConfig, { key: tierNum, role: 'row', className: tierNum ? 'fc-border-t' : '', colWidth: props.colWidth }))))));
|
|
895
946
|
}
|
|
896
947
|
}
|
|
897
948
|
|
|
@@ -901,37 +952,39 @@ class DayGridLayoutNormal extends internal_cjs.BaseComponent {
|
|
|
901
952
|
this.handleScroller = (scroller) => {
|
|
902
953
|
internal_cjs.setRef(this.props.scrollerRef, scroller);
|
|
903
954
|
};
|
|
955
|
+
this.handleTotalWidth = (totalWidth) => {
|
|
956
|
+
this.setState({ totalWidth });
|
|
957
|
+
};
|
|
904
958
|
this.handleClientWidth = (clientWidth) => {
|
|
905
959
|
this.setState({ clientWidth });
|
|
906
960
|
};
|
|
907
|
-
this.handleEndScrollbarWidth = (endScrollbarWidth) => {
|
|
908
|
-
this.setState({ endScrollbarWidth });
|
|
909
|
-
};
|
|
910
961
|
}
|
|
911
962
|
render() {
|
|
912
963
|
const { props, state, context } = this;
|
|
913
964
|
const { options } = context;
|
|
965
|
+
const { totalWidth, clientWidth } = state;
|
|
966
|
+
const endScrollbarWidth = (totalWidth != null && clientWidth != null)
|
|
967
|
+
? totalWidth - clientWidth
|
|
968
|
+
: undefined;
|
|
914
969
|
const verticalScrollbars = !props.forPrint && !internal_cjs.getIsHeightAuto(options);
|
|
915
970
|
const stickyHeaderDates = !props.forPrint && internal_cjs.getStickyHeaderDates(options);
|
|
916
971
|
return (preact_cjs.createElement(preact_cjs.Fragment, null,
|
|
917
972
|
options.dayHeaders && (preact_cjs.createElement("div", { className: internal_cjs.joinClassNames(props.forPrint ? 'fc-print-header' : 'fc-flex-row', // col for print, row for screen
|
|
918
|
-
'fc-border-b') },
|
|
919
|
-
preact_cjs.createElement(DayGridHeader, { headerTiers: props.headerTiers, className:
|
|
920
|
-
Boolean(
|
|
921
|
-
preact_cjs.createElement(internal_cjs.Scroller, { vertical: verticalScrollbars,
|
|
973
|
+
stickyHeaderDates && 'fc-table-header-sticky', 'fc-border-b') },
|
|
974
|
+
preact_cjs.createElement(DayGridHeader, { headerTiers: props.headerTiers, className: 'fc-daygrid-header' }),
|
|
975
|
+
Boolean(endScrollbarWidth) && (preact_cjs.createElement("div", { className: 'fc-border-s fc-filler', style: { minWidth: endScrollbarWidth } })))),
|
|
976
|
+
preact_cjs.createElement(internal_cjs.Scroller, { vertical: verticalScrollbars, className: internal_cjs.joinClassNames('fc-daygrid-body',
|
|
922
977
|
// HACK for Safari. Can't do break-inside:avoid with flexbox items, likely b/c it's not standard:
|
|
923
978
|
// https://stackoverflow.com/a/60256345
|
|
924
|
-
!props.forPrint && 'fc-flex-col', verticalScrollbars && 'fc-liquid'), ref: this.handleScroller },
|
|
979
|
+
!props.forPrint && 'fc-flex-col', verticalScrollbars && 'fc-liquid'), ref: this.handleScroller, clientWidthRef: this.handleClientWidth },
|
|
925
980
|
preact_cjs.createElement(DayGridRows, { dateProfile: props.dateProfile, todayRange: props.todayRange, cellRows: props.cellRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed, className: 'fc-grow', dayMaxEvents: props.forPrint ? undefined : options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows,
|
|
926
981
|
// content
|
|
927
982
|
fgEventSegs: props.fgEventSegs, bgEventSegs: props.bgEventSegs, businessHourSegs: props.businessHourSegs, dateSelectionSegs: props.dateSelectionSegs, eventDrag: props.eventDrag, eventResize: props.eventResize, eventSelection: props.eventSelection,
|
|
928
983
|
// dimensions
|
|
929
|
-
visibleWidth:
|
|
930
|
-
state.clientWidth != null && state.endScrollbarWidth != null
|
|
931
|
-
? state.clientWidth + state.endScrollbarWidth
|
|
932
|
-
: undefined,
|
|
984
|
+
visibleWidth: totalWidth,
|
|
933
985
|
// refs
|
|
934
|
-
rowHeightRefMap: props.rowHeightRefMap }))
|
|
986
|
+
rowHeightRefMap: props.rowHeightRefMap })),
|
|
987
|
+
preact_cjs.createElement(internal_cjs.Ruler, { widthRef: this.handleTotalWidth })));
|
|
935
988
|
}
|
|
936
989
|
}
|
|
937
990
|
|
|
@@ -943,43 +996,45 @@ class DayGridLayoutPannable extends internal_cjs.BaseComponent {
|
|
|
943
996
|
this.footerScrollerRef = preact_cjs.createRef();
|
|
944
997
|
// Sizing
|
|
945
998
|
// -----------------------------------------------------------------------------------------------
|
|
999
|
+
this.handleTotalWidth = (totalWidth) => {
|
|
1000
|
+
this.setState({ totalWidth });
|
|
1001
|
+
};
|
|
946
1002
|
this.handleClientWidth = (clientWidth) => {
|
|
947
1003
|
this.setState({ clientWidth });
|
|
948
1004
|
};
|
|
949
|
-
this.handleEndScrollbarWidth = (endScrollbarWidth) => {
|
|
950
|
-
this.setState({ endScrollbarWidth });
|
|
951
|
-
};
|
|
952
1005
|
}
|
|
953
1006
|
render() {
|
|
954
1007
|
const { props, state, context } = this;
|
|
955
1008
|
const { options } = context;
|
|
1009
|
+
const { totalWidth, clientWidth } = state;
|
|
1010
|
+
const endScrollbarWidth = (totalWidth != null && clientWidth != null)
|
|
1011
|
+
? totalWidth - clientWidth
|
|
1012
|
+
: undefined;
|
|
956
1013
|
const verticalScrollbars = !props.forPrint && !internal_cjs.getIsHeightAuto(options);
|
|
957
1014
|
const stickyHeaderDates = !props.forPrint && internal_cjs.getStickyHeaderDates(options);
|
|
958
1015
|
const stickyFooterScrollbar = !props.forPrint && internal_cjs.getStickyFooterScrollbar(options);
|
|
959
1016
|
const colCnt = props.cellRows[0].length;
|
|
960
|
-
const [canvasWidth, colWidth] = computeColWidth(colCnt, props.dayMinWidth,
|
|
1017
|
+
const [canvasWidth, colWidth] = computeColWidth(colCnt, props.dayMinWidth, clientWidth);
|
|
961
1018
|
return (preact_cjs.createElement(preact_cjs.Fragment, null,
|
|
962
|
-
options.dayHeaders && (preact_cjs.createElement("div", { className: 'fc-print-header' },
|
|
963
|
-
preact_cjs.createElement(internal_cjs.Scroller, { horizontal: true, hideScrollbars: true, className:
|
|
1019
|
+
options.dayHeaders && (preact_cjs.createElement("div", { className: internal_cjs.joinClassNames('fc-print-header', stickyHeaderDates && 'fc-table-header-sticky') },
|
|
1020
|
+
preact_cjs.createElement(internal_cjs.Scroller, { horizontal: true, hideScrollbars: true, className: 'fc-daygrid-header fc-flex-row fc-border-b', ref: this.headerScrollerRef },
|
|
964
1021
|
preact_cjs.createElement(DayGridHeader, { headerTiers: props.headerTiers, colWidth: colWidth, width: canvasWidth }),
|
|
965
|
-
Boolean(
|
|
1022
|
+
Boolean(endScrollbarWidth) && (preact_cjs.createElement("div", { className: 'fc-border-s fc-filler', style: { minWidth: endScrollbarWidth } }))))),
|
|
966
1023
|
preact_cjs.createElement(internal_cjs.Scroller, { vertical: verticalScrollbars, horizontal: true, hideScrollbars: stickyFooterScrollbar ||
|
|
967
1024
|
props.forPrint // prevents blank space in print-view on Safari
|
|
968
1025
|
, className: internal_cjs.joinClassNames('fc-daygrid-body',
|
|
969
1026
|
// HACK for Safari. Can't do break-inside:avoid with flexbox items, likely b/c it's not standard:
|
|
970
1027
|
// https://stackoverflow.com/a/60256345
|
|
971
|
-
!props.forPrint && 'fc-flex-col', verticalScrollbars && 'fc-liquid'), ref: this.bodyScrollerRef, clientWidthRef: this.handleClientWidth
|
|
1028
|
+
!props.forPrint && 'fc-flex-col', verticalScrollbars && 'fc-liquid'), ref: this.bodyScrollerRef, clientWidthRef: this.handleClientWidth },
|
|
972
1029
|
preact_cjs.createElement(DayGridRows, { dateProfile: props.dateProfile, todayRange: props.todayRange, cellRows: props.cellRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed, className: 'fc-grow', dayMaxEvents: props.forPrint ? undefined : options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows,
|
|
973
1030
|
// content
|
|
974
1031
|
fgEventSegs: props.fgEventSegs, bgEventSegs: props.bgEventSegs, businessHourSegs: props.businessHourSegs, dateSelectionSegs: props.dateSelectionSegs, eventDrag: props.eventDrag, eventResize: props.eventResize, eventSelection: props.eventSelection,
|
|
975
1032
|
// dimensions
|
|
976
|
-
colWidth: colWidth, width: canvasWidth, visibleWidth:
|
|
977
|
-
state.clientWidth != null && state.endScrollbarWidth != null
|
|
978
|
-
? state.clientWidth + state.endScrollbarWidth
|
|
979
|
-
: undefined,
|
|
1033
|
+
colWidth: colWidth, width: canvasWidth, visibleWidth: totalWidth,
|
|
980
1034
|
// refs
|
|
981
1035
|
rowHeightRefMap: props.rowHeightRefMap })),
|
|
982
|
-
Boolean(stickyFooterScrollbar) && (preact_cjs.createElement(internal_cjs.
|
|
1036
|
+
Boolean(stickyFooterScrollbar) && (preact_cjs.createElement(internal_cjs.FooterScrollbar, { isSticky: true, canvasWidth: canvasWidth, scrollerRef: this.footerScrollerRef })),
|
|
1037
|
+
preact_cjs.createElement(internal_cjs.Ruler, { widthRef: this.handleTotalWidth })));
|
|
983
1038
|
}
|
|
984
1039
|
// Lifecycle
|
|
985
1040
|
// -----------------------------------------------------------------------------------------------
|
|
@@ -1034,21 +1089,29 @@ class DayGridLayout extends internal_cjs.BaseComponent {
|
|
|
1034
1089
|
}
|
|
1035
1090
|
}
|
|
1036
1091
|
};
|
|
1037
|
-
this.
|
|
1038
|
-
|
|
1092
|
+
this.handleScrollEnd = (isUser) => {
|
|
1093
|
+
if (isUser) {
|
|
1094
|
+
this.scrollDate = null;
|
|
1095
|
+
}
|
|
1039
1096
|
};
|
|
1040
1097
|
}
|
|
1041
1098
|
render() {
|
|
1042
1099
|
const { props, context } = this;
|
|
1043
1100
|
const { options } = context;
|
|
1044
1101
|
const commonLayoutProps = Object.assign(Object.assign({}, props), { scrollerRef: this.scrollerRef, rowHeightRefMap: this.rowHeightRefMap });
|
|
1045
|
-
return (preact_cjs.createElement(internal_cjs.ViewContainer, { viewSpec: context.viewSpec,
|
|
1102
|
+
return (preact_cjs.createElement(internal_cjs.ViewContainer, { viewSpec: context.viewSpec, attrs: {
|
|
1103
|
+
role: 'grid',
|
|
1104
|
+
'aria-rowcount': props.headerTiers.length + props.cellRows.length,
|
|
1105
|
+
'aria-colcount': props.cellRows[0].length,
|
|
1106
|
+
'aria-labelledby': props.labelId,
|
|
1107
|
+
'aria-label': props.labelStr,
|
|
1108
|
+
}, className: internal_cjs.joinClassNames(props.className, 'fc-print-root fc-border') }, options.dayMinWidth ? (preact_cjs.createElement(DayGridLayoutPannable, Object.assign({}, commonLayoutProps, { dayMinWidth: options.dayMinWidth }))) : (preact_cjs.createElement(DayGridLayoutNormal, Object.assign({}, commonLayoutProps)))));
|
|
1046
1109
|
}
|
|
1047
1110
|
// Lifecycle
|
|
1048
1111
|
// -----------------------------------------------------------------------------------------------
|
|
1049
1112
|
componentDidMount() {
|
|
1050
1113
|
this.resetScroll();
|
|
1051
|
-
this.scrollerRef.current.addScrollEndListener(this.
|
|
1114
|
+
this.scrollerRef.current.addScrollEndListener(this.handleScrollEnd);
|
|
1052
1115
|
}
|
|
1053
1116
|
componentDidUpdate(prevProps) {
|
|
1054
1117
|
if (prevProps.dateProfile !== this.props.dateProfile && this.context.options.scrollTimeReset) {
|
|
@@ -1056,14 +1119,13 @@ class DayGridLayout extends internal_cjs.BaseComponent {
|
|
|
1056
1119
|
}
|
|
1057
1120
|
}
|
|
1058
1121
|
componentWillUnmount() {
|
|
1059
|
-
this.scrollerRef.current.removeScrollEndListener(this.
|
|
1122
|
+
this.scrollerRef.current.removeScrollEndListener(this.handleScrollEnd);
|
|
1060
1123
|
}
|
|
1061
1124
|
// Scrolling
|
|
1062
1125
|
// -----------------------------------------------------------------------------------------------
|
|
1063
1126
|
resetScroll() {
|
|
1064
1127
|
this.scrollDate = this.props.dateProfile.currentDate;
|
|
1065
1128
|
this.updateScrollY();
|
|
1066
|
-
// updateScrollX
|
|
1067
1129
|
const scroller = this.scrollerRef.current;
|
|
1068
1130
|
scroller.scrollTo({ x: 0 });
|
|
1069
1131
|
}
|
|
@@ -1088,7 +1150,7 @@ class DayGridView extends internal_cjs.BaseComponent {
|
|
|
1088
1150
|
const slicedProps = this.slicer.sliceProps(props, props.dateProfile, options.nextDayThreshold, context, dayTableModel);
|
|
1089
1151
|
return (preact_cjs.createElement(internal_cjs.NowTimer, { unit: "day" }, (nowDate, todayRange) => {
|
|
1090
1152
|
const headerTiers = this.buildDateRowConfigs(dayTableModel.headerDates, datesRepDistinctDays, props.dateProfile, todayRange, dayHeaderFormat, context);
|
|
1091
|
-
return (preact_cjs.createElement(DayGridLayout, { dateProfile: props.dateProfile, todayRange: todayRange, cellRows: dayTableModel.cellRows, forPrint: props.forPrint, className: 'fc-daygrid',
|
|
1153
|
+
return (preact_cjs.createElement(DayGridLayout, { labelId: props.labelId, labelStr: props.labelStr, dateProfile: props.dateProfile, todayRange: todayRange, cellRows: dayTableModel.cellRows, forPrint: props.forPrint, className: 'fc-daygrid',
|
|
1092
1154
|
// header content
|
|
1093
1155
|
headerTiers: headerTiers,
|
|
1094
1156
|
// body content
|
|
@@ -1135,7 +1197,7 @@ function buildDayTableRenderRange(props) {
|
|
|
1135
1197
|
return { start, end };
|
|
1136
1198
|
}
|
|
1137
1199
|
|
|
1138
|
-
var css_248z = ":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-daygrid-day-header{display:flex;flex-direction:row-reverse}.fc-day-other .fc-daygrid-day-header{opacity:.3}.fc-daygrid-day-number{padding:4px;position:relative}.fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc-daygrid-day-body{display:flex;flex-direction:column;margin-bottom:1px}.fc-daygrid-day-body-tall{margin-bottom:1em;min-height:2em}.fc-daygrid-day-body:only-child{margin-top:2px}.fc-daygrid-more-link{border-radius:3px;cursor:pointer;font-size:var(--fc-small-font-size);margin:0 2px 1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap}.fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc-daygrid-more-link-button{align-self:flex-start}.fc-daygrid-more-link-block{border:1px solid var(--fc-event-border-color);padding:1px}.fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0}.fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);margin-bottom:1px}.fc-
|
|
1200
|
+
var css_248z = ":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-row-print{min-height:6em}.fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-daygrid-day-header{display:flex;flex-direction:row-reverse}.fc-day-other .fc-daygrid-day-header{opacity:.3}.fc-daygrid-day-number{padding:4px;position:relative}.fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc-daygrid-day-body{display:flex;flex-direction:column;margin-bottom:1px}.fc-daygrid-day-body-tall{margin-bottom:1em;min-height:2em}.fc-daygrid-day-body:only-child{margin-top:2px}.fc-daygrid-more-link{border-radius:3px;cursor:pointer;font-size:var(--fc-small-font-size);margin:0 2px 1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap}.fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc-daygrid-more-link-button{align-self:flex-start}.fc-daygrid-more-link-block{border:1px solid var(--fc-event-border-color);padding:1px}.fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:1}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px}.fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);margin-bottom:1px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;direction:row;display:flex;padding:2px 0;position:relative}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-daygrid-dot-event .fc-event-time,.fc-daygrid-dot-event .fc-event-title{overflow:hidden;white-space:nowrap}.fc-media-print .fc-daygrid-dot-event .fc-event-time,.fc-media-print .fc-daygrid-dot-event .fc-event-title{overflow:hidden!important;white-space:nowrap!important}.fc-daygrid-dot-event .fc-event-title{flex-basis:0;flex-grow:1;font-weight:700;min-height:0;min-width:0}";
|
|
1139
1201
|
internal_cjs.injectStyles(css_248z);
|
|
1140
1202
|
|
|
1141
1203
|
exports.DayGridHeaderRow = DayGridHeaderRow;
|
|
@@ -1153,7 +1215,8 @@ exports.buildDayTableModel = buildDayTableModel;
|
|
|
1153
1215
|
exports.buildDayTableRenderRange = buildDayTableRenderRange;
|
|
1154
1216
|
exports.computeColFromPosition = computeColFromPosition;
|
|
1155
1217
|
exports.computeColWidth = computeColWidth;
|
|
1156
|
-
exports.
|
|
1218
|
+
exports.computeRowBasis = computeRowBasis;
|
|
1219
|
+
exports.computeRowIsCompact = computeRowIsCompact;
|
|
1157
1220
|
exports.createDayHeaderFormatter = createDayHeaderFormatter;
|
|
1158
1221
|
exports.getCellEl = getCellEl;
|
|
1159
1222
|
exports.getRowEl = getRowEl;
|