aboutsummaryrefslogtreecommitdiffstats
path: root/library/fullcalendar/packages/daygrid/index.global.js
diff options
context:
space:
mode:
Diffstat (limited to 'library/fullcalendar/packages/daygrid/index.global.js')
-rw-r--r--library/fullcalendar/packages/daygrid/index.global.js258
1 files changed, 182 insertions, 76 deletions
diff --git a/library/fullcalendar/packages/daygrid/index.global.js b/library/fullcalendar/packages/daygrid/index.global.js
index 58c6a55cf..2f96df948 100644
--- a/library/fullcalendar/packages/daygrid/index.global.js
+++ b/library/fullcalendar/packages/daygrid/index.global.js
@@ -1,7 +1,7 @@
/*!
-FullCalendar Day Grid Plugin v6.0.3
+FullCalendar Day Grid Plugin v6.1.8
Docs & License: https://fullcalendar.io/docs/month-view
-(c) 2022 Adam Shaw
+(c) 2023 Adam Shaw
*/
FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
'use strict';
@@ -83,7 +83,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
});
}
return (preact.createElement(internal$1.ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
- preact.createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));
+ preact.createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));
}
}
@@ -217,16 +217,25 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
}
render() {
let { context, props, state, rootElRef } = this;
- let { options } = context;
+ let { options, dateEnv } = context;
let { date, dateProfile } = props;
+ // TODO: memoize this?
+ const isMonthStart = props.showDayNumber &&
+ shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);
return (preact.createElement(internal$1.DayCellContainer, { elTag: "td", elRef: this.handleRootEl, elClasses: [
'fc-daygrid-day',
...(props.extraClassNames || []),
- ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), { role: 'gridcell' }), defaultGenerator: renderTopInner, date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => (preact.createElement("div", { className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", ref: props.innerElRef },
+ ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), { role: 'gridcell' }), defaultGenerator: renderTopInner, date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, isMonthStart: isMonthStart, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => (preact.createElement("div", { ref: props.innerElRef, className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", style: { minHeight: props.minHeight } },
props.showWeekNumber && (preact.createElement(internal$1.WeekNumberContainer, { elTag: "a", elClasses: ['fc-daygrid-week-number'], elAttrs: internal$1.buildNavLinkAttrs(context, date, 'week'), date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),
- Boolean(!renderProps.isDisabled &&
- (props.showDayNumber || internal$1.hasCustomDayCellContent(options) || props.forceDayTop)) && (preact.createElement("div", { className: "fc-daygrid-day-top" },
- preact.createElement(InnerContent, { elTag: "a", elClasses: ['fc-daygrid-day-number'], elAttrs: Object.assign(Object.assign({}, internal$1.buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) }))),
+ !renderProps.isDisabled &&
+ (props.showDayNumber || internal$1.hasCustomDayCellContent(options) || props.forceDayTop) ? (preact.createElement("div", { className: "fc-daygrid-day-top" },
+ preact.createElement(InnerContent, { elTag: "a", elClasses: [
+ 'fc-daygrid-day-number',
+ isMonthStart && 'fc-daygrid-month-start',
+ ], elAttrs: Object.assign(Object.assign({}, internal$1.buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) }))) : props.showDayNumber ? (
+ // for creating correct amount of space (see issue #7162)
+ preact.createElement("div", { className: "fc-daygrid-day-top", style: { visibility: 'hidden' } },
+ preact.createElement("a", { className: "fc-daygrid-day-number" }, "\u00A0"))) : undefined,
preact.createElement("div", { className: "fc-daygrid-day-events", ref: props.fgContentElRef },
props.fgContent,
preact.createElement("div", { className: "fc-daygrid-day-bottom", style: { marginTop: props.moreMarginTop } },
@@ -237,6 +246,21 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
function renderTopInner(props) {
return props.dayNumberText || preact.createElement(preact.Fragment, null, "\u00A0");
}
+ function shouldDisplayMonthStart(date, currentRange, dateEnv) {
+ const { start: currentStart, end: currentEnd } = currentRange;
+ const currentEndIncl = internal$1.addMs(currentEnd, -1);
+ const currentFirstYear = dateEnv.getYear(currentStart);
+ const currentFirstMonth = dateEnv.getMonth(currentStart);
+ const currentLastYear = dateEnv.getYear(currentEndIncl);
+ const currentLastMonth = dateEnv.getMonth(currentEndIncl);
+ // spans more than one month?
+ return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) &&
+ Boolean(
+ // first date in current view?
+ date.valueOf() === currentStart.valueOf() ||
+ // a month-start that's within the current range?
+ (dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf()));
+ }
function computeFgSegPlacement(segs, // assumed already sorted
dayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) {
@@ -507,7 +531,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
preact.createElement(preact.Fragment, null,
this.renderFillSegs(highlightSegsByCol[col], 'highlight'),
this.renderFillSegs(businessHoursByCol[col], 'non-business'),
- this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) }));
+ this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))), minHeight: props.cellMinHeight }));
})));
}
componentDidMount() {
@@ -679,7 +703,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
return topsByInstanceId;
}
- class Table extends internal$1.DateComponent {
+ class TableRows extends internal$1.DateComponent {
constructor() {
super(...arguments);
this.splitBusinessHourSegs = internal$1.memoize(splitSegsByRow);
@@ -689,22 +713,9 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
this.splitEventDrag = internal$1.memoize(splitInteractionByRow);
this.splitEventResize = internal$1.memoize(splitInteractionByRow);
this.rowRefs = new internal$1.RefMap();
- this.handleRootEl = (rootEl) => {
- this.rootEl = rootEl;
- if (rootEl) {
- this.context.registerInteractiveComponent(this, {
- el: rootEl,
- isHitComboAllowed: this.props.isHitComboAllowed,
- });
- }
- else {
- this.context.unregisterInteractiveComponent(this);
- }
- };
}
render() {
- let { props } = this;
- let { dateProfile, dayMaxEventRows, dayMaxEvents, expandRows } = props;
+ let { props, context } = this;
let rowCnt = props.cells.length;
let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);
let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);
@@ -712,36 +723,33 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);
let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);
let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);
- let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;
- // if rows can't expand to fill fixed height, can't do balanced-height event limit
- // TODO: best place to normalize these options?
- if (limitViaBalanced && !expandRows) {
- limitViaBalanced = false;
- dayMaxEventRows = null;
- dayMaxEvents = null;
+ // for DayGrid view with many rows, force a min-height on cells so doesn't appear squished
+ // choose 7 because a month view will have max 6 rows
+ let cellMinHeight = (rowCnt >= 7 && props.clientWidth) ?
+ props.clientWidth / context.options.aspectRatio / 6 :
+ null;
+ return (preact.createElement(internal$1.NowTimer, { unit: "day" }, (nowDate, todayRange) => (preact.createElement(preact.Fragment, null, props.cells.map((cells, row) => (preact.createElement(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length
+ ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */
+ : row // in case there are no cells (like when resource view is loading)
+ , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));
+ }
+ componentDidMount() {
+ // HACK: need a daygrid wrapper parent to do positioning
+ // NOTE: a daygrid resource view w/o resources can have zero cells
+ const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];
+ this.rootEl = firstCellEl ? firstCellEl.closest('.fc-daygrid-body') : null;
+ if (this.rootEl) {
+ this.context.registerInteractiveComponent(this, {
+ el: this.rootEl,
+ isHitComboAllowed: this.props.isHitComboAllowed,
+ });
+ }
+ }
+ componentWillUnmount() {
+ if (this.rootEl) {
+ this.context.unregisterInteractiveComponent(this);
+ this.rootEl = null;
}
- let classNames = [
- 'fc-daygrid-body',
- limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',
- expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?
- ];
- return (preact.createElement("div", { className: classNames.join(' '), ref: this.handleRootEl, style: {
- // these props are important to give this wrapper correct dimensions for interactions
- // TODO: if we set it here, can we avoid giving to inner tables?
- width: props.clientWidth,
- minWidth: props.tableMinWidth,
- } },
- preact.createElement(internal$1.NowTimer, { unit: "day" }, (nowDate, todayRange) => (preact.createElement(preact.Fragment, null,
- preact.createElement("table", { role: "presentation", className: "fc-scrollgrid-sync-table", style: {
- width: props.clientWidth,
- minWidth: props.tableMinWidth,
- height: expandRows ? props.clientHeight : '',
- } },
- props.colGroupNode,
- preact.createElement("tbody", { role: "presentation" }, props.cells.map((cells, row) => (preact.createElement(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length
- ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */
- : row // in case there are no cells (like when resource view is loading)
- , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))))))))));
}
// Hit System
// ----------------------------------------------------------------------------------------------------
@@ -786,6 +794,87 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
return seg.eventRange.def.allDay;
}
+ class Table extends internal$1.DateComponent {
+ constructor() {
+ super(...arguments);
+ this.elRef = preact.createRef();
+ this.needsScrollReset = false;
+ }
+ render() {
+ let { props } = this;
+ let { dayMaxEventRows, dayMaxEvents, expandRows } = props;
+ let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;
+ // if rows can't expand to fill fixed height, can't do balanced-height event limit
+ // TODO: best place to normalize these options?
+ if (limitViaBalanced && !expandRows) {
+ limitViaBalanced = false;
+ dayMaxEventRows = null;
+ dayMaxEvents = null;
+ }
+ let classNames = [
+ 'fc-daygrid-body',
+ limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',
+ expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?
+ ];
+ return (preact.createElement("div", { ref: this.elRef, className: classNames.join(' '), style: {
+ // these props are important to give this wrapper correct dimensions for interactions
+ // TODO: if we set it here, can we avoid giving to inner tables?
+ width: props.clientWidth,
+ minWidth: props.tableMinWidth,
+ } },
+ preact.createElement("table", { role: "presentation", className: "fc-scrollgrid-sync-table", style: {
+ width: props.clientWidth,
+ minWidth: props.tableMinWidth,
+ height: expandRows ? props.clientHeight : '',
+ } },
+ props.colGroupNode,
+ preact.createElement("tbody", { role: "presentation" },
+ preact.createElement(TableRows, { dateProfile: props.dateProfile, cells: props.cells, renderRowIntro: props.renderRowIntro, showWeekNumbers: props.showWeekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed })))));
+ }
+ componentDidMount() {
+ this.requestScrollReset();
+ }
+ componentDidUpdate(prevProps) {
+ if (prevProps.dateProfile !== this.props.dateProfile) {
+ this.requestScrollReset();
+ }
+ else {
+ this.flushScrollReset();
+ }
+ }
+ requestScrollReset() {
+ this.needsScrollReset = true;
+ this.flushScrollReset();
+ }
+ flushScrollReset() {
+ if (this.needsScrollReset &&
+ this.props.clientWidth // sizes computed?
+ ) {
+ const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);
+ if (subjectEl) {
+ const originEl = subjectEl.closest('.fc-daygrid-body');
+ const scrollEl = originEl.closest('.fc-scroller');
+ const scrollTop = subjectEl.getBoundingClientRect().top -
+ originEl.getBoundingClientRect().top;
+ scrollEl.scrollTop = scrollTop ? (scrollTop + 1) : 0; // overcome border
+ }
+ this.needsScrollReset = false;
+ }
+ }
+ }
+ function getScrollSubjectEl(containerEl, dateProfile) {
+ let el;
+ if (dateProfile.currentRangeUnit.match(/year|month/)) {
+ el = containerEl.querySelector(`[data-date="${internal$1.formatIsoMonthStr(dateProfile.currentDate)}-01"]`);
+ // even if view is month-based, first-of-month might be hidden...
+ }
+ if (!el) {
+ el = containerEl.querySelector(`[data-date="${internal$1.formatDayString(dateProfile.currentDate)}"]`);
+ // could still be hidden if an interior-view hidden day
+ }
+ return el;
+ }
+
class DayTableSlicer extends internal$1.Slicer {
constructor() {
super(...arguments);
@@ -814,6 +903,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
this.buildDayTableModel = internal$1.memoize(buildDayTableModel);
this.headerRef = preact.createRef();
this.tableRef = preact.createRef();
+ // can't override any lifecycle methods from parent
}
render() {
let { options, dateProfileGenerator } = this.context;
@@ -832,34 +922,44 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
}
class TableDateProfileGenerator extends internal$1.DateProfileGenerator {
- // Computes the date range that will be rendered.
+ // Computes the date range that will be rendered
buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {
- let { dateEnv } = this.props;
let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);
- let start = renderRange.start;
- let end = renderRange.end;
- let endOfWeek;
- // year and month views should be aligned with weeks. this is already done for week
- if (/^(year|month)$/.test(currentRangeUnit)) {
- start = dateEnv.startOfWeek(start);
- // make end-of-week if not already
- endOfWeek = dateEnv.startOfWeek(end);
- if (endOfWeek.valueOf() !== end.valueOf()) {
- end = internal$1.addWeeks(endOfWeek, 1);
- }
- }
- // ensure 6 weeks
- if (this.props.monthMode &&
- this.props.fixedWeekCount) {
- let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays
- internal$1.diffWeeks(start, end));
- end = internal$1.addWeeks(end, 6 - rowCnt);
+ let { props } = this;
+ return buildDayTableRenderRange({
+ currentRange: renderRange,
+ snapToWeek: /^(year|month)$/.test(currentRangeUnit),
+ fixedWeekCount: props.fixedWeekCount,
+ dateEnv: props.dateEnv,
+ });
+ }
+ }
+ function buildDayTableRenderRange(props) {
+ let { dateEnv, currentRange } = props;
+ let { start, end } = currentRange;
+ let endOfWeek;
+ // year and month views should be aligned with weeks. this is already done for week
+ if (props.snapToWeek) {
+ start = dateEnv.startOfWeek(start);
+ // make end-of-week if not already
+ endOfWeek = dateEnv.startOfWeek(end);
+ if (endOfWeek.valueOf() !== end.valueOf()) {
+ end = internal$1.addWeeks(endOfWeek, 1);
}
- return { start, end };
}
+ // ensure 6 weeks
+ if (props.fixedWeekCount) {
+ // TODO: instead of these date-math gymnastics (for multimonth view),
+ // compute dateprofiles of all months, then use start of first and end of last.
+ let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(internal$1.addDays(currentRange.end, -1)));
+ let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays
+ internal$1.diffWeeks(lastMonthRenderStart, end));
+ end = internal$1.addWeeks(end, 6 - rowCnt);
+ }
+ return { start, end };
}
- var css_248z = ":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\"\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;padding:2px 3px 0}.fc .fc-daygrid-day-bottom:before{clear:both;content:\"\";display:table}.fc .fc-daygrid-more-link{cursor:pointer;position:relative;z-index:4}.fc .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:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.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-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.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;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.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-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}";
+ var css_248z = ":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\"\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\"\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .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:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.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-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.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;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.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-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}";
internal$1.injectStyles(css_248z);
var plugin = core.createPlugin({
@@ -881,9 +981,12 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
dayGridMonth: {
type: 'dayGrid',
duration: { months: 1 },
- monthMode: true,
fixedWeekCount: true,
},
+ dayGridYear: {
+ type: 'dayGrid',
+ duration: { years: 1 },
+ },
},
});
@@ -891,7 +994,10 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
__proto__: null,
DayTable: DayTable,
DayTableSlicer: DayTableSlicer,
+ TableDateProfileGenerator: TableDateProfileGenerator,
+ buildDayTableRenderRange: buildDayTableRenderRange,
Table: Table,
+ TableRows: TableRows,
TableView: TableView,
buildDayTableModel: buildDayTableModel,
DayGridView: DayTableView