@fullcalendar/daygrid 7.0.0-beta.0 → 7.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.global.js +54 -39
- package/index.global.min.js +2 -2
- package/internal.cjs +53 -38
- package/internal.d.ts +9 -6
- package/internal.js +54 -39
- package/package.json +2 -2
package/index.global.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Day Grid Plugin v7.0.0-beta.
|
|
2
|
+
FullCalendar Day Grid Plugin v7.0.0-beta.1
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/month-view
|
|
4
4
|
(c) 2024 Adam Shaw
|
|
5
5
|
*/
|
|
@@ -42,7 +42,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
42
42
|
}
|
|
43
43
|
// Positioning
|
|
44
44
|
// -------------------------------------------------------------------------------------------------
|
|
45
|
-
function computeTopFromDate(date, cellRows, rowHeightMap) {
|
|
45
|
+
function computeTopFromDate(date, cellRows, rowHeightMap, adjust = 0) {
|
|
46
46
|
let top = 0;
|
|
47
47
|
for (const cells of cellRows) {
|
|
48
48
|
const start = cells[0].date;
|
|
@@ -55,7 +55,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
55
55
|
if (rowHeight == null) {
|
|
56
56
|
return; // denote unknown
|
|
57
57
|
}
|
|
58
|
-
top += rowHeight;
|
|
58
|
+
top += rowHeight + adjust;
|
|
59
59
|
}
|
|
60
60
|
return top;
|
|
61
61
|
}
|
|
@@ -161,6 +161,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
161
161
|
}
|
|
162
162
|
componentWillUnmount() {
|
|
163
163
|
this.disconectInnerHeight();
|
|
164
|
+
internal$1.setRef(this.props.innerHeightRef, null);
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
|
|
@@ -230,7 +231,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
230
231
|
class DayGridBlockEvent extends internal$1.BaseComponent {
|
|
231
232
|
render() {
|
|
232
233
|
let { props } = this;
|
|
233
|
-
return (preact.createElement(internal$1.StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.
|
|
234
|
+
return (preact.createElement(internal$1.StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.eventRange.def.allDay })));
|
|
234
235
|
}
|
|
235
236
|
}
|
|
236
237
|
|
|
@@ -238,10 +239,10 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
238
239
|
render() {
|
|
239
240
|
let { props, context } = this;
|
|
240
241
|
let { options } = context;
|
|
241
|
-
let {
|
|
242
|
+
let { eventRange } = props;
|
|
242
243
|
let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;
|
|
243
|
-
let timeText = internal$1.
|
|
244
|
-
return (preact.createElement(internal$1.EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: internal$1.
|
|
244
|
+
let timeText = internal$1.buildEventRangeTimeText(eventRange, timeFormat, context, true, props.defaultDisplayEventEnd);
|
|
245
|
+
return (preact.createElement(internal$1.EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: internal$1.getEventRangeAnchorAttrs(eventRange, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
248
|
function renderInnerContent(renderProps) {
|
|
@@ -260,10 +261,11 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
260
261
|
(props.eventResize ? props.eventResize.affectedInstances : null) ||
|
|
261
262
|
{};
|
|
262
263
|
return (preact.createElement(preact.Fragment, null, props.segs.map((seg) => {
|
|
263
|
-
let
|
|
264
|
+
let { eventRange } = seg;
|
|
265
|
+
let instanceId = eventRange.instance.instanceId;
|
|
264
266
|
return (preact.createElement("div", { key: instanceId, style: {
|
|
265
267
|
visibility: forcedInvisibleMap[instanceId] ? 'hidden' : '',
|
|
266
|
-
} }, hasListItemDisplay(seg) ? (preact.createElement(DayGridListEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, internal$1.
|
|
268
|
+
} }, hasListItemDisplay(seg) ? (preact.createElement(DayGridListEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, internal$1.getEventRangeMeta(eventRange, props.todayRange)))) : (preact.createElement(DayGridBlockEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, internal$1.getEventRangeMeta(eventRange, props.todayRange))))));
|
|
267
269
|
})));
|
|
268
270
|
} }));
|
|
269
271
|
}
|
|
@@ -482,6 +484,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
482
484
|
}
|
|
483
485
|
componentWillUnmount() {
|
|
484
486
|
this.detachHeight();
|
|
487
|
+
internal$1.setRef(this.props.heightRef, null);
|
|
485
488
|
}
|
|
486
489
|
}
|
|
487
490
|
|
|
@@ -604,7 +607,8 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
604
607
|
for (const seg of segs) {
|
|
605
608
|
const { left, right, width } = computeHorizontalsFromSeg(seg, colWidth, colCnt, isRtl);
|
|
606
609
|
// TODO: optimize ID creation? all related
|
|
607
|
-
const {
|
|
610
|
+
const { eventRange } = seg;
|
|
611
|
+
const { instanceId } = eventRange.instance;
|
|
608
612
|
const segSpanId = getSegSpanId(seg);
|
|
609
613
|
const segStartId = getSegStartId(seg);
|
|
610
614
|
const top = segTops[segStartId];
|
|
@@ -624,7 +628,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
624
628
|
width,
|
|
625
629
|
}, heightRef: (isMirror || seg.isStandin)
|
|
626
630
|
? null
|
|
627
|
-
: segHeightRefMap.createRef(segSpanId) }, hasListItemDisplay(seg) ? (preact.createElement(DayGridListEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, internal$1.
|
|
631
|
+
: segHeightRefMap.createRef(segSpanId) }, hasListItemDisplay(seg) ? (preact.createElement(DayGridListEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, internal$1.getEventRangeMeta(eventRange, todayRange)))) : (preact.createElement(DayGridBlockEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, internal$1.getEventRangeMeta(eventRange, todayRange))))));
|
|
628
632
|
}
|
|
629
633
|
return nodes;
|
|
630
634
|
}
|
|
@@ -643,8 +647,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
643
647
|
right,
|
|
644
648
|
width,
|
|
645
649
|
} }, fillType === 'bg-event' ?
|
|
646
|
-
preact.createElement(internal$1.BgEvent, Object.assign({ seg: seg }, internal$1.
|
|
647
|
-
internal$1.renderFill(fillType)));
|
|
650
|
+
preact.createElement(internal$1.BgEvent, Object.assign({ eventRange: seg.eventRange, isStart: seg.isStart, isEnd: seg.isEnd }, internal$1.getEventRangeMeta(seg.eventRange, todayRange))) : (internal$1.renderFill(fillType))));
|
|
648
651
|
}
|
|
649
652
|
return preact.createElement(preact.Fragment, {}, ...nodes);
|
|
650
653
|
}
|
|
@@ -742,12 +745,12 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
742
745
|
heightRef: rowHeightRefMap.createRef(cells[0].key) })))));
|
|
743
746
|
}
|
|
744
747
|
componentDidMount() {
|
|
745
|
-
this.
|
|
748
|
+
this.detachWidth = internal$1.watchWidth(this.rootEl, (width) => {
|
|
746
749
|
this.setState({ width });
|
|
747
750
|
});
|
|
748
751
|
}
|
|
749
752
|
componentWillUnmount() {
|
|
750
|
-
this.
|
|
753
|
+
this.detachWidth();
|
|
751
754
|
}
|
|
752
755
|
// Hit System
|
|
753
756
|
// -----------------------------------------------------------------------------------------------
|
|
@@ -925,12 +928,11 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
925
928
|
// Scrolling
|
|
926
929
|
// -----------------------------------------------------------------------------------------------
|
|
927
930
|
updateSyncedScroller() {
|
|
928
|
-
const { isRtl } = this.context;
|
|
929
931
|
this.syncedScroller.handleChildren([
|
|
930
932
|
this.headerScrollerRef.current,
|
|
931
933
|
this.bodyScrollerRef.current,
|
|
932
934
|
this.footerScrollerRef.current,
|
|
933
|
-
]
|
|
935
|
+
]);
|
|
934
936
|
}
|
|
935
937
|
}
|
|
936
938
|
|
|
@@ -939,20 +941,29 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
939
941
|
super(...arguments);
|
|
940
942
|
// ref
|
|
941
943
|
this.scrollerRef = preact.createRef();
|
|
942
|
-
this.rowHeightRefMap = new internal$1.RefMap()
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
944
|
+
this.rowHeightRefMap = new internal$1.RefMap(() => {
|
|
945
|
+
internal$1.afterSize(this.updateScrollY);
|
|
946
|
+
});
|
|
947
|
+
// internal
|
|
948
|
+
this.scrollDate = null;
|
|
949
|
+
this.updateScrollY = () => {
|
|
947
950
|
const rowHeightMap = this.rowHeightRefMap.current;
|
|
948
951
|
const scroller = this.scrollerRef.current;
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
952
|
+
// Since updateScrollY is called by rowHeightRefMap, could be called with null during cleanup,
|
|
953
|
+
// and the scroller might not exist
|
|
954
|
+
if (scroller && this.scrollDate) {
|
|
955
|
+
let scrollTop = computeTopFromDate(this.scrollDate, this.props.cellRows, rowHeightMap, 1);
|
|
956
|
+
if (scrollTop != null) {
|
|
957
|
+
if (scrollTop) {
|
|
958
|
+
scrollTop++; // clear top border
|
|
959
|
+
}
|
|
960
|
+
scroller.scrollTo({ y: scrollTop });
|
|
961
|
+
}
|
|
953
962
|
}
|
|
954
|
-
|
|
955
|
-
|
|
963
|
+
};
|
|
964
|
+
this.clearScroll = () => {
|
|
965
|
+
this.scrollDate = null;
|
|
966
|
+
};
|
|
956
967
|
}
|
|
957
968
|
render() {
|
|
958
969
|
const { props, context } = this;
|
|
@@ -963,22 +974,25 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
963
974
|
// Lifecycle
|
|
964
975
|
// -----------------------------------------------------------------------------------------------
|
|
965
976
|
componentDidMount() {
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
context.emitter.on('_timeScrollRequest', this.timeScrollResponder.handleScroll);
|
|
969
|
-
this.timeScrollResponder.handleScroll(options.scrollTime);
|
|
977
|
+
this.resetScroll();
|
|
978
|
+
this.scrollerRef.current.addScrollEndListener(this.clearScroll);
|
|
970
979
|
}
|
|
971
980
|
componentDidUpdate(prevProps) {
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
this.timeScrollResponder.handleScroll(options.scrollTime);
|
|
975
|
-
}
|
|
976
|
-
else {
|
|
977
|
-
this.timeScrollResponder.drain();
|
|
981
|
+
if (prevProps.dateProfile !== this.props.dateProfile && this.context.options.scrollTimeReset) {
|
|
982
|
+
this.resetScroll();
|
|
978
983
|
}
|
|
979
984
|
}
|
|
980
985
|
componentWillUnmount() {
|
|
981
|
-
this.
|
|
986
|
+
this.scrollerRef.current.removeScrollEndListener(this.clearScroll);
|
|
987
|
+
}
|
|
988
|
+
// Scrolling
|
|
989
|
+
// -----------------------------------------------------------------------------------------------
|
|
990
|
+
resetScroll() {
|
|
991
|
+
this.scrollDate = this.props.dateProfile.currentDate;
|
|
992
|
+
this.updateScrollY();
|
|
993
|
+
// updateScrollX
|
|
994
|
+
const scroller = this.scrollerRef.current;
|
|
995
|
+
scroller.scrollTo({ x: 0 });
|
|
982
996
|
}
|
|
983
997
|
}
|
|
984
998
|
|
|
@@ -1035,6 +1049,7 @@ FullCalendar.DayGrid = (function (exports, core, internal$1, preact) {
|
|
|
1035
1049
|
}
|
|
1036
1050
|
componentWillUnmount() {
|
|
1037
1051
|
this.disconectInnerHeight();
|
|
1052
|
+
internal$1.setRef(this.props.innerHeightRef, null);
|
|
1038
1053
|
}
|
|
1039
1054
|
}
|
|
1040
1055
|
|
package/index.global.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Day Grid Plugin v7.0.0-beta.
|
|
2
|
+
FullCalendar Day Grid Plugin v7.0.0-beta.1
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/month-view
|
|
4
4
|
(c) 2024 Adam Shaw
|
|
5
5
|
*/
|
|
6
|
-
FullCalendar.DayGrid=function(e,t,r,n){"use strict";class i extends r.Slicer{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(e,t){return t.sliceRange(e)}}function a(e){return e.text}function s(e,t){let n=new r.DaySeriesModel(e.renderRange,t);return new r.DayTableModel(n,/year|month|week/.test(e.currentRangeUnit))}function l(e,t,r){if(null==r)return[void 0,void 0];return r/e<t?[t*e,t]:[r,void 0]}function o(e,t){return[t?e.map(e=>({colSpan:1,date:e})):e.map(e=>({colSpan:1,dow:e.getUTCDay()}))]}function d(e,t,n,i){let a,s,l;if(null!=t)l=(e.lastCol-e.firstCol+1)*t,i?s=e.firstCol*t:a=e.firstCol*t;else{const t=1/n;l=r.fracToCssDim((e.lastCol-e.firstCol+1)*t),i?s=r.fracToCssDim(e.firstCol*t):a=r.fracToCssDim(e.firstCol*t)}return{left:a,right:s,width:l}}function c(e,t,r,n,i){const a=null!=r?r:t/n,s=Math.floor(e/a),l=s*a;return{col:i?n-s-1:s,left:l,right:l+a}}function g(e,t){return e.querySelectorAll(":scope > [role=row]")[t]}function h(e,t){return e.querySelectorAll(":scope > [role=gridcell]")[t]}class f extends r.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{dateProfile:i,date:s,extraRenderProps:l,extraDataAttrs:o}=e,{dateEnv:d,options:c,theme:g,viewApi:h}=t,f=r.getDateMeta(s,e.todayRange,null,i),u=d.format(s,e.dayHeaderFormat),p=!f.isDisabled&&e.navLink?r.buildNavLinkAttrs(t,s):{},m=Object.assign(Object.assign(Object.assign({date:d.toDate(s),view:h},l),{text:u}),f);return n.createElement(r.ContentContainer,{elTag:"div",elClasses:[...r.getDayClassNames(f,g),...e.extraClassNames||[],"fc-header-cell","fc-cell",null!=e.colWidth?"":"fc-liquid","fc-flex-column","fc-align-center"],elAttrs:Object.assign({"data-date":f.isDisabled?void 0:r.formatDayString(s)},o),elStyle:{width:null!=e.colWidth?e.colWidth*(e.colSpan||1):void 0},renderProps:m,generatorName:"dayHeaderContent",customGenerator:c.dayHeaderContent,defaultGenerator:a,classNameGenerator:c.dayHeaderClassNames,didMount:c.dayHeaderDidMount,willUnmount:c.dayHeaderWillUnmount},t=>n.createElement("div",{ref:this.innerElRef,className:["fc-flex-column",e.isSticky?"fc-sticky-x":""].join(" ")},!f.isDisabled&&n.createElement(t,{elTag:"a",elAttrs:p,elClasses:["fc-cell-inner","fc-padding-sm"]})))}componentDidMount(){const e=this.innerElRef.current;this.disconectInnerHeight=r.watchHeight(e,e=>{r.setRef(this.props.innerHeightRef,e)})}componentWillUnmount(){this.disconectInnerHeight()}}function u(e,t){const r=[];for(let e=0;e<t;e++)r[e]=[];for(const t of e)r[t.row].push(t);return r}function p(e,t){const r=[];if(e){for(let n=0;n<t;n++)r[n]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(const t of e.segs)r[t.row].segs.push(t)}else for(let e=0;e<t;e++)r[e]=null;return r}function m(e,t){let r=[];for(let e=0;e<t;e++)r.push([]);for(let t of e)for(let e=t.firstCol;e<=t.lastCol;e++)t.firstCol!==e&&(t=Object.assign(Object.assign({},t),{firstCol:e,lastCol:e,isStart:!1,isEnd:t.isEnd&&t.lastCol===e,isStandin:!0})),r[e].push(t);return r}const y=r.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function v(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 R extends r.BaseComponent{render(){let{props:e}=this;return n.createElement(r.StandardEvent,Object.assign({},e,{elClasses:["fc-daygrid-event","fc-daygrid-block-event","fc-h-event"],defaultTimeFormat:y,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))}}class S extends r.BaseComponent{render(){let{props:e,context:t}=this,{options:i}=t,{seg:a}=e,s=i.eventTimeFormat||y,l=r.buildSegTimeText(a,s,t,!0,e.defaultDisplayEventEnd);return n.createElement(r.EventContainer,Object.assign({},e,{elTag:"a",elClasses:["fc-daygrid-event","fc-daygrid-dot-event"],elAttrs:r.getSegAnchorAttrs(e.seg,t),defaultGenerator:b,timeText:l,isResizing:!1,isDateSelecting:!1}))}}function b(e){return n.createElement(n.Fragment,null,n.createElement("div",{className:"fc-daygrid-event-dot",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&n.createElement("div",{className:"fc-event-time"},e.timeText),n.createElement("div",{className:"fc-event-title"},e.event.title||n.createElement(n.Fragment,null," ")))}class w extends r.BaseComponent{render(){let{props:e}=this;return n.createElement(r.MoreLinkContainer,{elClasses:["fc-daygrid-more-link"],dateProfile:e.dateProfile,todayRange:e.todayRange,allDayDate:e.allDayDate,segs:e.segs,hiddenSegs:e.hiddenSegs,alignmentElRef:e.alignmentElRef,alignGridTop:e.alignGridTop,extraDateSpan:e.extraDateSpan,popoverContent:()=>{let t=(e.eventDrag?e.eventDrag.affectedInstances:null)||(e.eventResize?e.eventResize.affectedInstances:null)||{};return n.createElement(n.Fragment,null,e.segs.map(i=>{let a=i.eventRange.instance.instanceId;return n.createElement("div",{key:a,style:{visibility:t[a]?"hidden":""}},v(i)?n.createElement(S,Object.assign({seg:i,isDragging:!1,isSelected:a===e.eventSelection,defaultDisplayEventEnd:!1},r.getSegMeta(i,e.todayRange))):n.createElement(R,Object.assign({seg:i,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:a===e.eventSelection,defaultDisplayEventEnd:!1},r.getSegMeta(i,e.todayRange))))}))}})}}class E extends r.DateComponent{constructor(){super(...arguments),this.innerElRef=n.createRef(),this.headerWrapElRef=n.createRef()}render(){let{props:e,context:t}=this,{options:i,dateEnv:a}=t;const s=e.showDayNumber&&function(e,t,n){const{start:i,end:a}=t,s=r.addMs(a,-1),l=n.getYear(i),o=n.getMonth(i),d=n.getYear(s),c=n.getMonth(s);return!(l===d&&o===c)&&Boolean(e.valueOf()===i.valueOf()||1===n.getDay(e)&&e.valueOf()<a.valueOf())}(e.date,e.dateProfile.currentRange,a);return n.createElement(r.DayCellContainer,{elTag:"div",elClasses:["fc-daygrid-cell","fc-cell",null!=e.width?"":"fc-liquid","fc-flex-column",...e.extraClassNames||[]],elAttrs:Object.assign(Object.assign({},e.extraDataAttrs),{role:"gridcell"}),elStyle:{width:e.width},extraRenderProps:e.extraRenderProps,defaultGenerator:H,date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,isMonthStart:s},(a,l)=>n.createElement("div",{ref:this.innerElRef,className:["fc-daygrid-cell-inner",e.fgLiquidHeight?"fc-liquid":""].join(" ")},n.createElement("div",{ref:this.headerWrapElRef,className:"fc-flex-column"},!l.isDisabled&&(e.showDayNumber||r.hasCustomDayCellContent(i))&&n.createElement("div",{className:"fc-daygrid-cell-header"},n.createElement(a,{elTag:"a",elClasses:["fc-daygrid-cell-number",s&&"fc-daygrid-month-start"],elAttrs:r.buildNavLinkAttrs(t,e.date)}))),n.createElement("div",{className:"fc-daygrid-cell-main",style:{height:e.fgLiquidHeight?"":e.fgHeight}},e.fg),n.createElement("div",{className:"fc-daygrid-cell-footer",style:e.fgLiquidHeight?{position:"relative",top:e.fgHeight}:{}},n.createElement(w,{allDayDate:e.date,segs:e.segs,hiddenSegs:e.hiddenSegs,alignmentElRef:this.innerElRef,alignGridTop:!e.showDayNumber,extraDateSpan:e.extraDateSpan,dateProfile:e.dateProfile,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange})),e.bg))}componentDidMount(){const e=this.innerElRef.current,t=this.headerWrapElRef.current;this.detachInnerHeight=r.watchHeight(e,e=>{r.setRef(this.props.innerHeightRef,e)}),this.detachHeaderHeight=r.watchHeight(t,e=>{r.setRef(this.props.headerHeightRef,e)})}componentWillUnmount(){this.detachInnerHeight(),this.detachHeaderHeight(),r.setRef(this.props.innerHeightRef,null),r.setRef(this.props.headerHeightRef,null)}}function H(e){return e.dayNumberText||n.createElement(n.Fragment,null," ")}function x(e){return e.eventRange.instance.instanceId+":"+e.firstCol}function C(e){return x(e)+":"+e.lastCol}class D extends r.SegHierarchy{constructor(){super(...arguments),this.hiddenConsumes=!1,this.forceHidden={}}addSegs(e){const t=super.addSegs(e),{entriesByLevel:n}=this,i=e=>!this.forceHidden[r.buildEntryKey(e)];for(let e=0;e<n.length;e+=1)n[e]=n[e].filter(i);return t}handleInvalidInsertion(e,t,n){const{entriesByLevel:i,forceHidden:a}=this,{touchingEntry:s,touchingLevel:l,touchingLateral:o}=e;if(this.hiddenConsumes&&s){const e=r.buildEntryKey(s);if(!a[e])if(this.allowReslicing){const e=Object.assign(Object.assign({},s),{span:r.intersectSpans(s.span,t.span)});a[r.buildEntryKey(e)]=!0,i[l][o]=e,n.push(e),this.splitEntry(s,t,n)}else a[e]=!0,n.push(s)}super.handleInvalidInsertion(e,t,n)}}class M extends n.Component{constructor(){super(...arguments),this.rootElRef=n.createRef()}render(){const{props:e}=this;return n.createElement("div",{className:"fc-abs",style:e.style,ref:this.rootElRef},e.children)}componentDidMount(){const e=this.rootElRef.current;this.detachHeight=r.watchHeight(e,e=>{r.setRef(this.props.heightRef,e)})}componentWillUnmount(){this.detachHeight()}}const W=r.createFormatter({week:"narrow"});class k extends r.BaseComponent{constructor(){super(...arguments),this.cellInnerHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleInnerHeights)}),this.cellHeaderHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleHeaderHeights)}),this.segHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleSegHeights)}),this.handleRootEl=e=>{this.rootEl=e,r.setRef(this.props.rootElRef,e)},this.handleHeaderHeights=()=>{const e=this.cellHeaderHeightRefMap.current;let t=0;for(const r of e.values())t=Math.max(t,r);this.state.headerHeight!==t&&this.setState({headerHeight:t})},this.handleInnerHeights=()=>{const{props:e}=this,t=!0===e.dayMaxEvents||!0===e.dayMaxEventRows,n=this.cellInnerHeightRefMap.current;let i=0;for(const e of n.values())i=Math.max(i,e);t?this.state.innerHeight!==i&&this.setState({innerHeight:i}):r.setRef(e.innerHeightRef,i)},this.handleSegHeights=()=>{this.setState({segHeightRev:this.segHeightRefMap.rev})}}render(){const{props:e,state:t,context:i,cellInnerHeightRefMap:a,cellHeaderHeightRefMap:s}=this,{cells:l}=e,{options:o}=i,d=e.cells[0].date,c=e.cells.length,g=!0===e.dayMaxEvents||!0===e.dayMaxEventRows,h=r.sortEventSegs(e.fgEventSegs,o.eventOrder),f=m(h,c),u=m(e.bgEventSegs,c),p=m(e.businessHourSegs,c),y=m(this.getHighlightSegs(),c),v=m(this.getMirrorSegs(),c),[R,S,b]=function(e,t,r,n,i,a,s,l){const o=r.length,d=[],c=[];for(let e=0;e<o;e++)d.push([]),c.push(0);const g=e.map((e,t)=>({index:t,seg:e,span:{start:e.firstCol,end:e.lastCol+1}}));let h=new D(r=>t.get(C(e[r.index])));h.allowReslicing=!1,h.strictOrder=a,!0===s||!0===l?(h.maxCoord=i,h.hiddenConsumes=!0):"number"==typeof s?h.maxStackCnt=s:"number"==typeof l&&(h.maxStackCnt=l,h.hiddenConsumes=!0);const f=h.addSegs(g),u=h.toRects(),p={};for(const t of u){p[x(e[t.index])]=n+t.levelCoord;let{start:r,end:i}=t.span;for(;r<i;r++)c[r]=Math.max(c[r],t.levelCoord+t.thickness)}for(const t of f){const{span:r}=t,n=e[t.index];for(let e=r.start;e<r.end;e++)d[e].push(n)}return[p,c,d]}(h,this.segHeightRefMap.current,l,t.headerHeight,g&&null!=t.innerHeight&&null!=t.headerHeight?t.innerHeight-t.headerHeight:void 0,o.eventOrderStrict,e.dayMaxEvents,e.dayMaxEventRows),w=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{};return n.createElement("div",{role:e.cellGroup?void 0:"row",className:["fc-daygrid-row",e.forceVSpacing?"fc-daygrid-row-spacious":e.compact?"fc-daygrid-row-compact":"",e.cellGroup?"fc-flex-row":"fc-row","fc-rel",e.className||""].join(" "),style:{minHeight:e.minHeight},ref:this.handleRootEl},e.cells.map((t,r)=>{const i=this.renderFgSegs(f[r],R,e.todayRange,w),l=this.renderFgSegs(v[r],R,e.todayRange,{},Boolean(e.eventDrag),Boolean(e.eventResize),!1);return n.createElement(E,{key:t.key,dateProfile:e.dateProfile,todayRange:e.todayRange,date:t.date,showDayNumber:e.showDayNumbers,segs:f[r],hiddenSegs:b[r],fgLiquidHeight:g,fg:n.createElement(n.Fragment,null,n.createElement(n.Fragment,null,i),n.createElement(n.Fragment,null,l)),bg:n.createElement(n.Fragment,null,this.renderFillSegs(y[r],"highlight"),this.renderFillSegs(p[r],"non-business"),this.renderFillSegs(u[r],"bg-event")),eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,extraRenderProps:t.extraRenderProps,extraDateSpan:t.extraDateSpan,extraDataAttrs:t.extraDataAttrs,extraClassNames:t.extraClassNames,fgHeight:S[r],width:e.colWidth,innerHeightRef:a.createRef(t.key),headerHeightRef:s.createRef(t.key)})}),e.showWeekNumbers&&n.createElement(r.WeekNumberContainer,{elTag:"a",elClasses:["fc-daygrid-week-number"],elAttrs:r.buildNavLinkAttrs(i,d,"week"),date:d,defaultFormat:W}))}renderFgSegs(e,t,i,a,s,l,o){const{props:c,context:g,segHeightRefMap:h}=this,{isRtl:f}=g,{colWidth:u,eventSelection:p}=c,m=c.cells.length,y=1===c.cells.length,b=s||l||o,w=[];for(const c of e){const{left:e,right:g,width:E}=d(c,u,m,f),{instanceId:H}=c.eventRange.instance,D=C(c),W=t[x(c)],k=!c.isStandin&&null!=W&&!a[H];w.push(n.createElement(M,{key:D,style:{visibility:k?"":"hidden",top:W,left:e,right:g,width:E},heightRef:b||c.isStandin?null:h.createRef(D)},v(c)?n.createElement(S,Object.assign({seg:c,isDragging:s,isSelected:H===p,defaultDisplayEventEnd:y},r.getSegMeta(c,i))):n.createElement(R,Object.assign({seg:c,isDragging:s,isResizing:l,isDateSelecting:o,isSelected:H===p,defaultDisplayEventEnd:y},r.getSegMeta(c,i)))))}return w}renderFillSegs(e,t){const{props:i,context:a}=this,{isRtl:s}=a,{todayRange:l,colWidth:o}=i,c=i.cells.length,g=[];for(const i of e){const{left:e,right:a,width:h}=d(i,o,c,s),f=!i.isStandin;g.push(n.createElement("div",{key:r.buildEventRangeKey(i.eventRange),className:"fc-fill-y",style:{visibility:f?"":"hidden",left:e,right:a,width:h}},"bg-event"===t?n.createElement(r.BgEvent,Object.assign({seg:i},r.getSegMeta(i,l))):r.renderFill(t)))}return n.createElement(n.Fragment,{},...g)}componentDidMount(){const{rootEl:e}=this;this.disconnectHeight=r.watchHeight(e,e=>{r.setRef(this.props.heightRef,e)})}componentWillUnmount(){this.disconnectHeight(),r.setRef(this.props.heightRef,null),r.setRef(this.props.innerHeightRef,null)}getMirrorSegs(){let{props:e}=this;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]}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}}class N extends r.DateComponent{constructor(){super(...arguments),this.splitBusinessHourSegs=r.memoize(u),this.splitBgEventSegs=r.memoize(u),this.splitFgEventSegs=r.memoize(u),this.splitDateSelectionSegs=r.memoize(u),this.splitEventDrag=r.memoize(p),this.splitEventResize=r.memoize(p),this.rowHeightRefMap=new r.RefMap((e,t)=>{const{rowHeightRefMap:r}=this.props;r&&r.handleValue(e,t)}),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,state:t,context:i,rowHeightRefMap:a}=this,{options:s}=i,l=e.cellRows.length,o=this.splitFgEventSegs(e.fgEventSegs,l),d=this.splitBgEventSegs(e.bgEventSegs,l),c=this.splitBusinessHourSegs(e.businessHourSegs,l),g=this.splitDateSelectionSegs(e.dateSelectionSegs,l),h=this.splitEventDrag(e.eventDrag,l),f=this.splitEventResize(e.eventResize,l),u=r.getIsHeightAuto(s),p=null!=t.width&&(l>=7||u)?t.width/i.options.aspectRatio/6:null;return n.createElement("div",{className:"fc-grow fc-flex-column",style:{width:e.width},ref:this.handleRootEl},e.cellRows.map((r,i)=>n.createElement(k,{key:r[0].key,dateProfile:e.dateProfile,todayRange:e.todayRange,cells:r,showDayNumbers:l>1,showWeekNumbers:s.weekNumbers,forPrint:e.forPrint,compact:null!=t.width&&t.width/r.length<80,className:u?"":"fc-grow fc-basis0",fgEventSegs:o[i],bgEventSegs:d[i].filter(P),businessHourSegs:c[i],dateSelectionSegs:g[i],eventSelection:e.eventSelection,eventDrag:h[i],eventResize:f[i],dayMaxEvents:s.dayMaxEvents,dayMaxEventRows:s.dayMaxEventRows,colWidth:e.colWidth,minHeight:p,heightRef:a.createRef(r[0].key)})))}componentDidMount(){this.unwatchWidth=r.watchWidth(this.rootEl,e=>{this.setState({width:e})})}componentWillUnmount(){this.unwatchWidth()}queryHit(e,t,n){const{props:i,context:a}=this,s=i.cellRows[0].length,{col:l,left:o,right:d}=c(e,n,i.colWidth,s,a.isRtl),{row:f,top:u,bottom:p}=function(e,t,r){let n=0,i=0,a=0;for(const s of t){const t=s[0].key;if(i=a,a=i+r.get(t),e<a)break;n++}return{row:n,top:i,bottom:a}}(t,i.cellRows,this.rowHeightRefMap.current),m=i.cellRows[f][l],y=m.date,v=r.addDays(y,1);return{dateProfile:i.dateProfile,dateSpan:Object.assign({range:{start:y,end:v},allDay:!0},m.extraDateSpan),dayEl:h(g(this.rootEl,f),l),rect:{left:o,right:d,top:u,bottom:p},layer:0}}}function P(e){return e.eventRange.def.allDay}class z extends r.BaseComponent{render(){const{props:e}=this;return n.createElement("div",{role:e.cellGroup?void 0:"row",className:[e.cellGroup?"fc-flex-row":"fc-row",e.className||""].join(" ")},e.cells.map(t=>n.createElement(n.Fragment,{key:e.getHeaderModelKey(t)},e.renderHeaderContent(t,e.tierNum,void 0,e.colWidth))))}}function T(e){return n.createElement("div",{className:["fc-rowgroup","fc-content-box",...e.extraClassNames||[]].join(" "),style:{width:e.width,paddingLeft:e.paddingLeft,paddingRight:e.paddingRight}},e.headerTiers.map((t,r)=>n.createElement(z,{key:r,tierNum:r,cells:t,renderHeaderContent:e.renderHeaderContent,getHeaderModelKey:e.getHeaderModelKey,colWidth:e.colWidth})))}class F extends r.BaseComponent{constructor(){super(...arguments),this.handleScroller=e=>{r.setRef(this.props.scrollerRef,e)},this.handleLeftScrollbarWidth=e=>{this.setState({leftScrollbarWidth:e})},this.handleRightScrollbarWidth=e=>{this.setState({rightScrollbarWidth:e})}}render(){const{props:e,state:t,context:i}=this,{options:a}=i,s=!e.forPrint&&!r.getIsHeightAuto(a),l=!e.forPrint&&r.getStickyHeaderDates(a);return n.createElement(n.Fragment,null,a.dayHeaders&&n.createElement(T,{headerTiers:e.headerTiers,renderHeaderContent:e.renderHeaderContent,getHeaderModelKey:e.getHeaderModelKey,extraClassNames:["fc-daygrid-header",l?"fc-sticky-header":""],paddingLeft:t.leftScrollbarWidth,paddingRight:t.rightScrollbarWidth}),n.createElement(r.Scroller,{vertical:s,leftScrollbarWidthRef:this.handleLeftScrollbarWidth,rightScrollbarWidthRef:this.handleRightScrollbarWidth,elClassNames:["fc-daygrid-body","fc-rowgroup","fc-flex-column",s?"fc-liquid":""],ref:this.handleScroller},n.createElement(N,{dateProfile:e.dateProfile,todayRange:e.todayRange,cellRows:e.cellRows,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed,fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,rowHeightRefMap:e.rowHeightRefMap})))}}class O extends r.BaseComponent{constructor(){super(...arguments),this.headerScrollerRef=n.createRef(),this.bodyScrollerRef=n.createRef(),this.footerScrollerRef=n.createRef(),this.handleWidth=e=>{this.setState({width:e})},this.handleLeftScrollbarWidth=e=>{this.setState({leftScrollbarWidth:e})},this.handleRightScrollbarWidth=e=>{this.setState({rightScrollbarWidth:e})}}render(){const{props:e,state:t,context:i}=this,{options:a}=i,s=!e.forPrint&&!r.getIsHeightAuto(a),o=!e.forPrint&&r.getStickyHeaderDates(a),d=!e.forPrint&&r.getStickyFooterScrollbar(a),c=e.cellRows[0].length,[g,h]=l(c,e.dayMinWidth,t.width);return n.createElement(n.Fragment,null,a.dayHeaders&&n.createElement(r.Scroller,{horizontal:!0,hideScrollbars:!0,elClassNames:["fc-daygrid-header","fc-rowgroup",o?"fc-sticky-header":""],ref:this.headerScrollerRef},n.createElement(T,{headerTiers:e.headerTiers,renderHeaderContent:e.renderHeaderContent,getHeaderModelKey:e.getHeaderModelKey,colWidth:h,width:g,paddingLeft:t.leftScrollbarWidth,paddingRight:t.rightScrollbarWidth})),n.createElement(r.Scroller,{vertical:s,horizontal:!0,hideScrollbars:d,widthRef:this.handleWidth,leftScrollbarWidthRef:this.handleLeftScrollbarWidth,rightScrollbarWidthRef:this.handleRightScrollbarWidth,elClassNames:["fc-daygrid-body","fc-rowgroup","fc-flex-column",s?"fc-liquid":""],ref:this.bodyScrollerRef},n.createElement(N,{dateProfile:e.dateProfile,todayRange:e.todayRange,cellRows:e.cellRows,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed,fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,colWidth:h,width:g,rowHeightRefMap:e.rowHeightRefMap})),Boolean(d)&&n.createElement(r.Scroller,{ref:this.footerScrollerRef,horizontal:!0,elClassNames:["fc-sticky-footer"],elStyle:{marginTop:"-1px"}},n.createElement("div",{style:{width:g,height:"1px"}})))}componentDidMount(){const e=r.getScrollerSyncerClass(this.context.pluginHooks);this.syncedScroller=new e(!0),r.setRef(this.props.scrollerRef,this.syncedScroller),this.updateSyncedScroller()}componentDidUpdate(){this.updateSyncedScroller()}componentWillUnmount(){this.syncedScroller.destroy()}updateSyncedScroller(){const{isRtl:e}=this.context;this.syncedScroller.handleChildren([this.headerScrollerRef.current,this.bodyScrollerRef.current,this.footerScrollerRef.current],e)}}class I extends r.BaseComponent{constructor(){super(...arguments),this.scrollerRef=n.createRef(),this.rowHeightRefMap=new r.RefMap,this.timeScrollResponder=new r.ScrollResponder(e=>{const t=this.rowHeightRefMap.current,r=this.scrollerRef.current,n=function(e,t,r){let n=0;for(const i of t){const t=i[0].date,a=i[i.length-1].date,s=t.toISOString();if(e>=t&&e<=a)return n;const l=r.get(s);if(null==l)return;n+=l}return n}(this.props.dateProfile.currentDate,this.props.cellRows,t);return null!=n&&(r.scrollTo({y:n}),!0)})}render(){const{props:e,context:t}=this,{options:i}=t,a=Object.assign(Object.assign({},e),{scrollerRef:this.scrollerRef,rowHeightRefMap:this.rowHeightRefMap});return n.createElement(r.ViewContainer,{viewSpec:t.viewSpec,elClasses:[e.className,"fc-flex-column","fc-border"]},i.dayMinWidth?n.createElement(O,Object.assign({},a,{dayMinWidth:i.dayMinWidth})):n.createElement(F,Object.assign({},a)))}componentDidMount(){const{context:e}=this,{options:t}=e;e.emitter.on("_timeScrollRequest",this.timeScrollResponder.handleScroll),this.timeScrollResponder.handleScroll(t.scrollTime)}componentDidUpdate(e){const{options:t}=this.context;e.dateProfile!==this.props.dateProfile&&t.scrollTimeReset?this.timeScrollResponder.handleScroll(t.scrollTime):this.timeScrollResponder.drain()}componentWillUnmount(){this.context.emitter.off("_timeScrollRequest",this.timeScrollResponder.handleScroll)}}const j=r.createFormatter({weekday:"long"});class G extends r.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{dateEnv:i,theme:s,viewApi:l,options:o}=t,d=r.addDays(new Date(2592e5),e.dow),c={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},g=i.format(d,e.dayHeaderFormat),h=Object.assign(Object.assign(Object.assign(Object.assign({date:d},c),{view:l}),e.extraRenderProps),{text:g});return n.createElement(r.ContentContainer,{elTag:"div",elClasses:[...r.getDayClassNames(c,s),...e.extraClassNames||[],"fc-header-cell","fc-cell",null!=e.colWidth?"":"fc-liquid","fc-flex-column","fc-align-center"],elAttrs:e.extraDataAttrs,elStyle:{width:null!=e.colWidth?e.colWidth*(e.colSpan||1):void 0},renderProps:h,generatorName:"dayHeaderContent",customGenerator:o.dayHeaderContent,defaultGenerator:a,classNameGenerator:o.dayHeaderClassNames,didMount:o.dayHeaderDidMount,willUnmount:o.dayHeaderWillUnmount},t=>n.createElement("div",{ref:this.innerElRef,className:["fc-flex-column",e.isSticky?"fc-sticky-x":""].join(" ")},n.createElement(t,{elTag:"a",elClasses:["fc-cell-inner","fc-padding-sm"],elAttrs:{"aria-label":i.format(d,j)}})))}componentDidMount(){const e=this.innerElRef.current;this.disconectInnerHeight=r.watchHeight(e,e=>{r.setRef(this.props.innerHeightRef,e)})}componentWillUnmount(){this.disconectInnerHeight()}}function A(e,t,n){return e||function(e,t){if(!e||t>10)return r.createFormatter({weekday:"short"});if(t>1)return r.createFormatter({weekday:"short",month:"numeric",day:"numeric",omitCommas:!0});return r.createFormatter({weekday:"long"})}(t,n)}class L extends r.BaseComponent{constructor(){super(...arguments),this.buildDayTableModel=r.memoize(s),this.buildHeaderTiers=r.memoize(o),this.createDayHeaderFormatter=r.memoize(A),this.slicer=new i}render(){const{props:e,context:t}=this,{options:i}=t,a=this.buildDayTableModel(e.dateProfile,t.dateProfileGenerator),s=1===a.rowCnt,l=this.buildHeaderTiers(a.headerDates,s),o=this.slicer.sliceProps(e,e.dateProfile,i.nextDayThreshold,t,a),d=this.createDayHeaderFormatter(t.options.dayHeaderFormat,s,a.colCnt);return n.createElement(r.NowTimer,{unit:"day"},(t,r)=>n.createElement(I,{dateProfile:e.dateProfile,todayRange:r,cellRows:a.cellRows,forPrint:e.forPrint,className:"fc-daygrid-view",headerTiers:l,renderHeaderContent:(t,i,s,l)=>t.date?n.createElement(f,Object.assign({},t,{dateProfile:e.dateProfile,todayRange:r,navLink:a.colCnt>1,dayHeaderFormat:d,colSpan:t.colSpan,colWidth:l})):n.createElement(G,Object.assign({},t,{dayHeaderFormat:d,colSpan:t.colSpan,colWidth:l})),getHeaderModelKey:e=>e.date?e.date.toUTCString():e.dow,fgEventSegs:o.fgEventSegs,bgEventSegs:o.bgEventSegs,businessHourSegs:o.businessHourSegs,dateSelectionSegs:o.dateSelectionSegs,eventDrag:o.eventDrag,eventResize:o.eventResize,eventSelection:o.eventSelection}))}}class B extends r.DateProfileGenerator{buildRenderRange(e,t,r){let n=super.buildRenderRange(e,t,r),{props:i}=this;return U({currentRange:n,snapToWeek:/^(year|month)$/.test(t),fixedWeekCount:i.fixedWeekCount,dateEnv:i.dateEnv})}}function U(e){let t,{dateEnv:n,currentRange:i}=e,{start:a,end:s}=i;if(e.snapToWeek&&(a=n.startOfWeek(a),t=n.startOfWeek(s),t.valueOf()!==s.valueOf()&&(s=r.addWeeks(t,1))),e.fixedWeekCount){let e=n.startOfWeek(n.startOfMonth(r.addDays(i.end,-1))),t=Math.ceil(r.diffWeeks(e,s));s=r.addWeeks(s,6-t)}return{start:a,end:s}}r.injectStyles(":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc-daygrid-cell.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-daygrid-row-spacious .fc-daygrid-cell-inner{min-height:3em}.fc-daygrid-cell-header{display:flex;flex-direction:row-reverse}.fc-day-other .fc-daygrid-cell-header{opacity:.3}.fc-daygrid-cell-number{padding:4px;position:relative;z-index:4}.fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc-daygrid-cell-footer{align-items:flex-start;display:flex;flex-direction:column;font-size:.85em;margin:0 2px}.fc-daygrid-row-spacious .fc-daygrid-cell-footer{margin-bottom:1em!important}.fc-daygrid-row-compact .fc-daygrid-cell-footer{align-items:stretch}.fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc-daygrid-row-compact .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);padding:1px}.fc-daygrid-cell .fc-non-business{z-index:1}.fc-daygrid-cell .fc-bg-event{z-index:2}.fc-daygrid-cell .fc-highlight{z-index:3}.fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);margin-top:1px;z-index:6}.fc-daygrid-event.fc-event-mirror{z-index:7}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;direction:row;display:flex;padding:2px 0;position:relative}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-daygrid-dot-event .fc-event-time,.fc-daygrid-dot-event .fc-event-title{overflow:hidden;white-space:nowrap}.fc-daygrid-dot-event .fc-event-title{flex-basis:0;flex-grow:1;font-weight:700;min-width:0}");var q=t.createPlugin({name:"@fullcalendar/daygrid",initialView:"dayGridMonth",views:{dayGrid:{component:L,dateProfileGeneratorClass:B},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},fixedWeekCount:!0},dayGridYear:{type:"dayGrid",duration:{years:1}}}});class K extends r.BaseComponent{constructor(){super(...arguments),this.innerHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleInnerHeights)}),this.handleInnerHeights=()=>{const e=this.innerHeightRefMap.current;let t=0;for(const r of e.values())t=Math.max(t,r);this.currentInnerHeight!==t&&(this.currentInnerHeight=t,r.setRef(this.props.innerHeightRef,t))}}render(){const{props:e}=this;return n.createElement("div",{role:"row",className:"fc-row",style:{height:e.height}},e.cells.map(t=>{const r=e.getHeaderModelKey(t);return n.createElement(n.Fragment,{key:e.getHeaderModelKey(t)},e.renderHeaderContent(t,e.tierNum,this.innerHeightRefMap.createRef(r),e.colWidth))}))}}var _={__proto__:null,DayTableSlicer:i,TableDateProfileGenerator:B,buildDayTableRenderRange:U,DayGridView:L,DateHeaderCell:f,DayOfWeekHeaderCell:G,HeaderRow:z,HeaderRowAdvanced:K,createDayHeaderFormatter:A,DayGridLayout:I,DayGridRow:k,COMPACT_CELL_WIDTH:80,DayGridRows:N,buildDayTableModel:s,computeColWidth:l,computeColFromPosition:c,getRowEl:g,getCellEl:h};return t.globalPlugins.push(q),e.Internal=_,e.default=q,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,FullCalendar.Internal,FullCalendar.Preact);
|
|
6
|
+
FullCalendar.DayGrid=function(e,t,r,n){"use strict";class i extends r.Slicer{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(e,t){return t.sliceRange(e)}}function a(e){return e.text}function s(e,t){let n=new r.DaySeriesModel(e.renderRange,t);return new r.DayTableModel(n,/year|month|week/.test(e.currentRangeUnit))}function l(e,t,r){if(null==r)return[void 0,void 0];return r/e<t?[t*e,t]:[r,void 0]}function o(e,t){return[t?e.map(e=>({colSpan:1,date:e})):e.map(e=>({colSpan:1,dow:e.getUTCDay()}))]}function d(e,t,n,i){let a,s,l;if(null!=t)l=(e.lastCol-e.firstCol+1)*t,i?s=e.firstCol*t:a=e.firstCol*t;else{const t=1/n;l=r.fracToCssDim((e.lastCol-e.firstCol+1)*t),i?s=r.fracToCssDim(e.firstCol*t):a=r.fracToCssDim(e.firstCol*t)}return{left:a,right:s,width:l}}function c(e,t,r,n,i){const a=null!=r?r:t/n,s=Math.floor(e/a),l=s*a;return{col:i?n-s-1:s,left:l,right:l+a}}function h(e,t){return e.querySelectorAll(":scope > [role=row]")[t]}function g(e,t){return e.querySelectorAll(":scope > [role=gridcell]")[t]}class f extends r.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{dateProfile:i,date:s,extraRenderProps:l,extraDataAttrs:o}=e,{dateEnv:d,options:c,theme:h,viewApi:g}=t,f=r.getDateMeta(s,e.todayRange,null,i),u=d.format(s,e.dayHeaderFormat),p=!f.isDisabled&&e.navLink?r.buildNavLinkAttrs(t,s):{},m=Object.assign(Object.assign(Object.assign({date:d.toDate(s),view:g},l),{text:u}),f);return n.createElement(r.ContentContainer,{elTag:"div",elClasses:[...r.getDayClassNames(f,h),...e.extraClassNames||[],"fc-header-cell","fc-cell",null!=e.colWidth?"":"fc-liquid","fc-flex-column","fc-align-center"],elAttrs:Object.assign({"data-date":f.isDisabled?void 0:r.formatDayString(s)},o),elStyle:{width:null!=e.colWidth?e.colWidth*(e.colSpan||1):void 0},renderProps:m,generatorName:"dayHeaderContent",customGenerator:c.dayHeaderContent,defaultGenerator:a,classNameGenerator:c.dayHeaderClassNames,didMount:c.dayHeaderDidMount,willUnmount:c.dayHeaderWillUnmount},t=>n.createElement("div",{ref:this.innerElRef,className:["fc-flex-column",e.isSticky?"fc-sticky-x":""].join(" ")},!f.isDisabled&&n.createElement(t,{elTag:"a",elAttrs:p,elClasses:["fc-cell-inner","fc-padding-sm"]})))}componentDidMount(){const e=this.innerElRef.current;this.disconectInnerHeight=r.watchHeight(e,e=>{r.setRef(this.props.innerHeightRef,e)})}componentWillUnmount(){this.disconectInnerHeight(),r.setRef(this.props.innerHeightRef,null)}}function u(e,t){const r=[];for(let e=0;e<t;e++)r[e]=[];for(const t of e)r[t.row].push(t);return r}function p(e,t){const r=[];if(e){for(let n=0;n<t;n++)r[n]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(const t of e.segs)r[t.row].segs.push(t)}else for(let e=0;e<t;e++)r[e]=null;return r}function m(e,t){let r=[];for(let e=0;e<t;e++)r.push([]);for(let t of e)for(let e=t.firstCol;e<=t.lastCol;e++)t.firstCol!==e&&(t=Object.assign(Object.assign({},t),{firstCol:e,lastCol:e,isStart:!1,isEnd:t.isEnd&&t.lastCol===e,isStandin:!0})),r[e].push(t);return r}const y=r.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function v(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 R extends r.BaseComponent{render(){let{props:e}=this;return n.createElement(r.StandardEvent,Object.assign({},e,{elClasses:["fc-daygrid-event","fc-daygrid-block-event","fc-h-event"],defaultTimeFormat:y,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.eventRange.def.allDay}))}}class S extends r.BaseComponent{render(){let{props:e,context:t}=this,{options:i}=t,{eventRange:a}=e,s=i.eventTimeFormat||y,l=r.buildEventRangeTimeText(a,s,t,!0,e.defaultDisplayEventEnd);return n.createElement(r.EventContainer,Object.assign({},e,{elTag:"a",elClasses:["fc-daygrid-event","fc-daygrid-dot-event"],elAttrs:r.getEventRangeAnchorAttrs(a,t),defaultGenerator:E,timeText:l,isResizing:!1,isDateSelecting:!1}))}}function E(e){return n.createElement(n.Fragment,null,n.createElement("div",{className:"fc-daygrid-event-dot",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&n.createElement("div",{className:"fc-event-time"},e.timeText),n.createElement("div",{className:"fc-event-title"},e.event.title||n.createElement(n.Fragment,null," ")))}class b extends r.BaseComponent{render(){let{props:e}=this;return n.createElement(r.MoreLinkContainer,{elClasses:["fc-daygrid-more-link"],dateProfile:e.dateProfile,todayRange:e.todayRange,allDayDate:e.allDayDate,segs:e.segs,hiddenSegs:e.hiddenSegs,alignmentElRef:e.alignmentElRef,alignGridTop:e.alignGridTop,extraDateSpan:e.extraDateSpan,popoverContent:()=>{let t=(e.eventDrag?e.eventDrag.affectedInstances:null)||(e.eventResize?e.eventResize.affectedInstances:null)||{};return n.createElement(n.Fragment,null,e.segs.map(i=>{let{eventRange:a}=i,s=a.instance.instanceId;return n.createElement("div",{key:s,style:{visibility:t[s]?"hidden":""}},v(i)?n.createElement(S,Object.assign({eventRange:a,isStart:i.isStart,isEnd:i.isEnd,isDragging:!1,isSelected:s===e.eventSelection,defaultDisplayEventEnd:!1},r.getEventRangeMeta(a,e.todayRange))):n.createElement(R,Object.assign({eventRange:a,isStart:i.isStart,isEnd:i.isEnd,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:s===e.eventSelection,defaultDisplayEventEnd:!1},r.getEventRangeMeta(a,e.todayRange))))}))}})}}class w extends r.DateComponent{constructor(){super(...arguments),this.innerElRef=n.createRef(),this.headerWrapElRef=n.createRef()}render(){let{props:e,context:t}=this,{options:i,dateEnv:a}=t;const s=e.showDayNumber&&function(e,t,n){const{start:i,end:a}=t,s=r.addMs(a,-1),l=n.getYear(i),o=n.getMonth(i),d=n.getYear(s),c=n.getMonth(s);return!(l===d&&o===c)&&Boolean(e.valueOf()===i.valueOf()||1===n.getDay(e)&&e.valueOf()<a.valueOf())}(e.date,e.dateProfile.currentRange,a);return n.createElement(r.DayCellContainer,{elTag:"div",elClasses:["fc-daygrid-cell","fc-cell",null!=e.width?"":"fc-liquid","fc-flex-column",...e.extraClassNames||[]],elAttrs:Object.assign(Object.assign({},e.extraDataAttrs),{role:"gridcell"}),elStyle:{width:e.width},extraRenderProps:e.extraRenderProps,defaultGenerator:H,date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,isMonthStart:s},(a,l)=>n.createElement("div",{ref:this.innerElRef,className:["fc-daygrid-cell-inner",e.fgLiquidHeight?"fc-liquid":""].join(" ")},n.createElement("div",{ref:this.headerWrapElRef,className:"fc-flex-column"},!l.isDisabled&&(e.showDayNumber||r.hasCustomDayCellContent(i))&&n.createElement("div",{className:"fc-daygrid-cell-header"},n.createElement(a,{elTag:"a",elClasses:["fc-daygrid-cell-number",s&&"fc-daygrid-month-start"],elAttrs:r.buildNavLinkAttrs(t,e.date)}))),n.createElement("div",{className:"fc-daygrid-cell-main",style:{height:e.fgLiquidHeight?"":e.fgHeight}},e.fg),n.createElement("div",{className:"fc-daygrid-cell-footer",style:e.fgLiquidHeight?{position:"relative",top:e.fgHeight}:{}},n.createElement(b,{allDayDate:e.date,segs:e.segs,hiddenSegs:e.hiddenSegs,alignmentElRef:this.innerElRef,alignGridTop:!e.showDayNumber,extraDateSpan:e.extraDateSpan,dateProfile:e.dateProfile,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange})),e.bg))}componentDidMount(){const e=this.innerElRef.current,t=this.headerWrapElRef.current;this.detachInnerHeight=r.watchHeight(e,e=>{r.setRef(this.props.innerHeightRef,e)}),this.detachHeaderHeight=r.watchHeight(t,e=>{r.setRef(this.props.headerHeightRef,e)})}componentWillUnmount(){this.detachInnerHeight(),this.detachHeaderHeight(),r.setRef(this.props.innerHeightRef,null),r.setRef(this.props.headerHeightRef,null)}}function H(e){return e.dayNumberText||n.createElement(n.Fragment,null," ")}function x(e){return e.eventRange.instance.instanceId+":"+e.firstCol}function C(e){return x(e)+":"+e.lastCol}class D extends r.SegHierarchy{constructor(){super(...arguments),this.hiddenConsumes=!1,this.forceHidden={}}addSegs(e){const t=super.addSegs(e),{entriesByLevel:n}=this,i=e=>!this.forceHidden[r.buildEntryKey(e)];for(let e=0;e<n.length;e+=1)n[e]=n[e].filter(i);return t}handleInvalidInsertion(e,t,n){const{entriesByLevel:i,forceHidden:a}=this,{touchingEntry:s,touchingLevel:l,touchingLateral:o}=e;if(this.hiddenConsumes&&s){const e=r.buildEntryKey(s);if(!a[e])if(this.allowReslicing){const e=Object.assign(Object.assign({},s),{span:r.intersectSpans(s.span,t.span)});a[r.buildEntryKey(e)]=!0,i[l][o]=e,n.push(e),this.splitEntry(s,t,n)}else a[e]=!0,n.push(s)}super.handleInvalidInsertion(e,t,n)}}class M extends n.Component{constructor(){super(...arguments),this.rootElRef=n.createRef()}render(){const{props:e}=this;return n.createElement("div",{className:"fc-abs",style:e.style,ref:this.rootElRef},e.children)}componentDidMount(){const e=this.rootElRef.current;this.detachHeight=r.watchHeight(e,e=>{r.setRef(this.props.heightRef,e)})}componentWillUnmount(){this.detachHeight(),r.setRef(this.props.heightRef,null)}}const W=r.createFormatter({week:"narrow"});class k extends r.BaseComponent{constructor(){super(...arguments),this.cellInnerHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleInnerHeights)}),this.cellHeaderHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleHeaderHeights)}),this.segHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleSegHeights)}),this.handleRootEl=e=>{this.rootEl=e,r.setRef(this.props.rootElRef,e)},this.handleHeaderHeights=()=>{const e=this.cellHeaderHeightRefMap.current;let t=0;for(const r of e.values())t=Math.max(t,r);this.state.headerHeight!==t&&this.setState({headerHeight:t})},this.handleInnerHeights=()=>{const{props:e}=this,t=!0===e.dayMaxEvents||!0===e.dayMaxEventRows,n=this.cellInnerHeightRefMap.current;let i=0;for(const e of n.values())i=Math.max(i,e);t?this.state.innerHeight!==i&&this.setState({innerHeight:i}):r.setRef(e.innerHeightRef,i)},this.handleSegHeights=()=>{this.setState({segHeightRev:this.segHeightRefMap.rev})}}render(){const{props:e,state:t,context:i,cellInnerHeightRefMap:a,cellHeaderHeightRefMap:s}=this,{cells:l}=e,{options:o}=i,d=e.cells[0].date,c=e.cells.length,h=!0===e.dayMaxEvents||!0===e.dayMaxEventRows,g=r.sortEventSegs(e.fgEventSegs,o.eventOrder),f=m(g,c),u=m(e.bgEventSegs,c),p=m(e.businessHourSegs,c),y=m(this.getHighlightSegs(),c),v=m(this.getMirrorSegs(),c),[R,S,E]=function(e,t,r,n,i,a,s,l){const o=r.length,d=[],c=[];for(let e=0;e<o;e++)d.push([]),c.push(0);const h=e.map((e,t)=>({index:t,seg:e,span:{start:e.firstCol,end:e.lastCol+1}}));let g=new D(r=>t.get(C(e[r.index])));g.allowReslicing=!1,g.strictOrder=a,!0===s||!0===l?(g.maxCoord=i,g.hiddenConsumes=!0):"number"==typeof s?g.maxStackCnt=s:"number"==typeof l&&(g.maxStackCnt=l,g.hiddenConsumes=!0);const f=g.addSegs(h),u=g.toRects(),p={};for(const t of u){p[x(e[t.index])]=n+t.levelCoord;let{start:r,end:i}=t.span;for(;r<i;r++)c[r]=Math.max(c[r],t.levelCoord+t.thickness)}for(const t of f){const{span:r}=t,n=e[t.index];for(let e=r.start;e<r.end;e++)d[e].push(n)}return[p,c,d]}(g,this.segHeightRefMap.current,l,t.headerHeight,h&&null!=t.innerHeight&&null!=t.headerHeight?t.innerHeight-t.headerHeight:void 0,o.eventOrderStrict,e.dayMaxEvents,e.dayMaxEventRows),b=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{};return n.createElement("div",{role:e.cellGroup?void 0:"row",className:["fc-daygrid-row",e.forceVSpacing?"fc-daygrid-row-spacious":e.compact?"fc-daygrid-row-compact":"",e.cellGroup?"fc-flex-row":"fc-row","fc-rel",e.className||""].join(" "),style:{minHeight:e.minHeight},ref:this.handleRootEl},e.cells.map((t,r)=>{const i=this.renderFgSegs(f[r],R,e.todayRange,b),l=this.renderFgSegs(v[r],R,e.todayRange,{},Boolean(e.eventDrag),Boolean(e.eventResize),!1);return n.createElement(w,{key:t.key,dateProfile:e.dateProfile,todayRange:e.todayRange,date:t.date,showDayNumber:e.showDayNumbers,segs:f[r],hiddenSegs:E[r],fgLiquidHeight:h,fg:n.createElement(n.Fragment,null,n.createElement(n.Fragment,null,i),n.createElement(n.Fragment,null,l)),bg:n.createElement(n.Fragment,null,this.renderFillSegs(y[r],"highlight"),this.renderFillSegs(p[r],"non-business"),this.renderFillSegs(u[r],"bg-event")),eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,extraRenderProps:t.extraRenderProps,extraDateSpan:t.extraDateSpan,extraDataAttrs:t.extraDataAttrs,extraClassNames:t.extraClassNames,fgHeight:S[r],width:e.colWidth,innerHeightRef:a.createRef(t.key),headerHeightRef:s.createRef(t.key)})}),e.showWeekNumbers&&n.createElement(r.WeekNumberContainer,{elTag:"a",elClasses:["fc-daygrid-week-number"],elAttrs:r.buildNavLinkAttrs(i,d,"week"),date:d,defaultFormat:W}))}renderFgSegs(e,t,i,a,s,l,o){const{props:c,context:h,segHeightRefMap:g}=this,{isRtl:f}=h,{colWidth:u,eventSelection:p}=c,m=c.cells.length,y=1===c.cells.length,E=s||l||o,b=[];for(const c of e){const{left:e,right:h,width:w}=d(c,u,m,f),{eventRange:H}=c,{instanceId:D}=H.instance,W=C(c),k=t[x(c)],N=!c.isStandin&&null!=k&&!a[D];b.push(n.createElement(M,{key:W,style:{visibility:N?"":"hidden",top:k,left:e,right:h,width:w},heightRef:E||c.isStandin?null:g.createRef(W)},v(c)?n.createElement(S,Object.assign({eventRange:H,isStart:c.isStart,isEnd:c.isEnd,isDragging:s,isSelected:D===p,defaultDisplayEventEnd:y},r.getEventRangeMeta(H,i))):n.createElement(R,Object.assign({eventRange:H,isStart:c.isStart,isEnd:c.isEnd,isDragging:s,isResizing:l,isDateSelecting:o,isSelected:D===p,defaultDisplayEventEnd:y},r.getEventRangeMeta(H,i)))))}return b}renderFillSegs(e,t){const{props:i,context:a}=this,{isRtl:s}=a,{todayRange:l,colWidth:o}=i,c=i.cells.length,h=[];for(const i of e){const{left:e,right:a,width:g}=d(i,o,c,s),f=!i.isStandin;h.push(n.createElement("div",{key:r.buildEventRangeKey(i.eventRange),className:"fc-fill-y",style:{visibility:f?"":"hidden",left:e,right:a,width:g}},"bg-event"===t?n.createElement(r.BgEvent,Object.assign({eventRange:i.eventRange,isStart:i.isStart,isEnd:i.isEnd},r.getEventRangeMeta(i.eventRange,l))):r.renderFill(t)))}return n.createElement(n.Fragment,{},...h)}componentDidMount(){const{rootEl:e}=this;this.disconnectHeight=r.watchHeight(e,e=>{r.setRef(this.props.heightRef,e)})}componentWillUnmount(){this.disconnectHeight(),r.setRef(this.props.heightRef,null),r.setRef(this.props.innerHeightRef,null)}getMirrorSegs(){let{props:e}=this;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]}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}}class N extends r.DateComponent{constructor(){super(...arguments),this.splitBusinessHourSegs=r.memoize(u),this.splitBgEventSegs=r.memoize(u),this.splitFgEventSegs=r.memoize(u),this.splitDateSelectionSegs=r.memoize(u),this.splitEventDrag=r.memoize(p),this.splitEventResize=r.memoize(p),this.rowHeightRefMap=new r.RefMap((e,t)=>{const{rowHeightRefMap:r}=this.props;r&&r.handleValue(e,t)}),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,state:t,context:i,rowHeightRefMap:a}=this,{options:s}=i,l=e.cellRows.length,o=this.splitFgEventSegs(e.fgEventSegs,l),d=this.splitBgEventSegs(e.bgEventSegs,l),c=this.splitBusinessHourSegs(e.businessHourSegs,l),h=this.splitDateSelectionSegs(e.dateSelectionSegs,l),g=this.splitEventDrag(e.eventDrag,l),f=this.splitEventResize(e.eventResize,l),u=r.getIsHeightAuto(s),p=null!=t.width&&(l>=7||u)?t.width/i.options.aspectRatio/6:null;return n.createElement("div",{className:"fc-grow fc-flex-column",style:{width:e.width},ref:this.handleRootEl},e.cellRows.map((r,i)=>n.createElement(k,{key:r[0].key,dateProfile:e.dateProfile,todayRange:e.todayRange,cells:r,showDayNumbers:l>1,showWeekNumbers:s.weekNumbers,forPrint:e.forPrint,compact:null!=t.width&&t.width/r.length<80,className:u?"":"fc-grow fc-basis0",fgEventSegs:o[i],bgEventSegs:d[i].filter(P),businessHourSegs:c[i],dateSelectionSegs:h[i],eventSelection:e.eventSelection,eventDrag:g[i],eventResize:f[i],dayMaxEvents:s.dayMaxEvents,dayMaxEventRows:s.dayMaxEventRows,colWidth:e.colWidth,minHeight:p,heightRef:a.createRef(r[0].key)})))}componentDidMount(){this.detachWidth=r.watchWidth(this.rootEl,e=>{this.setState({width:e})})}componentWillUnmount(){this.detachWidth()}queryHit(e,t,n){const{props:i,context:a}=this,s=i.cellRows[0].length,{col:l,left:o,right:d}=c(e,n,i.colWidth,s,a.isRtl),{row:f,top:u,bottom:p}=function(e,t,r){let n=0,i=0,a=0;for(const s of t){const t=s[0].key;if(i=a,a=i+r.get(t),e<a)break;n++}return{row:n,top:i,bottom:a}}(t,i.cellRows,this.rowHeightRefMap.current),m=i.cellRows[f][l],y=m.date,v=r.addDays(y,1);return{dateProfile:i.dateProfile,dateSpan:Object.assign({range:{start:y,end:v},allDay:!0},m.extraDateSpan),dayEl:g(h(this.rootEl,f),l),rect:{left:o,right:d,top:u,bottom:p},layer:0}}}function P(e){return e.eventRange.def.allDay}class z extends r.BaseComponent{render(){const{props:e}=this;return n.createElement("div",{role:e.cellGroup?void 0:"row",className:[e.cellGroup?"fc-flex-row":"fc-row",e.className||""].join(" ")},e.cells.map(t=>n.createElement(n.Fragment,{key:e.getHeaderModelKey(t)},e.renderHeaderContent(t,e.tierNum,void 0,e.colWidth))))}}function T(e){return n.createElement("div",{className:["fc-rowgroup","fc-content-box",...e.extraClassNames||[]].join(" "),style:{width:e.width,paddingLeft:e.paddingLeft,paddingRight:e.paddingRight}},e.headerTiers.map((t,r)=>n.createElement(z,{key:r,tierNum:r,cells:t,renderHeaderContent:e.renderHeaderContent,getHeaderModelKey:e.getHeaderModelKey,colWidth:e.colWidth})))}class F extends r.BaseComponent{constructor(){super(...arguments),this.handleScroller=e=>{r.setRef(this.props.scrollerRef,e)},this.handleLeftScrollbarWidth=e=>{this.setState({leftScrollbarWidth:e})},this.handleRightScrollbarWidth=e=>{this.setState({rightScrollbarWidth:e})}}render(){const{props:e,state:t,context:i}=this,{options:a}=i,s=!e.forPrint&&!r.getIsHeightAuto(a),l=!e.forPrint&&r.getStickyHeaderDates(a);return n.createElement(n.Fragment,null,a.dayHeaders&&n.createElement(T,{headerTiers:e.headerTiers,renderHeaderContent:e.renderHeaderContent,getHeaderModelKey:e.getHeaderModelKey,extraClassNames:["fc-daygrid-header",l?"fc-sticky-header":""],paddingLeft:t.leftScrollbarWidth,paddingRight:t.rightScrollbarWidth}),n.createElement(r.Scroller,{vertical:s,leftScrollbarWidthRef:this.handleLeftScrollbarWidth,rightScrollbarWidthRef:this.handleRightScrollbarWidth,elClassNames:["fc-daygrid-body","fc-rowgroup","fc-flex-column",s?"fc-liquid":""],ref:this.handleScroller},n.createElement(N,{dateProfile:e.dateProfile,todayRange:e.todayRange,cellRows:e.cellRows,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed,fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,rowHeightRefMap:e.rowHeightRefMap})))}}class O extends r.BaseComponent{constructor(){super(...arguments),this.headerScrollerRef=n.createRef(),this.bodyScrollerRef=n.createRef(),this.footerScrollerRef=n.createRef(),this.handleWidth=e=>{this.setState({width:e})},this.handleLeftScrollbarWidth=e=>{this.setState({leftScrollbarWidth:e})},this.handleRightScrollbarWidth=e=>{this.setState({rightScrollbarWidth:e})}}render(){const{props:e,state:t,context:i}=this,{options:a}=i,s=!e.forPrint&&!r.getIsHeightAuto(a),o=!e.forPrint&&r.getStickyHeaderDates(a),d=!e.forPrint&&r.getStickyFooterScrollbar(a),c=e.cellRows[0].length,[h,g]=l(c,e.dayMinWidth,t.width);return n.createElement(n.Fragment,null,a.dayHeaders&&n.createElement(r.Scroller,{horizontal:!0,hideScrollbars:!0,elClassNames:["fc-daygrid-header","fc-rowgroup",o?"fc-sticky-header":""],ref:this.headerScrollerRef},n.createElement(T,{headerTiers:e.headerTiers,renderHeaderContent:e.renderHeaderContent,getHeaderModelKey:e.getHeaderModelKey,colWidth:g,width:h,paddingLeft:t.leftScrollbarWidth,paddingRight:t.rightScrollbarWidth})),n.createElement(r.Scroller,{vertical:s,horizontal:!0,hideScrollbars:d,widthRef:this.handleWidth,leftScrollbarWidthRef:this.handleLeftScrollbarWidth,rightScrollbarWidthRef:this.handleRightScrollbarWidth,elClassNames:["fc-daygrid-body","fc-rowgroup","fc-flex-column",s?"fc-liquid":""],ref:this.bodyScrollerRef},n.createElement(N,{dateProfile:e.dateProfile,todayRange:e.todayRange,cellRows:e.cellRows,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed,fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,colWidth:g,width:h,rowHeightRefMap:e.rowHeightRefMap})),Boolean(d)&&n.createElement(r.Scroller,{ref:this.footerScrollerRef,horizontal:!0,elClassNames:["fc-sticky-footer"],elStyle:{marginTop:"-1px"}},n.createElement("div",{style:{width:h,height:"1px"}})))}componentDidMount(){const e=r.getScrollerSyncerClass(this.context.pluginHooks);this.syncedScroller=new e(!0),r.setRef(this.props.scrollerRef,this.syncedScroller),this.updateSyncedScroller()}componentDidUpdate(){this.updateSyncedScroller()}componentWillUnmount(){this.syncedScroller.destroy()}updateSyncedScroller(){this.syncedScroller.handleChildren([this.headerScrollerRef.current,this.bodyScrollerRef.current,this.footerScrollerRef.current])}}class I extends r.BaseComponent{constructor(){super(...arguments),this.scrollerRef=n.createRef(),this.rowHeightRefMap=new r.RefMap(()=>{r.afterSize(this.updateScrollY)}),this.scrollDate=null,this.updateScrollY=()=>{const e=this.rowHeightRefMap.current,t=this.scrollerRef.current;if(t&&this.scrollDate){let r=function(e,t,r,n=0){let i=0;for(const a of t){const t=a[0].date,s=a[a.length-1].date,l=t.toISOString();if(e>=t&&e<=s)return i;const o=r.get(l);if(null==o)return;i+=o+n}return i}(this.scrollDate,this.props.cellRows,e,1);null!=r&&(r&&r++,t.scrollTo({y:r}))}},this.clearScroll=()=>{this.scrollDate=null}}render(){const{props:e,context:t}=this,{options:i}=t,a=Object.assign(Object.assign({},e),{scrollerRef:this.scrollerRef,rowHeightRefMap:this.rowHeightRefMap});return n.createElement(r.ViewContainer,{viewSpec:t.viewSpec,elClasses:[e.className,"fc-flex-column","fc-border"]},i.dayMinWidth?n.createElement(O,Object.assign({},a,{dayMinWidth:i.dayMinWidth})):n.createElement(F,Object.assign({},a)))}componentDidMount(){this.resetScroll(),this.scrollerRef.current.addScrollEndListener(this.clearScroll)}componentDidUpdate(e){e.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset&&this.resetScroll()}componentWillUnmount(){this.scrollerRef.current.removeScrollEndListener(this.clearScroll)}resetScroll(){this.scrollDate=this.props.dateProfile.currentDate,this.updateScrollY();this.scrollerRef.current.scrollTo({x:0})}}const j=r.createFormatter({weekday:"long"});class G extends r.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{dateEnv:i,theme:s,viewApi:l,options:o}=t,d=r.addDays(new Date(2592e5),e.dow),c={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},h=i.format(d,e.dayHeaderFormat),g=Object.assign(Object.assign(Object.assign(Object.assign({date:d},c),{view:l}),e.extraRenderProps),{text:h});return n.createElement(r.ContentContainer,{elTag:"div",elClasses:[...r.getDayClassNames(c,s),...e.extraClassNames||[],"fc-header-cell","fc-cell",null!=e.colWidth?"":"fc-liquid","fc-flex-column","fc-align-center"],elAttrs:e.extraDataAttrs,elStyle:{width:null!=e.colWidth?e.colWidth*(e.colSpan||1):void 0},renderProps:g,generatorName:"dayHeaderContent",customGenerator:o.dayHeaderContent,defaultGenerator:a,classNameGenerator:o.dayHeaderClassNames,didMount:o.dayHeaderDidMount,willUnmount:o.dayHeaderWillUnmount},t=>n.createElement("div",{ref:this.innerElRef,className:["fc-flex-column",e.isSticky?"fc-sticky-x":""].join(" ")},n.createElement(t,{elTag:"a",elClasses:["fc-cell-inner","fc-padding-sm"],elAttrs:{"aria-label":i.format(d,j)}})))}componentDidMount(){const e=this.innerElRef.current;this.disconectInnerHeight=r.watchHeight(e,e=>{r.setRef(this.props.innerHeightRef,e)})}componentWillUnmount(){this.disconectInnerHeight(),r.setRef(this.props.innerHeightRef,null)}}function A(e,t,n){return e||function(e,t){if(!e||t>10)return r.createFormatter({weekday:"short"});if(t>1)return r.createFormatter({weekday:"short",month:"numeric",day:"numeric",omitCommas:!0});return r.createFormatter({weekday:"long"})}(t,n)}class L extends r.BaseComponent{constructor(){super(...arguments),this.buildDayTableModel=r.memoize(s),this.buildHeaderTiers=r.memoize(o),this.createDayHeaderFormatter=r.memoize(A),this.slicer=new i}render(){const{props:e,context:t}=this,{options:i}=t,a=this.buildDayTableModel(e.dateProfile,t.dateProfileGenerator),s=1===a.rowCnt,l=this.buildHeaderTiers(a.headerDates,s),o=this.slicer.sliceProps(e,e.dateProfile,i.nextDayThreshold,t,a),d=this.createDayHeaderFormatter(t.options.dayHeaderFormat,s,a.colCnt);return n.createElement(r.NowTimer,{unit:"day"},(t,r)=>n.createElement(I,{dateProfile:e.dateProfile,todayRange:r,cellRows:a.cellRows,forPrint:e.forPrint,className:"fc-daygrid-view",headerTiers:l,renderHeaderContent:(t,i,s,l)=>t.date?n.createElement(f,Object.assign({},t,{dateProfile:e.dateProfile,todayRange:r,navLink:a.colCnt>1,dayHeaderFormat:d,colSpan:t.colSpan,colWidth:l})):n.createElement(G,Object.assign({},t,{dayHeaderFormat:d,colSpan:t.colSpan,colWidth:l})),getHeaderModelKey:e=>e.date?e.date.toUTCString():e.dow,fgEventSegs:o.fgEventSegs,bgEventSegs:o.bgEventSegs,businessHourSegs:o.businessHourSegs,dateSelectionSegs:o.dateSelectionSegs,eventDrag:o.eventDrag,eventResize:o.eventResize,eventSelection:o.eventSelection}))}}class B extends r.DateProfileGenerator{buildRenderRange(e,t,r){let n=super.buildRenderRange(e,t,r),{props:i}=this;return U({currentRange:n,snapToWeek:/^(year|month)$/.test(t),fixedWeekCount:i.fixedWeekCount,dateEnv:i.dateEnv})}}function U(e){let t,{dateEnv:n,currentRange:i}=e,{start:a,end:s}=i;if(e.snapToWeek&&(a=n.startOfWeek(a),t=n.startOfWeek(s),t.valueOf()!==s.valueOf()&&(s=r.addWeeks(t,1))),e.fixedWeekCount){let e=n.startOfWeek(n.startOfMonth(r.addDays(i.end,-1))),t=Math.ceil(r.diffWeeks(e,s));s=r.addWeeks(s,6-t)}return{start:a,end:s}}r.injectStyles(":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc-daygrid-cell.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-daygrid-row-spacious .fc-daygrid-cell-inner{min-height:3em}.fc-daygrid-cell-header{display:flex;flex-direction:row-reverse}.fc-day-other .fc-daygrid-cell-header{opacity:.3}.fc-daygrid-cell-number{padding:4px;position:relative;z-index:4}.fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc-daygrid-cell-footer{align-items:flex-start;display:flex;flex-direction:column;font-size:.85em;margin:0 2px}.fc-daygrid-row-spacious .fc-daygrid-cell-footer{margin-bottom:1em!important}.fc-daygrid-row-compact .fc-daygrid-cell-footer{align-items:stretch}.fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc-daygrid-row-compact .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);padding:1px}.fc-daygrid-cell .fc-non-business{z-index:1}.fc-daygrid-cell .fc-bg-event{z-index:2}.fc-daygrid-cell .fc-highlight{z-index:3}.fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);margin-top:1px;z-index:6}.fc-daygrid-event.fc-event-mirror{z-index:7}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;direction:row;display:flex;padding:2px 0;position:relative}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-daygrid-dot-event .fc-event-time,.fc-daygrid-dot-event .fc-event-title{overflow:hidden;white-space:nowrap}.fc-daygrid-dot-event .fc-event-title{flex-basis:0;flex-grow:1;font-weight:700;min-width:0}");var K=t.createPlugin({name:"@fullcalendar/daygrid",initialView:"dayGridMonth",views:{dayGrid:{component:L,dateProfileGeneratorClass:B},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},fixedWeekCount:!0},dayGridYear:{type:"dayGrid",duration:{years:1}}}});class q extends r.BaseComponent{constructor(){super(...arguments),this.innerHeightRefMap=new r.RefMap(()=>{r.afterSize(this.handleInnerHeights)}),this.handleInnerHeights=()=>{const e=this.innerHeightRefMap.current;let t=0;for(const r of e.values())t=Math.max(t,r);this.currentInnerHeight!==t&&(this.currentInnerHeight=t,r.setRef(this.props.innerHeightRef,t))}}render(){const{props:e}=this;return n.createElement("div",{role:"row",className:"fc-row",style:{height:e.height}},e.cells.map(t=>{const r=e.getHeaderModelKey(t);return n.createElement(n.Fragment,{key:e.getHeaderModelKey(t)},e.renderHeaderContent(t,e.tierNum,this.innerHeightRefMap.createRef(r),e.colWidth))}))}}var _={__proto__:null,DayTableSlicer:i,TableDateProfileGenerator:B,buildDayTableRenderRange:U,DayGridView:L,DateHeaderCell:f,DayOfWeekHeaderCell:G,HeaderRow:z,HeaderRowAdvanced:q,createDayHeaderFormatter:A,DayGridLayout:I,DayGridRow:k,COMPACT_CELL_WIDTH:80,DayGridRows:N,buildDayTableModel:s,computeColWidth:l,computeColFromPosition:c,getRowEl:h,getCellEl:g};return t.globalPlugins.push(K),e.Internal=_,e.default=K,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,FullCalendar.Internal,FullCalendar.Preact);
|
package/internal.cjs
CHANGED
|
@@ -82,7 +82,7 @@ function buildHeaderTiers(dates, datesRepDistinctDays) {
|
|
|
82
82
|
}
|
|
83
83
|
// Positioning
|
|
84
84
|
// -------------------------------------------------------------------------------------------------
|
|
85
|
-
function computeTopFromDate(date, cellRows, rowHeightMap) {
|
|
85
|
+
function computeTopFromDate(date, cellRows, rowHeightMap, adjust = 0) {
|
|
86
86
|
let top = 0;
|
|
87
87
|
for (const cells of cellRows) {
|
|
88
88
|
const start = cells[0].date;
|
|
@@ -95,7 +95,7 @@ function computeTopFromDate(date, cellRows, rowHeightMap) {
|
|
|
95
95
|
if (rowHeight == null) {
|
|
96
96
|
return; // denote unknown
|
|
97
97
|
}
|
|
98
|
-
top += rowHeight;
|
|
98
|
+
top += rowHeight + adjust;
|
|
99
99
|
}
|
|
100
100
|
return top;
|
|
101
101
|
}
|
|
@@ -201,6 +201,7 @@ class DateHeaderCell extends internal_cjs.BaseComponent {
|
|
|
201
201
|
}
|
|
202
202
|
componentWillUnmount() {
|
|
203
203
|
this.disconectInnerHeight();
|
|
204
|
+
internal_cjs.setRef(this.props.innerHeightRef, null);
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
207
|
|
|
@@ -270,7 +271,7 @@ function hasListItemDisplay(seg) {
|
|
|
270
271
|
class DayGridBlockEvent extends internal_cjs.BaseComponent {
|
|
271
272
|
render() {
|
|
272
273
|
let { props } = this;
|
|
273
|
-
return (preact_cjs.createElement(internal_cjs.StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.
|
|
274
|
+
return (preact_cjs.createElement(internal_cjs.StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.eventRange.def.allDay })));
|
|
274
275
|
}
|
|
275
276
|
}
|
|
276
277
|
|
|
@@ -278,10 +279,10 @@ class DayGridListEvent extends internal_cjs.BaseComponent {
|
|
|
278
279
|
render() {
|
|
279
280
|
let { props, context } = this;
|
|
280
281
|
let { options } = context;
|
|
281
|
-
let {
|
|
282
|
+
let { eventRange } = props;
|
|
282
283
|
let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;
|
|
283
|
-
let timeText = internal_cjs.
|
|
284
|
-
return (preact_cjs.createElement(internal_cjs.EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: internal_cjs.
|
|
284
|
+
let timeText = internal_cjs.buildEventRangeTimeText(eventRange, timeFormat, context, true, props.defaultDisplayEventEnd);
|
|
285
|
+
return (preact_cjs.createElement(internal_cjs.EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: internal_cjs.getEventRangeAnchorAttrs(eventRange, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));
|
|
285
286
|
}
|
|
286
287
|
}
|
|
287
288
|
function renderInnerContent(renderProps) {
|
|
@@ -300,10 +301,11 @@ class DayGridMoreLink extends internal_cjs.BaseComponent {
|
|
|
300
301
|
(props.eventResize ? props.eventResize.affectedInstances : null) ||
|
|
301
302
|
{};
|
|
302
303
|
return (preact_cjs.createElement(preact_cjs.Fragment, null, props.segs.map((seg) => {
|
|
303
|
-
let
|
|
304
|
+
let { eventRange } = seg;
|
|
305
|
+
let instanceId = eventRange.instance.instanceId;
|
|
304
306
|
return (preact_cjs.createElement("div", { key: instanceId, style: {
|
|
305
307
|
visibility: forcedInvisibleMap[instanceId] ? 'hidden' : '',
|
|
306
|
-
} }, hasListItemDisplay(seg) ? (preact_cjs.createElement(DayGridListEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, internal_cjs.
|
|
308
|
+
} }, hasListItemDisplay(seg) ? (preact_cjs.createElement(DayGridListEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, internal_cjs.getEventRangeMeta(eventRange, props.todayRange)))) : (preact_cjs.createElement(DayGridBlockEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, internal_cjs.getEventRangeMeta(eventRange, props.todayRange))))));
|
|
307
309
|
})));
|
|
308
310
|
} }));
|
|
309
311
|
}
|
|
@@ -522,6 +524,7 @@ class DayGridEventHarness extends preact_cjs.Component {
|
|
|
522
524
|
}
|
|
523
525
|
componentWillUnmount() {
|
|
524
526
|
this.detachHeight();
|
|
527
|
+
internal_cjs.setRef(this.props.heightRef, null);
|
|
525
528
|
}
|
|
526
529
|
}
|
|
527
530
|
|
|
@@ -644,7 +647,8 @@ class DayGridRow extends internal_cjs.BaseComponent {
|
|
|
644
647
|
for (const seg of segs) {
|
|
645
648
|
const { left, right, width } = computeHorizontalsFromSeg(seg, colWidth, colCnt, isRtl);
|
|
646
649
|
// TODO: optimize ID creation? all related
|
|
647
|
-
const {
|
|
650
|
+
const { eventRange } = seg;
|
|
651
|
+
const { instanceId } = eventRange.instance;
|
|
648
652
|
const segSpanId = getSegSpanId(seg);
|
|
649
653
|
const segStartId = getSegStartId(seg);
|
|
650
654
|
const top = segTops[segStartId];
|
|
@@ -664,7 +668,7 @@ class DayGridRow extends internal_cjs.BaseComponent {
|
|
|
664
668
|
width,
|
|
665
669
|
}, heightRef: (isMirror || seg.isStandin)
|
|
666
670
|
? null
|
|
667
|
-
: segHeightRefMap.createRef(segSpanId) }, hasListItemDisplay(seg) ? (preact_cjs.createElement(DayGridListEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, internal_cjs.
|
|
671
|
+
: segHeightRefMap.createRef(segSpanId) }, hasListItemDisplay(seg) ? (preact_cjs.createElement(DayGridListEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, internal_cjs.getEventRangeMeta(eventRange, todayRange)))) : (preact_cjs.createElement(DayGridBlockEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, internal_cjs.getEventRangeMeta(eventRange, todayRange))))));
|
|
668
672
|
}
|
|
669
673
|
return nodes;
|
|
670
674
|
}
|
|
@@ -683,8 +687,7 @@ class DayGridRow extends internal_cjs.BaseComponent {
|
|
|
683
687
|
right,
|
|
684
688
|
width,
|
|
685
689
|
} }, fillType === 'bg-event' ?
|
|
686
|
-
preact_cjs.createElement(internal_cjs.BgEvent, Object.assign({ seg: seg }, internal_cjs.
|
|
687
|
-
internal_cjs.renderFill(fillType)));
|
|
690
|
+
preact_cjs.createElement(internal_cjs.BgEvent, Object.assign({ eventRange: seg.eventRange, isStart: seg.isStart, isEnd: seg.isEnd }, internal_cjs.getEventRangeMeta(seg.eventRange, todayRange))) : (internal_cjs.renderFill(fillType))));
|
|
688
691
|
}
|
|
689
692
|
return preact_cjs.createElement(preact_cjs.Fragment, {}, ...nodes);
|
|
690
693
|
}
|
|
@@ -782,12 +785,12 @@ class DayGridRows extends internal_cjs.DateComponent {
|
|
|
782
785
|
heightRef: rowHeightRefMap.createRef(cells[0].key) })))));
|
|
783
786
|
}
|
|
784
787
|
componentDidMount() {
|
|
785
|
-
this.
|
|
788
|
+
this.detachWidth = internal_cjs.watchWidth(this.rootEl, (width) => {
|
|
786
789
|
this.setState({ width });
|
|
787
790
|
});
|
|
788
791
|
}
|
|
789
792
|
componentWillUnmount() {
|
|
790
|
-
this.
|
|
793
|
+
this.detachWidth();
|
|
791
794
|
}
|
|
792
795
|
// Hit System
|
|
793
796
|
// -----------------------------------------------------------------------------------------------
|
|
@@ -965,12 +968,11 @@ class DayGridLayoutPannable extends internal_cjs.BaseComponent {
|
|
|
965
968
|
// Scrolling
|
|
966
969
|
// -----------------------------------------------------------------------------------------------
|
|
967
970
|
updateSyncedScroller() {
|
|
968
|
-
const { isRtl } = this.context;
|
|
969
971
|
this.syncedScroller.handleChildren([
|
|
970
972
|
this.headerScrollerRef.current,
|
|
971
973
|
this.bodyScrollerRef.current,
|
|
972
974
|
this.footerScrollerRef.current,
|
|
973
|
-
]
|
|
975
|
+
]);
|
|
974
976
|
}
|
|
975
977
|
}
|
|
976
978
|
|
|
@@ -979,20 +981,29 @@ class DayGridLayout extends internal_cjs.BaseComponent {
|
|
|
979
981
|
super(...arguments);
|
|
980
982
|
// ref
|
|
981
983
|
this.scrollerRef = preact_cjs.createRef();
|
|
982
|
-
this.rowHeightRefMap = new internal_cjs.RefMap()
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
984
|
+
this.rowHeightRefMap = new internal_cjs.RefMap(() => {
|
|
985
|
+
internal_cjs.afterSize(this.updateScrollY);
|
|
986
|
+
});
|
|
987
|
+
// internal
|
|
988
|
+
this.scrollDate = null;
|
|
989
|
+
this.updateScrollY = () => {
|
|
987
990
|
const rowHeightMap = this.rowHeightRefMap.current;
|
|
988
991
|
const scroller = this.scrollerRef.current;
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
992
|
+
// Since updateScrollY is called by rowHeightRefMap, could be called with null during cleanup,
|
|
993
|
+
// and the scroller might not exist
|
|
994
|
+
if (scroller && this.scrollDate) {
|
|
995
|
+
let scrollTop = computeTopFromDate(this.scrollDate, this.props.cellRows, rowHeightMap, 1);
|
|
996
|
+
if (scrollTop != null) {
|
|
997
|
+
if (scrollTop) {
|
|
998
|
+
scrollTop++; // clear top border
|
|
999
|
+
}
|
|
1000
|
+
scroller.scrollTo({ y: scrollTop });
|
|
1001
|
+
}
|
|
993
1002
|
}
|
|
994
|
-
|
|
995
|
-
|
|
1003
|
+
};
|
|
1004
|
+
this.clearScroll = () => {
|
|
1005
|
+
this.scrollDate = null;
|
|
1006
|
+
};
|
|
996
1007
|
}
|
|
997
1008
|
render() {
|
|
998
1009
|
const { props, context } = this;
|
|
@@ -1003,22 +1014,25 @@ class DayGridLayout extends internal_cjs.BaseComponent {
|
|
|
1003
1014
|
// Lifecycle
|
|
1004
1015
|
// -----------------------------------------------------------------------------------------------
|
|
1005
1016
|
componentDidMount() {
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
context.emitter.on('_timeScrollRequest', this.timeScrollResponder.handleScroll);
|
|
1009
|
-
this.timeScrollResponder.handleScroll(options.scrollTime);
|
|
1017
|
+
this.resetScroll();
|
|
1018
|
+
this.scrollerRef.current.addScrollEndListener(this.clearScroll);
|
|
1010
1019
|
}
|
|
1011
1020
|
componentDidUpdate(prevProps) {
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
this.timeScrollResponder.handleScroll(options.scrollTime);
|
|
1015
|
-
}
|
|
1016
|
-
else {
|
|
1017
|
-
this.timeScrollResponder.drain();
|
|
1021
|
+
if (prevProps.dateProfile !== this.props.dateProfile && this.context.options.scrollTimeReset) {
|
|
1022
|
+
this.resetScroll();
|
|
1018
1023
|
}
|
|
1019
1024
|
}
|
|
1020
1025
|
componentWillUnmount() {
|
|
1021
|
-
this.
|
|
1026
|
+
this.scrollerRef.current.removeScrollEndListener(this.clearScroll);
|
|
1027
|
+
}
|
|
1028
|
+
// Scrolling
|
|
1029
|
+
// -----------------------------------------------------------------------------------------------
|
|
1030
|
+
resetScroll() {
|
|
1031
|
+
this.scrollDate = this.props.dateProfile.currentDate;
|
|
1032
|
+
this.updateScrollY();
|
|
1033
|
+
// updateScrollX
|
|
1034
|
+
const scroller = this.scrollerRef.current;
|
|
1035
|
+
scroller.scrollTo({ x: 0 });
|
|
1022
1036
|
}
|
|
1023
1037
|
}
|
|
1024
1038
|
|
|
@@ -1075,6 +1089,7 @@ class DayOfWeekHeaderCell extends internal_cjs.BaseComponent {
|
|
|
1075
1089
|
}
|
|
1076
1090
|
componentWillUnmount() {
|
|
1077
1091
|
this.disconectInnerHeight();
|
|
1092
|
+
internal_cjs.setRef(this.props.innerHeightRef, null);
|
|
1078
1093
|
}
|
|
1079
1094
|
}
|
|
1080
1095
|
|
package/internal.d.ts
CHANGED
|
@@ -121,18 +121,21 @@ interface DayGridLayoutProps<HeaderCellModel, HeaderCellKey> {
|
|
|
121
121
|
bgEventSegs: TableSeg[];
|
|
122
122
|
businessHourSegs: TableSeg[];
|
|
123
123
|
dateSelectionSegs: TableSeg[];
|
|
124
|
-
eventDrag: EventSegUiInteractionState | null;
|
|
125
|
-
eventResize: EventSegUiInteractionState | null;
|
|
124
|
+
eventDrag: EventSegUiInteractionState<TableSeg> | null;
|
|
125
|
+
eventResize: EventSegUiInteractionState<TableSeg> | null;
|
|
126
126
|
eventSelection: string;
|
|
127
127
|
}
|
|
128
128
|
declare class DayGridLayout<HeaderCellModel, HeaderCellKey> extends BaseComponent<DayGridLayoutProps<HeaderCellModel, HeaderCellKey>> {
|
|
129
129
|
private scrollerRef;
|
|
130
130
|
private rowHeightRefMap;
|
|
131
|
+
private scrollDate;
|
|
131
132
|
render(): createElement.JSX.Element;
|
|
132
133
|
componentDidMount(): void;
|
|
133
134
|
componentDidUpdate(prevProps: DayGridLayoutProps<unknown, unknown>): void;
|
|
134
135
|
componentWillUnmount(): void;
|
|
135
|
-
|
|
136
|
+
resetScroll(): void;
|
|
137
|
+
updateScrollY: () => void;
|
|
138
|
+
clearScroll: () => void;
|
|
136
139
|
}
|
|
137
140
|
|
|
138
141
|
interface DayGridRowProps {
|
|
@@ -200,8 +203,8 @@ interface DayGridRowsProps {
|
|
|
200
203
|
bgEventSegs: TableSeg[];
|
|
201
204
|
businessHourSegs: TableSeg[];
|
|
202
205
|
dateSelectionSegs: TableSeg[];
|
|
203
|
-
eventDrag: EventSegUiInteractionState | null;
|
|
204
|
-
eventResize: EventSegUiInteractionState | null;
|
|
206
|
+
eventDrag: EventSegUiInteractionState<TableSeg> | null;
|
|
207
|
+
eventResize: EventSegUiInteractionState<TableSeg> | null;
|
|
205
208
|
eventSelection: string;
|
|
206
209
|
colWidth?: number;
|
|
207
210
|
width?: number | string;
|
|
@@ -219,7 +222,7 @@ declare class DayGridRows extends DateComponent<DayGridRowsProps, DayGridRowsSta
|
|
|
219
222
|
private splitEventDrag;
|
|
220
223
|
private splitEventResize;
|
|
221
224
|
private rowHeightRefMap;
|
|
222
|
-
private
|
|
225
|
+
private detachWidth?;
|
|
223
226
|
render(): createElement.JSX.Element;
|
|
224
227
|
handleRootEl: (rootEl: HTMLDivElement) => void;
|
|
225
228
|
componentDidMount(): void;
|
package/internal.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { injectStyles, Slicer, DateProfileGenerator, addWeeks, addDays, diffWeeks, DaySeriesModel, DayTableModel, fracToCssDim, BaseComponent, getDateMeta, buildNavLinkAttrs, ContentContainer, getDayClassNames, formatDayString, watchHeight, setRef, createFormatter, StandardEvent,
|
|
1
|
+
import { injectStyles, Slicer, DateProfileGenerator, addWeeks, addDays, diffWeeks, DaySeriesModel, DayTableModel, fracToCssDim, BaseComponent, getDateMeta, buildNavLinkAttrs, ContentContainer, getDayClassNames, formatDayString, watchHeight, setRef, createFormatter, StandardEvent, buildEventRangeTimeText, EventContainer, getEventRangeAnchorAttrs, MoreLinkContainer, getEventRangeMeta, DateComponent, DayCellContainer, hasCustomDayCellContent, addMs, SegHierarchy, buildEntryKey, intersectSpans, RefMap, afterSize, sortEventSegs, WeekNumberContainer, buildEventRangeKey, BgEvent, renderFill, memoize, getIsHeightAuto, watchWidth, getStickyHeaderDates, Scroller, getStickyFooterScrollbar, getScrollerSyncerClass, ViewContainer, NowTimer } from '@fullcalendar/core/internal.js';
|
|
2
2
|
import { createRef, createElement, Fragment, Component } from '@fullcalendar/core/preact.js';
|
|
3
3
|
|
|
4
4
|
var css_248z = ":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc-daygrid-cell.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-daygrid-row-spacious .fc-daygrid-cell-inner{min-height:3em}.fc-daygrid-cell-header{display:flex;flex-direction:row-reverse}.fc-day-other .fc-daygrid-cell-header{opacity:.3}.fc-daygrid-cell-number{padding:4px;position:relative;z-index:4}.fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc-daygrid-cell-footer{align-items:flex-start;display:flex;flex-direction:column;font-size:.85em;margin:0 2px}.fc-daygrid-row-spacious .fc-daygrid-cell-footer{margin-bottom:1em!important}.fc-daygrid-row-compact .fc-daygrid-cell-footer{align-items:stretch}.fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc-daygrid-row-compact .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);padding:1px}.fc-daygrid-cell .fc-non-business{z-index:1}.fc-daygrid-cell .fc-bg-event{z-index:2}.fc-daygrid-cell .fc-highlight{z-index:3}.fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);margin-top:1px;z-index:6}.fc-daygrid-event.fc-event-mirror{z-index:7}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;direction:row;display:flex;padding:2px 0;position:relative}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-daygrid-dot-event .fc-event-time,.fc-daygrid-dot-event .fc-event-title{overflow:hidden;white-space:nowrap}.fc-daygrid-dot-event .fc-event-title{flex-basis:0;flex-grow:1;font-weight:700;min-width:0}";
|
|
@@ -78,7 +78,7 @@ function buildHeaderTiers(dates, datesRepDistinctDays) {
|
|
|
78
78
|
}
|
|
79
79
|
// Positioning
|
|
80
80
|
// -------------------------------------------------------------------------------------------------
|
|
81
|
-
function computeTopFromDate(date, cellRows, rowHeightMap) {
|
|
81
|
+
function computeTopFromDate(date, cellRows, rowHeightMap, adjust = 0) {
|
|
82
82
|
let top = 0;
|
|
83
83
|
for (const cells of cellRows) {
|
|
84
84
|
const start = cells[0].date;
|
|
@@ -91,7 +91,7 @@ function computeTopFromDate(date, cellRows, rowHeightMap) {
|
|
|
91
91
|
if (rowHeight == null) {
|
|
92
92
|
return; // denote unknown
|
|
93
93
|
}
|
|
94
|
-
top += rowHeight;
|
|
94
|
+
top += rowHeight + adjust;
|
|
95
95
|
}
|
|
96
96
|
return top;
|
|
97
97
|
}
|
|
@@ -197,6 +197,7 @@ class DateHeaderCell extends BaseComponent {
|
|
|
197
197
|
}
|
|
198
198
|
componentWillUnmount() {
|
|
199
199
|
this.disconectInnerHeight();
|
|
200
|
+
setRef(this.props.innerHeightRef, null);
|
|
200
201
|
}
|
|
201
202
|
}
|
|
202
203
|
|
|
@@ -266,7 +267,7 @@ function hasListItemDisplay(seg) {
|
|
|
266
267
|
class DayGridBlockEvent extends BaseComponent {
|
|
267
268
|
render() {
|
|
268
269
|
let { props } = this;
|
|
269
|
-
return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.
|
|
270
|
+
return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.eventRange.def.allDay })));
|
|
270
271
|
}
|
|
271
272
|
}
|
|
272
273
|
|
|
@@ -274,10 +275,10 @@ class DayGridListEvent extends BaseComponent {
|
|
|
274
275
|
render() {
|
|
275
276
|
let { props, context } = this;
|
|
276
277
|
let { options } = context;
|
|
277
|
-
let {
|
|
278
|
+
let { eventRange } = props;
|
|
278
279
|
let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;
|
|
279
|
-
let timeText =
|
|
280
|
-
return (createElement(EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs:
|
|
280
|
+
let timeText = buildEventRangeTimeText(eventRange, timeFormat, context, true, props.defaultDisplayEventEnd);
|
|
281
|
+
return (createElement(EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: getEventRangeAnchorAttrs(eventRange, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));
|
|
281
282
|
}
|
|
282
283
|
}
|
|
283
284
|
function renderInnerContent(renderProps) {
|
|
@@ -296,10 +297,11 @@ class DayGridMoreLink extends BaseComponent {
|
|
|
296
297
|
(props.eventResize ? props.eventResize.affectedInstances : null) ||
|
|
297
298
|
{};
|
|
298
299
|
return (createElement(Fragment, null, props.segs.map((seg) => {
|
|
299
|
-
let
|
|
300
|
+
let { eventRange } = seg;
|
|
301
|
+
let instanceId = eventRange.instance.instanceId;
|
|
300
302
|
return (createElement("div", { key: instanceId, style: {
|
|
301
303
|
visibility: forcedInvisibleMap[instanceId] ? 'hidden' : '',
|
|
302
|
-
} }, hasListItemDisplay(seg) ? (createElement(DayGridListEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false },
|
|
304
|
+
} }, hasListItemDisplay(seg) ? (createElement(DayGridListEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getEventRangeMeta(eventRange, props.todayRange)))) : (createElement(DayGridBlockEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getEventRangeMeta(eventRange, props.todayRange))))));
|
|
303
305
|
})));
|
|
304
306
|
} }));
|
|
305
307
|
}
|
|
@@ -518,6 +520,7 @@ class DayGridEventHarness extends Component {
|
|
|
518
520
|
}
|
|
519
521
|
componentWillUnmount() {
|
|
520
522
|
this.detachHeight();
|
|
523
|
+
setRef(this.props.heightRef, null);
|
|
521
524
|
}
|
|
522
525
|
}
|
|
523
526
|
|
|
@@ -640,7 +643,8 @@ class DayGridRow extends BaseComponent {
|
|
|
640
643
|
for (const seg of segs) {
|
|
641
644
|
const { left, right, width } = computeHorizontalsFromSeg(seg, colWidth, colCnt, isRtl);
|
|
642
645
|
// TODO: optimize ID creation? all related
|
|
643
|
-
const {
|
|
646
|
+
const { eventRange } = seg;
|
|
647
|
+
const { instanceId } = eventRange.instance;
|
|
644
648
|
const segSpanId = getSegSpanId(seg);
|
|
645
649
|
const segStartId = getSegStartId(seg);
|
|
646
650
|
const top = segTops[segStartId];
|
|
@@ -660,7 +664,7 @@ class DayGridRow extends BaseComponent {
|
|
|
660
664
|
width,
|
|
661
665
|
}, heightRef: (isMirror || seg.isStandin)
|
|
662
666
|
? null
|
|
663
|
-
: segHeightRefMap.createRef(segSpanId) }, hasListItemDisplay(seg) ? (createElement(DayGridListEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd },
|
|
667
|
+
: segHeightRefMap.createRef(segSpanId) }, hasListItemDisplay(seg) ? (createElement(DayGridListEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getEventRangeMeta(eventRange, todayRange)))) : (createElement(DayGridBlockEvent, Object.assign({ eventRange: eventRange, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getEventRangeMeta(eventRange, todayRange))))));
|
|
664
668
|
}
|
|
665
669
|
return nodes;
|
|
666
670
|
}
|
|
@@ -679,8 +683,7 @@ class DayGridRow extends BaseComponent {
|
|
|
679
683
|
right,
|
|
680
684
|
width,
|
|
681
685
|
} }, fillType === 'bg-event' ?
|
|
682
|
-
createElement(BgEvent, Object.assign({ seg: seg },
|
|
683
|
-
renderFill(fillType)));
|
|
686
|
+
createElement(BgEvent, Object.assign({ eventRange: seg.eventRange, isStart: seg.isStart, isEnd: seg.isEnd }, getEventRangeMeta(seg.eventRange, todayRange))) : (renderFill(fillType))));
|
|
684
687
|
}
|
|
685
688
|
return createElement(Fragment, {}, ...nodes);
|
|
686
689
|
}
|
|
@@ -778,12 +781,12 @@ class DayGridRows extends DateComponent {
|
|
|
778
781
|
heightRef: rowHeightRefMap.createRef(cells[0].key) })))));
|
|
779
782
|
}
|
|
780
783
|
componentDidMount() {
|
|
781
|
-
this.
|
|
784
|
+
this.detachWidth = watchWidth(this.rootEl, (width) => {
|
|
782
785
|
this.setState({ width });
|
|
783
786
|
});
|
|
784
787
|
}
|
|
785
788
|
componentWillUnmount() {
|
|
786
|
-
this.
|
|
789
|
+
this.detachWidth();
|
|
787
790
|
}
|
|
788
791
|
// Hit System
|
|
789
792
|
// -----------------------------------------------------------------------------------------------
|
|
@@ -961,12 +964,11 @@ class DayGridLayoutPannable extends BaseComponent {
|
|
|
961
964
|
// Scrolling
|
|
962
965
|
// -----------------------------------------------------------------------------------------------
|
|
963
966
|
updateSyncedScroller() {
|
|
964
|
-
const { isRtl } = this.context;
|
|
965
967
|
this.syncedScroller.handleChildren([
|
|
966
968
|
this.headerScrollerRef.current,
|
|
967
969
|
this.bodyScrollerRef.current,
|
|
968
970
|
this.footerScrollerRef.current,
|
|
969
|
-
]
|
|
971
|
+
]);
|
|
970
972
|
}
|
|
971
973
|
}
|
|
972
974
|
|
|
@@ -975,20 +977,29 @@ class DayGridLayout extends BaseComponent {
|
|
|
975
977
|
super(...arguments);
|
|
976
978
|
// ref
|
|
977
979
|
this.scrollerRef = createRef();
|
|
978
|
-
this.rowHeightRefMap = new RefMap()
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
980
|
+
this.rowHeightRefMap = new RefMap(() => {
|
|
981
|
+
afterSize(this.updateScrollY);
|
|
982
|
+
});
|
|
983
|
+
// internal
|
|
984
|
+
this.scrollDate = null;
|
|
985
|
+
this.updateScrollY = () => {
|
|
983
986
|
const rowHeightMap = this.rowHeightRefMap.current;
|
|
984
987
|
const scroller = this.scrollerRef.current;
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
988
|
+
// Since updateScrollY is called by rowHeightRefMap, could be called with null during cleanup,
|
|
989
|
+
// and the scroller might not exist
|
|
990
|
+
if (scroller && this.scrollDate) {
|
|
991
|
+
let scrollTop = computeTopFromDate(this.scrollDate, this.props.cellRows, rowHeightMap, 1);
|
|
992
|
+
if (scrollTop != null) {
|
|
993
|
+
if (scrollTop) {
|
|
994
|
+
scrollTop++; // clear top border
|
|
995
|
+
}
|
|
996
|
+
scroller.scrollTo({ y: scrollTop });
|
|
997
|
+
}
|
|
989
998
|
}
|
|
990
|
-
|
|
991
|
-
|
|
999
|
+
};
|
|
1000
|
+
this.clearScroll = () => {
|
|
1001
|
+
this.scrollDate = null;
|
|
1002
|
+
};
|
|
992
1003
|
}
|
|
993
1004
|
render() {
|
|
994
1005
|
const { props, context } = this;
|
|
@@ -999,22 +1010,25 @@ class DayGridLayout extends BaseComponent {
|
|
|
999
1010
|
// Lifecycle
|
|
1000
1011
|
// -----------------------------------------------------------------------------------------------
|
|
1001
1012
|
componentDidMount() {
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
context.emitter.on('_timeScrollRequest', this.timeScrollResponder.handleScroll);
|
|
1005
|
-
this.timeScrollResponder.handleScroll(options.scrollTime);
|
|
1013
|
+
this.resetScroll();
|
|
1014
|
+
this.scrollerRef.current.addScrollEndListener(this.clearScroll);
|
|
1006
1015
|
}
|
|
1007
1016
|
componentDidUpdate(prevProps) {
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
this.timeScrollResponder.handleScroll(options.scrollTime);
|
|
1011
|
-
}
|
|
1012
|
-
else {
|
|
1013
|
-
this.timeScrollResponder.drain();
|
|
1017
|
+
if (prevProps.dateProfile !== this.props.dateProfile && this.context.options.scrollTimeReset) {
|
|
1018
|
+
this.resetScroll();
|
|
1014
1019
|
}
|
|
1015
1020
|
}
|
|
1016
1021
|
componentWillUnmount() {
|
|
1017
|
-
this.
|
|
1022
|
+
this.scrollerRef.current.removeScrollEndListener(this.clearScroll);
|
|
1023
|
+
}
|
|
1024
|
+
// Scrolling
|
|
1025
|
+
// -----------------------------------------------------------------------------------------------
|
|
1026
|
+
resetScroll() {
|
|
1027
|
+
this.scrollDate = this.props.dateProfile.currentDate;
|
|
1028
|
+
this.updateScrollY();
|
|
1029
|
+
// updateScrollX
|
|
1030
|
+
const scroller = this.scrollerRef.current;
|
|
1031
|
+
scroller.scrollTo({ x: 0 });
|
|
1018
1032
|
}
|
|
1019
1033
|
}
|
|
1020
1034
|
|
|
@@ -1071,6 +1085,7 @@ class DayOfWeekHeaderCell extends BaseComponent {
|
|
|
1071
1085
|
}
|
|
1072
1086
|
componentWillUnmount() {
|
|
1073
1087
|
this.disconectInnerHeight();
|
|
1088
|
+
setRef(this.props.innerHeightRef, null);
|
|
1074
1089
|
}
|
|
1075
1090
|
}
|
|
1076
1091
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fullcalendar/daygrid",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.1",
|
|
4
4
|
"title": "FullCalendar Day Grid Plugin",
|
|
5
5
|
"description": "Display events on a month view or \"day grid\" view",
|
|
6
6
|
"homepage": "https://fullcalendar.io/docs/month-view",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"month-view"
|
|
14
14
|
],
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"@fullcalendar/core": "7.0.0-beta.
|
|
16
|
+
"@fullcalendar/core": "7.0.0-beta.1"
|
|
17
17
|
},
|
|
18
18
|
"type": "module",
|
|
19
19
|
"bugs": "https://fullcalendar.io/reporting-bugs",
|