@fullcalendar/daygrid
Advanced tools
Comparing version 5.11.2 to 6.0.0-beta.1
798
main.cjs.js
/*! | ||
FullCalendar v5.11.2 | ||
FullCalendar v6.0.0-beta.1 | ||
Docs & License: https://fullcalendar.io/ | ||
@@ -11,4 +11,2 @@ (c) 2022 Adam Shaw | ||
var common = require('@fullcalendar/common'); | ||
var tslib = require('tslib'); | ||
; | ||
@@ -19,13 +17,11 @@ /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. | ||
// It is responsible for managing width/height. | ||
var TableView = /** @class */ (function (_super) { | ||
tslib.__extends(TableView, _super); | ||
function TableView() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.headerElRef = common.createRef(); | ||
return _this; | ||
class TableView extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.headerElRef = common.createRef(); | ||
} | ||
TableView.prototype.renderSimpleLayout = function (headerRowContent, bodyContent) { | ||
var _a = this, props = _a.props, context = _a.context; | ||
var sections = []; | ||
var stickyHeaderDates = common.getStickyHeaderDates(context.options); | ||
renderSimpleLayout(headerRowContent, bodyContent) { | ||
let { props, context } = this; | ||
let sections = []; | ||
let stickyHeaderDates = common.getStickyHeaderDates(context.options); | ||
if (headerRowContent) { | ||
@@ -49,14 +45,14 @@ sections.push({ | ||
}); | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(common.SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); })); | ||
}; | ||
TableView.prototype.renderHScrollLayout = function (headerRowContent, bodyContent, colCnt, dayMinWidth) { | ||
var ScrollGrid = this.context.pluginHooks.scrollGridImpl; | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, (rootElRef, classNames) => (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(common.SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))))); | ||
} | ||
renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) { | ||
let ScrollGrid = this.context.pluginHooks.scrollGridImpl; | ||
if (!ScrollGrid) { | ||
throw new Error('No ScrollGrid implementation'); | ||
} | ||
var _a = this, props = _a.props, context = _a.context; | ||
var stickyHeaderDates = !props.forPrint && common.getStickyHeaderDates(context.options); | ||
var stickyFooterScrollbar = !props.forPrint && common.getStickyFooterScrollbar(context.options); | ||
var sections = []; | ||
let { props, context } = this; | ||
let stickyHeaderDates = !props.forPrint && common.getStickyHeaderDates(context.options); | ||
let stickyFooterScrollbar = !props.forPrint && common.getStickyFooterScrollbar(context.options); | ||
let sections = []; | ||
if (headerRowContent) { | ||
@@ -95,15 +91,13 @@ sections.push({ | ||
} | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); })); | ||
}; | ||
return TableView; | ||
}(common.DateComponent)); | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, (rootElRef, classNames) => (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))))); | ||
} | ||
} | ||
function splitSegsByRow(segs, rowCnt) { | ||
var byRow = []; | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
let byRow = []; | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = []; | ||
} | ||
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
var seg = segs_1[_i]; | ||
for (let seg of segs) { | ||
byRow[seg.row].push(seg); | ||
@@ -114,8 +108,7 @@ } | ||
function splitSegsByFirstCol(segs, colCnt) { | ||
var byCol = []; | ||
for (var i = 0; i < colCnt; i += 1) { | ||
let byCol = []; | ||
for (let i = 0; i < colCnt; i += 1) { | ||
byCol[i] = []; | ||
} | ||
for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { | ||
var seg = segs_2[_i]; | ||
for (let seg of segs) { | ||
byCol[seg.firstCol].push(seg); | ||
@@ -126,5 +119,5 @@ } | ||
function splitInteractionByRow(ui, rowCnt) { | ||
var byRow = []; | ||
let byRow = []; | ||
if (!ui) { | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = null; | ||
@@ -134,3 +127,3 @@ } | ||
else { | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = { | ||
@@ -142,4 +135,3 @@ affectedInstances: ui.affectedInstances, | ||
} | ||
for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) { | ||
var seg = _a[_i]; | ||
for (let seg of ui.segs) { | ||
byRow[seg.row].segs.push(seg); | ||
@@ -151,15 +143,10 @@ } | ||
var TableCellTop = /** @class */ (function (_super) { | ||
tslib.__extends(TableCellTop, _super); | ||
function TableCellTop() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableCellTop extends common.BaseComponent { | ||
render() { | ||
let { props } = this; | ||
let navLinkAttrs = common.buildNavLinkAttrs(this.context, props.date); | ||
return (common.createElement(common.DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, (innerElRef, innerContent) => ((innerContent || props.forceDayTop) && (common.createElement("div", { className: "fc-daygrid-day-top", ref: innerElRef }, | ||
common.createElement("a", Object.assign({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || common.createElement(common.Fragment, null, "\u00A0"))))))); | ||
} | ||
TableCellTop.prototype.render = function () { | ||
var props = this.props; | ||
var navLinkAttrs = common.buildNavLinkAttrs(this.context, props.date); | ||
return (common.createElement(common.DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent) { return ((innerContent || props.forceDayTop) && (common.createElement("div", { className: "fc-daygrid-day-top", ref: innerElRef }, | ||
common.createElement("a", tslib.__assign({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || common.createElement(common.Fragment, null, "\u00A0"))))); })); | ||
}; | ||
return TableCellTop; | ||
}(common.BaseComponent)); | ||
} | ||
function renderTopInner(props) { | ||
@@ -169,3 +156,3 @@ return props.dayNumberText; | ||
var DEFAULT_TABLE_EVENT_TIME_FORMAT = common.createFormatter({ | ||
const DEFAULT_TABLE_EVENT_TIME_FORMAT = common.createFormatter({ | ||
hour: 'numeric', | ||
@@ -177,3 +164,3 @@ minute: '2-digit', | ||
function hasListItemDisplay(seg) { | ||
var display = seg.eventRange.ui.display; | ||
let { display } = seg.eventRange.ui; | ||
return display === 'list-item' || (display === 'auto' && | ||
@@ -187,28 +174,18 @@ !seg.eventRange.def.allDay && | ||
var TableBlockEvent = /** @class */ (function (_super) { | ||
tslib.__extends(TableBlockEvent, _super); | ||
function TableBlockEvent() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableBlockEvent extends common.BaseComponent { | ||
render() { | ||
let { props } = this; | ||
return (common.createElement(common.StandardEvent, Object.assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); | ||
} | ||
TableBlockEvent.prototype.render = function () { | ||
var props = this.props; | ||
return (common.createElement(common.StandardEvent, tslib.__assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); | ||
}; | ||
return TableBlockEvent; | ||
}(common.BaseComponent)); | ||
} | ||
var TableListItemEvent = /** @class */ (function (_super) { | ||
tslib.__extends(TableListItemEvent, _super); | ||
function TableListItemEvent() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableListItemEvent extends common.BaseComponent { | ||
render() { | ||
let { props, context } = this; | ||
let timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; | ||
let timeText = common.buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); | ||
return (common.createElement(common.EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, (rootElRef, classNames, innerElRef, innerContent) => ( // we don't use styles! | ||
common.createElement("a", Object.assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, common.getSegAnchorAttrs(props.seg, context)), innerContent)))); | ||
} | ||
TableListItemEvent.prototype.render = function () { | ||
var _a = this, props = _a.props, context = _a.context; | ||
var timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; | ||
var timeText = common.buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); | ||
return (common.createElement(common.EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent) { return ( // we don't use styles! | ||
common.createElement("a", tslib.__assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, common.getSegAnchorAttrs(props.seg, context)), innerContent)); })); | ||
}; | ||
return TableListItemEvent; | ||
}(common.BaseComponent)); | ||
} | ||
function renderInnerContent(innerProps) { | ||
@@ -221,31 +198,27 @@ return (common.createElement(common.Fragment, null, | ||
var TableCellMoreLink = /** @class */ (function (_super) { | ||
tslib.__extends(TableCellMoreLink, _super); | ||
function TableCellMoreLink() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.compileSegs = common.memoize(compileSegs); | ||
return _this; | ||
class TableCellMoreLink extends common.BaseComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.compileSegs = common.memoize(compileSegs); | ||
} | ||
TableCellMoreLink.prototype.render = function () { | ||
var props = this.props; | ||
var _a = this.compileSegs(props.singlePlacements), allSegs = _a.allSegs, invisibleSegs = _a.invisibleSegs; | ||
return (common.createElement(common.MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: function () { | ||
var isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || | ||
render() { | ||
let { props } = this; | ||
let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements); | ||
return (common.createElement(common.MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => { | ||
let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || | ||
(props.eventResize ? props.eventResize.affectedInstances : null) || | ||
{}; | ||
return (common.createElement(common.Fragment, null, allSegs.map(function (seg) { | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
return (common.createElement(common.Fragment, null, allSegs.map((seg) => { | ||
let instanceId = seg.eventRange.instance.instanceId; | ||
return (common.createElement("div", { className: "fc-daygrid-event-harness", key: instanceId, style: { | ||
visibility: isForcedInvisible[instanceId] ? 'hidden' : '', | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, tslib.__assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))) : (common.createElement(TableBlockEvent, tslib.__assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))))); | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))) : (common.createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))))); | ||
}))); | ||
} }, function (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) { return (common.createElement("a", tslib.__assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, common.createAriaClickAttrs(handleClick)), innerContent)); })); | ||
}; | ||
return TableCellMoreLink; | ||
}(common.BaseComponent)); | ||
} }, (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (common.createElement("a", Object.assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, common.createAriaClickAttrs(handleClick)), innerContent)))); | ||
} | ||
} | ||
function compileSegs(singlePlacements) { | ||
var allSegs = []; | ||
var invisibleSegs = []; | ||
for (var _i = 0, singlePlacements_1 = singlePlacements; _i < singlePlacements_1.length; _i++) { | ||
var placement = singlePlacements_1[_i]; | ||
let allSegs = []; | ||
let invisibleSegs = []; | ||
for (let placement of singlePlacements) { | ||
allSegs.push(placement.seg); | ||
@@ -256,27 +229,25 @@ if (!placement.isVisible) { | ||
} | ||
return { allSegs: allSegs, invisibleSegs: invisibleSegs }; | ||
return { allSegs, invisibleSegs }; | ||
} | ||
var DEFAULT_WEEK_NUM_FORMAT = common.createFormatter({ week: 'narrow' }); | ||
var TableCell = /** @class */ (function (_super) { | ||
tslib.__extends(TableCell, _super); | ||
function TableCell() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.rootElRef = common.createRef(); | ||
_this.state = { | ||
const DEFAULT_WEEK_NUM_FORMAT = common.createFormatter({ week: 'narrow' }); | ||
class TableCell extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.rootElRef = common.createRef(); | ||
this.state = { | ||
dayNumberId: common.getUniqueDomId(), | ||
}; | ||
_this.handleRootEl = function (el) { | ||
common.setRef(_this.rootElRef, el); | ||
common.setRef(_this.props.elRef, el); | ||
this.handleRootEl = (el) => { | ||
common.setRef(this.rootElRef, el); | ||
common.setRef(this.props.elRef, el); | ||
}; | ||
return _this; | ||
} | ||
TableCell.prototype.render = function () { | ||
var _a = this, context = _a.context, props = _a.props, state = _a.state, rootElRef = _a.rootElRef; | ||
var date = props.date, dateProfile = props.dateProfile; | ||
var navLinkAttrs = common.buildNavLinkAttrs(context, date, 'week'); | ||
return (common.createElement(common.DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (dayElRef, dayClassNames, rootDataAttrs, isDisabled) { return (common.createElement("td", tslib.__assign({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), | ||
render() { | ||
let { context, props, state, rootElRef } = this; | ||
let { date, dateProfile } = props; | ||
let navLinkAttrs = common.buildNavLinkAttrs(context, date, 'week'); | ||
return (common.createElement(common.DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, (dayElRef, dayClassNames, rootDataAttrs, isDisabled) => (common.createElement("td", Object.assign({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), | ||
common.createElement("div", { className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", ref: props.innerElRef /* different from hook system! RENAME */ }, | ||
props.showWeekNumber && (common.createElement(common.WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (weekElRef, weekClassNames, innerElRef, innerContent) { return (common.createElement("a", tslib.__assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)); })), | ||
props.showWeekNumber && (common.createElement(common.WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, (weekElRef, weekClassNames, innerElRef, innerContent) => (common.createElement("a", Object.assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)))), | ||
!isDisabled && (common.createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, dayNumberId: state.dayNumberId, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })), | ||
@@ -287,10 +258,9 @@ common.createElement("div", { className: "fc-daygrid-day-events", ref: props.fgContentElRef }, | ||
common.createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))), | ||
common.createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))); })); | ||
}; | ||
return TableCell; | ||
}(common.DateComponent)); | ||
common.createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))))); | ||
} | ||
} | ||
function computeFgSegPlacement(segs, // assumed already sorted | ||
dayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) { | ||
var hierarchy = new DayGridSegHierarchy(); | ||
let hierarchy = new DayGridSegHierarchy(); | ||
hierarchy.allowReslicing = true; | ||
@@ -310,8 +280,8 @@ hierarchy.strictOrder = strictOrder; | ||
// create segInputs only for segs with known heights | ||
var segInputs = []; | ||
var unknownHeightSegs = []; | ||
for (var i = 0; i < segs.length; i += 1) { | ||
var seg = segs[i]; | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
var eventHeight = eventInstanceHeights[instanceId]; | ||
let segInputs = []; | ||
let unknownHeightSegs = []; | ||
for (let i = 0; i < segs.length; i += 1) { | ||
let seg = segs[i]; | ||
let { instanceId } = seg.eventRange.instance; | ||
let eventHeight = eventInstanceHeights[instanceId]; | ||
if (eventHeight != null) { | ||
@@ -331,12 +301,11 @@ segInputs.push({ | ||
} | ||
var hiddenEntries = hierarchy.addSegs(segInputs); | ||
var segRects = hierarchy.toRects(); | ||
var _a = placeRects(segRects, segs, cells), singleColPlacements = _a.singleColPlacements, multiColPlacements = _a.multiColPlacements, leftoverMargins = _a.leftoverMargins; | ||
var moreCnts = []; | ||
var moreMarginTops = []; | ||
let hiddenEntries = hierarchy.addSegs(segInputs); | ||
let segRects = hierarchy.toRects(); | ||
let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells); | ||
let moreCnts = []; | ||
let moreMarginTops = []; | ||
// add segs with unknown heights | ||
for (var _i = 0, unknownHeightSegs_1 = unknownHeightSegs; _i < unknownHeightSegs_1.length; _i++) { | ||
var seg = unknownHeightSegs_1[_i]; | ||
for (let seg of unknownHeightSegs) { | ||
multiColPlacements[seg.firstCol].push({ | ||
seg: seg, | ||
seg, | ||
isVisible: false, | ||
@@ -347,3 +316,3 @@ isAbsolute: true, | ||
}); | ||
for (var col = seg.firstCol; col <= seg.lastCol; col += 1) { | ||
for (let col = seg.firstCol; col <= seg.lastCol; col += 1) { | ||
singleColPlacements[col].push({ | ||
@@ -359,9 +328,8 @@ seg: resliceSeg(seg, col, col + 1, cells), | ||
// add the hidden entries | ||
for (var col = 0; col < cells.length; col += 1) { | ||
for (let col = 0; col < cells.length; col += 1) { | ||
moreCnts.push(0); | ||
} | ||
for (var _b = 0, hiddenEntries_1 = hiddenEntries; _b < hiddenEntries_1.length; _b++) { | ||
var hiddenEntry = hiddenEntries_1[_b]; | ||
var seg = segs[hiddenEntry.index]; | ||
var hiddenSpan = hiddenEntry.span; | ||
for (let hiddenEntry of hiddenEntries) { | ||
let seg = segs[hiddenEntry.index]; | ||
let hiddenSpan = hiddenEntry.span; | ||
multiColPlacements[hiddenSpan.start].push({ | ||
@@ -374,3 +342,3 @@ seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells), | ||
}); | ||
for (var col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { | ||
for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { | ||
moreCnts[col] += 1; | ||
@@ -387,22 +355,21 @@ singleColPlacements[col].push({ | ||
// deal with leftover margins | ||
for (var col = 0; col < cells.length; col += 1) { | ||
for (let col = 0; col < cells.length; col += 1) { | ||
moreMarginTops.push(leftoverMargins[col]); | ||
} | ||
return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, moreCnts: moreCnts, moreMarginTops: moreMarginTops }; | ||
return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops }; | ||
} | ||
// rects ordered by top coord, then left | ||
function placeRects(allRects, segs, cells) { | ||
var rectsByEachCol = groupRectsByEachCol(allRects, cells.length); | ||
var singleColPlacements = []; | ||
var multiColPlacements = []; | ||
var leftoverMargins = []; | ||
for (var col = 0; col < cells.length; col += 1) { | ||
var rects = rectsByEachCol[col]; | ||
let rectsByEachCol = groupRectsByEachCol(allRects, cells.length); | ||
let singleColPlacements = []; | ||
let multiColPlacements = []; | ||
let leftoverMargins = []; | ||
for (let col = 0; col < cells.length; col += 1) { | ||
let rects = rectsByEachCol[col]; | ||
// compute all static segs in singlePlacements | ||
var singlePlacements = []; | ||
var currentHeight = 0; | ||
var currentMarginTop = 0; | ||
for (var _i = 0, rects_1 = rects; _i < rects_1.length; _i++) { | ||
var rect = rects_1[_i]; | ||
var seg = segs[rect.index]; | ||
let singlePlacements = []; | ||
let currentHeight = 0; | ||
let currentMarginTop = 0; | ||
for (let rect of rects) { | ||
let seg = segs[rect.index]; | ||
singlePlacements.push({ | ||
@@ -418,10 +385,9 @@ seg: resliceSeg(seg, col, col + 1, cells), | ||
// compute mixed static/absolute segs in multiPlacements | ||
var multiPlacements = []; | ||
let multiPlacements = []; | ||
currentHeight = 0; | ||
currentMarginTop = 0; | ||
for (var _a = 0, rects_2 = rects; _a < rects_2.length; _a++) { | ||
var rect = rects_2[_a]; | ||
var seg = segs[rect.index]; | ||
var isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? | ||
var isFirstCol = rect.span.start === col; | ||
for (let rect of rects) { | ||
let seg = segs[rect.index]; | ||
let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? | ||
let isFirstCol = rect.span.start === col; | ||
currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg | ||
@@ -456,12 +422,11 @@ currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg | ||
} | ||
return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, leftoverMargins: leftoverMargins }; | ||
return { singleColPlacements, multiColPlacements, leftoverMargins }; | ||
} | ||
function groupRectsByEachCol(rects, colCnt) { | ||
var rectsByEachCol = []; | ||
for (var col = 0; col < colCnt; col += 1) { | ||
let rectsByEachCol = []; | ||
for (let col = 0; col < colCnt; col += 1) { | ||
rectsByEachCol.push([]); | ||
} | ||
for (var _i = 0, rects_3 = rects; _i < rects_3.length; _i++) { | ||
var rect = rects_3[_i]; | ||
for (var col = rect.span.start; col < rect.span.end; col += 1) { | ||
for (let rect of rects) { | ||
for (let col = rect.span.start; col < rect.span.end; col += 1) { | ||
rectsByEachCol[col].push(rect); | ||
@@ -476,11 +441,11 @@ } | ||
} | ||
var eventRange = seg.eventRange; | ||
var origRange = eventRange.range; | ||
var slicedRange = common.intersectRanges(origRange, { | ||
let eventRange = seg.eventRange; | ||
let origRange = eventRange.range; | ||
let slicedRange = common.intersectRanges(origRange, { | ||
start: cells[spanStart].date, | ||
end: common.addDays(cells[spanEnd - 1].date, 1), | ||
}); | ||
return tslib.__assign(tslib.__assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { | ||
return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { | ||
def: eventRange.def, | ||
ui: tslib.__assign(tslib.__assign({}, eventRange.ui), { durationEditable: false }), | ||
ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }), | ||
instance: eventRange.instance, | ||
@@ -490,33 +455,30 @@ range: slicedRange, | ||
} | ||
var DayGridSegHierarchy = /** @class */ (function (_super) { | ||
tslib.__extends(DayGridSegHierarchy, _super); | ||
function DayGridSegHierarchy() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
class DayGridSegHierarchy extends common.SegHierarchy { | ||
constructor() { | ||
super(...arguments); | ||
// config | ||
_this.hiddenConsumes = false; | ||
this.hiddenConsumes = false; | ||
// allows us to keep hidden entries in the hierarchy so they take up space | ||
_this.forceHidden = {}; | ||
return _this; | ||
this.forceHidden = {}; | ||
} | ||
DayGridSegHierarchy.prototype.addSegs = function (segInputs) { | ||
var _this = this; | ||
var hiddenSegs = _super.prototype.addSegs.call(this, segInputs); | ||
var entriesByLevel = this.entriesByLevel; | ||
var excludeHidden = function (entry) { return !_this.forceHidden[common.buildEntryKey(entry)]; }; | ||
addSegs(segInputs) { | ||
const hiddenSegs = super.addSegs(segInputs); | ||
const { entriesByLevel } = this; | ||
const excludeHidden = (entry) => !this.forceHidden[common.buildEntryKey(entry)]; | ||
// remove the forced-hidden segs | ||
for (var level = 0; level < entriesByLevel.length; level += 1) { | ||
for (let level = 0; level < entriesByLevel.length; level += 1) { | ||
entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden); | ||
} | ||
return hiddenSegs; | ||
}; | ||
DayGridSegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) { | ||
var _a = this, entriesByLevel = _a.entriesByLevel, forceHidden = _a.forceHidden; | ||
var touchingEntry = insertion.touchingEntry, touchingLevel = insertion.touchingLevel, touchingLateral = insertion.touchingLateral; | ||
} | ||
handleInvalidInsertion(insertion, entry, hiddenEntries) { | ||
const { entriesByLevel, forceHidden } = this; | ||
const { touchingEntry, touchingLevel, touchingLateral } = insertion; | ||
if (this.hiddenConsumes && touchingEntry) { | ||
var touchingEntryId = common.buildEntryKey(touchingEntry); | ||
const touchingEntryId = common.buildEntryKey(touchingEntry); | ||
// if not already hidden | ||
if (!forceHidden[touchingEntryId]) { | ||
if (this.allowReslicing) { | ||
var placeholderEntry = tslib.__assign(tslib.__assign({}, touchingEntry), { span: common.intersectSpans(touchingEntry.span, entry.span) }); | ||
var placeholderEntryId = common.buildEntryKey(placeholderEntry); | ||
const placeholderEntry = Object.assign(Object.assign({}, touchingEntry), { span: common.intersectSpans(touchingEntry.span, entry.span) }); | ||
const placeholderEntryId = common.buildEntryKey(placeholderEntry); | ||
forceHidden[placeholderEntryId] = true; | ||
@@ -532,17 +494,15 @@ entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder | ||
} | ||
return _super.prototype.handleInvalidInsertion.call(this, insertion, entry, hiddenEntries); | ||
}; | ||
return DayGridSegHierarchy; | ||
}(common.SegHierarchy)); | ||
return super.handleInvalidInsertion(insertion, entry, hiddenEntries); | ||
} | ||
} | ||
var TableRow = /** @class */ (function (_super) { | ||
tslib.__extends(TableRow, _super); | ||
function TableRow() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.cellElRefs = new common.RefMap(); // the <td> | ||
_this.frameElRefs = new common.RefMap(); // the fc-daygrid-day-frame | ||
_this.fgElRefs = new common.RefMap(); // the fc-daygrid-day-events | ||
_this.segHarnessRefs = new common.RefMap(); // indexed by "instanceId:firstCol" | ||
_this.rootElRef = common.createRef(); | ||
_this.state = { | ||
class TableRow extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.cellElRefs = new common.RefMap(); // the <td> | ||
this.frameElRefs = new common.RefMap(); // the fc-daygrid-day-frame | ||
this.fgElRefs = new common.RefMap(); // the fc-daygrid-day-events | ||
this.segHarnessRefs = new common.RefMap(); // indexed by "instanceId:firstCol" | ||
this.rootElRef = common.createRef(); | ||
this.state = { | ||
framePositions: null, | ||
@@ -552,15 +512,13 @@ maxContentHeight: null, | ||
}; | ||
return _this; | ||
} | ||
TableRow.prototype.render = function () { | ||
var _this = this; | ||
var _a = this, props = _a.props, state = _a.state, context = _a.context; | ||
var options = context.options; | ||
var colCnt = props.cells.length; | ||
var businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); | ||
var bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); | ||
var highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); | ||
var mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); | ||
var _b = computeFgSegPlacement(common.sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells), singleColPlacements = _b.singleColPlacements, multiColPlacements = _b.multiColPlacements, moreCnts = _b.moreCnts, moreMarginTops = _b.moreMarginTops; | ||
var isForcedInvisible = // TODO: messy way to compute this | ||
render() { | ||
let { props, state, context } = this; | ||
let { options } = context; | ||
let colCnt = props.cells.length; | ||
let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); | ||
let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); | ||
let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); | ||
let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); | ||
let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(common.sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells); | ||
let isForcedInvisible = // TODO: messy way to compute this | ||
(props.eventDrag && props.eventDrag.affectedInstances) || | ||
@@ -571,6 +529,6 @@ (props.eventResize && props.eventResize.affectedInstances) || | ||
props.renderIntro && props.renderIntro(), | ||
props.cells.map(function (cell, col) { | ||
var normalFgNodes = _this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); | ||
var mirrorFgNodes = _this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); | ||
return (common.createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys | ||
props.cells.map((cell, col) => { | ||
let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); | ||
let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); | ||
return (common.createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys | ||
common.createElement(common.Fragment, null, | ||
@@ -580,16 +538,16 @@ common.createElement(common.Fragment, null, normalFgNodes), | ||
common.createElement(common.Fragment, null, | ||
_this.renderFillSegs(highlightSegsByCol[col], 'highlight'), | ||
_this.renderFillSegs(businessHoursByCol[col], 'non-business'), | ||
_this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); | ||
this.renderFillSegs(highlightSegsByCol[col], 'highlight'), | ||
this.renderFillSegs(businessHoursByCol[col], 'non-business'), | ||
this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); | ||
}))); | ||
}; | ||
TableRow.prototype.componentDidMount = function () { | ||
} | ||
componentDidMount() { | ||
this.updateSizing(true); | ||
}; | ||
TableRow.prototype.componentDidUpdate = function (prevProps, prevState) { | ||
var currentProps = this.props; | ||
} | ||
componentDidUpdate(prevProps, prevState) { | ||
let currentProps = this.props; | ||
this.updateSizing(!common.isPropsEqual(prevProps, currentProps)); | ||
}; | ||
TableRow.prototype.getHighlightSegs = function () { | ||
var props = this.props; | ||
} | ||
getHighlightSegs() { | ||
let { props } = this; | ||
if (props.eventDrag && props.eventDrag.segs.length) { // messy check | ||
@@ -602,5 +560,5 @@ return props.eventDrag.segs; | ||
return props.dateSelectionSegs; | ||
}; | ||
TableRow.prototype.getMirrorSegs = function () { | ||
var props = this.props; | ||
} | ||
getMirrorSegs() { | ||
let { props } = this; | ||
if (props.eventResize && props.eventResize.segs.length) { // messy check | ||
@@ -610,20 +568,19 @@ return props.eventResize.segs; | ||
return []; | ||
}; | ||
TableRow.prototype.renderFgSegs = function (col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { | ||
var context = this.context; | ||
var eventSelection = this.props.eventSelection; | ||
var framePositions = this.state.framePositions; | ||
var defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 | ||
var isMirror = isDragging || isResizing || isDateSelecting; | ||
var nodes = []; | ||
} | ||
renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { | ||
let { context } = this; | ||
let { eventSelection } = this.props; | ||
let { framePositions } = this.state; | ||
let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 | ||
let isMirror = isDragging || isResizing || isDateSelecting; | ||
let nodes = []; | ||
if (framePositions) { | ||
for (var _i = 0, segPlacements_1 = segPlacements; _i < segPlacements_1.length; _i++) { | ||
var placement = segPlacements_1[_i]; | ||
var seg = placement.seg; | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
var key = instanceId + ':' + col; | ||
var isVisible = placement.isVisible && !isForcedInvisible[instanceId]; | ||
var isAbsolute = placement.isAbsolute; | ||
var left = ''; | ||
var right = ''; | ||
for (let placement of segPlacements) { | ||
let { seg } = placement; | ||
let { instanceId } = seg.eventRange.instance; | ||
let key = instanceId + ':' + col; | ||
let isVisible = placement.isVisible && !isForcedInvisible[instanceId]; | ||
let isAbsolute = placement.isAbsolute; | ||
let left = ''; | ||
let right = ''; | ||
if (isAbsolute) { | ||
@@ -647,18 +604,17 @@ if (context.isRtl) { | ||
top: isAbsolute ? placement.absoluteTop : '', | ||
left: left, | ||
right: right, | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, tslib.__assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))) : (common.createElement(TableBlockEvent, tslib.__assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))))); | ||
left, | ||
right, | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))) : (common.createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))))); | ||
} | ||
} | ||
return nodes; | ||
}; | ||
TableRow.prototype.renderFillSegs = function (segs, fillType) { | ||
var isRtl = this.context.isRtl; | ||
var todayRange = this.props.todayRange; | ||
var framePositions = this.state.framePositions; | ||
var nodes = []; | ||
} | ||
renderFillSegs(segs, fillType) { | ||
let { isRtl } = this.context; | ||
let { todayRange } = this.props; | ||
let { framePositions } = this.state; | ||
let nodes = []; | ||
if (framePositions) { | ||
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
var seg = segs_1[_i]; | ||
var leftRightCss = isRtl ? { | ||
for (let seg of segs) { | ||
let leftRightCss = isRtl ? { | ||
right: 0, | ||
@@ -671,10 +627,10 @@ left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol], | ||
nodes.push(common.createElement("div", { key: common.buildEventRangeKey(seg.eventRange), className: "fc-daygrid-bg-harness", style: leftRightCss }, fillType === 'bg-event' ? | ||
common.createElement(common.BgEvent, tslib.__assign({ seg: seg }, common.getSegMeta(seg, todayRange))) : | ||
common.createElement(common.BgEvent, Object.assign({ seg: seg }, common.getSegMeta(seg, todayRange))) : | ||
common.renderFill(fillType))); | ||
} | ||
} | ||
return common.createElement.apply(void 0, tslib.__spreadArray([common.Fragment, {}], nodes)); | ||
}; | ||
TableRow.prototype.updateSizing = function (isExternalSizingChange) { | ||
var _a = this, props = _a.props, frameElRefs = _a.frameElRefs; | ||
return common.createElement(common.Fragment, {}, ...nodes); | ||
} | ||
updateSizing(isExternalSizingChange) { | ||
let { props, frameElRefs } = this; | ||
if (!props.forPrint && | ||
@@ -684,5 +640,5 @@ props.clientWidth !== null // positioning ready? | ||
if (isExternalSizingChange) { | ||
var frameEls = props.cells.map(function (cell) { return frameElRefs.currentMap[cell.key]; }); | ||
let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]); | ||
if (frameEls.length) { | ||
var originEl = this.rootElRef.current; | ||
let originEl = this.rootElRef.current; | ||
this.setState({ | ||
@@ -694,5 +650,5 @@ framePositions: new common.PositionCache(originEl, frameEls, true, // isHorizontal | ||
} | ||
var oldInstanceHeights = this.state.eventInstanceHeights; | ||
var newInstanceHeights = this.queryEventInstanceHeights(); | ||
var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; | ||
const oldInstanceHeights = this.state.eventInstanceHeights; | ||
const newInstanceHeights = this.queryEventInstanceHeights(); | ||
const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; | ||
this.safeSetState({ | ||
@@ -702,30 +658,29 @@ // HACK to prevent oscillations of events being shown/hidden from max-event-rows | ||
// TODO: always display all events, as visibility:hidden? | ||
eventInstanceHeights: tslib.__assign(tslib.__assign({}, oldInstanceHeights), newInstanceHeights), | ||
eventInstanceHeights: Object.assign(Object.assign({}, oldInstanceHeights), newInstanceHeights), | ||
maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null, | ||
}); | ||
} | ||
}; | ||
TableRow.prototype.queryEventInstanceHeights = function () { | ||
var segElMap = this.segHarnessRefs.currentMap; | ||
var eventInstanceHeights = {}; | ||
} | ||
queryEventInstanceHeights() { | ||
let segElMap = this.segHarnessRefs.currentMap; | ||
let eventInstanceHeights = {}; | ||
// get the max height amongst instance segs | ||
for (var key in segElMap) { | ||
var height = Math.round(segElMap[key].getBoundingClientRect().height); | ||
var instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key | ||
for (let key in segElMap) { | ||
let height = Math.round(segElMap[key].getBoundingClientRect().height); | ||
let instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key | ||
eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height); | ||
} | ||
return eventInstanceHeights; | ||
}; | ||
TableRow.prototype.computeMaxContentHeight = function () { | ||
var firstKey = this.props.cells[0].key; | ||
var cellEl = this.cellElRefs.currentMap[firstKey]; | ||
var fcContainerEl = this.fgElRefs.currentMap[firstKey]; | ||
} | ||
computeMaxContentHeight() { | ||
let firstKey = this.props.cells[0].key; | ||
let cellEl = this.cellElRefs.currentMap[firstKey]; | ||
let fcContainerEl = this.fgElRefs.currentMap[firstKey]; | ||
return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top; | ||
}; | ||
TableRow.prototype.getCellEls = function () { | ||
var elMap = this.cellElRefs.currentMap; | ||
return this.props.cells.map(function (cell) { return elMap[cell.key]; }); | ||
}; | ||
return TableRow; | ||
}(common.DateComponent)); | ||
} | ||
getCellEls() { | ||
let elMap = this.cellElRefs.currentMap; | ||
return this.props.cells.map((cell) => elMap[cell.key]); | ||
} | ||
} | ||
TableRow.addStateEquality({ | ||
@@ -738,5 +693,5 @@ eventInstanceHeights: common.isPropsEqual, | ||
} | ||
var topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? | ||
return mirrorSegs.map(function (seg) { return ({ | ||
seg: seg, | ||
let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? | ||
return mirrorSegs.map((seg) => ({ | ||
seg, | ||
isVisible: true, | ||
@@ -746,10 +701,8 @@ isAbsolute: true, | ||
marginTop: 0, | ||
}); }); | ||
})); | ||
} | ||
function buildAbsoluteTopHash(colPlacements) { | ||
var topsByInstanceId = {}; | ||
for (var _i = 0, colPlacements_1 = colPlacements; _i < colPlacements_1.length; _i++) { | ||
var placements = colPlacements_1[_i]; | ||
for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) { | ||
var placement = placements_1[_a]; | ||
let topsByInstanceId = {}; | ||
for (let placements of colPlacements) { | ||
for (let placement of placements) { | ||
topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop; | ||
@@ -761,39 +714,36 @@ } | ||
var Table = /** @class */ (function (_super) { | ||
tslib.__extends(Table, _super); | ||
function Table() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.splitBusinessHourSegs = common.memoize(splitSegsByRow); | ||
_this.splitBgEventSegs = common.memoize(splitSegsByRow); | ||
_this.splitFgEventSegs = common.memoize(splitSegsByRow); | ||
_this.splitDateSelectionSegs = common.memoize(splitSegsByRow); | ||
_this.splitEventDrag = common.memoize(splitInteractionByRow); | ||
_this.splitEventResize = common.memoize(splitInteractionByRow); | ||
_this.rowRefs = new common.RefMap(); | ||
_this.handleRootEl = function (rootEl) { | ||
_this.rootEl = rootEl; | ||
class Table extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.splitBusinessHourSegs = common.memoize(splitSegsByRow); | ||
this.splitBgEventSegs = common.memoize(splitSegsByRow); | ||
this.splitFgEventSegs = common.memoize(splitSegsByRow); | ||
this.splitDateSelectionSegs = common.memoize(splitSegsByRow); | ||
this.splitEventDrag = common.memoize(splitInteractionByRow); | ||
this.splitEventResize = common.memoize(splitInteractionByRow); | ||
this.rowRefs = new common.RefMap(); | ||
this.handleRootEl = (rootEl) => { | ||
this.rootEl = rootEl; | ||
if (rootEl) { | ||
_this.context.registerInteractiveComponent(_this, { | ||
this.context.registerInteractiveComponent(this, { | ||
el: rootEl, | ||
isHitComboAllowed: _this.props.isHitComboAllowed, | ||
isHitComboAllowed: this.props.isHitComboAllowed, | ||
}); | ||
} | ||
else { | ||
_this.context.unregisterInteractiveComponent(_this); | ||
this.context.unregisterInteractiveComponent(this); | ||
} | ||
}; | ||
return _this; | ||
} | ||
Table.prototype.render = function () { | ||
var _this = this; | ||
var props = this.props; | ||
var dateProfile = props.dateProfile, dayMaxEventRows = props.dayMaxEventRows, dayMaxEvents = props.dayMaxEvents, expandRows = props.expandRows; | ||
var rowCnt = props.cells.length; | ||
var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); | ||
var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); | ||
var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); | ||
var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt); | ||
var eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt); | ||
var eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt); | ||
var limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true; | ||
render() { | ||
let { props } = this; | ||
let { dateProfile, dayMaxEventRows, dayMaxEvents, expandRows } = props; | ||
let rowCnt = props.cells.length; | ||
let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); | ||
let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); | ||
let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); | ||
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 | ||
@@ -806,3 +756,3 @@ // TODO: best place to normalize these options? | ||
} | ||
var classNames = [ | ||
let classNames = [ | ||
'fc-daygrid-body', | ||
@@ -818,3 +768,3 @@ limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', | ||
} }, | ||
common.createElement(common.NowTimer, { unit: "day" }, function (nowDate, todayRange) { return (common.createElement(common.Fragment, null, | ||
common.createElement(common.NowTimer, { unit: "day" }, (nowDate, todayRange) => (common.createElement(common.Fragment, null, | ||
common.createElement("table", { role: "presentation", className: "fc-scrollgrid-sync-table", style: { | ||
@@ -826,11 +776,11 @@ width: props.clientWidth, | ||
props.colGroupNode, | ||
common.createElement("tbody", { role: "presentation" }, props.cells.map(function (cells, row) { return (common.createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length | ||
common.createElement("tbody", { role: "presentation" }, props.cells.map((cells, row) => (common.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 })); }))))); }))); | ||
}; | ||
, 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 | ||
// ---------------------------------------------------------------------------------------------------- | ||
Table.prototype.prepareHits = function () { | ||
this.rowPositions = new common.PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj) { return rowObj.getCellEls()[0]; }), // first cell el in each row. TODO: not optimal | ||
prepareHits() { | ||
this.rowPositions = new common.PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal | ||
false, true); | ||
@@ -840,12 +790,12 @@ this.colPositions = new common.PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row | ||
false); | ||
}; | ||
Table.prototype.queryHit = function (positionLeft, positionTop) { | ||
var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; | ||
var col = colPositions.leftToIndex(positionLeft); | ||
var row = rowPositions.topToIndex(positionTop); | ||
} | ||
queryHit(positionLeft, positionTop) { | ||
let { colPositions, rowPositions } = this; | ||
let col = colPositions.leftToIndex(positionLeft); | ||
let row = rowPositions.topToIndex(positionTop); | ||
if (row != null && col != null) { | ||
var cell = this.props.cells[row][col]; | ||
let cell = this.props.cells[row][col]; | ||
return { | ||
dateProfile: this.props.dateProfile, | ||
dateSpan: tslib.__assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), | ||
dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), | ||
dayEl: this.getCellEl(row, col), | ||
@@ -862,13 +812,12 @@ rect: { | ||
return null; | ||
}; | ||
Table.prototype.getCellEl = function (row, col) { | ||
} | ||
getCellEl(row, col) { | ||
return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal | ||
}; | ||
Table.prototype.getCellRange = function (row, col) { | ||
var start = this.props.cells[row][col].date; | ||
var end = common.addDays(start, 1); | ||
return { start: start, end: end }; | ||
}; | ||
return Table; | ||
}(common.DateComponent)); | ||
} | ||
getCellRange(row, col) { | ||
let start = this.props.cells[row][col].date; | ||
let end = common.addDays(start, 1); | ||
return { start, end }; | ||
} | ||
} | ||
function isSegAllDay(seg) { | ||
@@ -878,69 +827,55 @@ return seg.eventRange.def.allDay; | ||
var DayTableSlicer = /** @class */ (function (_super) { | ||
tslib.__extends(DayTableSlicer, _super); | ||
function DayTableSlicer() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.forceDayIfListItem = true; | ||
return _this; | ||
class DayTableSlicer extends common.Slicer { | ||
constructor() { | ||
super(...arguments); | ||
this.forceDayIfListItem = true; | ||
} | ||
DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) { | ||
sliceRange(dateRange, dayTableModel) { | ||
return dayTableModel.sliceRange(dateRange); | ||
}; | ||
return DayTableSlicer; | ||
}(common.Slicer)); | ||
} | ||
} | ||
var DayTable = /** @class */ (function (_super) { | ||
tslib.__extends(DayTable, _super); | ||
function DayTable() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.slicer = new DayTableSlicer(); | ||
_this.tableRef = common.createRef(); | ||
return _this; | ||
class DayTable extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.slicer = new DayTableSlicer(); | ||
this.tableRef = common.createRef(); | ||
} | ||
DayTable.prototype.render = function () { | ||
var _a = this, props = _a.props, context = _a.context; | ||
return (common.createElement(Table, tslib.__assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); | ||
}; | ||
return DayTable; | ||
}(common.DateComponent)); | ||
render() { | ||
let { props, context } = this; | ||
return (common.createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); | ||
} | ||
} | ||
var DayTableView = /** @class */ (function (_super) { | ||
tslib.__extends(DayTableView, _super); | ||
function DayTableView() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.buildDayTableModel = common.memoize(buildDayTableModel); | ||
_this.headerRef = common.createRef(); | ||
_this.tableRef = common.createRef(); | ||
return _this; | ||
class DayTableView extends TableView { | ||
constructor() { | ||
super(...arguments); | ||
this.buildDayTableModel = common.memoize(buildDayTableModel); | ||
this.headerRef = common.createRef(); | ||
this.tableRef = common.createRef(); | ||
} | ||
DayTableView.prototype.render = function () { | ||
var _this = this; | ||
var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator; | ||
var props = this.props; | ||
var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); | ||
var headerContent = options.dayHeaders && (common.createElement(common.DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); | ||
var bodyContent = function (contentArg) { return (common.createElement(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); }; | ||
render() { | ||
let { options, dateProfileGenerator } = this.context; | ||
let { props } = this; | ||
let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); | ||
let headerContent = options.dayHeaders && (common.createElement(common.DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); | ||
let bodyContent = (contentArg) => (common.createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); | ||
return options.dayMinWidth | ||
? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth) | ||
: this.renderSimpleLayout(headerContent, bodyContent); | ||
}; | ||
return DayTableView; | ||
}(TableView)); | ||
} | ||
} | ||
function buildDayTableModel(dateProfile, dateProfileGenerator) { | ||
var daySeries = new common.DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); | ||
let daySeries = new common.DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); | ||
return new common.DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); | ||
} | ||
var TableDateProfileGenerator = /** @class */ (function (_super) { | ||
tslib.__extends(TableDateProfileGenerator, _super); | ||
function TableDateProfileGenerator() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
class TableDateProfileGenerator extends common.DateProfileGenerator { | ||
// Computes the date range that will be rendered. | ||
TableDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { | ||
var dateEnv = this.props.dateEnv; | ||
var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); | ||
var start = renderRange.start; | ||
var end = renderRange.end; | ||
var endOfWeek; | ||
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 | ||
@@ -958,11 +893,40 @@ if (/^(year|month)$/.test(currentRangeUnit)) { | ||
this.props.fixedWeekCount) { | ||
var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
common.diffWeeks(start, end)); | ||
end = common.addWeeks(end, 6 - rowCnt); | ||
} | ||
return { start: start, end: end }; | ||
}; | ||
return TableDateProfileGenerator; | ||
}(common.DateProfileGenerator)); | ||
return { start, end }; | ||
} | ||
} | ||
function styleInject(css, ref) { | ||
if ( ref === void 0 ) ref = {}; | ||
var insertAt = ref.insertAt; | ||
if (!css || typeof document === 'undefined') { return; } | ||
var head = document.head || document.getElementsByTagName('head')[0]; | ||
var style = document.createElement('style'); | ||
style.type = 'text/css'; | ||
if (insertAt === 'top') { | ||
if (head.firstChild) { | ||
head.insertBefore(style, head.firstChild); | ||
} else { | ||
head.appendChild(style); | ||
} | ||
} else { | ||
head.appendChild(style); | ||
} | ||
if (style.styleSheet) { | ||
style.styleSheet.cssText = css; | ||
} else { | ||
style.appendChild(document.createTextNode(css)); | ||
} | ||
} | ||
var css_248z = "\n:root {\n --fc-daygrid-event-dot-width: 8px;\n}\n/* help things clear margins of inner content */\n.fc-daygrid-day-frame,\n.fc-daygrid-day-events,\n.fc-daygrid-event-harness { /* for event top/bottom margins */\n}\n.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-body { /* a <div> that wraps the table */\n position: relative;\n z-index: 1; /* container inner z-index's because <tr>s can't do it */\n }\n.fc .fc-daygrid-day.fc-day-today {\n background-color: rgba(255, 220, 40, 0.15);\n background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));\n }\n.fc .fc-daygrid-day-frame {\n position: relative;\n min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */\n }\n.fc {\n\n /* cell top */\n\n}\n.fc .fc-daygrid-day-top {\n display: flex;\n flex-direction: row-reverse;\n }\n.fc .fc-day-other .fc-daygrid-day-top {\n opacity: 0.3;\n }\n.fc {\n\n /* day number (within cell top) */\n\n}\n.fc .fc-daygrid-day-number {\n position: relative;\n z-index: 4;\n padding: 4px;\n }\n.fc {\n\n /* event container */\n\n}\n.fc .fc-daygrid-day-events {\n margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */\n }\n.fc {\n\n /* positioning for balanced vs natural */\n\n}\n.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {\n position: absolute;\n left: 0;\n right: 0;\n }\n.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {\n position: relative; /* for containing abs positioned event harnesses */\n min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */\n }\n.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */\n }\n.fc .fc-daygrid-body-natural .fc-daygrid-day-events {\n margin-bottom: 1em;\n }\n.fc {\n\n /* event harness */\n\n}\n.fc .fc-daygrid-event-harness {\n position: relative;\n }\n.fc .fc-daygrid-event-harness-abs {\n position: absolute;\n top: 0; /* fallback coords for when cannot yet be computed */\n left: 0; /* */\n right: 0; /* */\n }\n.fc .fc-daygrid-bg-harness {\n position: absolute;\n top: 0;\n bottom: 0;\n }\n.fc {\n\n /* bg content */\n\n}\n.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }\n.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }\n.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }\n.fc {\n\n /* events */\n\n}\n.fc .fc-daygrid-event {\n z-index: 6;\n margin-top: 1px;\n }\n.fc .fc-daygrid-event.fc-event-mirror {\n z-index: 7;\n }\n.fc {\n\n /* cell bottom (within day-events) */\n\n}\n.fc .fc-daygrid-day-bottom {\n font-size: .85em;\n padding: 2px 3px 0\n }\n.fc .fc-daygrid-day-bottom:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-more-link {\n position: relative;\n z-index: 4;\n cursor: pointer;\n }\n.fc {\n\n /* week number (within frame) */\n\n}\n.fc .fc-daygrid-week-number {\n position: absolute;\n z-index: 5;\n top: 0;\n padding: 2px;\n min-width: 1.5em;\n text-align: center;\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n color: #808080;\n color: var(--fc-neutral-text-color, #808080);\n }\n.fc {\n\n /* popover */\n\n}\n.fc .fc-more-popover .fc-popover-body {\n min-width: 220px;\n padding: 10px;\n }\n.fc-direction-ltr .fc-daygrid-event.fc-event-start,\n.fc-direction-rtl .fc-daygrid-event.fc-event-end {\n margin-left: 2px;\n}\n.fc-direction-ltr .fc-daygrid-event.fc-event-end,\n.fc-direction-rtl .fc-daygrid-event.fc-event-start {\n margin-right: 2px;\n}\n.fc-direction-ltr .fc-daygrid-week-number {\n left: 0;\n border-radius: 0 0 3px 0;\n }\n.fc-direction-rtl .fc-daygrid-week-number {\n right: 0;\n border-radius: 0 0 0 3px;\n }\n.fc-liquid-hack .fc-daygrid-day-frame {\n position: static; /* will cause inner absolute stuff to expand to <td> */\n }\n.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */\n position: relative; /* for z-indexes assigned later */\n white-space: nowrap;\n border-radius: 3px; /* dot event needs this to when selected */\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n}\n/* --- the rectangle (\"block\") style of event --- */\n.fc-daygrid-block-event .fc-event-time {\n font-weight: bold;\n }\n.fc-daygrid-block-event .fc-event-time,\n .fc-daygrid-block-event .fc-event-title {\n padding: 1px;\n }\n/* --- the dot style of event --- */\n.fc-daygrid-dot-event {\n display: flex;\n align-items: center;\n padding: 2px 0\n\n}\n.fc-daygrid-dot-event .fc-event-title {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n overflow: hidden;\n font-weight: bold;\n }\n.fc-daygrid-dot-event:hover,\n .fc-daygrid-dot-event.fc-event-mirror {\n background: rgba(0, 0, 0, 0.1);\n }\n.fc-daygrid-dot-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n.fc-daygrid-event-dot { /* the actual dot */\n margin: 0 4px;\n box-sizing: content-box;\n width: 0;\n height: 0;\n border: 4px solid #3788d8;\n border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);\n border-radius: 4px;\n border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);\n}\n/* --- spacing between time and title --- */\n.fc-direction-ltr .fc-daygrid-event .fc-event-time {\n margin-right: 3px;\n }\n.fc-direction-rtl .fc-daygrid-event .fc-event-time {\n margin-left: 3px;\n }\n"; | ||
styleInject(css_248z); | ||
var main = common.createPlugin({ | ||
@@ -969,0 +933,0 @@ initialView: 'dayGridMonth', |
/*! | ||
FullCalendar v5.11.2 | ||
FullCalendar v6.0.0-beta.1 | ||
Docs & License: https://fullcalendar.io/ | ||
@@ -9,54 +9,2 @@ (c) 2022 Adam Shaw | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. | ||
Permission to use, copy, modify, and/or distribute this software for any | ||
purpose with or without fee is hereby granted. | ||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | ||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | ||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | ||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | ||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR | ||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = function(d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
function __extends(d, b) { | ||
if (typeof b !== "function" && b !== null) | ||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
var __assign = function() { | ||
__assign = Object.assign || function __assign(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
function __spreadArray(to, from, pack) { | ||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||
if (ar || !(i in from)) { | ||
if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||
ar[i] = from[i]; | ||
} | ||
} | ||
return to.concat(ar || from); | ||
} | ||
/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. | ||
@@ -66,13 +14,11 @@ ----------------------------------------------------------------------------------------------------------------------*/ | ||
// It is responsible for managing width/height. | ||
var TableView = /** @class */ (function (_super) { | ||
__extends(TableView, _super); | ||
function TableView() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.headerElRef = common.createRef(); | ||
return _this; | ||
class TableView extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.headerElRef = common.createRef(); | ||
} | ||
TableView.prototype.renderSimpleLayout = function (headerRowContent, bodyContent) { | ||
var _a = this, props = _a.props, context = _a.context; | ||
var sections = []; | ||
var stickyHeaderDates = common.getStickyHeaderDates(context.options); | ||
renderSimpleLayout(headerRowContent, bodyContent) { | ||
let { props, context } = this; | ||
let sections = []; | ||
let stickyHeaderDates = common.getStickyHeaderDates(context.options); | ||
if (headerRowContent) { | ||
@@ -96,14 +42,14 @@ sections.push({ | ||
}); | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(common.SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); })); | ||
}; | ||
TableView.prototype.renderHScrollLayout = function (headerRowContent, bodyContent, colCnt, dayMinWidth) { | ||
var ScrollGrid = this.context.pluginHooks.scrollGridImpl; | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, (rootElRef, classNames) => (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(common.SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))))); | ||
} | ||
renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) { | ||
let ScrollGrid = this.context.pluginHooks.scrollGridImpl; | ||
if (!ScrollGrid) { | ||
throw new Error('No ScrollGrid implementation'); | ||
} | ||
var _a = this, props = _a.props, context = _a.context; | ||
var stickyHeaderDates = !props.forPrint && common.getStickyHeaderDates(context.options); | ||
var stickyFooterScrollbar = !props.forPrint && common.getStickyFooterScrollbar(context.options); | ||
var sections = []; | ||
let { props, context } = this; | ||
let stickyHeaderDates = !props.forPrint && common.getStickyHeaderDates(context.options); | ||
let stickyFooterScrollbar = !props.forPrint && common.getStickyFooterScrollbar(context.options); | ||
let sections = []; | ||
if (headerRowContent) { | ||
@@ -142,15 +88,13 @@ sections.push({ | ||
} | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); })); | ||
}; | ||
return TableView; | ||
}(common.DateComponent)); | ||
return (common.createElement(common.ViewRoot, { viewSpec: context.viewSpec }, (rootElRef, classNames) => (common.createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
common.createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))))); | ||
} | ||
} | ||
function splitSegsByRow(segs, rowCnt) { | ||
var byRow = []; | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
let byRow = []; | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = []; | ||
} | ||
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
var seg = segs_1[_i]; | ||
for (let seg of segs) { | ||
byRow[seg.row].push(seg); | ||
@@ -161,8 +105,7 @@ } | ||
function splitSegsByFirstCol(segs, colCnt) { | ||
var byCol = []; | ||
for (var i = 0; i < colCnt; i += 1) { | ||
let byCol = []; | ||
for (let i = 0; i < colCnt; i += 1) { | ||
byCol[i] = []; | ||
} | ||
for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { | ||
var seg = segs_2[_i]; | ||
for (let seg of segs) { | ||
byCol[seg.firstCol].push(seg); | ||
@@ -173,5 +116,5 @@ } | ||
function splitInteractionByRow(ui, rowCnt) { | ||
var byRow = []; | ||
let byRow = []; | ||
if (!ui) { | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = null; | ||
@@ -181,3 +124,3 @@ } | ||
else { | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = { | ||
@@ -189,4 +132,3 @@ affectedInstances: ui.affectedInstances, | ||
} | ||
for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) { | ||
var seg = _a[_i]; | ||
for (let seg of ui.segs) { | ||
byRow[seg.row].segs.push(seg); | ||
@@ -198,15 +140,10 @@ } | ||
var TableCellTop = /** @class */ (function (_super) { | ||
__extends(TableCellTop, _super); | ||
function TableCellTop() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableCellTop extends common.BaseComponent { | ||
render() { | ||
let { props } = this; | ||
let navLinkAttrs = common.buildNavLinkAttrs(this.context, props.date); | ||
return (common.createElement(common.DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, (innerElRef, innerContent) => ((innerContent || props.forceDayTop) && (common.createElement("div", { className: "fc-daygrid-day-top", ref: innerElRef }, | ||
common.createElement("a", Object.assign({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || common.createElement(common.Fragment, null, "\u00A0"))))))); | ||
} | ||
TableCellTop.prototype.render = function () { | ||
var props = this.props; | ||
var navLinkAttrs = common.buildNavLinkAttrs(this.context, props.date); | ||
return (common.createElement(common.DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent) { return ((innerContent || props.forceDayTop) && (common.createElement("div", { className: "fc-daygrid-day-top", ref: innerElRef }, | ||
common.createElement("a", __assign({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || common.createElement(common.Fragment, null, "\u00A0"))))); })); | ||
}; | ||
return TableCellTop; | ||
}(common.BaseComponent)); | ||
} | ||
function renderTopInner(props) { | ||
@@ -216,3 +153,3 @@ return props.dayNumberText; | ||
var DEFAULT_TABLE_EVENT_TIME_FORMAT = common.createFormatter({ | ||
const DEFAULT_TABLE_EVENT_TIME_FORMAT = common.createFormatter({ | ||
hour: 'numeric', | ||
@@ -224,3 +161,3 @@ minute: '2-digit', | ||
function hasListItemDisplay(seg) { | ||
var display = seg.eventRange.ui.display; | ||
let { display } = seg.eventRange.ui; | ||
return display === 'list-item' || (display === 'auto' && | ||
@@ -234,28 +171,18 @@ !seg.eventRange.def.allDay && | ||
var TableBlockEvent = /** @class */ (function (_super) { | ||
__extends(TableBlockEvent, _super); | ||
function TableBlockEvent() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableBlockEvent extends common.BaseComponent { | ||
render() { | ||
let { props } = this; | ||
return (common.createElement(common.StandardEvent, Object.assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); | ||
} | ||
TableBlockEvent.prototype.render = function () { | ||
var props = this.props; | ||
return (common.createElement(common.StandardEvent, __assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); | ||
}; | ||
return TableBlockEvent; | ||
}(common.BaseComponent)); | ||
} | ||
var TableListItemEvent = /** @class */ (function (_super) { | ||
__extends(TableListItemEvent, _super); | ||
function TableListItemEvent() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableListItemEvent extends common.BaseComponent { | ||
render() { | ||
let { props, context } = this; | ||
let timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; | ||
let timeText = common.buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); | ||
return (common.createElement(common.EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, (rootElRef, classNames, innerElRef, innerContent) => ( // we don't use styles! | ||
common.createElement("a", Object.assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, common.getSegAnchorAttrs(props.seg, context)), innerContent)))); | ||
} | ||
TableListItemEvent.prototype.render = function () { | ||
var _a = this, props = _a.props, context = _a.context; | ||
var timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; | ||
var timeText = common.buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); | ||
return (common.createElement(common.EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent) { return ( // we don't use styles! | ||
common.createElement("a", __assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, common.getSegAnchorAttrs(props.seg, context)), innerContent)); })); | ||
}; | ||
return TableListItemEvent; | ||
}(common.BaseComponent)); | ||
} | ||
function renderInnerContent(innerProps) { | ||
@@ -268,31 +195,27 @@ return (common.createElement(common.Fragment, null, | ||
var TableCellMoreLink = /** @class */ (function (_super) { | ||
__extends(TableCellMoreLink, _super); | ||
function TableCellMoreLink() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.compileSegs = common.memoize(compileSegs); | ||
return _this; | ||
class TableCellMoreLink extends common.BaseComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.compileSegs = common.memoize(compileSegs); | ||
} | ||
TableCellMoreLink.prototype.render = function () { | ||
var props = this.props; | ||
var _a = this.compileSegs(props.singlePlacements), allSegs = _a.allSegs, invisibleSegs = _a.invisibleSegs; | ||
return (common.createElement(common.MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: function () { | ||
var isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || | ||
render() { | ||
let { props } = this; | ||
let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements); | ||
return (common.createElement(common.MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => { | ||
let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || | ||
(props.eventResize ? props.eventResize.affectedInstances : null) || | ||
{}; | ||
return (common.createElement(common.Fragment, null, allSegs.map(function (seg) { | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
return (common.createElement(common.Fragment, null, allSegs.map((seg) => { | ||
let instanceId = seg.eventRange.instance.instanceId; | ||
return (common.createElement("div", { className: "fc-daygrid-event-harness", key: instanceId, style: { | ||
visibility: isForcedInvisible[instanceId] ? 'hidden' : '', | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))) : (common.createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))))); | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))) : (common.createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, common.getSegMeta(seg, props.todayRange)))))); | ||
}))); | ||
} }, function (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) { return (common.createElement("a", __assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, common.createAriaClickAttrs(handleClick)), innerContent)); })); | ||
}; | ||
return TableCellMoreLink; | ||
}(common.BaseComponent)); | ||
} }, (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (common.createElement("a", Object.assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, common.createAriaClickAttrs(handleClick)), innerContent)))); | ||
} | ||
} | ||
function compileSegs(singlePlacements) { | ||
var allSegs = []; | ||
var invisibleSegs = []; | ||
for (var _i = 0, singlePlacements_1 = singlePlacements; _i < singlePlacements_1.length; _i++) { | ||
var placement = singlePlacements_1[_i]; | ||
let allSegs = []; | ||
let invisibleSegs = []; | ||
for (let placement of singlePlacements) { | ||
allSegs.push(placement.seg); | ||
@@ -303,27 +226,25 @@ if (!placement.isVisible) { | ||
} | ||
return { allSegs: allSegs, invisibleSegs: invisibleSegs }; | ||
return { allSegs, invisibleSegs }; | ||
} | ||
var DEFAULT_WEEK_NUM_FORMAT = common.createFormatter({ week: 'narrow' }); | ||
var TableCell = /** @class */ (function (_super) { | ||
__extends(TableCell, _super); | ||
function TableCell() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.rootElRef = common.createRef(); | ||
_this.state = { | ||
const DEFAULT_WEEK_NUM_FORMAT = common.createFormatter({ week: 'narrow' }); | ||
class TableCell extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.rootElRef = common.createRef(); | ||
this.state = { | ||
dayNumberId: common.getUniqueDomId(), | ||
}; | ||
_this.handleRootEl = function (el) { | ||
common.setRef(_this.rootElRef, el); | ||
common.setRef(_this.props.elRef, el); | ||
this.handleRootEl = (el) => { | ||
common.setRef(this.rootElRef, el); | ||
common.setRef(this.props.elRef, el); | ||
}; | ||
return _this; | ||
} | ||
TableCell.prototype.render = function () { | ||
var _a = this, context = _a.context, props = _a.props, state = _a.state, rootElRef = _a.rootElRef; | ||
var date = props.date, dateProfile = props.dateProfile; | ||
var navLinkAttrs = common.buildNavLinkAttrs(context, date, 'week'); | ||
return (common.createElement(common.DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (dayElRef, dayClassNames, rootDataAttrs, isDisabled) { return (common.createElement("td", __assign({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), | ||
render() { | ||
let { context, props, state, rootElRef } = this; | ||
let { date, dateProfile } = props; | ||
let navLinkAttrs = common.buildNavLinkAttrs(context, date, 'week'); | ||
return (common.createElement(common.DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, (dayElRef, dayClassNames, rootDataAttrs, isDisabled) => (common.createElement("td", Object.assign({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), | ||
common.createElement("div", { className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", ref: props.innerElRef /* different from hook system! RENAME */ }, | ||
props.showWeekNumber && (common.createElement(common.WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (weekElRef, weekClassNames, innerElRef, innerContent) { return (common.createElement("a", __assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)); })), | ||
props.showWeekNumber && (common.createElement(common.WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, (weekElRef, weekClassNames, innerElRef, innerContent) => (common.createElement("a", Object.assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)))), | ||
!isDisabled && (common.createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, dayNumberId: state.dayNumberId, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })), | ||
@@ -334,10 +255,9 @@ common.createElement("div", { className: "fc-daygrid-day-events", ref: props.fgContentElRef }, | ||
common.createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))), | ||
common.createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))); })); | ||
}; | ||
return TableCell; | ||
}(common.DateComponent)); | ||
common.createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))))); | ||
} | ||
} | ||
function computeFgSegPlacement(segs, // assumed already sorted | ||
dayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) { | ||
var hierarchy = new DayGridSegHierarchy(); | ||
let hierarchy = new DayGridSegHierarchy(); | ||
hierarchy.allowReslicing = true; | ||
@@ -357,8 +277,8 @@ hierarchy.strictOrder = strictOrder; | ||
// create segInputs only for segs with known heights | ||
var segInputs = []; | ||
var unknownHeightSegs = []; | ||
for (var i = 0; i < segs.length; i += 1) { | ||
var seg = segs[i]; | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
var eventHeight = eventInstanceHeights[instanceId]; | ||
let segInputs = []; | ||
let unknownHeightSegs = []; | ||
for (let i = 0; i < segs.length; i += 1) { | ||
let seg = segs[i]; | ||
let { instanceId } = seg.eventRange.instance; | ||
let eventHeight = eventInstanceHeights[instanceId]; | ||
if (eventHeight != null) { | ||
@@ -378,12 +298,11 @@ segInputs.push({ | ||
} | ||
var hiddenEntries = hierarchy.addSegs(segInputs); | ||
var segRects = hierarchy.toRects(); | ||
var _a = placeRects(segRects, segs, cells), singleColPlacements = _a.singleColPlacements, multiColPlacements = _a.multiColPlacements, leftoverMargins = _a.leftoverMargins; | ||
var moreCnts = []; | ||
var moreMarginTops = []; | ||
let hiddenEntries = hierarchy.addSegs(segInputs); | ||
let segRects = hierarchy.toRects(); | ||
let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells); | ||
let moreCnts = []; | ||
let moreMarginTops = []; | ||
// add segs with unknown heights | ||
for (var _i = 0, unknownHeightSegs_1 = unknownHeightSegs; _i < unknownHeightSegs_1.length; _i++) { | ||
var seg = unknownHeightSegs_1[_i]; | ||
for (let seg of unknownHeightSegs) { | ||
multiColPlacements[seg.firstCol].push({ | ||
seg: seg, | ||
seg, | ||
isVisible: false, | ||
@@ -394,3 +313,3 @@ isAbsolute: true, | ||
}); | ||
for (var col = seg.firstCol; col <= seg.lastCol; col += 1) { | ||
for (let col = seg.firstCol; col <= seg.lastCol; col += 1) { | ||
singleColPlacements[col].push({ | ||
@@ -406,9 +325,8 @@ seg: resliceSeg(seg, col, col + 1, cells), | ||
// add the hidden entries | ||
for (var col = 0; col < cells.length; col += 1) { | ||
for (let col = 0; col < cells.length; col += 1) { | ||
moreCnts.push(0); | ||
} | ||
for (var _b = 0, hiddenEntries_1 = hiddenEntries; _b < hiddenEntries_1.length; _b++) { | ||
var hiddenEntry = hiddenEntries_1[_b]; | ||
var seg = segs[hiddenEntry.index]; | ||
var hiddenSpan = hiddenEntry.span; | ||
for (let hiddenEntry of hiddenEntries) { | ||
let seg = segs[hiddenEntry.index]; | ||
let hiddenSpan = hiddenEntry.span; | ||
multiColPlacements[hiddenSpan.start].push({ | ||
@@ -421,3 +339,3 @@ seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells), | ||
}); | ||
for (var col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { | ||
for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { | ||
moreCnts[col] += 1; | ||
@@ -434,22 +352,21 @@ singleColPlacements[col].push({ | ||
// deal with leftover margins | ||
for (var col = 0; col < cells.length; col += 1) { | ||
for (let col = 0; col < cells.length; col += 1) { | ||
moreMarginTops.push(leftoverMargins[col]); | ||
} | ||
return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, moreCnts: moreCnts, moreMarginTops: moreMarginTops }; | ||
return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops }; | ||
} | ||
// rects ordered by top coord, then left | ||
function placeRects(allRects, segs, cells) { | ||
var rectsByEachCol = groupRectsByEachCol(allRects, cells.length); | ||
var singleColPlacements = []; | ||
var multiColPlacements = []; | ||
var leftoverMargins = []; | ||
for (var col = 0; col < cells.length; col += 1) { | ||
var rects = rectsByEachCol[col]; | ||
let rectsByEachCol = groupRectsByEachCol(allRects, cells.length); | ||
let singleColPlacements = []; | ||
let multiColPlacements = []; | ||
let leftoverMargins = []; | ||
for (let col = 0; col < cells.length; col += 1) { | ||
let rects = rectsByEachCol[col]; | ||
// compute all static segs in singlePlacements | ||
var singlePlacements = []; | ||
var currentHeight = 0; | ||
var currentMarginTop = 0; | ||
for (var _i = 0, rects_1 = rects; _i < rects_1.length; _i++) { | ||
var rect = rects_1[_i]; | ||
var seg = segs[rect.index]; | ||
let singlePlacements = []; | ||
let currentHeight = 0; | ||
let currentMarginTop = 0; | ||
for (let rect of rects) { | ||
let seg = segs[rect.index]; | ||
singlePlacements.push({ | ||
@@ -465,10 +382,9 @@ seg: resliceSeg(seg, col, col + 1, cells), | ||
// compute mixed static/absolute segs in multiPlacements | ||
var multiPlacements = []; | ||
let multiPlacements = []; | ||
currentHeight = 0; | ||
currentMarginTop = 0; | ||
for (var _a = 0, rects_2 = rects; _a < rects_2.length; _a++) { | ||
var rect = rects_2[_a]; | ||
var seg = segs[rect.index]; | ||
var isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? | ||
var isFirstCol = rect.span.start === col; | ||
for (let rect of rects) { | ||
let seg = segs[rect.index]; | ||
let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? | ||
let isFirstCol = rect.span.start === col; | ||
currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg | ||
@@ -503,12 +419,11 @@ currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg | ||
} | ||
return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, leftoverMargins: leftoverMargins }; | ||
return { singleColPlacements, multiColPlacements, leftoverMargins }; | ||
} | ||
function groupRectsByEachCol(rects, colCnt) { | ||
var rectsByEachCol = []; | ||
for (var col = 0; col < colCnt; col += 1) { | ||
let rectsByEachCol = []; | ||
for (let col = 0; col < colCnt; col += 1) { | ||
rectsByEachCol.push([]); | ||
} | ||
for (var _i = 0, rects_3 = rects; _i < rects_3.length; _i++) { | ||
var rect = rects_3[_i]; | ||
for (var col = rect.span.start; col < rect.span.end; col += 1) { | ||
for (let rect of rects) { | ||
for (let col = rect.span.start; col < rect.span.end; col += 1) { | ||
rectsByEachCol[col].push(rect); | ||
@@ -523,11 +438,11 @@ } | ||
} | ||
var eventRange = seg.eventRange; | ||
var origRange = eventRange.range; | ||
var slicedRange = common.intersectRanges(origRange, { | ||
let eventRange = seg.eventRange; | ||
let origRange = eventRange.range; | ||
let slicedRange = common.intersectRanges(origRange, { | ||
start: cells[spanStart].date, | ||
end: common.addDays(cells[spanEnd - 1].date, 1), | ||
}); | ||
return __assign(__assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { | ||
return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { | ||
def: eventRange.def, | ||
ui: __assign(__assign({}, eventRange.ui), { durationEditable: false }), | ||
ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }), | ||
instance: eventRange.instance, | ||
@@ -537,33 +452,30 @@ range: slicedRange, | ||
} | ||
var DayGridSegHierarchy = /** @class */ (function (_super) { | ||
__extends(DayGridSegHierarchy, _super); | ||
function DayGridSegHierarchy() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
class DayGridSegHierarchy extends common.SegHierarchy { | ||
constructor() { | ||
super(...arguments); | ||
// config | ||
_this.hiddenConsumes = false; | ||
this.hiddenConsumes = false; | ||
// allows us to keep hidden entries in the hierarchy so they take up space | ||
_this.forceHidden = {}; | ||
return _this; | ||
this.forceHidden = {}; | ||
} | ||
DayGridSegHierarchy.prototype.addSegs = function (segInputs) { | ||
var _this = this; | ||
var hiddenSegs = _super.prototype.addSegs.call(this, segInputs); | ||
var entriesByLevel = this.entriesByLevel; | ||
var excludeHidden = function (entry) { return !_this.forceHidden[common.buildEntryKey(entry)]; }; | ||
addSegs(segInputs) { | ||
const hiddenSegs = super.addSegs(segInputs); | ||
const { entriesByLevel } = this; | ||
const excludeHidden = (entry) => !this.forceHidden[common.buildEntryKey(entry)]; | ||
// remove the forced-hidden segs | ||
for (var level = 0; level < entriesByLevel.length; level += 1) { | ||
for (let level = 0; level < entriesByLevel.length; level += 1) { | ||
entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden); | ||
} | ||
return hiddenSegs; | ||
}; | ||
DayGridSegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) { | ||
var _a = this, entriesByLevel = _a.entriesByLevel, forceHidden = _a.forceHidden; | ||
var touchingEntry = insertion.touchingEntry, touchingLevel = insertion.touchingLevel, touchingLateral = insertion.touchingLateral; | ||
} | ||
handleInvalidInsertion(insertion, entry, hiddenEntries) { | ||
const { entriesByLevel, forceHidden } = this; | ||
const { touchingEntry, touchingLevel, touchingLateral } = insertion; | ||
if (this.hiddenConsumes && touchingEntry) { | ||
var touchingEntryId = common.buildEntryKey(touchingEntry); | ||
const touchingEntryId = common.buildEntryKey(touchingEntry); | ||
// if not already hidden | ||
if (!forceHidden[touchingEntryId]) { | ||
if (this.allowReslicing) { | ||
var placeholderEntry = __assign(__assign({}, touchingEntry), { span: common.intersectSpans(touchingEntry.span, entry.span) }); | ||
var placeholderEntryId = common.buildEntryKey(placeholderEntry); | ||
const placeholderEntry = Object.assign(Object.assign({}, touchingEntry), { span: common.intersectSpans(touchingEntry.span, entry.span) }); | ||
const placeholderEntryId = common.buildEntryKey(placeholderEntry); | ||
forceHidden[placeholderEntryId] = true; | ||
@@ -579,17 +491,15 @@ entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder | ||
} | ||
return _super.prototype.handleInvalidInsertion.call(this, insertion, entry, hiddenEntries); | ||
}; | ||
return DayGridSegHierarchy; | ||
}(common.SegHierarchy)); | ||
return super.handleInvalidInsertion(insertion, entry, hiddenEntries); | ||
} | ||
} | ||
var TableRow = /** @class */ (function (_super) { | ||
__extends(TableRow, _super); | ||
function TableRow() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.cellElRefs = new common.RefMap(); // the <td> | ||
_this.frameElRefs = new common.RefMap(); // the fc-daygrid-day-frame | ||
_this.fgElRefs = new common.RefMap(); // the fc-daygrid-day-events | ||
_this.segHarnessRefs = new common.RefMap(); // indexed by "instanceId:firstCol" | ||
_this.rootElRef = common.createRef(); | ||
_this.state = { | ||
class TableRow extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.cellElRefs = new common.RefMap(); // the <td> | ||
this.frameElRefs = new common.RefMap(); // the fc-daygrid-day-frame | ||
this.fgElRefs = new common.RefMap(); // the fc-daygrid-day-events | ||
this.segHarnessRefs = new common.RefMap(); // indexed by "instanceId:firstCol" | ||
this.rootElRef = common.createRef(); | ||
this.state = { | ||
framePositions: null, | ||
@@ -599,15 +509,13 @@ maxContentHeight: null, | ||
}; | ||
return _this; | ||
} | ||
TableRow.prototype.render = function () { | ||
var _this = this; | ||
var _a = this, props = _a.props, state = _a.state, context = _a.context; | ||
var options = context.options; | ||
var colCnt = props.cells.length; | ||
var businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); | ||
var bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); | ||
var highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); | ||
var mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); | ||
var _b = computeFgSegPlacement(common.sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells), singleColPlacements = _b.singleColPlacements, multiColPlacements = _b.multiColPlacements, moreCnts = _b.moreCnts, moreMarginTops = _b.moreMarginTops; | ||
var isForcedInvisible = // TODO: messy way to compute this | ||
render() { | ||
let { props, state, context } = this; | ||
let { options } = context; | ||
let colCnt = props.cells.length; | ||
let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); | ||
let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); | ||
let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); | ||
let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); | ||
let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(common.sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells); | ||
let isForcedInvisible = // TODO: messy way to compute this | ||
(props.eventDrag && props.eventDrag.affectedInstances) || | ||
@@ -618,6 +526,6 @@ (props.eventResize && props.eventResize.affectedInstances) || | ||
props.renderIntro && props.renderIntro(), | ||
props.cells.map(function (cell, col) { | ||
var normalFgNodes = _this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); | ||
var mirrorFgNodes = _this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); | ||
return (common.createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys | ||
props.cells.map((cell, col) => { | ||
let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); | ||
let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); | ||
return (common.createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys | ||
common.createElement(common.Fragment, null, | ||
@@ -627,16 +535,16 @@ common.createElement(common.Fragment, null, normalFgNodes), | ||
common.createElement(common.Fragment, null, | ||
_this.renderFillSegs(highlightSegsByCol[col], 'highlight'), | ||
_this.renderFillSegs(businessHoursByCol[col], 'non-business'), | ||
_this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); | ||
this.renderFillSegs(highlightSegsByCol[col], 'highlight'), | ||
this.renderFillSegs(businessHoursByCol[col], 'non-business'), | ||
this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); | ||
}))); | ||
}; | ||
TableRow.prototype.componentDidMount = function () { | ||
} | ||
componentDidMount() { | ||
this.updateSizing(true); | ||
}; | ||
TableRow.prototype.componentDidUpdate = function (prevProps, prevState) { | ||
var currentProps = this.props; | ||
} | ||
componentDidUpdate(prevProps, prevState) { | ||
let currentProps = this.props; | ||
this.updateSizing(!common.isPropsEqual(prevProps, currentProps)); | ||
}; | ||
TableRow.prototype.getHighlightSegs = function () { | ||
var props = this.props; | ||
} | ||
getHighlightSegs() { | ||
let { props } = this; | ||
if (props.eventDrag && props.eventDrag.segs.length) { // messy check | ||
@@ -649,5 +557,5 @@ return props.eventDrag.segs; | ||
return props.dateSelectionSegs; | ||
}; | ||
TableRow.prototype.getMirrorSegs = function () { | ||
var props = this.props; | ||
} | ||
getMirrorSegs() { | ||
let { props } = this; | ||
if (props.eventResize && props.eventResize.segs.length) { // messy check | ||
@@ -657,20 +565,19 @@ return props.eventResize.segs; | ||
return []; | ||
}; | ||
TableRow.prototype.renderFgSegs = function (col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { | ||
var context = this.context; | ||
var eventSelection = this.props.eventSelection; | ||
var framePositions = this.state.framePositions; | ||
var defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 | ||
var isMirror = isDragging || isResizing || isDateSelecting; | ||
var nodes = []; | ||
} | ||
renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { | ||
let { context } = this; | ||
let { eventSelection } = this.props; | ||
let { framePositions } = this.state; | ||
let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 | ||
let isMirror = isDragging || isResizing || isDateSelecting; | ||
let nodes = []; | ||
if (framePositions) { | ||
for (var _i = 0, segPlacements_1 = segPlacements; _i < segPlacements_1.length; _i++) { | ||
var placement = segPlacements_1[_i]; | ||
var seg = placement.seg; | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
var key = instanceId + ':' + col; | ||
var isVisible = placement.isVisible && !isForcedInvisible[instanceId]; | ||
var isAbsolute = placement.isAbsolute; | ||
var left = ''; | ||
var right = ''; | ||
for (let placement of segPlacements) { | ||
let { seg } = placement; | ||
let { instanceId } = seg.eventRange.instance; | ||
let key = instanceId + ':' + col; | ||
let isVisible = placement.isVisible && !isForcedInvisible[instanceId]; | ||
let isAbsolute = placement.isAbsolute; | ||
let left = ''; | ||
let right = ''; | ||
if (isAbsolute) { | ||
@@ -694,18 +601,17 @@ if (context.isRtl) { | ||
top: isAbsolute ? placement.absoluteTop : '', | ||
left: left, | ||
right: right, | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, __assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))) : (common.createElement(TableBlockEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))))); | ||
left, | ||
right, | ||
} }, hasListItemDisplay(seg) ? (common.createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))) : (common.createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, common.getSegMeta(seg, todayRange)))))); | ||
} | ||
} | ||
return nodes; | ||
}; | ||
TableRow.prototype.renderFillSegs = function (segs, fillType) { | ||
var isRtl = this.context.isRtl; | ||
var todayRange = this.props.todayRange; | ||
var framePositions = this.state.framePositions; | ||
var nodes = []; | ||
} | ||
renderFillSegs(segs, fillType) { | ||
let { isRtl } = this.context; | ||
let { todayRange } = this.props; | ||
let { framePositions } = this.state; | ||
let nodes = []; | ||
if (framePositions) { | ||
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
var seg = segs_1[_i]; | ||
var leftRightCss = isRtl ? { | ||
for (let seg of segs) { | ||
let leftRightCss = isRtl ? { | ||
right: 0, | ||
@@ -718,10 +624,10 @@ left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol], | ||
nodes.push(common.createElement("div", { key: common.buildEventRangeKey(seg.eventRange), className: "fc-daygrid-bg-harness", style: leftRightCss }, fillType === 'bg-event' ? | ||
common.createElement(common.BgEvent, __assign({ seg: seg }, common.getSegMeta(seg, todayRange))) : | ||
common.createElement(common.BgEvent, Object.assign({ seg: seg }, common.getSegMeta(seg, todayRange))) : | ||
common.renderFill(fillType))); | ||
} | ||
} | ||
return common.createElement.apply(void 0, __spreadArray([common.Fragment, {}], nodes)); | ||
}; | ||
TableRow.prototype.updateSizing = function (isExternalSizingChange) { | ||
var _a = this, props = _a.props, frameElRefs = _a.frameElRefs; | ||
return common.createElement(common.Fragment, {}, ...nodes); | ||
} | ||
updateSizing(isExternalSizingChange) { | ||
let { props, frameElRefs } = this; | ||
if (!props.forPrint && | ||
@@ -731,5 +637,5 @@ props.clientWidth !== null // positioning ready? | ||
if (isExternalSizingChange) { | ||
var frameEls = props.cells.map(function (cell) { return frameElRefs.currentMap[cell.key]; }); | ||
let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]); | ||
if (frameEls.length) { | ||
var originEl = this.rootElRef.current; | ||
let originEl = this.rootElRef.current; | ||
this.setState({ | ||
@@ -741,5 +647,5 @@ framePositions: new common.PositionCache(originEl, frameEls, true, // isHorizontal | ||
} | ||
var oldInstanceHeights = this.state.eventInstanceHeights; | ||
var newInstanceHeights = this.queryEventInstanceHeights(); | ||
var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; | ||
const oldInstanceHeights = this.state.eventInstanceHeights; | ||
const newInstanceHeights = this.queryEventInstanceHeights(); | ||
const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; | ||
this.safeSetState({ | ||
@@ -749,30 +655,29 @@ // HACK to prevent oscillations of events being shown/hidden from max-event-rows | ||
// TODO: always display all events, as visibility:hidden? | ||
eventInstanceHeights: __assign(__assign({}, oldInstanceHeights), newInstanceHeights), | ||
eventInstanceHeights: Object.assign(Object.assign({}, oldInstanceHeights), newInstanceHeights), | ||
maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null, | ||
}); | ||
} | ||
}; | ||
TableRow.prototype.queryEventInstanceHeights = function () { | ||
var segElMap = this.segHarnessRefs.currentMap; | ||
var eventInstanceHeights = {}; | ||
} | ||
queryEventInstanceHeights() { | ||
let segElMap = this.segHarnessRefs.currentMap; | ||
let eventInstanceHeights = {}; | ||
// get the max height amongst instance segs | ||
for (var key in segElMap) { | ||
var height = Math.round(segElMap[key].getBoundingClientRect().height); | ||
var instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key | ||
for (let key in segElMap) { | ||
let height = Math.round(segElMap[key].getBoundingClientRect().height); | ||
let instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key | ||
eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height); | ||
} | ||
return eventInstanceHeights; | ||
}; | ||
TableRow.prototype.computeMaxContentHeight = function () { | ||
var firstKey = this.props.cells[0].key; | ||
var cellEl = this.cellElRefs.currentMap[firstKey]; | ||
var fcContainerEl = this.fgElRefs.currentMap[firstKey]; | ||
} | ||
computeMaxContentHeight() { | ||
let firstKey = this.props.cells[0].key; | ||
let cellEl = this.cellElRefs.currentMap[firstKey]; | ||
let fcContainerEl = this.fgElRefs.currentMap[firstKey]; | ||
return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top; | ||
}; | ||
TableRow.prototype.getCellEls = function () { | ||
var elMap = this.cellElRefs.currentMap; | ||
return this.props.cells.map(function (cell) { return elMap[cell.key]; }); | ||
}; | ||
return TableRow; | ||
}(common.DateComponent)); | ||
} | ||
getCellEls() { | ||
let elMap = this.cellElRefs.currentMap; | ||
return this.props.cells.map((cell) => elMap[cell.key]); | ||
} | ||
} | ||
TableRow.addStateEquality({ | ||
@@ -785,5 +690,5 @@ eventInstanceHeights: common.isPropsEqual, | ||
} | ||
var topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? | ||
return mirrorSegs.map(function (seg) { return ({ | ||
seg: seg, | ||
let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? | ||
return mirrorSegs.map((seg) => ({ | ||
seg, | ||
isVisible: true, | ||
@@ -793,10 +698,8 @@ isAbsolute: true, | ||
marginTop: 0, | ||
}); }); | ||
})); | ||
} | ||
function buildAbsoluteTopHash(colPlacements) { | ||
var topsByInstanceId = {}; | ||
for (var _i = 0, colPlacements_1 = colPlacements; _i < colPlacements_1.length; _i++) { | ||
var placements = colPlacements_1[_i]; | ||
for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) { | ||
var placement = placements_1[_a]; | ||
let topsByInstanceId = {}; | ||
for (let placements of colPlacements) { | ||
for (let placement of placements) { | ||
topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop; | ||
@@ -808,39 +711,36 @@ } | ||
var Table = /** @class */ (function (_super) { | ||
__extends(Table, _super); | ||
function Table() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.splitBusinessHourSegs = common.memoize(splitSegsByRow); | ||
_this.splitBgEventSegs = common.memoize(splitSegsByRow); | ||
_this.splitFgEventSegs = common.memoize(splitSegsByRow); | ||
_this.splitDateSelectionSegs = common.memoize(splitSegsByRow); | ||
_this.splitEventDrag = common.memoize(splitInteractionByRow); | ||
_this.splitEventResize = common.memoize(splitInteractionByRow); | ||
_this.rowRefs = new common.RefMap(); | ||
_this.handleRootEl = function (rootEl) { | ||
_this.rootEl = rootEl; | ||
class Table extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.splitBusinessHourSegs = common.memoize(splitSegsByRow); | ||
this.splitBgEventSegs = common.memoize(splitSegsByRow); | ||
this.splitFgEventSegs = common.memoize(splitSegsByRow); | ||
this.splitDateSelectionSegs = common.memoize(splitSegsByRow); | ||
this.splitEventDrag = common.memoize(splitInteractionByRow); | ||
this.splitEventResize = common.memoize(splitInteractionByRow); | ||
this.rowRefs = new common.RefMap(); | ||
this.handleRootEl = (rootEl) => { | ||
this.rootEl = rootEl; | ||
if (rootEl) { | ||
_this.context.registerInteractiveComponent(_this, { | ||
this.context.registerInteractiveComponent(this, { | ||
el: rootEl, | ||
isHitComboAllowed: _this.props.isHitComboAllowed, | ||
isHitComboAllowed: this.props.isHitComboAllowed, | ||
}); | ||
} | ||
else { | ||
_this.context.unregisterInteractiveComponent(_this); | ||
this.context.unregisterInteractiveComponent(this); | ||
} | ||
}; | ||
return _this; | ||
} | ||
Table.prototype.render = function () { | ||
var _this = this; | ||
var props = this.props; | ||
var dateProfile = props.dateProfile, dayMaxEventRows = props.dayMaxEventRows, dayMaxEvents = props.dayMaxEvents, expandRows = props.expandRows; | ||
var rowCnt = props.cells.length; | ||
var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); | ||
var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); | ||
var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); | ||
var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt); | ||
var eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt); | ||
var eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt); | ||
var limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true; | ||
render() { | ||
let { props } = this; | ||
let { dateProfile, dayMaxEventRows, dayMaxEvents, expandRows } = props; | ||
let rowCnt = props.cells.length; | ||
let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); | ||
let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); | ||
let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); | ||
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 | ||
@@ -853,3 +753,3 @@ // TODO: best place to normalize these options? | ||
} | ||
var classNames = [ | ||
let classNames = [ | ||
'fc-daygrid-body', | ||
@@ -865,3 +765,3 @@ limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', | ||
} }, | ||
common.createElement(common.NowTimer, { unit: "day" }, function (nowDate, todayRange) { return (common.createElement(common.Fragment, null, | ||
common.createElement(common.NowTimer, { unit: "day" }, (nowDate, todayRange) => (common.createElement(common.Fragment, null, | ||
common.createElement("table", { role: "presentation", className: "fc-scrollgrid-sync-table", style: { | ||
@@ -873,11 +773,11 @@ width: props.clientWidth, | ||
props.colGroupNode, | ||
common.createElement("tbody", { role: "presentation" }, props.cells.map(function (cells, row) { return (common.createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length | ||
common.createElement("tbody", { role: "presentation" }, props.cells.map((cells, row) => (common.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 })); }))))); }))); | ||
}; | ||
, 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 | ||
// ---------------------------------------------------------------------------------------------------- | ||
Table.prototype.prepareHits = function () { | ||
this.rowPositions = new common.PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj) { return rowObj.getCellEls()[0]; }), // first cell el in each row. TODO: not optimal | ||
prepareHits() { | ||
this.rowPositions = new common.PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal | ||
false, true); | ||
@@ -887,12 +787,12 @@ this.colPositions = new common.PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row | ||
false); | ||
}; | ||
Table.prototype.queryHit = function (positionLeft, positionTop) { | ||
var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; | ||
var col = colPositions.leftToIndex(positionLeft); | ||
var row = rowPositions.topToIndex(positionTop); | ||
} | ||
queryHit(positionLeft, positionTop) { | ||
let { colPositions, rowPositions } = this; | ||
let col = colPositions.leftToIndex(positionLeft); | ||
let row = rowPositions.topToIndex(positionTop); | ||
if (row != null && col != null) { | ||
var cell = this.props.cells[row][col]; | ||
let cell = this.props.cells[row][col]; | ||
return { | ||
dateProfile: this.props.dateProfile, | ||
dateSpan: __assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), | ||
dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), | ||
dayEl: this.getCellEl(row, col), | ||
@@ -909,13 +809,12 @@ rect: { | ||
return null; | ||
}; | ||
Table.prototype.getCellEl = function (row, col) { | ||
} | ||
getCellEl(row, col) { | ||
return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal | ||
}; | ||
Table.prototype.getCellRange = function (row, col) { | ||
var start = this.props.cells[row][col].date; | ||
var end = common.addDays(start, 1); | ||
return { start: start, end: end }; | ||
}; | ||
return Table; | ||
}(common.DateComponent)); | ||
} | ||
getCellRange(row, col) { | ||
let start = this.props.cells[row][col].date; | ||
let end = common.addDays(start, 1); | ||
return { start, end }; | ||
} | ||
} | ||
function isSegAllDay(seg) { | ||
@@ -925,69 +824,55 @@ return seg.eventRange.def.allDay; | ||
var DayTableSlicer = /** @class */ (function (_super) { | ||
__extends(DayTableSlicer, _super); | ||
function DayTableSlicer() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.forceDayIfListItem = true; | ||
return _this; | ||
class DayTableSlicer extends common.Slicer { | ||
constructor() { | ||
super(...arguments); | ||
this.forceDayIfListItem = true; | ||
} | ||
DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) { | ||
sliceRange(dateRange, dayTableModel) { | ||
return dayTableModel.sliceRange(dateRange); | ||
}; | ||
return DayTableSlicer; | ||
}(common.Slicer)); | ||
} | ||
} | ||
var DayTable = /** @class */ (function (_super) { | ||
__extends(DayTable, _super); | ||
function DayTable() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.slicer = new DayTableSlicer(); | ||
_this.tableRef = common.createRef(); | ||
return _this; | ||
class DayTable extends common.DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.slicer = new DayTableSlicer(); | ||
this.tableRef = common.createRef(); | ||
} | ||
DayTable.prototype.render = function () { | ||
var _a = this, props = _a.props, context = _a.context; | ||
return (common.createElement(Table, __assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); | ||
}; | ||
return DayTable; | ||
}(common.DateComponent)); | ||
render() { | ||
let { props, context } = this; | ||
return (common.createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); | ||
} | ||
} | ||
var DayTableView = /** @class */ (function (_super) { | ||
__extends(DayTableView, _super); | ||
function DayTableView() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.buildDayTableModel = common.memoize(buildDayTableModel); | ||
_this.headerRef = common.createRef(); | ||
_this.tableRef = common.createRef(); | ||
return _this; | ||
class DayTableView extends TableView { | ||
constructor() { | ||
super(...arguments); | ||
this.buildDayTableModel = common.memoize(buildDayTableModel); | ||
this.headerRef = common.createRef(); | ||
this.tableRef = common.createRef(); | ||
} | ||
DayTableView.prototype.render = function () { | ||
var _this = this; | ||
var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator; | ||
var props = this.props; | ||
var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); | ||
var headerContent = options.dayHeaders && (common.createElement(common.DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); | ||
var bodyContent = function (contentArg) { return (common.createElement(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); }; | ||
render() { | ||
let { options, dateProfileGenerator } = this.context; | ||
let { props } = this; | ||
let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); | ||
let headerContent = options.dayHeaders && (common.createElement(common.DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); | ||
let bodyContent = (contentArg) => (common.createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); | ||
return options.dayMinWidth | ||
? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth) | ||
: this.renderSimpleLayout(headerContent, bodyContent); | ||
}; | ||
return DayTableView; | ||
}(TableView)); | ||
} | ||
} | ||
function buildDayTableModel(dateProfile, dateProfileGenerator) { | ||
var daySeries = new common.DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); | ||
let daySeries = new common.DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); | ||
return new common.DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); | ||
} | ||
var TableDateProfileGenerator = /** @class */ (function (_super) { | ||
__extends(TableDateProfileGenerator, _super); | ||
function TableDateProfileGenerator() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
class TableDateProfileGenerator extends common.DateProfileGenerator { | ||
// Computes the date range that will be rendered. | ||
TableDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { | ||
var dateEnv = this.props.dateEnv; | ||
var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); | ||
var start = renderRange.start; | ||
var end = renderRange.end; | ||
var endOfWeek; | ||
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 | ||
@@ -1005,11 +890,40 @@ if (/^(year|month)$/.test(currentRangeUnit)) { | ||
this.props.fixedWeekCount) { | ||
var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
common.diffWeeks(start, end)); | ||
end = common.addWeeks(end, 6 - rowCnt); | ||
} | ||
return { start: start, end: end }; | ||
}; | ||
return TableDateProfileGenerator; | ||
}(common.DateProfileGenerator)); | ||
return { start, end }; | ||
} | ||
} | ||
function styleInject(css, ref) { | ||
if ( ref === void 0 ) ref = {}; | ||
var insertAt = ref.insertAt; | ||
if (!css || typeof document === 'undefined') { return; } | ||
var head = document.head || document.getElementsByTagName('head')[0]; | ||
var style = document.createElement('style'); | ||
style.type = 'text/css'; | ||
if (insertAt === 'top') { | ||
if (head.firstChild) { | ||
head.insertBefore(style, head.firstChild); | ||
} else { | ||
head.appendChild(style); | ||
} | ||
} else { | ||
head.appendChild(style); | ||
} | ||
if (style.styleSheet) { | ||
style.styleSheet.cssText = css; | ||
} else { | ||
style.appendChild(document.createTextNode(css)); | ||
} | ||
} | ||
var css_248z = "\n:root {\n --fc-daygrid-event-dot-width: 8px;\n}\n/* help things clear margins of inner content */\n.fc-daygrid-day-frame,\n.fc-daygrid-day-events,\n.fc-daygrid-event-harness { /* for event top/bottom margins */\n}\n.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-body { /* a <div> that wraps the table */\n position: relative;\n z-index: 1; /* container inner z-index's because <tr>s can't do it */\n }\n.fc .fc-daygrid-day.fc-day-today {\n background-color: rgba(255, 220, 40, 0.15);\n background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));\n }\n.fc .fc-daygrid-day-frame {\n position: relative;\n min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */\n }\n.fc {\n\n /* cell top */\n\n}\n.fc .fc-daygrid-day-top {\n display: flex;\n flex-direction: row-reverse;\n }\n.fc .fc-day-other .fc-daygrid-day-top {\n opacity: 0.3;\n }\n.fc {\n\n /* day number (within cell top) */\n\n}\n.fc .fc-daygrid-day-number {\n position: relative;\n z-index: 4;\n padding: 4px;\n }\n.fc {\n\n /* event container */\n\n}\n.fc .fc-daygrid-day-events {\n margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */\n }\n.fc {\n\n /* positioning for balanced vs natural */\n\n}\n.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {\n position: absolute;\n left: 0;\n right: 0;\n }\n.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {\n position: relative; /* for containing abs positioned event harnesses */\n min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */\n }\n.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */\n }\n.fc .fc-daygrid-body-natural .fc-daygrid-day-events {\n margin-bottom: 1em;\n }\n.fc {\n\n /* event harness */\n\n}\n.fc .fc-daygrid-event-harness {\n position: relative;\n }\n.fc .fc-daygrid-event-harness-abs {\n position: absolute;\n top: 0; /* fallback coords for when cannot yet be computed */\n left: 0; /* */\n right: 0; /* */\n }\n.fc .fc-daygrid-bg-harness {\n position: absolute;\n top: 0;\n bottom: 0;\n }\n.fc {\n\n /* bg content */\n\n}\n.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }\n.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }\n.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }\n.fc {\n\n /* events */\n\n}\n.fc .fc-daygrid-event {\n z-index: 6;\n margin-top: 1px;\n }\n.fc .fc-daygrid-event.fc-event-mirror {\n z-index: 7;\n }\n.fc {\n\n /* cell bottom (within day-events) */\n\n}\n.fc .fc-daygrid-day-bottom {\n font-size: .85em;\n padding: 2px 3px 0\n }\n.fc .fc-daygrid-day-bottom:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-more-link {\n position: relative;\n z-index: 4;\n cursor: pointer;\n }\n.fc {\n\n /* week number (within frame) */\n\n}\n.fc .fc-daygrid-week-number {\n position: absolute;\n z-index: 5;\n top: 0;\n padding: 2px;\n min-width: 1.5em;\n text-align: center;\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n color: #808080;\n color: var(--fc-neutral-text-color, #808080);\n }\n.fc {\n\n /* popover */\n\n}\n.fc .fc-more-popover .fc-popover-body {\n min-width: 220px;\n padding: 10px;\n }\n.fc-direction-ltr .fc-daygrid-event.fc-event-start,\n.fc-direction-rtl .fc-daygrid-event.fc-event-end {\n margin-left: 2px;\n}\n.fc-direction-ltr .fc-daygrid-event.fc-event-end,\n.fc-direction-rtl .fc-daygrid-event.fc-event-start {\n margin-right: 2px;\n}\n.fc-direction-ltr .fc-daygrid-week-number {\n left: 0;\n border-radius: 0 0 3px 0;\n }\n.fc-direction-rtl .fc-daygrid-week-number {\n right: 0;\n border-radius: 0 0 0 3px;\n }\n.fc-liquid-hack .fc-daygrid-day-frame {\n position: static; /* will cause inner absolute stuff to expand to <td> */\n }\n.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */\n position: relative; /* for z-indexes assigned later */\n white-space: nowrap;\n border-radius: 3px; /* dot event needs this to when selected */\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n}\n/* --- the rectangle (\"block\") style of event --- */\n.fc-daygrid-block-event .fc-event-time {\n font-weight: bold;\n }\n.fc-daygrid-block-event .fc-event-time,\n .fc-daygrid-block-event .fc-event-title {\n padding: 1px;\n }\n/* --- the dot style of event --- */\n.fc-daygrid-dot-event {\n display: flex;\n align-items: center;\n padding: 2px 0\n\n}\n.fc-daygrid-dot-event .fc-event-title {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n overflow: hidden;\n font-weight: bold;\n }\n.fc-daygrid-dot-event:hover,\n .fc-daygrid-dot-event.fc-event-mirror {\n background: rgba(0, 0, 0, 0.1);\n }\n.fc-daygrid-dot-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n.fc-daygrid-event-dot { /* the actual dot */\n margin: 0 4px;\n box-sizing: content-box;\n width: 0;\n height: 0;\n border: 4px solid #3788d8;\n border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);\n border-radius: 4px;\n border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);\n}\n/* --- spacing between time and title --- */\n.fc-direction-ltr .fc-daygrid-event .fc-event-time {\n margin-right: 3px;\n }\n.fc-direction-rtl .fc-daygrid-event .fc-event-time {\n margin-left: 3px;\n }\n"; | ||
styleInject(css_248z); | ||
var plugin = common.createPlugin({ | ||
@@ -1016,0 +930,0 @@ initialView: 'dayGridMonth', |
/*! | ||
FullCalendar v5.11.2 | ||
FullCalendar v6.0.0-beta.1 | ||
Docs & License: https://fullcalendar.io/ | ||
(c) 2022 Adam Shaw | ||
*/ | ||
var FullCalendarDayGrid=function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};var i=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.headerElRef=t.createRef(),n}return r(n,e),n.prototype.renderSimpleLayout=function(e,n){var r=this.props,a=this.context,i=[],s=t.getStickyHeaderDates(a.options);return e&&i.push({type:"header",key:"header",isSticky:s,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),i.push({type:"body",key:"body",liquid:!0,chunk:{content:n}}),t.createElement(t.ViewRoot,{viewSpec:a.viewSpec},(function(e,n){return t.createElement("div",{ref:e,className:["fc-daygrid"].concat(n).join(" ")},t.createElement(t.SimpleScrollGrid,{liquid:!r.isHeightAuto&&!r.forPrint,collapsibleWidth:r.forPrint,cols:[],sections:i}))}))},n.prototype.renderHScrollLayout=function(e,n,r,a){var i=this.context.pluginHooks.scrollGridImpl;if(!i)throw new Error("No ScrollGrid implementation");var s=this.props,o=this.context,l=!s.forPrint&&t.getStickyHeaderDates(o.options),c=!s.forPrint&&t.getStickyFooterScrollbar(o.options),d=[];return e&&d.push({type:"header",key:"header",isSticky:l,chunks:[{key:"main",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),d.push({type:"body",key:"body",liquid:!0,chunks:[{key:"main",content:n}]}),c&&d.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"main",content:t.renderScrollShim}]}),t.createElement(t.ViewRoot,{viewSpec:o.viewSpec},(function(e,n){return t.createElement("div",{ref:e,className:["fc-daygrid"].concat(n).join(" ")},t.createElement(i,{liquid:!s.isHeightAuto&&!s.forPrint,collapsibleWidth:s.forPrint,colGroups:[{cols:[{span:r,minWidth:a}]}],sections:d}))}))},n}(t.DateComponent);function s(e,t){for(var n=[],r=0;r<t;r+=1)n[r]=[];for(var a=0,i=e;a<i.length;a++){var s=i[a];n[s.row].push(s)}return n}function o(e,t){for(var n=[],r=0;r<t;r+=1)n[r]=[];for(var a=0,i=e;a<i.length;a++){var s=i[a];n[s.firstCol].push(s)}return n}function l(e,t){var n=[];if(e){for(s=0;s<t;s+=1)n[s]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,a=e.segs;r<a.length;r++){var i=a[r];n[i.row].segs.push(i)}}else for(var s=0;s<t;s+=1)n[s]=null;return n}var c=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return r(n,e),n.prototype.render=function(){var e=this.props,n=t.buildNavLinkAttrs(this.context,e.date);return t.createElement(t.DayCellContent,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraHookProps:e.extraHookProps,defaultContent:d},(function(r,i){return(i||e.forceDayTop)&&t.createElement("div",{className:"fc-daygrid-day-top",ref:r},t.createElement("a",a({id:e.dayNumberId,className:"fc-daygrid-day-number"},n),i||t.createElement(t.Fragment,null," ")))}))},n}(t.BaseComponent);function d(e){return e.dayNumberText}var u=t.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function f(e){var t=e.eventRange.ui.display;return"list-item"===t||"auto"===t&&!e.eventRange.def.allDay&&e.firstCol===e.lastCol&&e.isStart&&e.isEnd}var g=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return r(n,e),n.prototype.render=function(){var e=this.props;return t.createElement(t.StandardEvent,a({},e,{extraClassNames:["fc-daygrid-event","fc-daygrid-block-event","fc-h-event"],defaultTimeFormat:u,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))},n}(t.BaseComponent),p=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return r(n,e),n.prototype.render=function(){var e=this.props,n=this.context,r=n.options.eventTimeFormat||u,i=t.buildSegTimeText(e.seg,r,n,!0,e.defaultDisplayEventEnd);return t.createElement(t.EventRoot,{seg:e.seg,timeText:i,defaultContent:h,isDragging:e.isDragging,isResizing:!1,isDateSelecting:!1,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(r,i,s,o){return t.createElement("a",a({className:["fc-daygrid-event","fc-daygrid-dot-event"].concat(i).join(" "),ref:r},t.getSegAnchorAttrs(e.seg,n)),o)}))},n}(t.BaseComponent);function h(e){return t.createElement(t.Fragment,null,t.createElement("div",{className:"fc-daygrid-event-dot",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&t.createElement("div",{className:"fc-event-time"},e.timeText),t.createElement("div",{className:"fc-event-title"},e.event.title||t.createElement(t.Fragment,null," ")))}var v=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.compileSegs=t.memoize(y),n}return r(n,e),n.prototype.render=function(){var e=this.props,n=this.compileSegs(e.singlePlacements),r=n.allSegs,i=n.invisibleSegs;return t.createElement(t.MoreLinkRoot,{dateProfile:e.dateProfile,todayRange:e.todayRange,allDayDate:e.allDayDate,moreCnt:e.moreCnt,allSegs:r,hiddenSegs:i,alignmentElRef:e.alignmentElRef,alignGridTop:e.alignGridTop,extraDateSpan:e.extraDateSpan,popoverContent:function(){var n=(e.eventDrag?e.eventDrag.affectedInstances:null)||(e.eventResize?e.eventResize.affectedInstances:null)||{};return t.createElement(t.Fragment,null,r.map((function(r){var i=r.eventRange.instance.instanceId;return t.createElement("div",{className:"fc-daygrid-event-harness",key:i,style:{visibility:n[i]?"hidden":""}},f(r)?t.createElement(p,a({seg:r,isDragging:!1,isSelected:i===e.eventSelection,defaultDisplayEventEnd:!1},t.getSegMeta(r,e.todayRange))):t.createElement(g,a({seg:r,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:i===e.eventSelection,defaultDisplayEventEnd:!1},t.getSegMeta(r,e.todayRange))))})))}},(function(e,n,r,i,s,o,l,c){return t.createElement("a",a({ref:e,className:["fc-daygrid-more-link"].concat(n).join(" "),title:o,"aria-expanded":l,"aria-controls":c},t.createAriaClickAttrs(s)),i)}))},n}(t.BaseComponent);function y(e){for(var t=[],n=[],r=0,a=e;r<a.length;r++){var i=a[r];t.push(i.seg),i.isVisible||n.push(i.seg)}return{allSegs:t,invisibleSegs:n}}var m=t.createFormatter({week:"narrow"}),R=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.rootElRef=t.createRef(),n.state={dayNumberId:t.getUniqueDomId()},n.handleRootEl=function(e){t.setRef(n.rootElRef,e),t.setRef(n.props.elRef,e)},n}return r(n,e),n.prototype.render=function(){var e=this,n=e.context,r=e.props,i=e.state,s=e.rootElRef,o=r.date,l=r.dateProfile,d=t.buildNavLinkAttrs(n,o,"week");return t.createElement(t.DayCellRoot,{date:o,dateProfile:l,todayRange:r.todayRange,showDayNumber:r.showDayNumber,extraHookProps:r.extraHookProps,elRef:this.handleRootEl},(function(e,n,u,f){return t.createElement("td",a({ref:e,role:"gridcell",className:["fc-daygrid-day"].concat(n,r.extraClassNames||[]).join(" ")},u,r.extraDataAttrs,r.showDayNumber?{"aria-labelledby":i.dayNumberId}:{}),t.createElement("div",{className:"fc-daygrid-day-frame fc-scrollgrid-sync-inner",ref:r.innerElRef},r.showWeekNumber&&t.createElement(t.WeekNumberRoot,{date:o,defaultFormat:m},(function(e,n,r,i){return t.createElement("a",a({ref:e,className:["fc-daygrid-week-number"].concat(n).join(" ")},d),i)})),!f&&t.createElement(c,{date:o,dateProfile:l,showDayNumber:r.showDayNumber,dayNumberId:i.dayNumberId,forceDayTop:r.forceDayTop,todayRange:r.todayRange,extraHookProps:r.extraHookProps}),t.createElement("div",{className:"fc-daygrid-day-events",ref:r.fgContentElRef},r.fgContent,t.createElement("div",{className:"fc-daygrid-day-bottom",style:{marginTop:r.moreMarginTop}},t.createElement(v,{allDayDate:o,singlePlacements:r.singlePlacements,moreCnt:r.moreCnt,alignmentElRef:s,alignGridTop:!r.showDayNumber,extraDateSpan:r.extraDateSpan,dateProfile:r.dateProfile,eventSelection:r.eventSelection,eventDrag:r.eventDrag,eventResize:r.eventResize,todayRange:r.todayRange}))),t.createElement("div",{className:"fc-daygrid-day-bg"},r.bgContent)))}))},n}(t.DateComponent);function E(e,t,n,r,a,i,s){var o=new S;o.allowReslicing=!0,o.strictOrder=r,!0===t||!0===n?(o.maxCoord=i,o.hiddenConsumes=!0):"number"==typeof t?o.maxStackCnt=t:"number"==typeof n&&(o.maxStackCnt=n,o.hiddenConsumes=!0);for(var l=[],c=[],d=0;d<e.length;d+=1){var u=a[(P=e[d]).eventRange.instance.instanceId];null!=u?l.push({index:d,thickness:u,span:{start:P.firstCol,end:P.lastCol+1}}):c.push(P)}for(var f=o.addSegs(l),g=function(e,t,n){for(var r=function(e,t){for(var n=[],r=0;r<t;r+=1)n.push([]);for(var a=0,i=e;a<i.length;a++){var s=i[a];for(r=s.span.start;r<s.span.end;r+=1)n[r].push(s)}return n}(e,n.length),a=[],i=[],s=[],o=0;o<n.length;o+=1){for(var l=r[o],c=[],d=0,u=0,f=0,g=l;f<g.length;f++){var p=t[(m=g[f]).index];c.push({seg:b(p,o,o+1,n),isVisible:!0,isAbsolute:!1,absoluteTop:m.levelCoord,marginTop:m.levelCoord-d}),d=m.levelCoord+m.thickness}var h=[];d=0,u=0;for(var v=0,y=l;v<y.length;v++){p=t[(m=y[v]).index];var m,R=m.span.end-m.span.start>1,E=m.span.start===o;u+=m.levelCoord-d,d=m.levelCoord+m.thickness,R?(u+=m.thickness,E&&h.push({seg:b(p,m.span.start,m.span.end,n),isVisible:!0,isAbsolute:!0,absoluteTop:m.levelCoord,marginTop:0})):E&&(h.push({seg:b(p,m.span.start,m.span.end,n),isVisible:!0,isAbsolute:!1,absoluteTop:m.levelCoord,marginTop:u}),u=0)}a.push(c),i.push(h),s.push(u)}return{singleColPlacements:a,multiColPlacements:i,leftoverMargins:s}}(o.toRects(),e,s),p=g.singleColPlacements,h=g.multiColPlacements,v=g.leftoverMargins,y=[],m=[],R=0,E=c;R<E.length;R++){h[(P=E[R]).firstCol].push({seg:P,isVisible:!1,isAbsolute:!0,absoluteTop:0,marginTop:0});for(var C=P.firstCol;C<=P.lastCol;C+=1)p[C].push({seg:b(P,C,C+1,s),isVisible:!1,isAbsolute:!1,absoluteTop:0,marginTop:0})}for(C=0;C<s.length;C+=1)y.push(0);for(var D=0,w=f;D<w.length;D++){var x=w[D],P=e[x.index],k=x.span;h[k.start].push({seg:b(P,k.start,k.end,s),isVisible:!1,isAbsolute:!0,absoluteTop:0,marginTop:0});for(C=k.start;C<k.end;C+=1)y[C]+=1,p[C].push({seg:b(P,C,C+1,s),isVisible:!1,isAbsolute:!1,absoluteTop:0,marginTop:0})}for(C=0;C<s.length;C+=1)m.push(v[C]);return{singleColPlacements:p,multiColPlacements:h,moreCnts:y,moreMarginTops:m}}function b(e,n,r,i){if(e.firstCol===n&&e.lastCol===r-1)return e;var s=e.eventRange,o=s.range,l=t.intersectRanges(o,{start:i[n].date,end:t.addDays(i[r-1].date,1)});return a(a({},e),{firstCol:n,lastCol:r-1,eventRange:{def:s.def,ui:a(a({},s.ui),{durationEditable:!1}),instance:s.instance,range:l},isStart:e.isStart&&l.start.valueOf()===o.start.valueOf(),isEnd:e.isEnd&&l.end.valueOf()===o.end.valueOf()})}var S=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.hiddenConsumes=!1,t.forceHidden={},t}return r(n,e),n.prototype.addSegs=function(n){for(var r=this,a=e.prototype.addSegs.call(this,n),i=this.entriesByLevel,s=function(e){return!r.forceHidden[t.buildEntryKey(e)]},o=0;o<i.length;o+=1)i[o]=i[o].filter(s);return a},n.prototype.handleInvalidInsertion=function(n,r,i){var s=this.entriesByLevel,o=this.forceHidden,l=n.touchingEntry,c=n.touchingLevel,d=n.touchingLateral;if(this.hiddenConsumes&&l){var u=t.buildEntryKey(l);if(!o[u])if(this.allowReslicing){var f=a(a({},l),{span:t.intersectSpans(l.span,r.span)});o[t.buildEntryKey(f)]=!0,s[c][d]=f,this.splitEntry(l,r,i)}else o[u]=!0,i.push(l)}return e.prototype.handleInvalidInsertion.call(this,n,r,i)},n}(t.SegHierarchy),C=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.cellElRefs=new t.RefMap,n.frameElRefs=new t.RefMap,n.fgElRefs=new t.RefMap,n.segHarnessRefs=new t.RefMap,n.rootElRef=t.createRef(),n.state={framePositions:null,maxContentHeight:null,eventInstanceHeights:{}},n}return r(n,e),n.prototype.render=function(){var e=this,n=this,r=n.props,a=n.state,i=n.context.options,s=r.cells.length,l=o(r.businessHourSegs,s),c=o(r.bgEventSegs,s),d=o(this.getHighlightSegs(),s),u=o(this.getMirrorSegs(),s),f=E(t.sortEventSegs(r.fgEventSegs,i.eventOrder),r.dayMaxEvents,r.dayMaxEventRows,i.eventOrderStrict,a.eventInstanceHeights,a.maxContentHeight,r.cells),g=f.singleColPlacements,p=f.multiColPlacements,h=f.moreCnts,v=f.moreMarginTops,y=r.eventDrag&&r.eventDrag.affectedInstances||r.eventResize&&r.eventResize.affectedInstances||{};return t.createElement("tr",{ref:this.rootElRef,role:"row"},r.renderIntro&&r.renderIntro(),r.cells.map((function(n,a){var i=e.renderFgSegs(a,r.forPrint?g[a]:p[a],r.todayRange,y),s=e.renderFgSegs(a,function(e,t){if(!e.length)return[];var n=function(e){for(var t={},n=0,r=e;n<r.length;n++)for(var a=0,i=r[n];a<i.length;a++){var s=i[a];t[s.seg.eventRange.instance.instanceId]=s.absoluteTop}return t}(t);return e.map((function(e){return{seg:e,isVisible:!0,isAbsolute:!0,absoluteTop:n[e.eventRange.instance.instanceId],marginTop:0}}))}(u[a],p),r.todayRange,{},Boolean(r.eventDrag),Boolean(r.eventResize),!1);return t.createElement(R,{key:n.key,elRef:e.cellElRefs.createRef(n.key),innerElRef:e.frameElRefs.createRef(n.key),dateProfile:r.dateProfile,date:n.date,showDayNumber:r.showDayNumbers,showWeekNumber:r.showWeekNumbers&&0===a,forceDayTop:r.showWeekNumbers,todayRange:r.todayRange,eventSelection:r.eventSelection,eventDrag:r.eventDrag,eventResize:r.eventResize,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,extraDateSpan:n.extraDateSpan,moreCnt:h[a],moreMarginTop:v[a],singlePlacements:g[a],fgContentElRef:e.fgElRefs.createRef(n.key),fgContent:t.createElement(t.Fragment,null,t.createElement(t.Fragment,null,i),t.createElement(t.Fragment,null,s)),bgContent:t.createElement(t.Fragment,null,e.renderFillSegs(d[a],"highlight"),e.renderFillSegs(l[a],"non-business"),e.renderFillSegs(c[a],"bg-event"))})})))},n.prototype.componentDidMount=function(){this.updateSizing(!0)},n.prototype.componentDidUpdate=function(e,n){var r=this.props;this.updateSizing(!t.isPropsEqual(e,r))},n.prototype.getHighlightSegs=function(){var e=this.props;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs},n.prototype.getMirrorSegs=function(){var e=this.props;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]},n.prototype.renderFgSegs=function(e,n,r,i,s,o,l){var c=this.context,d=this.props.eventSelection,u=this.state.framePositions,h=1===this.props.cells.length,v=s||o||l,y=[];if(u)for(var m=0,R=n;m<R.length;m++){var E=R[m],b=E.seg,S=b.eventRange.instance.instanceId,C=S+":"+e,D=E.isVisible&&!i[S],w=E.isAbsolute,x="",P="";w&&(c.isRtl?(P=0,x=u.lefts[b.lastCol]-u.lefts[b.firstCol]):(x=0,P=u.rights[b.firstCol]-u.rights[b.lastCol])),y.push(t.createElement("div",{className:"fc-daygrid-event-harness"+(w?" fc-daygrid-event-harness-abs":""),key:C,ref:v?null:this.segHarnessRefs.createRef(C),style:{visibility:D?"":"hidden",marginTop:w?"":E.marginTop,top:w?E.absoluteTop:"",left:x,right:P}},f(b)?t.createElement(p,a({seg:b,isDragging:s,isSelected:S===d,defaultDisplayEventEnd:h},t.getSegMeta(b,r))):t.createElement(g,a({seg:b,isDragging:s,isResizing:o,isDateSelecting:l,isSelected:S===d,defaultDisplayEventEnd:h},t.getSegMeta(b,r)))))}return y},n.prototype.renderFillSegs=function(e,n){var r=this.context.isRtl,i=this.props.todayRange,s=this.state.framePositions,o=[];if(s)for(var l=0,c=e;l<c.length;l++){var d=c[l],u=r?{right:0,left:s.lefts[d.lastCol]-s.lefts[d.firstCol]}:{left:0,right:s.rights[d.firstCol]-s.rights[d.lastCol]};o.push(t.createElement("div",{key:t.buildEventRangeKey(d.eventRange),className:"fc-daygrid-bg-harness",style:u},"bg-event"===n?t.createElement(t.BgEvent,a({seg:d},t.getSegMeta(d,i))):t.renderFill(n)))}return t.createElement.apply(void 0,function(e,t,n){if(n||2===arguments.length)for(var r,a=0,i=t.length;a<i;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||t)}([t.Fragment,{}],o))},n.prototype.updateSizing=function(e){var n=this.props,r=this.frameElRefs;if(!n.forPrint&&null!==n.clientWidth){if(e){var i=n.cells.map((function(e){return r.currentMap[e.key]}));if(i.length){var s=this.rootElRef.current;this.setState({framePositions:new t.PositionCache(s,i,!0,!1)})}}var o=this.state.eventInstanceHeights,l=this.queryEventInstanceHeights(),c=!0===n.dayMaxEvents||!0===n.dayMaxEventRows;this.safeSetState({eventInstanceHeights:a(a({},o),l),maxContentHeight:c?this.computeMaxContentHeight():null})}},n.prototype.queryEventInstanceHeights=function(){var e=this.segHarnessRefs.currentMap,t={};for(var n in e){var r=Math.round(e[n].getBoundingClientRect().height),a=n.split(":")[0];t[a]=Math.max(t[a]||0,r)}return t},n.prototype.computeMaxContentHeight=function(){var e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top},n.prototype.getCellEls=function(){var e=this.cellElRefs.currentMap;return this.props.cells.map((function(t){return e[t.key]}))},n}(t.DateComponent);C.addStateEquality({eventInstanceHeights:t.isPropsEqual});var D=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.splitBusinessHourSegs=t.memoize(s),n.splitBgEventSegs=t.memoize(s),n.splitFgEventSegs=t.memoize(s),n.splitDateSelectionSegs=t.memoize(s),n.splitEventDrag=t.memoize(l),n.splitEventResize=t.memoize(l),n.rowRefs=new t.RefMap,n.handleRootEl=function(e){n.rootEl=e,e?n.context.registerInteractiveComponent(n,{el:e,isHitComboAllowed:n.props.isHitComboAllowed}):n.context.unregisterInteractiveComponent(n)},n}return r(n,e),n.prototype.render=function(){var e=this,n=this.props,r=n.dateProfile,a=n.dayMaxEventRows,i=n.dayMaxEvents,s=n.expandRows,o=n.cells.length,l=this.splitBusinessHourSegs(n.businessHourSegs,o),c=this.splitBgEventSegs(n.bgEventSegs,o),d=this.splitFgEventSegs(n.fgEventSegs,o),u=this.splitDateSelectionSegs(n.dateSelectionSegs,o),f=this.splitEventDrag(n.eventDrag,o),g=this.splitEventResize(n.eventResize,o),p=!0===i||!0===a;p&&!s&&(p=!1,a=null,i=null);var h=["fc-daygrid-body",p?"fc-daygrid-body-balanced":"fc-daygrid-body-unbalanced",s?"":"fc-daygrid-body-natural"];return t.createElement("div",{className:h.join(" "),ref:this.handleRootEl,style:{width:n.clientWidth,minWidth:n.tableMinWidth}},t.createElement(t.NowTimer,{unit:"day"},(function(p,h){return t.createElement(t.Fragment,null,t.createElement("table",{role:"presentation",className:"fc-scrollgrid-sync-table",style:{width:n.clientWidth,minWidth:n.tableMinWidth,height:s?n.clientHeight:""}},n.colGroupNode,t.createElement("tbody",{role:"presentation"},n.cells.map((function(s,p){return t.createElement(C,{ref:e.rowRefs.createRef(p),key:s.length?s[0].date.toISOString():p,showDayNumbers:o>1,showWeekNumbers:n.showWeekNumbers,todayRange:h,dateProfile:r,cells:s,renderIntro:n.renderRowIntro,businessHourSegs:l[p],eventSelection:n.eventSelection,bgEventSegs:c[p].filter(w),fgEventSegs:d[p],dateSelectionSegs:u[p],eventDrag:f[p],eventResize:g[p],dayMaxEvents:i,dayMaxEventRows:a,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:n.forPrint})})))))})))},n.prototype.prepareHits=function(){this.rowPositions=new t.PositionCache(this.rootEl,this.rowRefs.collect().map((function(e){return e.getCellEls()[0]})),!1,!0),this.colPositions=new t.PositionCache(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)},n.prototype.queryHit=function(e,t){var n=this.colPositions,r=this.rowPositions,i=n.leftToIndex(e),s=r.topToIndex(t);if(null!=s&&null!=i){var o=this.props.cells[s][i];return{dateProfile:this.props.dateProfile,dateSpan:a({range:this.getCellRange(s,i),allDay:!0},o.extraDateSpan),dayEl:this.getCellEl(s,i),rect:{left:n.lefts[i],right:n.rights[i],top:r.tops[s],bottom:r.bottoms[s]},layer:0}}return null},n.prototype.getCellEl=function(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]},n.prototype.getCellRange=function(e,n){var r=this.props.cells[e][n].date;return{start:r,end:t.addDays(r,1)}},n}(t.DateComponent);function w(e){return e.eventRange.def.allDay}var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.forceDayIfListItem=!0,t}return r(t,e),t.prototype.sliceRange=function(e,t){return t.sliceRange(e)},t}(t.Slicer),P=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.slicer=new x,n.tableRef=t.createRef(),n}return r(n,e),n.prototype.render=function(){var e=this.props,n=this.context;return t.createElement(D,a({ref:this.tableRef},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,n,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))},n}(t.DateComponent),k=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.buildDayTableModel=t.memoize(M),n.headerRef=t.createRef(),n.tableRef=t.createRef(),n}return r(n,e),n.prototype.render=function(){var e=this,n=this.context,r=n.options,a=n.dateProfileGenerator,i=this.props,s=this.buildDayTableModel(i.dateProfile,a),o=r.dayHeaders&&t.createElement(t.DayHeader,{ref:this.headerRef,dateProfile:i.dateProfile,dates:s.headerDates,datesRepDistinctDays:1===s.rowCnt}),l=function(n){return t.createElement(P,{ref:e.tableRef,dateProfile:i.dateProfile,dayTableModel:s,businessHours:i.businessHours,dateSelection:i.dateSelection,eventStore:i.eventStore,eventUiBases:i.eventUiBases,eventSelection:i.eventSelection,eventDrag:i.eventDrag,eventResize:i.eventResize,nextDayThreshold:r.nextDayThreshold,colGroupNode:n.tableColGroupNode,tableMinWidth:n.tableMinWidth,dayMaxEvents:r.dayMaxEvents,dayMaxEventRows:r.dayMaxEventRows,showWeekNumbers:r.weekNumbers,expandRows:!i.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:i.forPrint})};return r.dayMinWidth?this.renderHScrollLayout(o,l,s.colCnt,r.dayMinWidth):this.renderSimpleLayout(o,l)},n}(i);function M(e,n){var r=new t.DaySeriesModel(e.renderRange,n);return new t.DayTableModel(r,/year|month|week/.test(e.currentRangeUnit))}var N=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return r(n,e),n.prototype.buildRenderRange=function(n,r,a){var i,s=this.props.dateEnv,o=e.prototype.buildRenderRange.call(this,n,r,a),l=o.start,c=o.end;if(/^(year|month)$/.test(r)&&(l=s.startOfWeek(l),(i=s.startOfWeek(c)).valueOf()!==c.valueOf()&&(c=t.addWeeks(i,1))),this.props.monthMode&&this.props.fixedWeekCount){var d=Math.ceil(t.diffWeeks(l,c));c=t.addWeeks(c,6-d)}return{start:l,end:c}},n}(t.DateProfileGenerator),T=t.createPlugin({initialView:"dayGridMonth",views:{dayGrid:{component:k,dateProfileGeneratorClass:N},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}});return t.globalPlugins.push(T),e.DayGridView=k,e.DayTable=P,e.DayTableSlicer=x,e.Table=D,e.TableView=i,e.buildDayTableModel=M,e.default=T,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar); | ||
var FullCalendarDayGrid=function(e,t){"use strict";class n extends t.DateComponent{constructor(){super(...arguments),this.headerElRef=t.createRef()}renderSimpleLayout(e,n){let{props:a,context:s}=this,i=[],r=t.getStickyHeaderDates(s.options);return e&&i.push({type:"header",key:"header",isSticky:r,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),i.push({type:"body",key:"body",liquid:!0,chunk:{content:n}}),t.createElement(t.ViewRoot,{viewSpec:s.viewSpec},((e,n)=>t.createElement("div",{ref:e,className:["fc-daygrid"].concat(n).join(" ")},t.createElement(t.SimpleScrollGrid,{liquid:!a.isHeightAuto&&!a.forPrint,collapsibleWidth:a.forPrint,cols:[],sections:i}))))}renderHScrollLayout(e,n,a,s){let i=this.context.pluginHooks.scrollGridImpl;if(!i)throw new Error("No ScrollGrid implementation");let{props:r,context:o}=this,l=!r.forPrint&&t.getStickyHeaderDates(o.options),d=!r.forPrint&&t.getStickyFooterScrollbar(o.options),c=[];return e&&c.push({type:"header",key:"header",isSticky:l,chunks:[{key:"main",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),c.push({type:"body",key:"body",liquid:!0,chunks:[{key:"main",content:n}]}),d&&c.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"main",content:t.renderScrollShim}]}),t.createElement(t.ViewRoot,{viewSpec:o.viewSpec},((e,n)=>t.createElement("div",{ref:e,className:["fc-daygrid"].concat(n).join(" ")},t.createElement(i,{liquid:!r.isHeightAuto&&!r.forPrint,collapsibleWidth:r.forPrint,colGroups:[{cols:[{span:a,minWidth:s}]}],sections:c}))))}}function a(e,t){let n=[];for(let e=0;e<t;e+=1)n[e]=[];for(let t of e)n[t.row].push(t);return n}function s(e,t){let n=[];for(let e=0;e<t;e+=1)n[e]=[];for(let t of e)n[t.firstCol].push(t);return n}function i(e,t){let n=[];if(e){for(let a=0;a<t;a+=1)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(let t of e.segs)n[t.row].segs.push(t)}else for(let e=0;e<t;e+=1)n[e]=null;return n}class r extends t.BaseComponent{render(){let{props:e}=this,n=t.buildNavLinkAttrs(this.context,e.date);return t.createElement(t.DayCellContent,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraHookProps:e.extraHookProps,defaultContent:o},((a,s)=>(s||e.forceDayTop)&&t.createElement("div",{className:"fc-daygrid-day-top",ref:a},t.createElement("a",Object.assign({id:e.dayNumberId,className:"fc-daygrid-day-number"},n),s||t.createElement(t.Fragment,null," ")))))}}function o(e){return e.dayNumberText}const l=t.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function d(e){let{display:t}=e.eventRange.ui;return"list-item"===t||"auto"===t&&!e.eventRange.def.allDay&&e.firstCol===e.lastCol&&e.isStart&&e.isEnd}class c extends t.BaseComponent{render(){let{props:e}=this;return t.createElement(t.StandardEvent,Object.assign({},e,{extraClassNames:["fc-daygrid-event","fc-daygrid-block-event","fc-h-event"],defaultTimeFormat:l,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))}}class g extends t.BaseComponent{render(){let{props:e,context:n}=this,a=n.options.eventTimeFormat||l,s=t.buildSegTimeText(e.seg,a,n,!0,e.defaultDisplayEventEnd);return t.createElement(t.EventRoot,{seg:e.seg,timeText:s,defaultContent:f,isDragging:e.isDragging,isResizing:!1,isDateSelecting:!1,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},((a,s,i,r)=>t.createElement("a",Object.assign({className:["fc-daygrid-event","fc-daygrid-dot-event"].concat(s).join(" "),ref:a},t.getSegAnchorAttrs(e.seg,n)),r)))}}function f(e){return t.createElement(t.Fragment,null,t.createElement("div",{className:"fc-daygrid-event-dot",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&t.createElement("div",{className:"fc-event-time"},e.timeText),t.createElement("div",{className:"fc-event-title"},e.event.title||t.createElement(t.Fragment,null," ")))}class h extends t.BaseComponent{constructor(){super(...arguments),this.compileSegs=t.memoize(u)}render(){let{props:e}=this,{allSegs:n,invisibleSegs:a}=this.compileSegs(e.singlePlacements);return t.createElement(t.MoreLinkRoot,{dateProfile:e.dateProfile,todayRange:e.todayRange,allDayDate:e.allDayDate,moreCnt:e.moreCnt,allSegs:n,hiddenSegs:a,alignmentElRef:e.alignmentElRef,alignGridTop:e.alignGridTop,extraDateSpan:e.extraDateSpan,popoverContent:()=>{let a=(e.eventDrag?e.eventDrag.affectedInstances:null)||(e.eventResize?e.eventResize.affectedInstances:null)||{};return t.createElement(t.Fragment,null,n.map((n=>{let s=n.eventRange.instance.instanceId;return t.createElement("div",{className:"fc-daygrid-event-harness",key:s,style:{visibility:a[s]?"hidden":""}},d(n)?t.createElement(g,Object.assign({seg:n,isDragging:!1,isSelected:s===e.eventSelection,defaultDisplayEventEnd:!1},t.getSegMeta(n,e.todayRange))):t.createElement(c,Object.assign({seg:n,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:s===e.eventSelection,defaultDisplayEventEnd:!1},t.getSegMeta(n,e.todayRange))))})))}},((e,n,a,s,i,r,o,l)=>t.createElement("a",Object.assign({ref:e,className:["fc-daygrid-more-link"].concat(n).join(" "),title:r,"aria-expanded":o,"aria-controls":l},t.createAriaClickAttrs(i)),s)))}}function u(e){let t=[],n=[];for(let a of e)t.push(a.seg),a.isVisible||n.push(a.seg);return{allSegs:t,invisibleSegs:n}}const p=t.createFormatter({week:"narrow"});class m extends t.DateComponent{constructor(){super(...arguments),this.rootElRef=t.createRef(),this.state={dayNumberId:t.getUniqueDomId()},this.handleRootEl=e=>{t.setRef(this.rootElRef,e),t.setRef(this.props.elRef,e)}}render(){let{context:e,props:n,state:a,rootElRef:s}=this,{date:i,dateProfile:o}=n,l=t.buildNavLinkAttrs(e,i,"week");return t.createElement(t.DayCellRoot,{date:i,dateProfile:o,todayRange:n.todayRange,showDayNumber:n.showDayNumber,extraHookProps:n.extraHookProps,elRef:this.handleRootEl},((e,d,c,g)=>t.createElement("td",Object.assign({ref:e,role:"gridcell",className:["fc-daygrid-day"].concat(d,n.extraClassNames||[]).join(" ")},c,n.extraDataAttrs,n.showDayNumber?{"aria-labelledby":a.dayNumberId}:{}),t.createElement("div",{className:"fc-daygrid-day-frame fc-scrollgrid-sync-inner",ref:n.innerElRef},n.showWeekNumber&&t.createElement(t.WeekNumberRoot,{date:i,defaultFormat:p},((e,n,a,s)=>t.createElement("a",Object.assign({ref:e,className:["fc-daygrid-week-number"].concat(n).join(" ")},l),s))),!g&&t.createElement(r,{date:i,dateProfile:o,showDayNumber:n.showDayNumber,dayNumberId:a.dayNumberId,forceDayTop:n.forceDayTop,todayRange:n.todayRange,extraHookProps:n.extraHookProps}),t.createElement("div",{className:"fc-daygrid-day-events",ref:n.fgContentElRef},n.fgContent,t.createElement("div",{className:"fc-daygrid-day-bottom",style:{marginTop:n.moreMarginTop}},t.createElement(h,{allDayDate:i,singlePlacements:n.singlePlacements,moreCnt:n.moreCnt,alignmentElRef:s,alignGridTop:!n.showDayNumber,extraDateSpan:n.extraDateSpan,dateProfile:n.dateProfile,eventSelection:n.eventSelection,eventDrag:n.eventDrag,eventResize:n.eventResize,todayRange:n.todayRange}))),t.createElement("div",{className:"fc-daygrid-day-bg"},n.bgContent)))))}}function y(e,t,n,a,s,i,r){let o=new b;o.allowReslicing=!0,o.strictOrder=a,!0===t||!0===n?(o.maxCoord=i,o.hiddenConsumes=!0):"number"==typeof t?o.maxStackCnt=t:"number"==typeof n&&(o.maxStackCnt=n,o.hiddenConsumes=!0);let l=[],d=[];for(let t=0;t<e.length;t+=1){let n=e[t],{instanceId:a}=n.eventRange.instance,i=s[a];null!=i?l.push({index:t,thickness:i,span:{start:n.firstCol,end:n.lastCol+1}}):d.push(n)}let c=o.addSegs(l),g=o.toRects(),{singleColPlacements:f,multiColPlacements:h,leftoverMargins:u}=function(e,t,n){let a=function(e,t){let n=[];for(let e=0;e<t;e+=1)n.push([]);for(let t of e)for(let e=t.span.start;e<t.span.end;e+=1)n[e].push(t);return n}(e,n.length),s=[],i=[],r=[];for(let e=0;e<n.length;e+=1){let o=a[e],l=[],d=0,c=0;for(let a of o){let s=t[a.index];l.push({seg:v(s,e,e+1,n),isVisible:!0,isAbsolute:!1,absoluteTop:a.levelCoord,marginTop:a.levelCoord-d}),d=a.levelCoord+a.thickness}let g=[];d=0,c=0;for(let a of o){let s=t[a.index],i=a.span.end-a.span.start>1,r=a.span.start===e;c+=a.levelCoord-d,d=a.levelCoord+a.thickness,i?(c+=a.thickness,r&&g.push({seg:v(s,a.span.start,a.span.end,n),isVisible:!0,isAbsolute:!0,absoluteTop:a.levelCoord,marginTop:0})):r&&(g.push({seg:v(s,a.span.start,a.span.end,n),isVisible:!0,isAbsolute:!1,absoluteTop:a.levelCoord,marginTop:c}),c=0)}s.push(l),i.push(g),r.push(c)}return{singleColPlacements:s,multiColPlacements:i,leftoverMargins:r}}(g,e,r),p=[],m=[];for(let e of d){h[e.firstCol].push({seg:e,isVisible:!1,isAbsolute:!0,absoluteTop:0,marginTop:0});for(let t=e.firstCol;t<=e.lastCol;t+=1)f[t].push({seg:v(e,t,t+1,r),isVisible:!1,isAbsolute:!1,absoluteTop:0,marginTop:0})}for(let e=0;e<r.length;e+=1)p.push(0);for(let t of c){let n=e[t.index],a=t.span;h[a.start].push({seg:v(n,a.start,a.end,r),isVisible:!1,isAbsolute:!0,absoluteTop:0,marginTop:0});for(let e=a.start;e<a.end;e+=1)p[e]+=1,f[e].push({seg:v(n,e,e+1,r),isVisible:!1,isAbsolute:!1,absoluteTop:0,marginTop:0})}for(let e=0;e<r.length;e+=1)m.push(u[e]);return{singleColPlacements:f,multiColPlacements:h,moreCnts:p,moreMarginTops:m}}function v(e,n,a,s){if(e.firstCol===n&&e.lastCol===a-1)return e;let i=e.eventRange,r=i.range,o=t.intersectRanges(r,{start:s[n].date,end:t.addDays(s[a-1].date,1)});return Object.assign(Object.assign({},e),{firstCol:n,lastCol:a-1,eventRange:{def:i.def,ui:Object.assign(Object.assign({},i.ui),{durationEditable:!1}),instance:i.instance,range:o},isStart:e.isStart&&o.start.valueOf()===r.start.valueOf(),isEnd:e.isEnd&&o.end.valueOf()===r.end.valueOf()})}class b extends t.SegHierarchy{constructor(){super(...arguments),this.hiddenConsumes=!1,this.forceHidden={}}addSegs(e){const n=super.addSegs(e),{entriesByLevel:a}=this,s=e=>!this.forceHidden[t.buildEntryKey(e)];for(let e=0;e<a.length;e+=1)a[e]=a[e].filter(s);return n}handleInvalidInsertion(e,n,a){const{entriesByLevel:s,forceHidden:i}=this,{touchingEntry:r,touchingLevel:o,touchingLateral:l}=e;if(this.hiddenConsumes&&r){const e=t.buildEntryKey(r);if(!i[e])if(this.allowReslicing){const e=Object.assign(Object.assign({},r),{span:t.intersectSpans(r.span,n.span)});i[t.buildEntryKey(e)]=!0,s[o][l]=e,this.splitEntry(r,n,a)}else i[e]=!0,a.push(r)}return super.handleInvalidInsertion(e,n,a)}}class E extends t.DateComponent{constructor(){super(...arguments),this.cellElRefs=new t.RefMap,this.frameElRefs=new t.RefMap,this.fgElRefs=new t.RefMap,this.segHarnessRefs=new t.RefMap,this.rootElRef=t.createRef(),this.state={framePositions:null,maxContentHeight:null,eventInstanceHeights:{}}}render(){let{props:e,state:n,context:a}=this,{options:i}=a,r=e.cells.length,o=s(e.businessHourSegs,r),l=s(e.bgEventSegs,r),d=s(this.getHighlightSegs(),r),c=s(this.getMirrorSegs(),r),{singleColPlacements:g,multiColPlacements:f,moreCnts:h,moreMarginTops:u}=y(t.sortEventSegs(e.fgEventSegs,i.eventOrder),e.dayMaxEvents,e.dayMaxEventRows,i.eventOrderStrict,n.eventInstanceHeights,n.maxContentHeight,e.cells),p=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{};return t.createElement("tr",{ref:this.rootElRef,role:"row"},e.renderIntro&&e.renderIntro(),e.cells.map(((n,a)=>{let s=this.renderFgSegs(a,e.forPrint?g[a]:f[a],e.todayRange,p),i=this.renderFgSegs(a,function(e,t){if(!e.length)return[];let n=function(e){let t={};for(let n of e)for(let e of n)t[e.seg.eventRange.instance.instanceId]=e.absoluteTop;return t}(t);return e.map((e=>({seg:e,isVisible:!0,isAbsolute:!0,absoluteTop:n[e.eventRange.instance.instanceId],marginTop:0})))}(c[a],f),e.todayRange,{},Boolean(e.eventDrag),Boolean(e.eventResize),!1);return t.createElement(m,{key:n.key,elRef:this.cellElRefs.createRef(n.key),innerElRef:this.frameElRefs.createRef(n.key),dateProfile:e.dateProfile,date:n.date,showDayNumber:e.showDayNumbers,showWeekNumber:e.showWeekNumbers&&0===a,forceDayTop:e.showWeekNumbers,todayRange:e.todayRange,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,extraDateSpan:n.extraDateSpan,moreCnt:h[a],moreMarginTop:u[a],singlePlacements:g[a],fgContentElRef:this.fgElRefs.createRef(n.key),fgContent:t.createElement(t.Fragment,null,t.createElement(t.Fragment,null,s),t.createElement(t.Fragment,null,i)),bgContent:t.createElement(t.Fragment,null,this.renderFillSegs(d[a],"highlight"),this.renderFillSegs(o[a],"non-business"),this.renderFillSegs(l[a],"bg-event"))})})))}componentDidMount(){this.updateSizing(!0)}componentDidUpdate(e,n){let a=this.props;this.updateSizing(!t.isPropsEqual(e,a))}getHighlightSegs(){let{props:e}=this;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs}getMirrorSegs(){let{props:e}=this;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]}renderFgSegs(e,n,a,s,i,r,o){let{context:l}=this,{eventSelection:f}=this.props,{framePositions:h}=this.state,u=1===this.props.cells.length,p=i||r||o,m=[];if(h)for(let y of n){let{seg:n}=y,{instanceId:v}=n.eventRange.instance,b=v+":"+e,E=y.isVisible&&!s[v],R=y.isAbsolute,x="",S="";R&&(l.isRtl?(S=0,x=h.lefts[n.lastCol]-h.lefts[n.firstCol]):(x=0,S=h.rights[n.firstCol]-h.rights[n.lastCol])),m.push(t.createElement("div",{className:"fc-daygrid-event-harness"+(R?" fc-daygrid-event-harness-abs":""),key:b,ref:p?null:this.segHarnessRefs.createRef(b),style:{visibility:E?"":"hidden",marginTop:R?"":y.marginTop,top:R?y.absoluteTop:"",left:x,right:S}},d(n)?t.createElement(g,Object.assign({seg:n,isDragging:i,isSelected:v===f,defaultDisplayEventEnd:u},t.getSegMeta(n,a))):t.createElement(c,Object.assign({seg:n,isDragging:i,isResizing:r,isDateSelecting:o,isSelected:v===f,defaultDisplayEventEnd:u},t.getSegMeta(n,a)))))}return m}renderFillSegs(e,n){let{isRtl:a}=this.context,{todayRange:s}=this.props,{framePositions:i}=this.state,r=[];if(i)for(let o of e){let e=a?{right:0,left:i.lefts[o.lastCol]-i.lefts[o.firstCol]}:{left:0,right:i.rights[o.firstCol]-i.rights[o.lastCol]};r.push(t.createElement("div",{key:t.buildEventRangeKey(o.eventRange),className:"fc-daygrid-bg-harness",style:e},"bg-event"===n?t.createElement(t.BgEvent,Object.assign({seg:o},t.getSegMeta(o,s))):t.renderFill(n)))}return t.createElement(t.Fragment,{},...r)}updateSizing(e){let{props:n,frameElRefs:a}=this;if(!n.forPrint&&null!==n.clientWidth){if(e){let e=n.cells.map((e=>a.currentMap[e.key]));if(e.length){let n=this.rootElRef.current;this.setState({framePositions:new t.PositionCache(n,e,!0,!1)})}}const s=this.state.eventInstanceHeights,i=this.queryEventInstanceHeights(),r=!0===n.dayMaxEvents||!0===n.dayMaxEventRows;this.safeSetState({eventInstanceHeights:Object.assign(Object.assign({},s),i),maxContentHeight:r?this.computeMaxContentHeight():null})}}queryEventInstanceHeights(){let e=this.segHarnessRefs.currentMap,t={};for(let n in e){let a=Math.round(e[n].getBoundingClientRect().height),s=n.split(":")[0];t[s]=Math.max(t[s]||0,a)}return t}computeMaxContentHeight(){let e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top}getCellEls(){let e=this.cellElRefs.currentMap;return this.props.cells.map((t=>e[t.key]))}}E.addStateEquality({eventInstanceHeights:t.isPropsEqual});class R extends t.DateComponent{constructor(){super(...arguments),this.splitBusinessHourSegs=t.memoize(a),this.splitBgEventSegs=t.memoize(a),this.splitFgEventSegs=t.memoize(a),this.splitDateSelectionSegs=t.memoize(a),this.splitEventDrag=t.memoize(i),this.splitEventResize=t.memoize(i),this.rowRefs=new t.RefMap,this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){let{props:e}=this,{dateProfile:n,dayMaxEventRows:a,dayMaxEvents:s,expandRows:i}=e,r=e.cells.length,o=this.splitBusinessHourSegs(e.businessHourSegs,r),l=this.splitBgEventSegs(e.bgEventSegs,r),d=this.splitFgEventSegs(e.fgEventSegs,r),c=this.splitDateSelectionSegs(e.dateSelectionSegs,r),g=this.splitEventDrag(e.eventDrag,r),f=this.splitEventResize(e.eventResize,r),h=!0===s||!0===a;h&&!i&&(h=!1,a=null,s=null);let u=["fc-daygrid-body",h?"fc-daygrid-body-balanced":"fc-daygrid-body-unbalanced",i?"":"fc-daygrid-body-natural"];return t.createElement("div",{className:u.join(" "),ref:this.handleRootEl,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},t.createElement(t.NowTimer,{unit:"day"},((h,u)=>t.createElement(t.Fragment,null,t.createElement("table",{role:"presentation",className:"fc-scrollgrid-sync-table",style:{width:e.clientWidth,minWidth:e.tableMinWidth,height:i?e.clientHeight:""}},e.colGroupNode,t.createElement("tbody",{role:"presentation"},e.cells.map(((i,h)=>t.createElement(E,{ref:this.rowRefs.createRef(h),key:i.length?i[0].date.toISOString():h,showDayNumbers:r>1,showWeekNumbers:e.showWeekNumbers,todayRange:u,dateProfile:n,cells:i,renderIntro:e.renderRowIntro,businessHourSegs:o[h],eventSelection:e.eventSelection,bgEventSegs:l[h].filter(x),fgEventSegs:d[h],dateSelectionSegs:c[h],eventDrag:g[h],eventResize:f[h],dayMaxEvents:s,dayMaxEventRows:a,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint})))))))))}prepareHits(){this.rowPositions=new t.PositionCache(this.rootEl,this.rowRefs.collect().map((e=>e.getCellEls()[0])),!1,!0),this.colPositions=new t.PositionCache(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)}queryHit(e,t){let{colPositions:n,rowPositions:a}=this,s=n.leftToIndex(e),i=a.topToIndex(t);if(null!=i&&null!=s){let e=this.props.cells[i][s];return{dateProfile:this.props.dateProfile,dateSpan:Object.assign({range:this.getCellRange(i,s),allDay:!0},e.extraDateSpan),dayEl:this.getCellEl(i,s),rect:{left:n.lefts[s],right:n.rights[s],top:a.tops[i],bottom:a.bottoms[i]},layer:0}}return null}getCellEl(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]}getCellRange(e,n){let a=this.props.cells[e][n].date;return{start:a,end:t.addDays(a,1)}}}function x(e){return e.eventRange.def.allDay}class S extends t.Slicer{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(e,t){return t.sliceRange(e)}}class w extends t.DateComponent{constructor(){super(...arguments),this.slicer=new S,this.tableRef=t.createRef()}render(){let{props:e,context:n}=this;return t.createElement(R,Object.assign({ref:this.tableRef},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,n,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))}}class C extends n{constructor(){super(...arguments),this.buildDayTableModel=t.memoize(D),this.headerRef=t.createRef(),this.tableRef=t.createRef()}render(){let{options:e,dateProfileGenerator:n}=this.context,{props:a}=this,s=this.buildDayTableModel(a.dateProfile,n),i=e.dayHeaders&&t.createElement(t.DayHeader,{ref:this.headerRef,dateProfile:a.dateProfile,dates:s.headerDates,datesRepDistinctDays:1===s.rowCnt}),r=n=>t.createElement(w,{ref:this.tableRef,dateProfile:a.dateProfile,dayTableModel:s,businessHours:a.businessHours,dateSelection:a.dateSelection,eventStore:a.eventStore,eventUiBases:a.eventUiBases,eventSelection:a.eventSelection,eventDrag:a.eventDrag,eventResize:a.eventResize,nextDayThreshold:e.nextDayThreshold,colGroupNode:n.tableColGroupNode,tableMinWidth:n.tableMinWidth,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.weekNumbers,expandRows:!a.isHeightAuto,headerAlignElRef:this.headerElRef,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:a.forPrint});return e.dayMinWidth?this.renderHScrollLayout(i,r,s.colCnt,e.dayMinWidth):this.renderSimpleLayout(i,r)}}function D(e,n){let a=new t.DaySeriesModel(e.renderRange,n);return new t.DayTableModel(a,/year|month|week/.test(e.currentRangeUnit))}class k extends t.DateProfileGenerator{buildRenderRange(e,n,a){let s,{dateEnv:i}=this.props,r=super.buildRenderRange(e,n,a),o=r.start,l=r.end;if(/^(year|month)$/.test(n)&&(o=i.startOfWeek(o),s=i.startOfWeek(l),s.valueOf()!==l.valueOf()&&(l=t.addWeeks(s,1))),this.props.monthMode&&this.props.fixedWeekCount){let e=Math.ceil(t.diffWeeks(o,l));l=t.addWeeks(l,6-e)}return{start:o,end:l}}}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===n&&a.firstChild?a.insertBefore(s,a.firstChild):a.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}('\n:root {\n --fc-daygrid-event-dot-width: 8px;\n}\n/* help things clear margins of inner content */\n.fc-daygrid-day-frame,\n.fc-daygrid-day-events,\n.fc-daygrid-event-harness { /* for event top/bottom margins */\n}\n.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {\n content: "";\n clear: both;\n display: table; }\n.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {\n content: "";\n clear: both;\n display: table; }\n.fc .fc-daygrid-body { /* a <div> that wraps the table */\n position: relative;\n z-index: 1; /* container inner z-index\'s because <tr>s can\'t do it */\n }\n.fc .fc-daygrid-day.fc-day-today {\n background-color: rgba(255, 220, 40, 0.15);\n background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));\n }\n.fc .fc-daygrid-day-frame {\n position: relative;\n min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */\n }\n.fc {\n\n /* cell top */\n\n}\n.fc .fc-daygrid-day-top {\n display: flex;\n flex-direction: row-reverse;\n }\n.fc .fc-day-other .fc-daygrid-day-top {\n opacity: 0.3;\n }\n.fc {\n\n /* day number (within cell top) */\n\n}\n.fc .fc-daygrid-day-number {\n position: relative;\n z-index: 4;\n padding: 4px;\n }\n.fc {\n\n /* event container */\n\n}\n.fc .fc-daygrid-day-events {\n margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */\n }\n.fc {\n\n /* positioning for balanced vs natural */\n\n}\n.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {\n position: absolute;\n left: 0;\n right: 0;\n }\n.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {\n position: relative; /* for containing abs positioned event harnesses */\n min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */\n }\n.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */\n }\n.fc .fc-daygrid-body-natural .fc-daygrid-day-events {\n margin-bottom: 1em;\n }\n.fc {\n\n /* event harness */\n\n}\n.fc .fc-daygrid-event-harness {\n position: relative;\n }\n.fc .fc-daygrid-event-harness-abs {\n position: absolute;\n top: 0; /* fallback coords for when cannot yet be computed */\n left: 0; /* */\n right: 0; /* */\n }\n.fc .fc-daygrid-bg-harness {\n position: absolute;\n top: 0;\n bottom: 0;\n }\n.fc {\n\n /* bg content */\n\n}\n.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }\n.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }\n.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }\n.fc {\n\n /* events */\n\n}\n.fc .fc-daygrid-event {\n z-index: 6;\n margin-top: 1px;\n }\n.fc .fc-daygrid-event.fc-event-mirror {\n z-index: 7;\n }\n.fc {\n\n /* cell bottom (within day-events) */\n\n}\n.fc .fc-daygrid-day-bottom {\n font-size: .85em;\n padding: 2px 3px 0\n }\n.fc .fc-daygrid-day-bottom:before {\n content: "";\n clear: both;\n display: table; }\n.fc .fc-daygrid-more-link {\n position: relative;\n z-index: 4;\n cursor: pointer;\n }\n.fc {\n\n /* week number (within frame) */\n\n}\n.fc .fc-daygrid-week-number {\n position: absolute;\n z-index: 5;\n top: 0;\n padding: 2px;\n min-width: 1.5em;\n text-align: center;\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n color: #808080;\n color: var(--fc-neutral-text-color, #808080);\n }\n.fc {\n\n /* popover */\n\n}\n.fc .fc-more-popover .fc-popover-body {\n min-width: 220px;\n padding: 10px;\n }\n.fc-direction-ltr .fc-daygrid-event.fc-event-start,\n.fc-direction-rtl .fc-daygrid-event.fc-event-end {\n margin-left: 2px;\n}\n.fc-direction-ltr .fc-daygrid-event.fc-event-end,\n.fc-direction-rtl .fc-daygrid-event.fc-event-start {\n margin-right: 2px;\n}\n.fc-direction-ltr .fc-daygrid-week-number {\n left: 0;\n border-radius: 0 0 3px 0;\n }\n.fc-direction-rtl .fc-daygrid-week-number {\n right: 0;\n border-radius: 0 0 0 3px;\n }\n.fc-liquid-hack .fc-daygrid-day-frame {\n position: static; /* will cause inner absolute stuff to expand to <td> */\n }\n.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */\n position: relative; /* for z-indexes assigned later */\n white-space: nowrap;\n border-radius: 3px; /* dot event needs this to when selected */\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n}\n/* --- the rectangle ("block") style of event --- */\n.fc-daygrid-block-event .fc-event-time {\n font-weight: bold;\n }\n.fc-daygrid-block-event .fc-event-time,\n .fc-daygrid-block-event .fc-event-title {\n padding: 1px;\n }\n/* --- the dot style of event --- */\n.fc-daygrid-dot-event {\n display: flex;\n align-items: center;\n padding: 2px 0\n\n}\n.fc-daygrid-dot-event .fc-event-title {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n overflow: hidden;\n font-weight: bold;\n }\n.fc-daygrid-dot-event:hover,\n .fc-daygrid-dot-event.fc-event-mirror {\n background: rgba(0, 0, 0, 0.1);\n }\n.fc-daygrid-dot-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n.fc-daygrid-event-dot { /* the actual dot */\n margin: 0 4px;\n box-sizing: content-box;\n width: 0;\n height: 0;\n border: 4px solid #3788d8;\n border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);\n border-radius: 4px;\n border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);\n}\n/* --- spacing between time and title --- */\n.fc-direction-ltr .fc-daygrid-event .fc-event-time {\n margin-right: 3px;\n }\n.fc-direction-rtl .fc-daygrid-event .fc-event-time {\n margin-left: 3px;\n }\n');var P=t.createPlugin({initialView:"dayGridMonth",views:{dayGrid:{component:C,dateProfileGeneratorClass:k},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}});return t.globalPlugins.push(P),e.DayGridView=C,e.DayTable=w,e.DayTableSlicer=S,e.Table=R,e.TableView=n,e.buildDayTableModel=D,e.default=P,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar); |
801
main.js
/*! | ||
FullCalendar v5.11.2 | ||
FullCalendar v6.0.0-beta.1 | ||
Docs & License: https://fullcalendar.io/ | ||
(c) 2022 Adam Shaw | ||
*/ | ||
import './main.css'; | ||
import { DateComponent, createRef, getStickyHeaderDates, createElement, ViewRoot, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, BaseComponent, buildNavLinkAttrs, DayCellContent, Fragment, createFormatter, StandardEvent, buildSegTimeText, EventRoot, getSegAnchorAttrs, memoize, MoreLinkRoot, getSegMeta, createAriaClickAttrs, getUniqueDomId, setRef, DayCellRoot, WeekNumberRoot, intersectRanges, addDays, SegHierarchy, buildEntryKey, intersectSpans, isPropsEqual, RefMap, sortEventSegs, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, Slicer, DayHeader, DaySeriesModel, DayTableModel, DateProfileGenerator, addWeeks, diffWeeks, createPlugin } from '@fullcalendar/common'; | ||
import { createRef, getStickyHeaderDates, createElement, ViewRoot, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, DateComponent, buildNavLinkAttrs, DayCellContent, Fragment, BaseComponent, createFormatter, StandardEvent, buildSegTimeText, EventRoot, getSegAnchorAttrs, memoize, MoreLinkRoot, getSegMeta, createAriaClickAttrs, getUniqueDomId, setRef, DayCellRoot, WeekNumberRoot, buildEntryKey, intersectSpans, SegHierarchy, intersectRanges, addDays, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, Slicer, DayHeader, DaySeriesModel, DayTableModel, addWeeks, diffWeeks, DateProfileGenerator, createPlugin } from '@fullcalendar/common'; | ||
import { __extends, __assign, __spreadArray } from 'tslib'; | ||
/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. | ||
@@ -15,13 +12,11 @@ ----------------------------------------------------------------------------------------------------------------------*/ | ||
// It is responsible for managing width/height. | ||
var TableView = /** @class */ (function (_super) { | ||
__extends(TableView, _super); | ||
function TableView() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.headerElRef = createRef(); | ||
return _this; | ||
class TableView extends DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.headerElRef = createRef(); | ||
} | ||
TableView.prototype.renderSimpleLayout = function (headerRowContent, bodyContent) { | ||
var _a = this, props = _a.props, context = _a.context; | ||
var sections = []; | ||
var stickyHeaderDates = getStickyHeaderDates(context.options); | ||
renderSimpleLayout(headerRowContent, bodyContent) { | ||
let { props, context } = this; | ||
let sections = []; | ||
let stickyHeaderDates = getStickyHeaderDates(context.options); | ||
if (headerRowContent) { | ||
@@ -45,14 +40,14 @@ sections.push({ | ||
}); | ||
return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); })); | ||
}; | ||
TableView.prototype.renderHScrollLayout = function (headerRowContent, bodyContent, colCnt, dayMinWidth) { | ||
var ScrollGrid = this.context.pluginHooks.scrollGridImpl; | ||
return (createElement(ViewRoot, { viewSpec: context.viewSpec }, (rootElRef, classNames) => (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))))); | ||
} | ||
renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) { | ||
let ScrollGrid = this.context.pluginHooks.scrollGridImpl; | ||
if (!ScrollGrid) { | ||
throw new Error('No ScrollGrid implementation'); | ||
} | ||
var _a = this, props = _a.props, context = _a.context; | ||
var stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options); | ||
var stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options); | ||
var sections = []; | ||
let { props, context } = this; | ||
let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options); | ||
let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options); | ||
let sections = []; | ||
if (headerRowContent) { | ||
@@ -91,15 +86,13 @@ sections.push({ | ||
} | ||
return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); })); | ||
}; | ||
return TableView; | ||
}(DateComponent)); | ||
return (createElement(ViewRoot, { viewSpec: context.viewSpec }, (rootElRef, classNames) => (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') }, | ||
createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))))); | ||
} | ||
} | ||
function splitSegsByRow(segs, rowCnt) { | ||
var byRow = []; | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
let byRow = []; | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = []; | ||
} | ||
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
var seg = segs_1[_i]; | ||
for (let seg of segs) { | ||
byRow[seg.row].push(seg); | ||
@@ -110,8 +103,7 @@ } | ||
function splitSegsByFirstCol(segs, colCnt) { | ||
var byCol = []; | ||
for (var i = 0; i < colCnt; i += 1) { | ||
let byCol = []; | ||
for (let i = 0; i < colCnt; i += 1) { | ||
byCol[i] = []; | ||
} | ||
for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { | ||
var seg = segs_2[_i]; | ||
for (let seg of segs) { | ||
byCol[seg.firstCol].push(seg); | ||
@@ -122,5 +114,5 @@ } | ||
function splitInteractionByRow(ui, rowCnt) { | ||
var byRow = []; | ||
let byRow = []; | ||
if (!ui) { | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = null; | ||
@@ -130,3 +122,3 @@ } | ||
else { | ||
for (var i = 0; i < rowCnt; i += 1) { | ||
for (let i = 0; i < rowCnt; i += 1) { | ||
byRow[i] = { | ||
@@ -138,4 +130,3 @@ affectedInstances: ui.affectedInstances, | ||
} | ||
for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) { | ||
var seg = _a[_i]; | ||
for (let seg of ui.segs) { | ||
byRow[seg.row].segs.push(seg); | ||
@@ -147,15 +138,10 @@ } | ||
var TableCellTop = /** @class */ (function (_super) { | ||
__extends(TableCellTop, _super); | ||
function TableCellTop() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableCellTop extends BaseComponent { | ||
render() { | ||
let { props } = this; | ||
let navLinkAttrs = buildNavLinkAttrs(this.context, props.date); | ||
return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, (innerElRef, innerContent) => ((innerContent || props.forceDayTop) && (createElement("div", { className: "fc-daygrid-day-top", ref: innerElRef }, | ||
createElement("a", Object.assign({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || createElement(Fragment, null, "\u00A0"))))))); | ||
} | ||
TableCellTop.prototype.render = function () { | ||
var props = this.props; | ||
var navLinkAttrs = buildNavLinkAttrs(this.context, props.date); | ||
return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent) { return ((innerContent || props.forceDayTop) && (createElement("div", { className: "fc-daygrid-day-top", ref: innerElRef }, | ||
createElement("a", __assign({ id: props.dayNumberId, className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || createElement(Fragment, null, "\u00A0"))))); })); | ||
}; | ||
return TableCellTop; | ||
}(BaseComponent)); | ||
} | ||
function renderTopInner(props) { | ||
@@ -165,3 +151,3 @@ return props.dayNumberText; | ||
var DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({ | ||
const DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({ | ||
hour: 'numeric', | ||
@@ -173,3 +159,3 @@ minute: '2-digit', | ||
function hasListItemDisplay(seg) { | ||
var display = seg.eventRange.ui.display; | ||
let { display } = seg.eventRange.ui; | ||
return display === 'list-item' || (display === 'auto' && | ||
@@ -183,28 +169,18 @@ !seg.eventRange.def.allDay && | ||
var TableBlockEvent = /** @class */ (function (_super) { | ||
__extends(TableBlockEvent, _super); | ||
function TableBlockEvent() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableBlockEvent extends BaseComponent { | ||
render() { | ||
let { props } = this; | ||
return (createElement(StandardEvent, Object.assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); | ||
} | ||
TableBlockEvent.prototype.render = function () { | ||
var props = this.props; | ||
return (createElement(StandardEvent, __assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }))); | ||
}; | ||
return TableBlockEvent; | ||
}(BaseComponent)); | ||
} | ||
var TableListItemEvent = /** @class */ (function (_super) { | ||
__extends(TableListItemEvent, _super); | ||
function TableListItemEvent() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
class TableListItemEvent extends BaseComponent { | ||
render() { | ||
let { props, context } = this; | ||
let timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; | ||
let timeText = buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); | ||
return (createElement(EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, (rootElRef, classNames, innerElRef, innerContent) => ( // we don't use styles! | ||
createElement("a", Object.assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, getSegAnchorAttrs(props.seg, context)), innerContent)))); | ||
} | ||
TableListItemEvent.prototype.render = function () { | ||
var _a = this, props = _a.props, context = _a.context; | ||
var timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT; | ||
var timeText = buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd); | ||
return (createElement(EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent) { return ( // we don't use styles! | ||
createElement("a", __assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, getSegAnchorAttrs(props.seg, context)), innerContent)); })); | ||
}; | ||
return TableListItemEvent; | ||
}(BaseComponent)); | ||
} | ||
function renderInnerContent(innerProps) { | ||
@@ -217,31 +193,27 @@ return (createElement(Fragment, null, | ||
var TableCellMoreLink = /** @class */ (function (_super) { | ||
__extends(TableCellMoreLink, _super); | ||
function TableCellMoreLink() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.compileSegs = memoize(compileSegs); | ||
return _this; | ||
class TableCellMoreLink extends BaseComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.compileSegs = memoize(compileSegs); | ||
} | ||
TableCellMoreLink.prototype.render = function () { | ||
var props = this.props; | ||
var _a = this.compileSegs(props.singlePlacements), allSegs = _a.allSegs, invisibleSegs = _a.invisibleSegs; | ||
return (createElement(MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: function () { | ||
var isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || | ||
render() { | ||
let { props } = this; | ||
let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements); | ||
return (createElement(MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => { | ||
let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || | ||
(props.eventResize ? props.eventResize.affectedInstances : null) || | ||
{}; | ||
return (createElement(Fragment, null, allSegs.map(function (seg) { | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
return (createElement(Fragment, null, allSegs.map((seg) => { | ||
let instanceId = seg.eventRange.instance.instanceId; | ||
return (createElement("div", { className: "fc-daygrid-event-harness", key: instanceId, style: { | ||
visibility: isForcedInvisible[instanceId] ? 'hidden' : '', | ||
} }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))))); | ||
} }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))))); | ||
}))); | ||
} }, function (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) { return (createElement("a", __assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, createAriaClickAttrs(handleClick)), innerContent)); })); | ||
}; | ||
return TableCellMoreLink; | ||
}(BaseComponent)); | ||
} }, (rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (createElement("a", Object.assign({ ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), title: title, "aria-expanded": isExpanded, "aria-controls": popoverId }, createAriaClickAttrs(handleClick)), innerContent)))); | ||
} | ||
} | ||
function compileSegs(singlePlacements) { | ||
var allSegs = []; | ||
var invisibleSegs = []; | ||
for (var _i = 0, singlePlacements_1 = singlePlacements; _i < singlePlacements_1.length; _i++) { | ||
var placement = singlePlacements_1[_i]; | ||
let allSegs = []; | ||
let invisibleSegs = []; | ||
for (let placement of singlePlacements) { | ||
allSegs.push(placement.seg); | ||
@@ -252,27 +224,25 @@ if (!placement.isVisible) { | ||
} | ||
return { allSegs: allSegs, invisibleSegs: invisibleSegs }; | ||
return { allSegs, invisibleSegs }; | ||
} | ||
var DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' }); | ||
var TableCell = /** @class */ (function (_super) { | ||
__extends(TableCell, _super); | ||
function TableCell() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.rootElRef = createRef(); | ||
_this.state = { | ||
const DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' }); | ||
class TableCell extends DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.rootElRef = createRef(); | ||
this.state = { | ||
dayNumberId: getUniqueDomId(), | ||
}; | ||
_this.handleRootEl = function (el) { | ||
setRef(_this.rootElRef, el); | ||
setRef(_this.props.elRef, el); | ||
this.handleRootEl = (el) => { | ||
setRef(this.rootElRef, el); | ||
setRef(this.props.elRef, el); | ||
}; | ||
return _this; | ||
} | ||
TableCell.prototype.render = function () { | ||
var _a = this, context = _a.context, props = _a.props, state = _a.state, rootElRef = _a.rootElRef; | ||
var date = props.date, dateProfile = props.dateProfile; | ||
var navLinkAttrs = buildNavLinkAttrs(context, date, 'week'); | ||
return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (dayElRef, dayClassNames, rootDataAttrs, isDisabled) { return (createElement("td", __assign({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), | ||
render() { | ||
let { context, props, state, rootElRef } = this; | ||
let { date, dateProfile } = props; | ||
let navLinkAttrs = buildNavLinkAttrs(context, date, 'week'); | ||
return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, (dayElRef, dayClassNames, rootDataAttrs, isDisabled) => (createElement("td", Object.assign({ ref: dayElRef, role: "gridcell", className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs, (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), | ||
createElement("div", { className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", ref: props.innerElRef /* different from hook system! RENAME */ }, | ||
props.showWeekNumber && (createElement(WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (weekElRef, weekClassNames, innerElRef, innerContent) { return (createElement("a", __assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)); })), | ||
props.showWeekNumber && (createElement(WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, (weekElRef, weekClassNames, innerElRef, innerContent) => (createElement("a", Object.assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)))), | ||
!isDisabled && (createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, dayNumberId: state.dayNumberId, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })), | ||
@@ -283,10 +253,9 @@ createElement("div", { className: "fc-daygrid-day-events", ref: props.fgContentElRef }, | ||
createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))), | ||
createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))); })); | ||
}; | ||
return TableCell; | ||
}(DateComponent)); | ||
createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))))); | ||
} | ||
} | ||
function computeFgSegPlacement(segs, // assumed already sorted | ||
dayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) { | ||
var hierarchy = new DayGridSegHierarchy(); | ||
let hierarchy = new DayGridSegHierarchy(); | ||
hierarchy.allowReslicing = true; | ||
@@ -306,8 +275,8 @@ hierarchy.strictOrder = strictOrder; | ||
// create segInputs only for segs with known heights | ||
var segInputs = []; | ||
var unknownHeightSegs = []; | ||
for (var i = 0; i < segs.length; i += 1) { | ||
var seg = segs[i]; | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
var eventHeight = eventInstanceHeights[instanceId]; | ||
let segInputs = []; | ||
let unknownHeightSegs = []; | ||
for (let i = 0; i < segs.length; i += 1) { | ||
let seg = segs[i]; | ||
let { instanceId } = seg.eventRange.instance; | ||
let eventHeight = eventInstanceHeights[instanceId]; | ||
if (eventHeight != null) { | ||
@@ -327,12 +296,11 @@ segInputs.push({ | ||
} | ||
var hiddenEntries = hierarchy.addSegs(segInputs); | ||
var segRects = hierarchy.toRects(); | ||
var _a = placeRects(segRects, segs, cells), singleColPlacements = _a.singleColPlacements, multiColPlacements = _a.multiColPlacements, leftoverMargins = _a.leftoverMargins; | ||
var moreCnts = []; | ||
var moreMarginTops = []; | ||
let hiddenEntries = hierarchy.addSegs(segInputs); | ||
let segRects = hierarchy.toRects(); | ||
let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells); | ||
let moreCnts = []; | ||
let moreMarginTops = []; | ||
// add segs with unknown heights | ||
for (var _i = 0, unknownHeightSegs_1 = unknownHeightSegs; _i < unknownHeightSegs_1.length; _i++) { | ||
var seg = unknownHeightSegs_1[_i]; | ||
for (let seg of unknownHeightSegs) { | ||
multiColPlacements[seg.firstCol].push({ | ||
seg: seg, | ||
seg, | ||
isVisible: false, | ||
@@ -343,3 +311,3 @@ isAbsolute: true, | ||
}); | ||
for (var col = seg.firstCol; col <= seg.lastCol; col += 1) { | ||
for (let col = seg.firstCol; col <= seg.lastCol; col += 1) { | ||
singleColPlacements[col].push({ | ||
@@ -355,9 +323,8 @@ seg: resliceSeg(seg, col, col + 1, cells), | ||
// add the hidden entries | ||
for (var col = 0; col < cells.length; col += 1) { | ||
for (let col = 0; col < cells.length; col += 1) { | ||
moreCnts.push(0); | ||
} | ||
for (var _b = 0, hiddenEntries_1 = hiddenEntries; _b < hiddenEntries_1.length; _b++) { | ||
var hiddenEntry = hiddenEntries_1[_b]; | ||
var seg = segs[hiddenEntry.index]; | ||
var hiddenSpan = hiddenEntry.span; | ||
for (let hiddenEntry of hiddenEntries) { | ||
let seg = segs[hiddenEntry.index]; | ||
let hiddenSpan = hiddenEntry.span; | ||
multiColPlacements[hiddenSpan.start].push({ | ||
@@ -370,3 +337,3 @@ seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells), | ||
}); | ||
for (var col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { | ||
for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) { | ||
moreCnts[col] += 1; | ||
@@ -383,22 +350,21 @@ singleColPlacements[col].push({ | ||
// deal with leftover margins | ||
for (var col = 0; col < cells.length; col += 1) { | ||
for (let col = 0; col < cells.length; col += 1) { | ||
moreMarginTops.push(leftoverMargins[col]); | ||
} | ||
return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, moreCnts: moreCnts, moreMarginTops: moreMarginTops }; | ||
return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops }; | ||
} | ||
// rects ordered by top coord, then left | ||
function placeRects(allRects, segs, cells) { | ||
var rectsByEachCol = groupRectsByEachCol(allRects, cells.length); | ||
var singleColPlacements = []; | ||
var multiColPlacements = []; | ||
var leftoverMargins = []; | ||
for (var col = 0; col < cells.length; col += 1) { | ||
var rects = rectsByEachCol[col]; | ||
let rectsByEachCol = groupRectsByEachCol(allRects, cells.length); | ||
let singleColPlacements = []; | ||
let multiColPlacements = []; | ||
let leftoverMargins = []; | ||
for (let col = 0; col < cells.length; col += 1) { | ||
let rects = rectsByEachCol[col]; | ||
// compute all static segs in singlePlacements | ||
var singlePlacements = []; | ||
var currentHeight = 0; | ||
var currentMarginTop = 0; | ||
for (var _i = 0, rects_1 = rects; _i < rects_1.length; _i++) { | ||
var rect = rects_1[_i]; | ||
var seg = segs[rect.index]; | ||
let singlePlacements = []; | ||
let currentHeight = 0; | ||
let currentMarginTop = 0; | ||
for (let rect of rects) { | ||
let seg = segs[rect.index]; | ||
singlePlacements.push({ | ||
@@ -414,10 +380,9 @@ seg: resliceSeg(seg, col, col + 1, cells), | ||
// compute mixed static/absolute segs in multiPlacements | ||
var multiPlacements = []; | ||
let multiPlacements = []; | ||
currentHeight = 0; | ||
currentMarginTop = 0; | ||
for (var _a = 0, rects_2 = rects; _a < rects_2.length; _a++) { | ||
var rect = rects_2[_a]; | ||
var seg = segs[rect.index]; | ||
var isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? | ||
var isFirstCol = rect.span.start === col; | ||
for (let rect of rects) { | ||
let seg = segs[rect.index]; | ||
let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column? | ||
let isFirstCol = rect.span.start === col; | ||
currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg | ||
@@ -452,12 +417,11 @@ currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg | ||
} | ||
return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, leftoverMargins: leftoverMargins }; | ||
return { singleColPlacements, multiColPlacements, leftoverMargins }; | ||
} | ||
function groupRectsByEachCol(rects, colCnt) { | ||
var rectsByEachCol = []; | ||
for (var col = 0; col < colCnt; col += 1) { | ||
let rectsByEachCol = []; | ||
for (let col = 0; col < colCnt; col += 1) { | ||
rectsByEachCol.push([]); | ||
} | ||
for (var _i = 0, rects_3 = rects; _i < rects_3.length; _i++) { | ||
var rect = rects_3[_i]; | ||
for (var col = rect.span.start; col < rect.span.end; col += 1) { | ||
for (let rect of rects) { | ||
for (let col = rect.span.start; col < rect.span.end; col += 1) { | ||
rectsByEachCol[col].push(rect); | ||
@@ -472,11 +436,11 @@ } | ||
} | ||
var eventRange = seg.eventRange; | ||
var origRange = eventRange.range; | ||
var slicedRange = intersectRanges(origRange, { | ||
let eventRange = seg.eventRange; | ||
let origRange = eventRange.range; | ||
let slicedRange = intersectRanges(origRange, { | ||
start: cells[spanStart].date, | ||
end: addDays(cells[spanEnd - 1].date, 1), | ||
}); | ||
return __assign(__assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { | ||
return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: { | ||
def: eventRange.def, | ||
ui: __assign(__assign({}, eventRange.ui), { durationEditable: false }), | ||
ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }), | ||
instance: eventRange.instance, | ||
@@ -486,33 +450,30 @@ range: slicedRange, | ||
} | ||
var DayGridSegHierarchy = /** @class */ (function (_super) { | ||
__extends(DayGridSegHierarchy, _super); | ||
function DayGridSegHierarchy() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
class DayGridSegHierarchy extends SegHierarchy { | ||
constructor() { | ||
super(...arguments); | ||
// config | ||
_this.hiddenConsumes = false; | ||
this.hiddenConsumes = false; | ||
// allows us to keep hidden entries in the hierarchy so they take up space | ||
_this.forceHidden = {}; | ||
return _this; | ||
this.forceHidden = {}; | ||
} | ||
DayGridSegHierarchy.prototype.addSegs = function (segInputs) { | ||
var _this = this; | ||
var hiddenSegs = _super.prototype.addSegs.call(this, segInputs); | ||
var entriesByLevel = this.entriesByLevel; | ||
var excludeHidden = function (entry) { return !_this.forceHidden[buildEntryKey(entry)]; }; | ||
addSegs(segInputs) { | ||
const hiddenSegs = super.addSegs(segInputs); | ||
const { entriesByLevel } = this; | ||
const excludeHidden = (entry) => !this.forceHidden[buildEntryKey(entry)]; | ||
// remove the forced-hidden segs | ||
for (var level = 0; level < entriesByLevel.length; level += 1) { | ||
for (let level = 0; level < entriesByLevel.length; level += 1) { | ||
entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden); | ||
} | ||
return hiddenSegs; | ||
}; | ||
DayGridSegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) { | ||
var _a = this, entriesByLevel = _a.entriesByLevel, forceHidden = _a.forceHidden; | ||
var touchingEntry = insertion.touchingEntry, touchingLevel = insertion.touchingLevel, touchingLateral = insertion.touchingLateral; | ||
} | ||
handleInvalidInsertion(insertion, entry, hiddenEntries) { | ||
const { entriesByLevel, forceHidden } = this; | ||
const { touchingEntry, touchingLevel, touchingLateral } = insertion; | ||
if (this.hiddenConsumes && touchingEntry) { | ||
var touchingEntryId = buildEntryKey(touchingEntry); | ||
const touchingEntryId = buildEntryKey(touchingEntry); | ||
// if not already hidden | ||
if (!forceHidden[touchingEntryId]) { | ||
if (this.allowReslicing) { | ||
var placeholderEntry = __assign(__assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) }); | ||
var placeholderEntryId = buildEntryKey(placeholderEntry); | ||
const placeholderEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) }); | ||
const placeholderEntryId = buildEntryKey(placeholderEntry); | ||
forceHidden[placeholderEntryId] = true; | ||
@@ -528,17 +489,15 @@ entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder | ||
} | ||
return _super.prototype.handleInvalidInsertion.call(this, insertion, entry, hiddenEntries); | ||
}; | ||
return DayGridSegHierarchy; | ||
}(SegHierarchy)); | ||
return super.handleInvalidInsertion(insertion, entry, hiddenEntries); | ||
} | ||
} | ||
var TableRow = /** @class */ (function (_super) { | ||
__extends(TableRow, _super); | ||
function TableRow() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.cellElRefs = new RefMap(); // the <td> | ||
_this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame | ||
_this.fgElRefs = new RefMap(); // the fc-daygrid-day-events | ||
_this.segHarnessRefs = new RefMap(); // indexed by "instanceId:firstCol" | ||
_this.rootElRef = createRef(); | ||
_this.state = { | ||
class TableRow extends DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.cellElRefs = new RefMap(); // the <td> | ||
this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame | ||
this.fgElRefs = new RefMap(); // the fc-daygrid-day-events | ||
this.segHarnessRefs = new RefMap(); // indexed by "instanceId:firstCol" | ||
this.rootElRef = createRef(); | ||
this.state = { | ||
framePositions: null, | ||
@@ -548,15 +507,13 @@ maxContentHeight: null, | ||
}; | ||
return _this; | ||
} | ||
TableRow.prototype.render = function () { | ||
var _this = this; | ||
var _a = this, props = _a.props, state = _a.state, context = _a.context; | ||
var options = context.options; | ||
var colCnt = props.cells.length; | ||
var businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); | ||
var bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); | ||
var highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); | ||
var mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); | ||
var _b = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells), singleColPlacements = _b.singleColPlacements, multiColPlacements = _b.multiColPlacements, moreCnts = _b.moreCnts, moreMarginTops = _b.moreMarginTops; | ||
var isForcedInvisible = // TODO: messy way to compute this | ||
render() { | ||
let { props, state, context } = this; | ||
let { options } = context; | ||
let colCnt = props.cells.length; | ||
let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt); | ||
let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt); | ||
let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt); | ||
let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt); | ||
let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells); | ||
let isForcedInvisible = // TODO: messy way to compute this | ||
(props.eventDrag && props.eventDrag.affectedInstances) || | ||
@@ -567,6 +524,6 @@ (props.eventResize && props.eventResize.affectedInstances) || | ||
props.renderIntro && props.renderIntro(), | ||
props.cells.map(function (cell, col) { | ||
var normalFgNodes = _this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); | ||
var mirrorFgNodes = _this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); | ||
return (createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys | ||
props.cells.map((cell, col) => { | ||
let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible); | ||
let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false); | ||
return (createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys | ||
createElement(Fragment, null, | ||
@@ -576,16 +533,16 @@ createElement(Fragment, null, normalFgNodes), | ||
createElement(Fragment, null, | ||
_this.renderFillSegs(highlightSegsByCol[col], 'highlight'), | ||
_this.renderFillSegs(businessHoursByCol[col], 'non-business'), | ||
_this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); | ||
this.renderFillSegs(highlightSegsByCol[col], 'highlight'), | ||
this.renderFillSegs(businessHoursByCol[col], 'non-business'), | ||
this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) })); | ||
}))); | ||
}; | ||
TableRow.prototype.componentDidMount = function () { | ||
} | ||
componentDidMount() { | ||
this.updateSizing(true); | ||
}; | ||
TableRow.prototype.componentDidUpdate = function (prevProps, prevState) { | ||
var currentProps = this.props; | ||
} | ||
componentDidUpdate(prevProps, prevState) { | ||
let currentProps = this.props; | ||
this.updateSizing(!isPropsEqual(prevProps, currentProps)); | ||
}; | ||
TableRow.prototype.getHighlightSegs = function () { | ||
var props = this.props; | ||
} | ||
getHighlightSegs() { | ||
let { props } = this; | ||
if (props.eventDrag && props.eventDrag.segs.length) { // messy check | ||
@@ -598,5 +555,5 @@ return props.eventDrag.segs; | ||
return props.dateSelectionSegs; | ||
}; | ||
TableRow.prototype.getMirrorSegs = function () { | ||
var props = this.props; | ||
} | ||
getMirrorSegs() { | ||
let { props } = this; | ||
if (props.eventResize && props.eventResize.segs.length) { // messy check | ||
@@ -606,20 +563,19 @@ return props.eventResize.segs; | ||
return []; | ||
}; | ||
TableRow.prototype.renderFgSegs = function (col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { | ||
var context = this.context; | ||
var eventSelection = this.props.eventSelection; | ||
var framePositions = this.state.framePositions; | ||
var defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 | ||
var isMirror = isDragging || isResizing || isDateSelecting; | ||
var nodes = []; | ||
} | ||
renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) { | ||
let { context } = this; | ||
let { eventSelection } = this.props; | ||
let { framePositions } = this.state; | ||
let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1 | ||
let isMirror = isDragging || isResizing || isDateSelecting; | ||
let nodes = []; | ||
if (framePositions) { | ||
for (var _i = 0, segPlacements_1 = segPlacements; _i < segPlacements_1.length; _i++) { | ||
var placement = segPlacements_1[_i]; | ||
var seg = placement.seg; | ||
var instanceId = seg.eventRange.instance.instanceId; | ||
var key = instanceId + ':' + col; | ||
var isVisible = placement.isVisible && !isForcedInvisible[instanceId]; | ||
var isAbsolute = placement.isAbsolute; | ||
var left = ''; | ||
var right = ''; | ||
for (let placement of segPlacements) { | ||
let { seg } = placement; | ||
let { instanceId } = seg.eventRange.instance; | ||
let key = instanceId + ':' + col; | ||
let isVisible = placement.isVisible && !isForcedInvisible[instanceId]; | ||
let isAbsolute = placement.isAbsolute; | ||
let left = ''; | ||
let right = ''; | ||
if (isAbsolute) { | ||
@@ -643,18 +599,17 @@ if (context.isRtl) { | ||
top: isAbsolute ? placement.absoluteTop : '', | ||
left: left, | ||
right: right, | ||
} }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))))); | ||
left, | ||
right, | ||
} }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))))); | ||
} | ||
} | ||
return nodes; | ||
}; | ||
TableRow.prototype.renderFillSegs = function (segs, fillType) { | ||
var isRtl = this.context.isRtl; | ||
var todayRange = this.props.todayRange; | ||
var framePositions = this.state.framePositions; | ||
var nodes = []; | ||
} | ||
renderFillSegs(segs, fillType) { | ||
let { isRtl } = this.context; | ||
let { todayRange } = this.props; | ||
let { framePositions } = this.state; | ||
let nodes = []; | ||
if (framePositions) { | ||
for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
var seg = segs_1[_i]; | ||
var leftRightCss = isRtl ? { | ||
for (let seg of segs) { | ||
let leftRightCss = isRtl ? { | ||
right: 0, | ||
@@ -667,10 +622,10 @@ left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol], | ||
nodes.push(createElement("div", { key: buildEventRangeKey(seg.eventRange), className: "fc-daygrid-bg-harness", style: leftRightCss }, fillType === 'bg-event' ? | ||
createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, todayRange))) : | ||
createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, todayRange))) : | ||
renderFill(fillType))); | ||
} | ||
} | ||
return createElement.apply(void 0, __spreadArray([Fragment, {}], nodes)); | ||
}; | ||
TableRow.prototype.updateSizing = function (isExternalSizingChange) { | ||
var _a = this, props = _a.props, frameElRefs = _a.frameElRefs; | ||
return createElement(Fragment, {}, ...nodes); | ||
} | ||
updateSizing(isExternalSizingChange) { | ||
let { props, frameElRefs } = this; | ||
if (!props.forPrint && | ||
@@ -680,5 +635,5 @@ props.clientWidth !== null // positioning ready? | ||
if (isExternalSizingChange) { | ||
var frameEls = props.cells.map(function (cell) { return frameElRefs.currentMap[cell.key]; }); | ||
let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]); | ||
if (frameEls.length) { | ||
var originEl = this.rootElRef.current; | ||
let originEl = this.rootElRef.current; | ||
this.setState({ | ||
@@ -690,5 +645,5 @@ framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal | ||
} | ||
var oldInstanceHeights = this.state.eventInstanceHeights; | ||
var newInstanceHeights = this.queryEventInstanceHeights(); | ||
var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; | ||
const oldInstanceHeights = this.state.eventInstanceHeights; | ||
const newInstanceHeights = this.queryEventInstanceHeights(); | ||
const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true; | ||
this.safeSetState({ | ||
@@ -698,30 +653,29 @@ // HACK to prevent oscillations of events being shown/hidden from max-event-rows | ||
// TODO: always display all events, as visibility:hidden? | ||
eventInstanceHeights: __assign(__assign({}, oldInstanceHeights), newInstanceHeights), | ||
eventInstanceHeights: Object.assign(Object.assign({}, oldInstanceHeights), newInstanceHeights), | ||
maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null, | ||
}); | ||
} | ||
}; | ||
TableRow.prototype.queryEventInstanceHeights = function () { | ||
var segElMap = this.segHarnessRefs.currentMap; | ||
var eventInstanceHeights = {}; | ||
} | ||
queryEventInstanceHeights() { | ||
let segElMap = this.segHarnessRefs.currentMap; | ||
let eventInstanceHeights = {}; | ||
// get the max height amongst instance segs | ||
for (var key in segElMap) { | ||
var height = Math.round(segElMap[key].getBoundingClientRect().height); | ||
var instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key | ||
for (let key in segElMap) { | ||
let height = Math.round(segElMap[key].getBoundingClientRect().height); | ||
let instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key | ||
eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height); | ||
} | ||
return eventInstanceHeights; | ||
}; | ||
TableRow.prototype.computeMaxContentHeight = function () { | ||
var firstKey = this.props.cells[0].key; | ||
var cellEl = this.cellElRefs.currentMap[firstKey]; | ||
var fcContainerEl = this.fgElRefs.currentMap[firstKey]; | ||
} | ||
computeMaxContentHeight() { | ||
let firstKey = this.props.cells[0].key; | ||
let cellEl = this.cellElRefs.currentMap[firstKey]; | ||
let fcContainerEl = this.fgElRefs.currentMap[firstKey]; | ||
return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top; | ||
}; | ||
TableRow.prototype.getCellEls = function () { | ||
var elMap = this.cellElRefs.currentMap; | ||
return this.props.cells.map(function (cell) { return elMap[cell.key]; }); | ||
}; | ||
return TableRow; | ||
}(DateComponent)); | ||
} | ||
getCellEls() { | ||
let elMap = this.cellElRefs.currentMap; | ||
return this.props.cells.map((cell) => elMap[cell.key]); | ||
} | ||
} | ||
TableRow.addStateEquality({ | ||
@@ -734,5 +688,5 @@ eventInstanceHeights: isPropsEqual, | ||
} | ||
var topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? | ||
return mirrorSegs.map(function (seg) { return ({ | ||
seg: seg, | ||
let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render? | ||
return mirrorSegs.map((seg) => ({ | ||
seg, | ||
isVisible: true, | ||
@@ -742,10 +696,8 @@ isAbsolute: true, | ||
marginTop: 0, | ||
}); }); | ||
})); | ||
} | ||
function buildAbsoluteTopHash(colPlacements) { | ||
var topsByInstanceId = {}; | ||
for (var _i = 0, colPlacements_1 = colPlacements; _i < colPlacements_1.length; _i++) { | ||
var placements = colPlacements_1[_i]; | ||
for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) { | ||
var placement = placements_1[_a]; | ||
let topsByInstanceId = {}; | ||
for (let placements of colPlacements) { | ||
for (let placement of placements) { | ||
topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop; | ||
@@ -757,39 +709,36 @@ } | ||
var Table = /** @class */ (function (_super) { | ||
__extends(Table, _super); | ||
function Table() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.splitBusinessHourSegs = memoize(splitSegsByRow); | ||
_this.splitBgEventSegs = memoize(splitSegsByRow); | ||
_this.splitFgEventSegs = memoize(splitSegsByRow); | ||
_this.splitDateSelectionSegs = memoize(splitSegsByRow); | ||
_this.splitEventDrag = memoize(splitInteractionByRow); | ||
_this.splitEventResize = memoize(splitInteractionByRow); | ||
_this.rowRefs = new RefMap(); | ||
_this.handleRootEl = function (rootEl) { | ||
_this.rootEl = rootEl; | ||
class Table extends DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.splitBusinessHourSegs = memoize(splitSegsByRow); | ||
this.splitBgEventSegs = memoize(splitSegsByRow); | ||
this.splitFgEventSegs = memoize(splitSegsByRow); | ||
this.splitDateSelectionSegs = memoize(splitSegsByRow); | ||
this.splitEventDrag = memoize(splitInteractionByRow); | ||
this.splitEventResize = memoize(splitInteractionByRow); | ||
this.rowRefs = new RefMap(); | ||
this.handleRootEl = (rootEl) => { | ||
this.rootEl = rootEl; | ||
if (rootEl) { | ||
_this.context.registerInteractiveComponent(_this, { | ||
this.context.registerInteractiveComponent(this, { | ||
el: rootEl, | ||
isHitComboAllowed: _this.props.isHitComboAllowed, | ||
isHitComboAllowed: this.props.isHitComboAllowed, | ||
}); | ||
} | ||
else { | ||
_this.context.unregisterInteractiveComponent(_this); | ||
this.context.unregisterInteractiveComponent(this); | ||
} | ||
}; | ||
return _this; | ||
} | ||
Table.prototype.render = function () { | ||
var _this = this; | ||
var props = this.props; | ||
var dateProfile = props.dateProfile, dayMaxEventRows = props.dayMaxEventRows, dayMaxEvents = props.dayMaxEvents, expandRows = props.expandRows; | ||
var rowCnt = props.cells.length; | ||
var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); | ||
var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); | ||
var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); | ||
var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt); | ||
var eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt); | ||
var eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt); | ||
var limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true; | ||
render() { | ||
let { props } = this; | ||
let { dateProfile, dayMaxEventRows, dayMaxEvents, expandRows } = props; | ||
let rowCnt = props.cells.length; | ||
let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt); | ||
let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt); | ||
let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt); | ||
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 | ||
@@ -802,3 +751,3 @@ // TODO: best place to normalize these options? | ||
} | ||
var classNames = [ | ||
let classNames = [ | ||
'fc-daygrid-body', | ||
@@ -814,3 +763,3 @@ limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', | ||
} }, | ||
createElement(NowTimer, { unit: "day" }, function (nowDate, todayRange) { return (createElement(Fragment, null, | ||
createElement(NowTimer, { unit: "day" }, (nowDate, todayRange) => (createElement(Fragment, null, | ||
createElement("table", { role: "presentation", className: "fc-scrollgrid-sync-table", style: { | ||
@@ -822,11 +771,11 @@ width: props.clientWidth, | ||
props.colGroupNode, | ||
createElement("tbody", { role: "presentation" }, props.cells.map(function (cells, row) { return (createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length | ||
createElement("tbody", { role: "presentation" }, props.cells.map((cells, row) => (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 })); }))))); }))); | ||
}; | ||
, 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 | ||
// ---------------------------------------------------------------------------------------------------- | ||
Table.prototype.prepareHits = function () { | ||
this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj) { return rowObj.getCellEls()[0]; }), // first cell el in each row. TODO: not optimal | ||
prepareHits() { | ||
this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal | ||
false, true); | ||
@@ -836,12 +785,12 @@ this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row | ||
false); | ||
}; | ||
Table.prototype.queryHit = function (positionLeft, positionTop) { | ||
var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; | ||
var col = colPositions.leftToIndex(positionLeft); | ||
var row = rowPositions.topToIndex(positionTop); | ||
} | ||
queryHit(positionLeft, positionTop) { | ||
let { colPositions, rowPositions } = this; | ||
let col = colPositions.leftToIndex(positionLeft); | ||
let row = rowPositions.topToIndex(positionTop); | ||
if (row != null && col != null) { | ||
var cell = this.props.cells[row][col]; | ||
let cell = this.props.cells[row][col]; | ||
return { | ||
dateProfile: this.props.dateProfile, | ||
dateSpan: __assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), | ||
dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan), | ||
dayEl: this.getCellEl(row, col), | ||
@@ -858,13 +807,12 @@ rect: { | ||
return null; | ||
}; | ||
Table.prototype.getCellEl = function (row, col) { | ||
} | ||
getCellEl(row, col) { | ||
return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal | ||
}; | ||
Table.prototype.getCellRange = function (row, col) { | ||
var start = this.props.cells[row][col].date; | ||
var end = addDays(start, 1); | ||
return { start: start, end: end }; | ||
}; | ||
return Table; | ||
}(DateComponent)); | ||
} | ||
getCellRange(row, col) { | ||
let start = this.props.cells[row][col].date; | ||
let end = addDays(start, 1); | ||
return { start, end }; | ||
} | ||
} | ||
function isSegAllDay(seg) { | ||
@@ -874,69 +822,55 @@ return seg.eventRange.def.allDay; | ||
var DayTableSlicer = /** @class */ (function (_super) { | ||
__extends(DayTableSlicer, _super); | ||
function DayTableSlicer() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.forceDayIfListItem = true; | ||
return _this; | ||
class DayTableSlicer extends Slicer { | ||
constructor() { | ||
super(...arguments); | ||
this.forceDayIfListItem = true; | ||
} | ||
DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) { | ||
sliceRange(dateRange, dayTableModel) { | ||
return dayTableModel.sliceRange(dateRange); | ||
}; | ||
return DayTableSlicer; | ||
}(Slicer)); | ||
} | ||
} | ||
var DayTable = /** @class */ (function (_super) { | ||
__extends(DayTable, _super); | ||
function DayTable() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.slicer = new DayTableSlicer(); | ||
_this.tableRef = createRef(); | ||
return _this; | ||
class DayTable extends DateComponent { | ||
constructor() { | ||
super(...arguments); | ||
this.slicer = new DayTableSlicer(); | ||
this.tableRef = createRef(); | ||
} | ||
DayTable.prototype.render = function () { | ||
var _a = this, props = _a.props, context = _a.context; | ||
return (createElement(Table, __assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); | ||
}; | ||
return DayTable; | ||
}(DateComponent)); | ||
render() { | ||
let { props, context } = this; | ||
return (createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }))); | ||
} | ||
} | ||
var DayTableView = /** @class */ (function (_super) { | ||
__extends(DayTableView, _super); | ||
function DayTableView() { | ||
var _this = _super !== null && _super.apply(this, arguments) || this; | ||
_this.buildDayTableModel = memoize(buildDayTableModel); | ||
_this.headerRef = createRef(); | ||
_this.tableRef = createRef(); | ||
return _this; | ||
class DayTableView extends TableView { | ||
constructor() { | ||
super(...arguments); | ||
this.buildDayTableModel = memoize(buildDayTableModel); | ||
this.headerRef = createRef(); | ||
this.tableRef = createRef(); | ||
} | ||
DayTableView.prototype.render = function () { | ||
var _this = this; | ||
var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator; | ||
var props = this.props; | ||
var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); | ||
var headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); | ||
var bodyContent = function (contentArg) { return (createElement(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); }; | ||
render() { | ||
let { options, dateProfileGenerator } = this.context; | ||
let { props } = this; | ||
let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator); | ||
let headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 })); | ||
let bodyContent = (contentArg) => (createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); | ||
return options.dayMinWidth | ||
? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth) | ||
: this.renderSimpleLayout(headerContent, bodyContent); | ||
}; | ||
return DayTableView; | ||
}(TableView)); | ||
} | ||
} | ||
function buildDayTableModel(dateProfile, dateProfileGenerator) { | ||
var daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); | ||
let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator); | ||
return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); | ||
} | ||
var TableDateProfileGenerator = /** @class */ (function (_super) { | ||
__extends(TableDateProfileGenerator, _super); | ||
function TableDateProfileGenerator() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
class TableDateProfileGenerator extends DateProfileGenerator { | ||
// Computes the date range that will be rendered. | ||
TableDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { | ||
var dateEnv = this.props.dateEnv; | ||
var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); | ||
var start = renderRange.start; | ||
var end = renderRange.end; | ||
var endOfWeek; | ||
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 | ||
@@ -954,11 +888,40 @@ if (/^(year|month)$/.test(currentRangeUnit)) { | ||
this.props.fixedWeekCount) { | ||
var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
diffWeeks(start, end)); | ||
end = addWeeks(end, 6 - rowCnt); | ||
} | ||
return { start: start, end: end }; | ||
}; | ||
return TableDateProfileGenerator; | ||
}(DateProfileGenerator)); | ||
return { start, end }; | ||
} | ||
} | ||
function styleInject(css, ref) { | ||
if ( ref === void 0 ) ref = {}; | ||
var insertAt = ref.insertAt; | ||
if (!css || typeof document === 'undefined') { return; } | ||
var head = document.head || document.getElementsByTagName('head')[0]; | ||
var style = document.createElement('style'); | ||
style.type = 'text/css'; | ||
if (insertAt === 'top') { | ||
if (head.firstChild) { | ||
head.insertBefore(style, head.firstChild); | ||
} else { | ||
head.appendChild(style); | ||
} | ||
} else { | ||
head.appendChild(style); | ||
} | ||
if (style.styleSheet) { | ||
style.styleSheet.cssText = css; | ||
} else { | ||
style.appendChild(document.createTextNode(css)); | ||
} | ||
} | ||
var css_248z = "\n:root {\n --fc-daygrid-event-dot-width: 8px;\n}\n/* help things clear margins of inner content */\n.fc-daygrid-day-frame,\n.fc-daygrid-day-events,\n.fc-daygrid-event-harness { /* for event top/bottom margins */\n}\n.fc-daygrid-day-frame:before, .fc-daygrid-day-events:before, .fc-daygrid-event-harness:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc-daygrid-day-frame:after, .fc-daygrid-day-events:after, .fc-daygrid-event-harness:after {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-body { /* a <div> that wraps the table */\n position: relative;\n z-index: 1; /* container inner z-index's because <tr>s can't do it */\n }\n.fc .fc-daygrid-day.fc-day-today {\n background-color: rgba(255, 220, 40, 0.15);\n background-color: var(--fc-today-bg-color, rgba(255, 220, 40, 0.15));\n }\n.fc .fc-daygrid-day-frame {\n position: relative;\n min-height: 100%; /* seems to work better than `height` because sets height after rows/cells naturally do it */\n }\n.fc {\n\n /* cell top */\n\n}\n.fc .fc-daygrid-day-top {\n display: flex;\n flex-direction: row-reverse;\n }\n.fc .fc-day-other .fc-daygrid-day-top {\n opacity: 0.3;\n }\n.fc {\n\n /* day number (within cell top) */\n\n}\n.fc .fc-daygrid-day-number {\n position: relative;\n z-index: 4;\n padding: 4px;\n }\n.fc {\n\n /* event container */\n\n}\n.fc .fc-daygrid-day-events {\n margin-top: 1px; /* needs to be margin, not padding, so that available cell height can be computed */\n }\n.fc {\n\n /* positioning for balanced vs natural */\n\n}\n.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {\n position: absolute;\n left: 0;\n right: 0;\n }\n.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events {\n position: relative; /* for containing abs positioned event harnesses */\n min-height: 2em; /* in addition to being a min-height during natural height, equalizes the heights a little bit */\n }\n.fc .fc-daygrid-body-natural { /* can coexist with -unbalanced */\n }\n.fc .fc-daygrid-body-natural .fc-daygrid-day-events {\n margin-bottom: 1em;\n }\n.fc {\n\n /* event harness */\n\n}\n.fc .fc-daygrid-event-harness {\n position: relative;\n }\n.fc .fc-daygrid-event-harness-abs {\n position: absolute;\n top: 0; /* fallback coords for when cannot yet be computed */\n left: 0; /* */\n right: 0; /* */\n }\n.fc .fc-daygrid-bg-harness {\n position: absolute;\n top: 0;\n bottom: 0;\n }\n.fc {\n\n /* bg content */\n\n}\n.fc .fc-daygrid-day-bg .fc-non-business { z-index: 1 }\n.fc .fc-daygrid-day-bg .fc-bg-event { z-index: 2 }\n.fc .fc-daygrid-day-bg .fc-highlight { z-index: 3 }\n.fc {\n\n /* events */\n\n}\n.fc .fc-daygrid-event {\n z-index: 6;\n margin-top: 1px;\n }\n.fc .fc-daygrid-event.fc-event-mirror {\n z-index: 7;\n }\n.fc {\n\n /* cell bottom (within day-events) */\n\n}\n.fc .fc-daygrid-day-bottom {\n font-size: .85em;\n padding: 2px 3px 0\n }\n.fc .fc-daygrid-day-bottom:before {\n content: \"\";\n clear: both;\n display: table; }\n.fc .fc-daygrid-more-link {\n position: relative;\n z-index: 4;\n cursor: pointer;\n }\n.fc {\n\n /* week number (within frame) */\n\n}\n.fc .fc-daygrid-week-number {\n position: absolute;\n z-index: 5;\n top: 0;\n padding: 2px;\n min-width: 1.5em;\n text-align: center;\n background-color: rgba(208, 208, 208, 0.3);\n background-color: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\n color: #808080;\n color: var(--fc-neutral-text-color, #808080);\n }\n.fc {\n\n /* popover */\n\n}\n.fc .fc-more-popover .fc-popover-body {\n min-width: 220px;\n padding: 10px;\n }\n.fc-direction-ltr .fc-daygrid-event.fc-event-start,\n.fc-direction-rtl .fc-daygrid-event.fc-event-end {\n margin-left: 2px;\n}\n.fc-direction-ltr .fc-daygrid-event.fc-event-end,\n.fc-direction-rtl .fc-daygrid-event.fc-event-start {\n margin-right: 2px;\n}\n.fc-direction-ltr .fc-daygrid-week-number {\n left: 0;\n border-radius: 0 0 3px 0;\n }\n.fc-direction-rtl .fc-daygrid-week-number {\n right: 0;\n border-radius: 0 0 0 3px;\n }\n.fc-liquid-hack .fc-daygrid-day-frame {\n position: static; /* will cause inner absolute stuff to expand to <td> */\n }\n.fc-daygrid-event { /* make root-level, because will be dragged-and-dropped outside of a component root */\n position: relative; /* for z-indexes assigned later */\n white-space: nowrap;\n border-radius: 3px; /* dot event needs this to when selected */\n font-size: .85em;\n font-size: var(--fc-small-font-size, .85em);\n}\n/* --- the rectangle (\"block\") style of event --- */\n.fc-daygrid-block-event .fc-event-time {\n font-weight: bold;\n }\n.fc-daygrid-block-event .fc-event-time,\n .fc-daygrid-block-event .fc-event-title {\n padding: 1px;\n }\n/* --- the dot style of event --- */\n.fc-daygrid-dot-event {\n display: flex;\n align-items: center;\n padding: 2px 0\n\n}\n.fc-daygrid-dot-event .fc-event-title {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n overflow: hidden;\n font-weight: bold;\n }\n.fc-daygrid-dot-event:hover,\n .fc-daygrid-dot-event.fc-event-mirror {\n background: rgba(0, 0, 0, 0.1);\n }\n.fc-daygrid-dot-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n.fc-daygrid-event-dot { /* the actual dot */\n margin: 0 4px;\n box-sizing: content-box;\n width: 0;\n height: 0;\n border: 4px solid #3788d8;\n border: calc(var(--fc-daygrid-event-dot-width, 8px) / 2) solid var(--fc-event-border-color, #3788d8);\n border-radius: 4px;\n border-radius: calc(var(--fc-daygrid-event-dot-width, 8px) / 2);\n}\n/* --- spacing between time and title --- */\n.fc-direction-ltr .fc-daygrid-event .fc-event-time {\n margin-right: 3px;\n }\n.fc-direction-rtl .fc-daygrid-event .fc-event-time {\n margin-left: 3px;\n }\n"; | ||
styleInject(css_248z); | ||
var main = createPlugin({ | ||
@@ -965,0 +928,0 @@ initialView: 'dayGridMonth', |
{ | ||
"name": "@fullcalendar/daygrid", | ||
"version": "5.11.2", | ||
"version": "6.0.0-beta.1", | ||
"title": "FullCalendar Day Grid Plugin", | ||
@@ -8,3 +8,3 @@ "description": "Display events on Month view or DayGrid view", | ||
"dependencies": { | ||
"@fullcalendar/common": "~5.11.2", | ||
"@fullcalendar/common": "6.0.0-beta.1", | ||
"tslib": "^2.1.0" | ||
@@ -31,4 +31,4 @@ }, | ||
"devDependencies": { | ||
"@fullcalendar/core-preact": "5.11.2" | ||
"@fullcalendar/core-preact": "6.0.0-beta.1" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
287056
9
2892
1
2
+ Added@fullcalendar/common@6.0.0-beta.1(transitive)
- Removed@fullcalendar/common@5.11.5(transitive)