@fullcalendar/resource-timegrid 7.0.0-beta.0 → 7.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +1 -1
- package/index.global.js +26 -40
- package/index.global.min.js +2 -2
- package/index.js +1 -1
- package/internal.cjs +26 -40
- package/internal.d.ts +2 -1
- package/internal.js +17 -31
- package/package.json +7 -7
package/index.cjs
CHANGED
|
@@ -22,7 +22,7 @@ var timeGridPlugin__default = /*#__PURE__*/_interopDefaultLegacy(timeGridPlugin)
|
|
|
22
22
|
|
|
23
23
|
var index = index_cjs.createPlugin({
|
|
24
24
|
name: '@fullcalendar/resource-timegrid',
|
|
25
|
-
premiumReleaseDate: '2024-
|
|
25
|
+
premiumReleaseDate: '2024-12-19',
|
|
26
26
|
deps: [
|
|
27
27
|
premiumCommonPlugin__default["default"],
|
|
28
28
|
resourcePlugin__default["default"],
|
package/index.global.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Resource Time Grid Plugin v7.0.0-beta.
|
|
2
|
+
FullCalendar Resource Time Grid Plugin v7.0.0-beta.3
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/vertical-resource-view
|
|
4
4
|
(c) 2024 Adam Shaw
|
|
5
5
|
*/
|
|
6
|
-
FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, resourcePlugin, timeGridPlugin, internal$2, preact, internal$
|
|
6
|
+
FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, resourcePlugin, timeGridPlugin, internal$2, preact, internal$4, internal$3, internal$1, internal$5) {
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
@@ -23,28 +23,30 @@ FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, r
|
|
|
23
23
|
class ResourceTimeGridView extends internal$2.DateComponent {
|
|
24
24
|
constructor() {
|
|
25
25
|
super(...arguments);
|
|
26
|
+
// memo
|
|
26
27
|
this.flattenResources = internal$2.memoize(internal$1.flattenResources);
|
|
27
28
|
this.buildResourceTimeColsModel = internal$2.memoize(buildResourceTimeColsModel);
|
|
28
|
-
this.
|
|
29
|
+
this.buildResourceRowConfigs = internal$2.memoize(internal$3.buildResourceRowConfigs);
|
|
30
|
+
this.createDayHeaderFormatter = internal$2.memoize(internal$4.createDayHeaderFormatter);
|
|
31
|
+
// internal
|
|
32
|
+
this.allDaySplitter = new internal$5.AllDaySplitter();
|
|
29
33
|
// for all-day-resource props
|
|
30
34
|
this.allDayResourceSplitter = new internal$1.VResourceSplitter();
|
|
31
35
|
this.allDayResourceSlicers = {};
|
|
32
|
-
this.allDayResourceJoiner = new internal$
|
|
36
|
+
this.allDayResourceJoiner = new internal$3.ResourceDayTableJoiner();
|
|
33
37
|
// for timed resource props
|
|
34
|
-
this.buildDayRanges = internal$2.memoize(internal$
|
|
38
|
+
this.buildDayRanges = internal$2.memoize(internal$5.buildDayRanges);
|
|
35
39
|
this.timedResourceSplitter = new internal$1.VResourceSplitter();
|
|
36
40
|
this.timedResourceSlicers = {};
|
|
37
41
|
this.timedResourceJoiner = new ResourceDayTimeColsJoiner();
|
|
38
42
|
// timed-only column splitting
|
|
39
|
-
this.splitFgEventSegs = internal$2.memoize(internal$
|
|
40
|
-
this.splitBgEventSegs = internal$2.memoize(internal$
|
|
41
|
-
this.splitBusinessHourSegs = internal$2.memoize(internal$
|
|
42
|
-
this.splitNowIndicatorSegs = internal$2.memoize(internal$
|
|
43
|
-
this.splitDateSelectionSegs = internal$2.memoize(internal$
|
|
44
|
-
this.splitEventDrag = internal$2.memoize(internal$
|
|
45
|
-
this.splitEventResize = internal$2.memoize(internal$
|
|
46
|
-
// other memo
|
|
47
|
-
this.createDayHeaderFormatter = internal$2.memoize(internal$5.createDayHeaderFormatter);
|
|
43
|
+
this.splitFgEventSegs = internal$2.memoize(internal$5.organizeSegsByCol);
|
|
44
|
+
this.splitBgEventSegs = internal$2.memoize(internal$5.organizeSegsByCol);
|
|
45
|
+
this.splitBusinessHourSegs = internal$2.memoize(internal$5.organizeSegsByCol);
|
|
46
|
+
this.splitNowIndicatorSegs = internal$2.memoize(internal$5.organizeSegsByCol);
|
|
47
|
+
this.splitDateSelectionSegs = internal$2.memoize(internal$5.organizeSegsByCol);
|
|
48
|
+
this.splitEventDrag = internal$2.memoize(internal$5.splitInteractionByCol);
|
|
49
|
+
this.splitEventResize = internal$2.memoize(internal$5.splitInteractionByCol);
|
|
48
50
|
this.isHitComboAllowed = (hit0, hit1) => {
|
|
49
51
|
let allowAcrossResources = this.dayRanges.length === 1;
|
|
50
52
|
return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;
|
|
@@ -70,7 +72,7 @@ FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, r
|
|
|
70
72
|
eventResize: splitProps.allDay.eventResize,
|
|
71
73
|
resourceDayTableModel,
|
|
72
74
|
});
|
|
73
|
-
this.allDayResourceSlicers = internal$2.mapHash(allDayResourceSplitProps, (split, resourceId) => this.allDayResourceSlicers[resourceId] || new internal$
|
|
75
|
+
this.allDayResourceSlicers = internal$2.mapHash(allDayResourceSplitProps, (split, resourceId) => this.allDayResourceSlicers[resourceId] || new internal$4.DayTableSlicer());
|
|
74
76
|
let allDayResourceSlicedProps = internal$2.mapHash(this.allDayResourceSlicers, (slicer, resourceId) => slicer.sliceProps(allDayResourceSplitProps[resourceId], dateProfile, options.nextDayThreshold, context, resourceDayTableModel.dayTableModel));
|
|
75
77
|
let allDayResourceJoinedProps = this.allDayResourceJoiner.joinProps(allDayResourceSlicedProps, resourceDayTableModel);
|
|
76
78
|
// split the timed segs by resource
|
|
@@ -85,12 +87,10 @@ FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, r
|
|
|
85
87
|
eventResize: splitProps.timed.eventResize,
|
|
86
88
|
resourceDayTableModel,
|
|
87
89
|
});
|
|
88
|
-
this.timedResourceSlicers = internal$2.mapHash(timedResourceSplitProps, (split, resourceId) => this.timedResourceSlicers[resourceId] || new internal$
|
|
90
|
+
this.timedResourceSlicers = internal$2.mapHash(timedResourceSplitProps, (split, resourceId) => this.timedResourceSlicers[resourceId] || new internal$5.DayTimeColsSlicer());
|
|
89
91
|
let timedResourceSlicedProps = internal$2.mapHash(this.timedResourceSlicers, (slicer, resourceId) => slicer.sliceProps(timedResourceSplitProps[resourceId], dateProfile, null, context, dayRanges));
|
|
90
92
|
let timedResourceJoinedProps = this.timedResourceJoiner.joinProps(timedResourceSlicedProps, resourceDayTableModel);
|
|
91
93
|
let datesRepDistinctDays = resourceDayTableModel.dayTableModel.rowCnt === 1;
|
|
92
|
-
let headerTiers = internal$4.buildResourceHeaderTiers(// TODO: memoize
|
|
93
|
-
resources, resourceDayTableModel.dayTableModel.headerDates, options.datesAboveResources, datesRepDistinctDays, context);
|
|
94
94
|
let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, resourceDayTableModel.colCnt);
|
|
95
95
|
return (preact.createElement(internal$2.NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' /* hacky */ }, (nowDate, todayRange) => {
|
|
96
96
|
// timed-only column splitting
|
|
@@ -100,32 +100,18 @@ FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, r
|
|
|
100
100
|
let businessHourSegsByCol = this.splitBusinessHourSegs(timedResourceJoinedProps.businessHourSegs, colCnt);
|
|
101
101
|
let nowIndicatorSegsByCol = this.splitNowIndicatorSegs((() => {
|
|
102
102
|
// was buildNowIndicatorSegs
|
|
103
|
-
let nonResourceSegs =
|
|
103
|
+
let nonResourceSegs = options.nowIndicator
|
|
104
|
+
? this.timedResourceSlicers[''].sliceNowDate(nowDate, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges)
|
|
105
|
+
: []; // TODO: breaks memoization?
|
|
104
106
|
return this.timedResourceJoiner.expandSegs(resourceDayTableModel, nonResourceSegs);
|
|
105
107
|
})(), colCnt);
|
|
106
108
|
let dateSelectionSegsByCol = this.splitDateSelectionSegs(timedResourceJoinedProps.dateSelectionSegs, colCnt);
|
|
107
109
|
let eventDragByCol = this.splitEventDrag(timedResourceJoinedProps.eventDrag, colCnt);
|
|
108
110
|
let eventResizeByCol = this.splitEventResize(timedResourceJoinedProps.eventResize, colCnt);
|
|
109
|
-
|
|
111
|
+
const headerTiers = this.buildResourceRowConfigs(resources, options.datesAboveResources, resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays, props.dateProfile, todayRange, dayHeaderFormat, context);
|
|
112
|
+
return (preact.createElement(internal$5.TimeGridLayout, { dateProfile: dateProfile, nowDate: nowDate, todayRange: todayRange, cells: resourceDayTableModel.cells[0], forPrint: props.forPrint, isHitComboAllowed: this.isHitComboAllowed, className: 'fc-resource-timegrid-view',
|
|
110
113
|
// header content
|
|
111
|
-
headerTiers: headerTiers,
|
|
112
|
-
, { dateProfile: dateProfile, innerWidthRef: innerWidthRef, innerHeightRef: innerHeightRef, width: width })) : (preact.createElement("div", { className: 'fc-cell', style: { width } }))),
|
|
113
|
-
// TODO: DRY
|
|
114
|
-
renderHeaderContent: (model, tierNum, innerHeightRef, colWidth) => {
|
|
115
|
-
if (model.resource) {
|
|
116
|
-
return (preact.createElement(internal$4.ResourceHeaderCell, Object.assign({}, model, { innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth, isSticky: tierNum < headerTiers.length - 1 })));
|
|
117
|
-
}
|
|
118
|
-
else if (model.date) {
|
|
119
|
-
return (preact.createElement(internal$5.DateHeaderCell, Object.assign({}, model, { navLink: resourceDayTableModel.dayTableModel.colCnt > 1, dateProfile: props.dateProfile, todayRange: todayRange, dayHeaderFormat: dayHeaderFormat, innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth })));
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
preact.createElement(internal$5.DayOfWeekHeaderCell, Object.assign({}, model, { dayHeaderFormat: dayHeaderFormat, innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth }));
|
|
123
|
-
}
|
|
124
|
-
}, getHeaderModelKey: (model) => (model.resource
|
|
125
|
-
? model.resource.id
|
|
126
|
-
: model.date
|
|
127
|
-
? model.date.toISOString()
|
|
128
|
-
: model.dow),
|
|
114
|
+
headerTiers: headerTiers,
|
|
129
115
|
// all-day content
|
|
130
116
|
fgEventSegs: allDayResourceJoinedProps.fgEventSegs, bgEventSegs: allDayResourceJoinedProps.bgEventSegs, businessHourSegs: allDayResourceJoinedProps.businessHourSegs, dateSelectionSegs: allDayResourceJoinedProps.dateSelectionSegs, eventDrag: allDayResourceJoinedProps.eventDrag, eventResize: allDayResourceJoinedProps.eventResize,
|
|
131
117
|
// timed content
|
|
@@ -139,7 +125,7 @@ FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, r
|
|
|
139
125
|
TODO: kill this and DayResourceTableModel/ResourceDayTableModel
|
|
140
126
|
*/
|
|
141
127
|
function buildResourceTimeColsModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {
|
|
142
|
-
let dayTable = internal$
|
|
128
|
+
let dayTable = internal$5.buildTimeColsModel(dateProfile, dateProfileGenerator);
|
|
143
129
|
if (!resources.length) {
|
|
144
130
|
return new internal$1.ResourcelessDayTableModel(dayTable);
|
|
145
131
|
}
|
|
@@ -150,7 +136,7 @@ FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, r
|
|
|
150
136
|
|
|
151
137
|
var plugin = core.createPlugin({
|
|
152
138
|
name: '@fullcalendar/resource-timegrid',
|
|
153
|
-
premiumReleaseDate: '2024-
|
|
139
|
+
premiumReleaseDate: '2024-12-19',
|
|
154
140
|
deps: [
|
|
155
141
|
premiumCommonPlugin__default["default"],
|
|
156
142
|
resourcePlugin__default["default"],
|
package/index.global.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Resource Time Grid Plugin v7.0.0-beta.
|
|
2
|
+
FullCalendar Resource Time Grid Plugin v7.0.0-beta.3
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/vertical-resource-view
|
|
4
4
|
(c) 2024 Adam Shaw
|
|
5
5
|
*/
|
|
6
|
-
FullCalendar.ResourceTimeGrid=function(e,t,s,i,l,
|
|
6
|
+
FullCalendar.ResourceTimeGrid=function(e,t,s,i,r,l,o,a,n,d,u){"use strict";function c(e){return e&&e.__esModule?e:{default:e}}var m=c(s),g=c(i),S=c(r);class y extends d.VResourceJoiner{transformSeg(e,t,s){return[Object.assign(Object.assign({},e),{col:t.computeCol(e.col,s)})]}}class h extends l.DateComponent{constructor(){super(...arguments),this.flattenResources=l.memoize(d.flattenResources),this.buildResourceTimeColsModel=l.memoize(R),this.buildResourceRowConfigs=l.memoize(n.buildResourceRowConfigs),this.createDayHeaderFormatter=l.memoize(a.createDayHeaderFormatter),this.allDaySplitter=new u.AllDaySplitter,this.allDayResourceSplitter=new d.VResourceSplitter,this.allDayResourceSlicers={},this.allDayResourceJoiner=new n.ResourceDayTableJoiner,this.buildDayRanges=l.memoize(u.buildDayRanges),this.timedResourceSplitter=new d.VResourceSplitter,this.timedResourceSlicers={},this.timedResourceJoiner=new y,this.splitFgEventSegs=l.memoize(u.organizeSegsByCol),this.splitBgEventSegs=l.memoize(u.organizeSegsByCol),this.splitBusinessHourSegs=l.memoize(u.organizeSegsByCol),this.splitNowIndicatorSegs=l.memoize(u.organizeSegsByCol),this.splitDateSelectionSegs=l.memoize(u.organizeSegsByCol),this.splitEventDrag=l.memoize(u.splitInteractionByCol),this.splitEventResize=l.memoize(u.splitInteractionByCol),this.isHitComboAllowed=(e,t)=>1===this.dayRanges.length||e.dateSpan.resourceId===t.dateSpan.resourceId}render(){let{props:e,context:t}=this,{options:s,dateEnv:i}=t,{dateProfile:r}=e,n=s.resourceOrder||d.DEFAULT_RESOURCE_ORDER,c=this.flattenResources(e.resourceStore,n),m=this.buildResourceTimeColsModel(r,t.dateProfileGenerator,c,s.datesAboveResources,t),g=this.allDaySplitter.splitProps(e),S=this.allDayResourceSplitter.splitProps({businessHours:g.allDay.businessHours,dateSelection:g.allDay.dateSelection,eventStore:g.allDay.eventStore,eventUiBases:g.allDay.eventUiBases,eventSelection:g.allDay.eventSelection,eventDrag:g.allDay.eventDrag,eventResize:g.allDay.eventResize,resourceDayTableModel:m});this.allDayResourceSlicers=l.mapHash(S,(e,t)=>this.allDayResourceSlicers[t]||new a.DayTableSlicer);let y=l.mapHash(this.allDayResourceSlicers,(e,i)=>e.sliceProps(S[i],r,s.nextDayThreshold,t,m.dayTableModel)),h=this.allDayResourceJoiner.joinProps(y,m),R=this.dayRanges=this.buildDayRanges(m.dayTableModel,r,i),p=this.timedResourceSplitter.splitProps({businessHours:g.timed.businessHours,dateSelection:g.timed.dateSelection,eventStore:g.timed.eventStore,eventUiBases:g.timed.eventUiBases,eventSelection:g.timed.eventSelection,eventDrag:g.timed.eventDrag,eventResize:g.timed.eventResize,resourceDayTableModel:m});this.timedResourceSlicers=l.mapHash(p,(e,t)=>this.timedResourceSlicers[t]||new u.DayTimeColsSlicer);let D=l.mapHash(this.timedResourceSlicers,(e,s)=>e.sliceProps(p[s],r,null,t,R)),v=this.timedResourceJoiner.joinProps(D,m),C=1===m.dayTableModel.rowCnt,b=this.createDayHeaderFormatter(t.options.dayHeaderFormat,C,m.colCnt);return o.createElement(l.NowTimer,{unit:s.nowIndicator?"minute":"day"},(i,l)=>{let a=m.colCnt,n=this.splitFgEventSegs(v.fgEventSegs,a),d=this.splitBgEventSegs(v.bgEventSegs,a),g=this.splitBusinessHourSegs(v.businessHourSegs,a),S=this.splitNowIndicatorSegs((()=>{let e=s.nowIndicator?this.timedResourceSlicers[""].sliceNowDate(i,this.props.dateProfile,this.context.options.nextDayThreshold,this.context,this.dayRanges):[];return this.timedResourceJoiner.expandSegs(m,e)})(),a),y=this.splitDateSelectionSegs(v.dateSelectionSegs,a),R=this.splitEventDrag(v.eventDrag,a),p=this.splitEventResize(v.eventResize,a);const D=this.buildResourceRowConfigs(c,s.datesAboveResources,m.dayTableModel.headerDates,C,e.dateProfile,l,b,t);return o.createElement(u.TimeGridLayout,{dateProfile:r,nowDate:i,todayRange:l,cells:m.cells[0],forPrint:e.forPrint,isHitComboAllowed:this.isHitComboAllowed,className:"fc-resource-timegrid-view",headerTiers:D,fgEventSegs:h.fgEventSegs,bgEventSegs:h.bgEventSegs,businessHourSegs:h.businessHourSegs,dateSelectionSegs:h.dateSelectionSegs,eventDrag:h.eventDrag,eventResize:h.eventResize,fgEventSegsByCol:n,bgEventSegsByCol:d,businessHourSegsByCol:g,nowIndicatorSegsByCol:S,dateSelectionSegsByCol:y,eventDragByCol:R,eventResizeByCol:p,eventSelection:h.eventSelection})})}}function R(e,t,s,i,r){let l=u.buildTimeColsModel(e,t);return s.length?i?new d.DayResourceTableModel(l,s,r):new d.ResourceDayTableModel(l,s,r):new d.ResourcelessDayTableModel(l)}var p=t.createPlugin({name:"@fullcalendar/resource-timegrid",premiumReleaseDate:"2024-12-19",deps:[m.default,g.default,S.default],initialView:"resourceTimeGridDay",views:{resourceTimeGrid:{type:"timeGrid",component:h,needsResourceData:!0},resourceTimeGridDay:{type:"resourceTimeGrid",duration:{days:1}},resourceTimeGridWeek:{type:"resourceTimeGrid",duration:{weeks:1}}}}),D={__proto__:null,ResourceTimeGridView:h};return t.globalPlugins.push(p),e.Internal=D,e.default=p,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,FullCalendar.PremiumCommon,FullCalendar.Resource,FullCalendar.TimeGrid,FullCalendar.Internal,FullCalendar.Preact,FullCalendar.DayGrid.Internal,FullCalendar.ResourceDayGrid.Internal,FullCalendar.Resource.Internal,FullCalendar.TimeGrid.Internal);
|
package/index.js
CHANGED
package/internal.cjs
CHANGED
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var internal_cjs$1 = require('@fullcalendar/core/internal.cjs');
|
|
6
6
|
var preact_cjs = require('@fullcalendar/core/preact.cjs');
|
|
7
|
-
var internal_cjs$
|
|
8
|
-
var internal_cjs$
|
|
7
|
+
var internal_cjs$3 = require('@fullcalendar/daygrid/internal.cjs');
|
|
8
|
+
var internal_cjs$2 = require('@fullcalendar/resource-daygrid/internal.cjs');
|
|
9
9
|
var internal_cjs = require('@fullcalendar/resource/internal.cjs');
|
|
10
|
-
var internal_cjs$
|
|
10
|
+
var internal_cjs$4 = require('@fullcalendar/timegrid/internal.cjs');
|
|
11
11
|
|
|
12
12
|
class ResourceDayTimeColsJoiner extends internal_cjs.VResourceJoiner {
|
|
13
13
|
transformSeg(seg, resourceDayTable, resourceI) {
|
|
@@ -20,28 +20,30 @@ class ResourceDayTimeColsJoiner extends internal_cjs.VResourceJoiner {
|
|
|
20
20
|
class ResourceTimeGridView extends internal_cjs$1.DateComponent {
|
|
21
21
|
constructor() {
|
|
22
22
|
super(...arguments);
|
|
23
|
+
// memo
|
|
23
24
|
this.flattenResources = internal_cjs$1.memoize(internal_cjs.flattenResources);
|
|
24
25
|
this.buildResourceTimeColsModel = internal_cjs$1.memoize(buildResourceTimeColsModel);
|
|
25
|
-
this.
|
|
26
|
+
this.buildResourceRowConfigs = internal_cjs$1.memoize(internal_cjs$2.buildResourceRowConfigs);
|
|
27
|
+
this.createDayHeaderFormatter = internal_cjs$1.memoize(internal_cjs$3.createDayHeaderFormatter);
|
|
28
|
+
// internal
|
|
29
|
+
this.allDaySplitter = new internal_cjs$4.AllDaySplitter();
|
|
26
30
|
// for all-day-resource props
|
|
27
31
|
this.allDayResourceSplitter = new internal_cjs.VResourceSplitter();
|
|
28
32
|
this.allDayResourceSlicers = {};
|
|
29
|
-
this.allDayResourceJoiner = new internal_cjs$
|
|
33
|
+
this.allDayResourceJoiner = new internal_cjs$2.ResourceDayTableJoiner();
|
|
30
34
|
// for timed resource props
|
|
31
|
-
this.buildDayRanges = internal_cjs$1.memoize(internal_cjs$
|
|
35
|
+
this.buildDayRanges = internal_cjs$1.memoize(internal_cjs$4.buildDayRanges);
|
|
32
36
|
this.timedResourceSplitter = new internal_cjs.VResourceSplitter();
|
|
33
37
|
this.timedResourceSlicers = {};
|
|
34
38
|
this.timedResourceJoiner = new ResourceDayTimeColsJoiner();
|
|
35
39
|
// timed-only column splitting
|
|
36
|
-
this.splitFgEventSegs = internal_cjs$1.memoize(internal_cjs$
|
|
37
|
-
this.splitBgEventSegs = internal_cjs$1.memoize(internal_cjs$
|
|
38
|
-
this.splitBusinessHourSegs = internal_cjs$1.memoize(internal_cjs$
|
|
39
|
-
this.splitNowIndicatorSegs = internal_cjs$1.memoize(internal_cjs$
|
|
40
|
-
this.splitDateSelectionSegs = internal_cjs$1.memoize(internal_cjs$
|
|
41
|
-
this.splitEventDrag = internal_cjs$1.memoize(internal_cjs$
|
|
42
|
-
this.splitEventResize = internal_cjs$1.memoize(internal_cjs$
|
|
43
|
-
// other memo
|
|
44
|
-
this.createDayHeaderFormatter = internal_cjs$1.memoize(internal_cjs$4.createDayHeaderFormatter);
|
|
40
|
+
this.splitFgEventSegs = internal_cjs$1.memoize(internal_cjs$4.organizeSegsByCol);
|
|
41
|
+
this.splitBgEventSegs = internal_cjs$1.memoize(internal_cjs$4.organizeSegsByCol);
|
|
42
|
+
this.splitBusinessHourSegs = internal_cjs$1.memoize(internal_cjs$4.organizeSegsByCol);
|
|
43
|
+
this.splitNowIndicatorSegs = internal_cjs$1.memoize(internal_cjs$4.organizeSegsByCol);
|
|
44
|
+
this.splitDateSelectionSegs = internal_cjs$1.memoize(internal_cjs$4.organizeSegsByCol);
|
|
45
|
+
this.splitEventDrag = internal_cjs$1.memoize(internal_cjs$4.splitInteractionByCol);
|
|
46
|
+
this.splitEventResize = internal_cjs$1.memoize(internal_cjs$4.splitInteractionByCol);
|
|
45
47
|
this.isHitComboAllowed = (hit0, hit1) => {
|
|
46
48
|
let allowAcrossResources = this.dayRanges.length === 1;
|
|
47
49
|
return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;
|
|
@@ -67,7 +69,7 @@ class ResourceTimeGridView extends internal_cjs$1.DateComponent {
|
|
|
67
69
|
eventResize: splitProps.allDay.eventResize,
|
|
68
70
|
resourceDayTableModel,
|
|
69
71
|
});
|
|
70
|
-
this.allDayResourceSlicers = internal_cjs$1.mapHash(allDayResourceSplitProps, (split, resourceId) => this.allDayResourceSlicers[resourceId] || new internal_cjs$
|
|
72
|
+
this.allDayResourceSlicers = internal_cjs$1.mapHash(allDayResourceSplitProps, (split, resourceId) => this.allDayResourceSlicers[resourceId] || new internal_cjs$3.DayTableSlicer());
|
|
71
73
|
let allDayResourceSlicedProps = internal_cjs$1.mapHash(this.allDayResourceSlicers, (slicer, resourceId) => slicer.sliceProps(allDayResourceSplitProps[resourceId], dateProfile, options.nextDayThreshold, context, resourceDayTableModel.dayTableModel));
|
|
72
74
|
let allDayResourceJoinedProps = this.allDayResourceJoiner.joinProps(allDayResourceSlicedProps, resourceDayTableModel);
|
|
73
75
|
// split the timed segs by resource
|
|
@@ -82,12 +84,10 @@ class ResourceTimeGridView extends internal_cjs$1.DateComponent {
|
|
|
82
84
|
eventResize: splitProps.timed.eventResize,
|
|
83
85
|
resourceDayTableModel,
|
|
84
86
|
});
|
|
85
|
-
this.timedResourceSlicers = internal_cjs$1.mapHash(timedResourceSplitProps, (split, resourceId) => this.timedResourceSlicers[resourceId] || new internal_cjs$
|
|
87
|
+
this.timedResourceSlicers = internal_cjs$1.mapHash(timedResourceSplitProps, (split, resourceId) => this.timedResourceSlicers[resourceId] || new internal_cjs$4.DayTimeColsSlicer());
|
|
86
88
|
let timedResourceSlicedProps = internal_cjs$1.mapHash(this.timedResourceSlicers, (slicer, resourceId) => slicer.sliceProps(timedResourceSplitProps[resourceId], dateProfile, null, context, dayRanges));
|
|
87
89
|
let timedResourceJoinedProps = this.timedResourceJoiner.joinProps(timedResourceSlicedProps, resourceDayTableModel);
|
|
88
90
|
let datesRepDistinctDays = resourceDayTableModel.dayTableModel.rowCnt === 1;
|
|
89
|
-
let headerTiers = internal_cjs$3.buildResourceHeaderTiers(// TODO: memoize
|
|
90
|
-
resources, resourceDayTableModel.dayTableModel.headerDates, options.datesAboveResources, datesRepDistinctDays, context);
|
|
91
91
|
let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, resourceDayTableModel.colCnt);
|
|
92
92
|
return (preact_cjs.createElement(internal_cjs$1.NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' /* hacky */ }, (nowDate, todayRange) => {
|
|
93
93
|
// timed-only column splitting
|
|
@@ -97,32 +97,18 @@ class ResourceTimeGridView extends internal_cjs$1.DateComponent {
|
|
|
97
97
|
let businessHourSegsByCol = this.splitBusinessHourSegs(timedResourceJoinedProps.businessHourSegs, colCnt);
|
|
98
98
|
let nowIndicatorSegsByCol = this.splitNowIndicatorSegs((() => {
|
|
99
99
|
// was buildNowIndicatorSegs
|
|
100
|
-
let nonResourceSegs =
|
|
100
|
+
let nonResourceSegs = options.nowIndicator
|
|
101
|
+
? this.timedResourceSlicers[''].sliceNowDate(nowDate, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges)
|
|
102
|
+
: []; // TODO: breaks memoization?
|
|
101
103
|
return this.timedResourceJoiner.expandSegs(resourceDayTableModel, nonResourceSegs);
|
|
102
104
|
})(), colCnt);
|
|
103
105
|
let dateSelectionSegsByCol = this.splitDateSelectionSegs(timedResourceJoinedProps.dateSelectionSegs, colCnt);
|
|
104
106
|
let eventDragByCol = this.splitEventDrag(timedResourceJoinedProps.eventDrag, colCnt);
|
|
105
107
|
let eventResizeByCol = this.splitEventResize(timedResourceJoinedProps.eventResize, colCnt);
|
|
106
|
-
|
|
108
|
+
const headerTiers = this.buildResourceRowConfigs(resources, options.datesAboveResources, resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays, props.dateProfile, todayRange, dayHeaderFormat, context);
|
|
109
|
+
return (preact_cjs.createElement(internal_cjs$4.TimeGridLayout, { dateProfile: dateProfile, nowDate: nowDate, todayRange: todayRange, cells: resourceDayTableModel.cells[0], forPrint: props.forPrint, isHitComboAllowed: this.isHitComboAllowed, className: 'fc-resource-timegrid-view',
|
|
107
110
|
// header content
|
|
108
|
-
headerTiers: headerTiers,
|
|
109
|
-
, { dateProfile: dateProfile, innerWidthRef: innerWidthRef, innerHeightRef: innerHeightRef, width: width })) : (preact_cjs.createElement("div", { className: 'fc-cell', style: { width } }))),
|
|
110
|
-
// TODO: DRY
|
|
111
|
-
renderHeaderContent: (model, tierNum, innerHeightRef, colWidth) => {
|
|
112
|
-
if (model.resource) {
|
|
113
|
-
return (preact_cjs.createElement(internal_cjs$3.ResourceHeaderCell, Object.assign({}, model, { innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth, isSticky: tierNum < headerTiers.length - 1 })));
|
|
114
|
-
}
|
|
115
|
-
else if (model.date) {
|
|
116
|
-
return (preact_cjs.createElement(internal_cjs$4.DateHeaderCell, Object.assign({}, model, { navLink: resourceDayTableModel.dayTableModel.colCnt > 1, dateProfile: props.dateProfile, todayRange: todayRange, dayHeaderFormat: dayHeaderFormat, innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth })));
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
preact_cjs.createElement(internal_cjs$4.DayOfWeekHeaderCell, Object.assign({}, model, { dayHeaderFormat: dayHeaderFormat, innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth }));
|
|
120
|
-
}
|
|
121
|
-
}, getHeaderModelKey: (model) => (model.resource
|
|
122
|
-
? model.resource.id
|
|
123
|
-
: model.date
|
|
124
|
-
? model.date.toISOString()
|
|
125
|
-
: model.dow),
|
|
111
|
+
headerTiers: headerTiers,
|
|
126
112
|
// all-day content
|
|
127
113
|
fgEventSegs: allDayResourceJoinedProps.fgEventSegs, bgEventSegs: allDayResourceJoinedProps.bgEventSegs, businessHourSegs: allDayResourceJoinedProps.businessHourSegs, dateSelectionSegs: allDayResourceJoinedProps.dateSelectionSegs, eventDrag: allDayResourceJoinedProps.eventDrag, eventResize: allDayResourceJoinedProps.eventResize,
|
|
128
114
|
// timed content
|
|
@@ -136,7 +122,7 @@ class ResourceTimeGridView extends internal_cjs$1.DateComponent {
|
|
|
136
122
|
TODO: kill this and DayResourceTableModel/ResourceDayTableModel
|
|
137
123
|
*/
|
|
138
124
|
function buildResourceTimeColsModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {
|
|
139
|
-
let dayTable = internal_cjs$
|
|
125
|
+
let dayTable = internal_cjs$4.buildTimeColsModel(dateProfile, dateProfileGenerator);
|
|
140
126
|
if (!resources.length) {
|
|
141
127
|
return new internal_cjs.ResourcelessDayTableModel(dayTable);
|
|
142
128
|
}
|
package/internal.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ interface ResourceTimeGridViewState {
|
|
|
9
9
|
declare class ResourceTimeGridView extends DateComponent<ResourceViewProps, ResourceTimeGridViewState> {
|
|
10
10
|
private flattenResources;
|
|
11
11
|
private buildResourceTimeColsModel;
|
|
12
|
+
private buildResourceRowConfigs;
|
|
13
|
+
private createDayHeaderFormatter;
|
|
12
14
|
private allDaySplitter;
|
|
13
15
|
private allDayResourceSplitter;
|
|
14
16
|
private allDayResourceSlicers;
|
|
@@ -25,7 +27,6 @@ declare class ResourceTimeGridView extends DateComponent<ResourceViewProps, Reso
|
|
|
25
27
|
private splitDateSelectionSegs;
|
|
26
28
|
private splitEventDrag;
|
|
27
29
|
private splitEventResize;
|
|
28
|
-
private createDayHeaderFormatter;
|
|
29
30
|
render(): createElement.JSX.Element;
|
|
30
31
|
isHitComboAllowed: (hit0: Hit, hit1: Hit) => boolean;
|
|
31
32
|
}
|
package/internal.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DateComponent, memoize, mapHash, NowTimer } from '@fullcalendar/core/internal.js';
|
|
2
2
|
import { createElement } from '@fullcalendar/core/preact.js';
|
|
3
|
-
import { createDayHeaderFormatter, DayTableSlicer
|
|
4
|
-
import {
|
|
3
|
+
import { createDayHeaderFormatter, DayTableSlicer } from '@fullcalendar/daygrid/internal.js';
|
|
4
|
+
import { buildResourceRowConfigs, ResourceDayTableJoiner } from '@fullcalendar/resource-daygrid/internal.js';
|
|
5
5
|
import { VResourceJoiner, flattenResources, VResourceSplitter, DEFAULT_RESOURCE_ORDER, ResourcelessDayTableModel, DayResourceTableModel, ResourceDayTableModel } from '@fullcalendar/resource/internal.js';
|
|
6
|
-
import { AllDaySplitter, buildDayRanges,
|
|
6
|
+
import { AllDaySplitter, buildDayRanges, organizeSegsByCol, splitInteractionByCol, DayTimeColsSlicer, TimeGridLayout, buildTimeColsModel } from '@fullcalendar/timegrid/internal.js';
|
|
7
7
|
|
|
8
8
|
class ResourceDayTimeColsJoiner extends VResourceJoiner {
|
|
9
9
|
transformSeg(seg, resourceDayTable, resourceI) {
|
|
@@ -16,8 +16,12 @@ class ResourceDayTimeColsJoiner extends VResourceJoiner {
|
|
|
16
16
|
class ResourceTimeGridView extends DateComponent {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
|
+
// memo
|
|
19
20
|
this.flattenResources = memoize(flattenResources);
|
|
20
21
|
this.buildResourceTimeColsModel = memoize(buildResourceTimeColsModel);
|
|
22
|
+
this.buildResourceRowConfigs = memoize(buildResourceRowConfigs);
|
|
23
|
+
this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);
|
|
24
|
+
// internal
|
|
21
25
|
this.allDaySplitter = new AllDaySplitter();
|
|
22
26
|
// for all-day-resource props
|
|
23
27
|
this.allDayResourceSplitter = new VResourceSplitter();
|
|
@@ -29,15 +33,13 @@ class ResourceTimeGridView extends DateComponent {
|
|
|
29
33
|
this.timedResourceSlicers = {};
|
|
30
34
|
this.timedResourceJoiner = new ResourceDayTimeColsJoiner();
|
|
31
35
|
// timed-only column splitting
|
|
32
|
-
this.splitFgEventSegs = memoize(
|
|
33
|
-
this.splitBgEventSegs = memoize(
|
|
34
|
-
this.splitBusinessHourSegs = memoize(
|
|
35
|
-
this.splitNowIndicatorSegs = memoize(
|
|
36
|
-
this.splitDateSelectionSegs = memoize(
|
|
36
|
+
this.splitFgEventSegs = memoize(organizeSegsByCol);
|
|
37
|
+
this.splitBgEventSegs = memoize(organizeSegsByCol);
|
|
38
|
+
this.splitBusinessHourSegs = memoize(organizeSegsByCol);
|
|
39
|
+
this.splitNowIndicatorSegs = memoize(organizeSegsByCol);
|
|
40
|
+
this.splitDateSelectionSegs = memoize(organizeSegsByCol);
|
|
37
41
|
this.splitEventDrag = memoize(splitInteractionByCol);
|
|
38
42
|
this.splitEventResize = memoize(splitInteractionByCol);
|
|
39
|
-
// other memo
|
|
40
|
-
this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);
|
|
41
43
|
this.isHitComboAllowed = (hit0, hit1) => {
|
|
42
44
|
let allowAcrossResources = this.dayRanges.length === 1;
|
|
43
45
|
return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;
|
|
@@ -82,8 +84,6 @@ class ResourceTimeGridView extends DateComponent {
|
|
|
82
84
|
let timedResourceSlicedProps = mapHash(this.timedResourceSlicers, (slicer, resourceId) => slicer.sliceProps(timedResourceSplitProps[resourceId], dateProfile, null, context, dayRanges));
|
|
83
85
|
let timedResourceJoinedProps = this.timedResourceJoiner.joinProps(timedResourceSlicedProps, resourceDayTableModel);
|
|
84
86
|
let datesRepDistinctDays = resourceDayTableModel.dayTableModel.rowCnt === 1;
|
|
85
|
-
let headerTiers = buildResourceHeaderTiers(// TODO: memoize
|
|
86
|
-
resources, resourceDayTableModel.dayTableModel.headerDates, options.datesAboveResources, datesRepDistinctDays, context);
|
|
87
87
|
let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, resourceDayTableModel.colCnt);
|
|
88
88
|
return (createElement(NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' /* hacky */ }, (nowDate, todayRange) => {
|
|
89
89
|
// timed-only column splitting
|
|
@@ -93,32 +93,18 @@ class ResourceTimeGridView extends DateComponent {
|
|
|
93
93
|
let businessHourSegsByCol = this.splitBusinessHourSegs(timedResourceJoinedProps.businessHourSegs, colCnt);
|
|
94
94
|
let nowIndicatorSegsByCol = this.splitNowIndicatorSegs((() => {
|
|
95
95
|
// was buildNowIndicatorSegs
|
|
96
|
-
let nonResourceSegs =
|
|
96
|
+
let nonResourceSegs = options.nowIndicator
|
|
97
|
+
? this.timedResourceSlicers[''].sliceNowDate(nowDate, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges)
|
|
98
|
+
: []; // TODO: breaks memoization?
|
|
97
99
|
return this.timedResourceJoiner.expandSegs(resourceDayTableModel, nonResourceSegs);
|
|
98
100
|
})(), colCnt);
|
|
99
101
|
let dateSelectionSegsByCol = this.splitDateSelectionSegs(timedResourceJoinedProps.dateSelectionSegs, colCnt);
|
|
100
102
|
let eventDragByCol = this.splitEventDrag(timedResourceJoinedProps.eventDrag, colCnt);
|
|
101
103
|
let eventResizeByCol = this.splitEventResize(timedResourceJoinedProps.eventResize, colCnt);
|
|
104
|
+
const headerTiers = this.buildResourceRowConfigs(resources, options.datesAboveResources, resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays, props.dateProfile, todayRange, dayHeaderFormat, context);
|
|
102
105
|
return (createElement(TimeGridLayout, { dateProfile: dateProfile, nowDate: nowDate, todayRange: todayRange, cells: resourceDayTableModel.cells[0], forPrint: props.forPrint, isHitComboAllowed: this.isHitComboAllowed, className: 'fc-resource-timegrid-view',
|
|
103
106
|
// header content
|
|
104
|
-
headerTiers: headerTiers,
|
|
105
|
-
, { dateProfile: dateProfile, innerWidthRef: innerWidthRef, innerHeightRef: innerHeightRef, width: width })) : (createElement("div", { className: 'fc-cell', style: { width } }))),
|
|
106
|
-
// TODO: DRY
|
|
107
|
-
renderHeaderContent: (model, tierNum, innerHeightRef, colWidth) => {
|
|
108
|
-
if (model.resource) {
|
|
109
|
-
return (createElement(ResourceHeaderCell, Object.assign({}, model, { innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth, isSticky: tierNum < headerTiers.length - 1 })));
|
|
110
|
-
}
|
|
111
|
-
else if (model.date) {
|
|
112
|
-
return (createElement(DateHeaderCell, Object.assign({}, model, { navLink: resourceDayTableModel.dayTableModel.colCnt > 1, dateProfile: props.dateProfile, todayRange: todayRange, dayHeaderFormat: dayHeaderFormat, innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth })));
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
createElement(DayOfWeekHeaderCell, Object.assign({}, model, { dayHeaderFormat: dayHeaderFormat, innerHeightRef: innerHeightRef, colSpan: model.colSpan, colWidth: colWidth }));
|
|
116
|
-
}
|
|
117
|
-
}, getHeaderModelKey: (model) => (model.resource
|
|
118
|
-
? model.resource.id
|
|
119
|
-
: model.date
|
|
120
|
-
? model.date.toISOString()
|
|
121
|
-
: model.dow),
|
|
107
|
+
headerTiers: headerTiers,
|
|
122
108
|
// all-day content
|
|
123
109
|
fgEventSegs: allDayResourceJoinedProps.fgEventSegs, bgEventSegs: allDayResourceJoinedProps.bgEventSegs, businessHourSegs: allDayResourceJoinedProps.businessHourSegs, dateSelectionSegs: allDayResourceJoinedProps.dateSelectionSegs, eventDrag: allDayResourceJoinedProps.eventDrag, eventResize: allDayResourceJoinedProps.eventResize,
|
|
124
110
|
// timed content
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fullcalendar/resource-timegrid",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.3",
|
|
4
4
|
"title": "FullCalendar Resource Time Grid Plugin",
|
|
5
5
|
"description": "Displays events on a vertical resource view with time slots",
|
|
6
6
|
"keywords": [
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
],
|
|
16
16
|
"homepage": "https://fullcalendar.io/docs/vertical-resource-view",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@fullcalendar/daygrid": "7.0.0-beta.
|
|
19
|
-
"@fullcalendar/premium-common": "7.0.0-beta.
|
|
20
|
-
"@fullcalendar/resource-daygrid": "7.0.0-beta.
|
|
21
|
-
"@fullcalendar/timegrid": "7.0.0-beta.
|
|
18
|
+
"@fullcalendar/daygrid": "7.0.0-beta.3",
|
|
19
|
+
"@fullcalendar/premium-common": "7.0.0-beta.3",
|
|
20
|
+
"@fullcalendar/resource-daygrid": "7.0.0-beta.3",
|
|
21
|
+
"@fullcalendar/timegrid": "7.0.0-beta.3"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@fullcalendar/core": "7.0.0-beta.
|
|
25
|
-
"@fullcalendar/resource": "7.0.0-beta.
|
|
24
|
+
"@fullcalendar/core": "7.0.0-beta.3",
|
|
25
|
+
"@fullcalendar/resource": "7.0.0-beta.3"
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"bugs": "https://fullcalendar.io/reporting-bugs",
|