@fullcalendar/resource-timegrid 7.0.0-beta.1 → 7.0.0-beta.4

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 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-10-09',
25
+ premiumReleaseDate: '2025-01-09',
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.1
2
+ FullCalendar Resource Time Grid Plugin v7.0.0-beta.4
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$5, internal$4, internal$1, internal$3) {
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.allDaySplitter = new internal$3.AllDaySplitter();
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$4.ResourceDayTableJoiner();
36
+ this.allDayResourceJoiner = new internal$3.ResourceDayTableJoiner();
33
37
  // for timed resource props
34
- this.buildDayRanges = internal$2.memoize(internal$3.buildDayRanges);
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$3.splitSegsByCol);
40
- this.splitBgEventSegs = internal$2.memoize(internal$3.splitSegsByCol);
41
- this.splitBusinessHourSegs = internal$2.memoize(internal$3.splitSegsByCol);
42
- this.splitNowIndicatorSegs = internal$2.memoize(internal$3.splitSegsByCol);
43
- this.splitDateSelectionSegs = internal$2.memoize(internal$3.splitSegsByCol);
44
- this.splitEventDrag = internal$2.memoize(internal$3.splitInteractionByCol);
45
- this.splitEventResize = internal$2.memoize(internal$3.splitInteractionByCol);
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$5.DayTableSlicer());
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$3.DayTimeColsSlicer());
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 = this.timedResourceSlicers[''].sliceNowDate(nowDate, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);
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
- return (preact.createElement(internal$3.TimeGridLayout, { dateProfile: dateProfile, nowDate: nowDate, todayRange: todayRange, cells: resourceDayTableModel.cells[0], forPrint: props.forPrint, isHitComboAllowed: this.isHitComboAllowed, className: 'fc-resource-timegrid-view',
111
+ const headerTiers = this.buildResourceRowConfigs(resources, options.datesAboveResources, resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays, props.dateProfile, todayRange, dayHeaderFormat, context);
112
+ return (preact.createElement(internal$5.TimeGridLayout, { labelId: props.labelId, labelStr: props.labelStr, 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, renderHeaderLabel: (tierNum, innerWidthRef, innerHeightRef, width) => ((options.weekNumbers && tierNum === headerTiers.length - 1) ? (preact.createElement(internal$3.TimeGridWeekNumber // .fc-cell
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$3.buildTimeColsModel(dateProfile, dateProfileGenerator);
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-10-09',
139
+ premiumReleaseDate: '2025-01-09',
154
140
  deps: [
155
141
  premiumCommonPlugin__default["default"],
156
142
  resourcePlugin__default["default"],
@@ -1,6 +1,6 @@
1
1
  /*!
2
- FullCalendar Resource Time Grid Plugin v7.0.0-beta.1
2
+ FullCalendar Resource Time Grid Plugin v7.0.0-beta.4
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,r,a,o,n,d,c){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}var m=u(s),S=u(i),g=u(l);class h extends d.VResourceJoiner{transformSeg(e,t,s){return[Object.assign(Object.assign({},e),{col:t.computeCol(e.col,s)})]}}class y extends r.DateComponent{constructor(){super(...arguments),this.flattenResources=r.memoize(d.flattenResources),this.buildResourceTimeColsModel=r.memoize(p),this.allDaySplitter=new c.AllDaySplitter,this.allDayResourceSplitter=new d.VResourceSplitter,this.allDayResourceSlicers={},this.allDayResourceJoiner=new n.ResourceDayTableJoiner,this.buildDayRanges=r.memoize(c.buildDayRanges),this.timedResourceSplitter=new d.VResourceSplitter,this.timedResourceSlicers={},this.timedResourceJoiner=new h,this.splitFgEventSegs=r.memoize(c.splitSegsByCol),this.splitBgEventSegs=r.memoize(c.splitSegsByCol),this.splitBusinessHourSegs=r.memoize(c.splitSegsByCol),this.splitNowIndicatorSegs=r.memoize(c.splitSegsByCol),this.splitDateSelectionSegs=r.memoize(c.splitSegsByCol),this.splitEventDrag=r.memoize(c.splitInteractionByCol),this.splitEventResize=r.memoize(c.splitInteractionByCol),this.createDayHeaderFormatter=r.memoize(o.createDayHeaderFormatter),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:l}=e,u=s.resourceOrder||d.DEFAULT_RESOURCE_ORDER,m=this.flattenResources(e.resourceStore,u),S=this.buildResourceTimeColsModel(l,t.dateProfileGenerator,m,s.datesAboveResources,t),g=this.allDaySplitter.splitProps(e),h=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:S});this.allDayResourceSlicers=r.mapHash(h,(e,t)=>this.allDayResourceSlicers[t]||new o.DayTableSlicer);let y=r.mapHash(this.allDayResourceSlicers,(e,i)=>e.sliceProps(h[i],l,s.nextDayThreshold,t,S.dayTableModel)),p=this.allDayResourceJoiner.joinProps(y,S),R=this.dayRanges=this.buildDayRanges(S.dayTableModel,l,i),D=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:S});this.timedResourceSlicers=r.mapHash(D,(e,t)=>this.timedResourceSlicers[t]||new c.DayTimeColsSlicer);let v=r.mapHash(this.timedResourceSlicers,(e,s)=>e.sliceProps(D[s],l,null,t,R)),b=this.timedResourceJoiner.joinProps(v,S),C=1===S.dayTableModel.rowCnt,f=n.buildResourceHeaderTiers(m,S.dayTableModel.headerDates,s.datesAboveResources,C,t),H=this.createDayHeaderFormatter(t.options.dayHeaderFormat,C,S.colCnt);return a.createElement(r.NowTimer,{unit:s.nowIndicator?"minute":"day"},(t,i)=>{let r=S.colCnt,d=this.splitFgEventSegs(b.fgEventSegs,r),u=this.splitBgEventSegs(b.bgEventSegs,r),m=this.splitBusinessHourSegs(b.businessHourSegs,r),g=this.splitNowIndicatorSegs((()=>{let e=this.timedResourceSlicers[""].sliceNowDate(t,this.props.dateProfile,this.context.options.nextDayThreshold,this.context,this.dayRanges);return this.timedResourceJoiner.expandSegs(S,e)})(),r),h=this.splitDateSelectionSegs(b.dateSelectionSegs,r),y=this.splitEventDrag(b.eventDrag,r),R=this.splitEventResize(b.eventResize,r);return a.createElement(c.TimeGridLayout,{dateProfile:l,nowDate:t,todayRange:i,cells:S.cells[0],forPrint:e.forPrint,isHitComboAllowed:this.isHitComboAllowed,className:"fc-resource-timegrid-view",headerTiers:f,renderHeaderLabel:(e,t,i,r)=>s.weekNumbers&&e===f.length-1?a.createElement(c.TimeGridWeekNumber,{dateProfile:l,innerWidthRef:t,innerHeightRef:i,width:r}):a.createElement("div",{className:"fc-cell",style:{width:r}}),renderHeaderContent:(t,s,l,r)=>t.resource?a.createElement(n.ResourceHeaderCell,Object.assign({},t,{innerHeightRef:l,colSpan:t.colSpan,colWidth:r,isSticky:s<f.length-1})):t.date?a.createElement(o.DateHeaderCell,Object.assign({},t,{navLink:S.dayTableModel.colCnt>1,dateProfile:e.dateProfile,todayRange:i,dayHeaderFormat:H,innerHeightRef:l,colSpan:t.colSpan,colWidth:r})):void a.createElement(o.DayOfWeekHeaderCell,Object.assign({},t,{dayHeaderFormat:H,innerHeightRef:l,colSpan:t.colSpan,colWidth:r})),getHeaderModelKey:e=>e.resource?e.resource.id:e.date?e.date.toISOString():e.dow,fgEventSegs:p.fgEventSegs,bgEventSegs:p.bgEventSegs,businessHourSegs:p.businessHourSegs,dateSelectionSegs:p.dateSelectionSegs,eventDrag:p.eventDrag,eventResize:p.eventResize,fgEventSegsByCol:d,bgEventSegsByCol:u,businessHourSegsByCol:m,nowIndicatorSegsByCol:g,dateSelectionSegsByCol:h,eventDragByCol:y,eventResizeByCol:R,eventSelection:p.eventSelection})})}}function p(e,t,s,i,l){let r=c.buildTimeColsModel(e,t);return s.length?i?new d.DayResourceTableModel(r,s,l):new d.ResourceDayTableModel(r,s,l):new d.ResourcelessDayTableModel(r)}var R=t.createPlugin({name:"@fullcalendar/resource-timegrid",premiumReleaseDate:"2024-10-09",deps:[m.default,S.default,g.default],initialView:"resourceTimeGridDay",views:{resourceTimeGrid:{type:"timeGrid",component:y,needsResourceData:!0},resourceTimeGridDay:{type:"resourceTimeGrid",duration:{days:1}},resourceTimeGridWeek:{type:"resourceTimeGrid",duration:{weeks:1}}}}),D={__proto__:null,ResourceTimeGridView:y};return t.globalPlugins.push(R),e.Internal=D,e.default=R,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);
6
+ FullCalendar.ResourceTimeGrid=function(e,t,s,i,l,r,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(l);class y extends d.VResourceJoiner{transformSeg(e,t,s){return[Object.assign(Object.assign({},e),{col:t.computeCol(e.col,s)})]}}class h extends r.DateComponent{constructor(){super(...arguments),this.flattenResources=r.memoize(d.flattenResources),this.buildResourceTimeColsModel=r.memoize(R),this.buildResourceRowConfigs=r.memoize(n.buildResourceRowConfigs),this.createDayHeaderFormatter=r.memoize(a.createDayHeaderFormatter),this.allDaySplitter=new u.AllDaySplitter,this.allDayResourceSplitter=new d.VResourceSplitter,this.allDayResourceSlicers={},this.allDayResourceJoiner=new n.ResourceDayTableJoiner,this.buildDayRanges=r.memoize(u.buildDayRanges),this.timedResourceSplitter=new d.VResourceSplitter,this.timedResourceSlicers={},this.timedResourceJoiner=new y,this.splitFgEventSegs=r.memoize(u.organizeSegsByCol),this.splitBgEventSegs=r.memoize(u.organizeSegsByCol),this.splitBusinessHourSegs=r.memoize(u.organizeSegsByCol),this.splitNowIndicatorSegs=r.memoize(u.organizeSegsByCol),this.splitDateSelectionSegs=r.memoize(u.organizeSegsByCol),this.splitEventDrag=r.memoize(u.splitInteractionByCol),this.splitEventResize=r.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:l}=e,n=s.resourceOrder||d.DEFAULT_RESOURCE_ORDER,c=this.flattenResources(e.resourceStore,n),m=this.buildResourceTimeColsModel(l,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=r.mapHash(S,(e,t)=>this.allDayResourceSlicers[t]||new a.DayTableSlicer);let y=r.mapHash(this.allDayResourceSlicers,(e,i)=>e.sliceProps(S[i],l,s.nextDayThreshold,t,m.dayTableModel)),h=this.allDayResourceJoiner.joinProps(y,m),R=this.dayRanges=this.buildDayRanges(m.dayTableModel,l,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=r.mapHash(p,(e,t)=>this.timedResourceSlicers[t]||new u.DayTimeColsSlicer);let D=r.mapHash(this.timedResourceSlicers,(e,s)=>e.sliceProps(p[s],l,null,t,R)),v=this.timedResourceJoiner.joinProps(D,m),b=1===m.dayTableModel.rowCnt,C=this.createDayHeaderFormatter(t.options.dayHeaderFormat,b,m.colCnt);return o.createElement(r.NowTimer,{unit:s.nowIndicator?"minute":"day"},(i,r)=>{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,b,e.dateProfile,r,C,t);return o.createElement(u.TimeGridLayout,{labelId:e.labelId,labelStr:e.labelStr,dateProfile:l,nowDate:i,todayRange:r,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,l){let r=u.buildTimeColsModel(e,t);return s.length?i?new d.DayResourceTableModel(r,s,l):new d.ResourceDayTableModel(r,s,l):new d.ResourcelessDayTableModel(r)}var p=t.createPlugin({name:"@fullcalendar/resource-timegrid",premiumReleaseDate:"2025-01-09",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
@@ -12,7 +12,7 @@ import '@fullcalendar/timegrid/internal.js';
12
12
 
13
13
  var index = createPlugin({
14
14
  name: '@fullcalendar/resource-timegrid',
15
- premiumReleaseDate: '2024-10-09',
15
+ premiumReleaseDate: '2025-01-09',
16
16
  deps: [
17
17
  premiumCommonPlugin,
18
18
  resourcePlugin,
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$4 = require('@fullcalendar/daygrid/internal.cjs');
8
- var internal_cjs$3 = require('@fullcalendar/resource-daygrid/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$2 = require('@fullcalendar/timegrid/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.allDaySplitter = new internal_cjs$2.AllDaySplitter();
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$3.ResourceDayTableJoiner();
33
+ this.allDayResourceJoiner = new internal_cjs$2.ResourceDayTableJoiner();
30
34
  // for timed resource props
31
- this.buildDayRanges = internal_cjs$1.memoize(internal_cjs$2.buildDayRanges);
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$2.splitSegsByCol);
37
- this.splitBgEventSegs = internal_cjs$1.memoize(internal_cjs$2.splitSegsByCol);
38
- this.splitBusinessHourSegs = internal_cjs$1.memoize(internal_cjs$2.splitSegsByCol);
39
- this.splitNowIndicatorSegs = internal_cjs$1.memoize(internal_cjs$2.splitSegsByCol);
40
- this.splitDateSelectionSegs = internal_cjs$1.memoize(internal_cjs$2.splitSegsByCol);
41
- this.splitEventDrag = internal_cjs$1.memoize(internal_cjs$2.splitInteractionByCol);
42
- this.splitEventResize = internal_cjs$1.memoize(internal_cjs$2.splitInteractionByCol);
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$4.DayTableSlicer());
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$2.DayTimeColsSlicer());
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 = this.timedResourceSlicers[''].sliceNowDate(nowDate, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);
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
- return (preact_cjs.createElement(internal_cjs$2.TimeGridLayout, { dateProfile: dateProfile, nowDate: nowDate, todayRange: todayRange, cells: resourceDayTableModel.cells[0], forPrint: props.forPrint, isHitComboAllowed: this.isHitComboAllowed, className: 'fc-resource-timegrid-view',
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, { labelId: props.labelId, labelStr: props.labelStr, 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, renderHeaderLabel: (tierNum, innerWidthRef, innerHeightRef, width) => ((options.weekNumbers && tierNum === headerTiers.length - 1) ? (preact_cjs.createElement(internal_cjs$2.TimeGridWeekNumber // .fc-cell
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$2.buildTimeColsModel(dateProfile, dateProfileGenerator);
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, DateHeaderCell, DayOfWeekHeaderCell } from '@fullcalendar/daygrid/internal.js';
4
- import { ResourceDayTableJoiner, buildResourceHeaderTiers, ResourceHeaderCell } from '@fullcalendar/resource-daygrid/internal.js';
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, splitSegsByCol, splitInteractionByCol, DayTimeColsSlicer, TimeGridLayout, TimeGridWeekNumber, buildTimeColsModel } from '@fullcalendar/timegrid/internal.js';
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(splitSegsByCol);
33
- this.splitBgEventSegs = memoize(splitSegsByCol);
34
- this.splitBusinessHourSegs = memoize(splitSegsByCol);
35
- this.splitNowIndicatorSegs = memoize(splitSegsByCol);
36
- this.splitDateSelectionSegs = memoize(splitSegsByCol);
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 = this.timedResourceSlicers[''].sliceNowDate(nowDate, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);
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);
102
- return (createElement(TimeGridLayout, { dateProfile: dateProfile, nowDate: nowDate, todayRange: todayRange, cells: resourceDayTableModel.cells[0], forPrint: props.forPrint, isHitComboAllowed: this.isHitComboAllowed, className: 'fc-resource-timegrid-view',
104
+ const headerTiers = this.buildResourceRowConfigs(resources, options.datesAboveResources, resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays, props.dateProfile, todayRange, dayHeaderFormat, context);
105
+ return (createElement(TimeGridLayout, { labelId: props.labelId, labelStr: props.labelStr, 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, renderHeaderLabel: (tierNum, innerWidthRef, innerHeightRef, width) => ((options.weekNumbers && tierNum === headerTiers.length - 1) ? (createElement(TimeGridWeekNumber // .fc-cell
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.1",
3
+ "version": "7.0.0-beta.4",
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.1",
19
- "@fullcalendar/premium-common": "7.0.0-beta.1",
20
- "@fullcalendar/resource-daygrid": "7.0.0-beta.1",
21
- "@fullcalendar/timegrid": "7.0.0-beta.1"
18
+ "@fullcalendar/daygrid": "7.0.0-beta.4",
19
+ "@fullcalendar/premium-common": "7.0.0-beta.4",
20
+ "@fullcalendar/resource-daygrid": "7.0.0-beta.4",
21
+ "@fullcalendar/timegrid": "7.0.0-beta.4"
22
22
  },
23
23
  "peerDependencies": {
24
- "@fullcalendar/core": "7.0.0-beta.1",
25
- "@fullcalendar/resource": "7.0.0-beta.1"
24
+ "@fullcalendar/core": "7.0.0-beta.4",
25
+ "@fullcalendar/resource": "7.0.0-beta.4"
26
26
  },
27
27
  "type": "module",
28
28
  "bugs": "https://fullcalendar.io/reporting-bugs",