@fullcalendar/resource-timegrid 6.1.0 → 6.1.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.cjs +48 -0
- package/index.global.js +2 -2
- package/index.global.min.js +2 -2
- package/index.js +16 -26
- package/internal.cjs +84 -0
- package/internal.js +25 -30
- package/package.json +15 -13
- package/index.esm.js +0 -38
- package/internal.esm.js +0 -79
package/index.cjs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var index_cjs = require('@fullcalendar/core/index.cjs');
|
|
6
|
+
var premiumCommonPlugin = require('@fullcalendar/premium-common/index.cjs');
|
|
7
|
+
var resourcePlugin = require('@fullcalendar/resource/index.cjs');
|
|
8
|
+
var timeGridPlugin = require('@fullcalendar/timegrid/index.cjs');
|
|
9
|
+
var internalCommon = require('./internal.cjs');
|
|
10
|
+
require('@fullcalendar/core/internal.cjs');
|
|
11
|
+
require('@fullcalendar/core/preact.cjs');
|
|
12
|
+
require('@fullcalendar/timegrid/internal.cjs');
|
|
13
|
+
require('@fullcalendar/resource/internal.cjs');
|
|
14
|
+
require('@fullcalendar/resource-daygrid/internal.cjs');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var premiumCommonPlugin__default = /*#__PURE__*/_interopDefaultLegacy(premiumCommonPlugin);
|
|
19
|
+
var resourcePlugin__default = /*#__PURE__*/_interopDefaultLegacy(resourcePlugin);
|
|
20
|
+
var timeGridPlugin__default = /*#__PURE__*/_interopDefaultLegacy(timeGridPlugin);
|
|
21
|
+
|
|
22
|
+
var index = index_cjs.createPlugin({
|
|
23
|
+
name: '@fullcalendar/resource-timegrid',
|
|
24
|
+
premiumReleaseDate: '2023-01-30',
|
|
25
|
+
deps: [
|
|
26
|
+
premiumCommonPlugin__default["default"],
|
|
27
|
+
resourcePlugin__default["default"],
|
|
28
|
+
timeGridPlugin__default["default"],
|
|
29
|
+
],
|
|
30
|
+
initialView: 'resourceTimeGridDay',
|
|
31
|
+
views: {
|
|
32
|
+
resourceTimeGrid: {
|
|
33
|
+
type: 'timeGrid',
|
|
34
|
+
component: internalCommon.ResourceDayTimeColsView,
|
|
35
|
+
needsResourceData: true,
|
|
36
|
+
},
|
|
37
|
+
resourceTimeGridDay: {
|
|
38
|
+
type: 'resourceTimeGrid',
|
|
39
|
+
duration: { days: 1 },
|
|
40
|
+
},
|
|
41
|
+
resourceTimeGridWeek: {
|
|
42
|
+
type: 'resourceTimeGrid',
|
|
43
|
+
duration: { weeks: 1 },
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
exports["default"] = index;
|
package/index.global.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Resource Time Grid Plugin v6.1.
|
|
2
|
+
FullCalendar Resource Time Grid Plugin v6.1.1
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/vertical-resource-view
|
|
4
|
-
(c)
|
|
4
|
+
(c) 2023 Adam Shaw
|
|
5
5
|
*/
|
|
6
6
|
FullCalendar.ResourceTimeGrid = (function (exports, core, premiumCommonPlugin, resourcePlugin, timeGridPlugin, internal$2, preact, internal$3, internal$1, internal$4) {
|
|
7
7
|
'use strict';
|
package/index.global.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Resource Time Grid Plugin v6.1.
|
|
2
|
+
FullCalendar Resource Time Grid Plugin v6.1.1
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/vertical-resource-view
|
|
4
|
-
(c)
|
|
4
|
+
(c) 2023 Adam Shaw
|
|
5
5
|
*/
|
|
6
6
|
FullCalendar.ResourceTimeGrid=function(e,t,l,o,r,s,i,a,n,d){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}var c=u(l),h=u(o),m=u(r);class p extends n.VResourceJoiner{transformSeg(e,t,l){return[Object.assign(Object.assign({},e),{col:t.computeCol(e.col,l)})]}}class R extends s.DateComponent{constructor(){super(...arguments),this.buildDayRanges=s.memoize(a.buildDayRanges),this.splitter=new n.VResourceSplitter,this.slicers={},this.joiner=new p,this.timeColsRef=i.createRef(),this.isHitComboAllowed=(e,t)=>1===this.dayRanges.length||e.dateSpan.resourceId===t.dateSpan.resourceId}render(){let{props:e,context:t}=this,{dateEnv:l,options:o}=t,{dateProfile:r,resourceDayTableModel:n}=e,d=this.dayRanges=this.buildDayRanges(n.dayTableModel,r,l),u=this.splitter.splitProps(e);this.slicers=s.mapHash(u,(e,t)=>this.slicers[t]||new a.DayTimeColsSlicer);let c=s.mapHash(this.slicers,(e,l)=>e.sliceProps(u[l],r,null,t,d));return i.createElement(s.NowTimer,{unit:o.nowIndicator?"minute":"day"},(t,l)=>i.createElement(a.TimeCols,Object.assign({ref:this.timeColsRef},this.joiner.joinProps(c,n),{dateProfile:r,axis:e.axis,slotDuration:e.slotDuration,slatMetas:e.slatMetas,cells:n.cells[0],tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,expandRows:e.expandRows,nowDate:t,nowIndicatorSegs:o.nowIndicator&&this.buildNowIndicatorSegs(t),todayRange:l,onScrollTopRequest:e.onScrollTopRequest,forPrint:e.forPrint,onSlatCoords:e.onSlatCoords,isHitComboAllowed:this.isHitComboAllowed})))}buildNowIndicatorSegs(e){let t=this.slicers[""].sliceNowDate(e,this.props.dateProfile,this.context.options.nextDayThreshold,this.context,this.dayRanges);return this.joiner.expandSegs(this.props.resourceDayTableModel,t)}}class b extends a.TimeColsView{constructor(){super(...arguments),this.flattenResources=s.memoize(n.flattenResources),this.buildResourceTimeColsModel=s.memoize(y),this.buildSlatMetas=s.memoize(a.buildSlatMetas)}render(){let{props:e,context:t}=this,{options:l,dateEnv:o}=t,{dateProfile:r}=e,s=this.allDaySplitter.splitProps(e),a=l.resourceOrder||n.DEFAULT_RESOURCE_ORDER,u=this.flattenResources(e.resourceStore,a),c=this.buildResourceTimeColsModel(r,t.dateProfileGenerator,u,l.datesAboveResources,t),h=this.buildSlatMetas(r.slotMinTime,r.slotMaxTime,l.slotLabelInterval,l.slotDuration,o),{dayMinWidth:m}=l,p=!m,b=m,y=l.dayHeaders&&i.createElement(n.ResourceDayHeader,{resources:u,dates:c.dayTableModel.headerDates,dateProfile:r,datesRepDistinctDays:!0,renderIntro:p?this.renderHeadAxis:null}),D=!1!==l.allDaySlot&&(t=>i.createElement(d.ResourceDayTable,Object.assign({},s.allDay,{dateProfile:r,resourceDayTableModel:c,nextDayThreshold:l.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:p?this.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:this.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:e.forPrint},this.getAllDayMaxEventProps()))),C=t=>i.createElement(R,Object.assign({},s.timed,{dateProfile:r,axis:p,slotDuration:l.slotDuration,slatMetas:h,resourceDayTableModel:c,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:t.expandRows,forPrint:e.forPrint,onScrollTopRequest:this.handleScrollTopRequest}));return b?this.renderHScrollLayout(y,D,C,c.colCnt,m,h,this.state.slatCoords):this.renderSimpleLayout(y,D,C)}}function y(e,t,l,o,r){let s=a.buildTimeColsModel(e,t);return o?new n.DayResourceTableModel(s,l,r):new n.ResourceDayTableModel(s,l,r)}var D=t.createPlugin({name:"@fullcalendar/resource-timegrid",premiumReleaseDate:"2023-01-30",deps:[c.default,h.default,m.default],initialView:"resourceTimeGridDay",views:{resourceTimeGrid:{type:"timeGrid",component:b,needsResourceData:!0},resourceTimeGridDay:{type:"resourceTimeGrid",duration:{days:1}},resourceTimeGridWeek:{type:"resourceTimeGrid",duration:{weeks:1}}}}),C={__proto__:null,ResourceDayTimeColsView:b,ResourceDayTimeCols:R};return t.globalPlugins.push(D),e.Internal=C,e.default=D,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,FullCalendar.PremiumCommon,FullCalendar.Resource,FullCalendar.TimeGrid,FullCalendar.Internal,FullCalendar.Preact,FullCalendar.TimeGrid.Internal,FullCalendar.Resource.Internal,FullCalendar.ResourceDayGrid.Internal);
|
package/index.js
CHANGED
|
@@ -1,37 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
import { createPlugin } from '@fullcalendar/core';
|
|
2
|
+
import premiumCommonPlugin from '@fullcalendar/premium-common';
|
|
3
|
+
import resourcePlugin from '@fullcalendar/resource';
|
|
4
|
+
import timeGridPlugin from '@fullcalendar/timegrid';
|
|
5
|
+
import { ResourceDayTimeColsView } from './internal.js';
|
|
6
|
+
import '@fullcalendar/core/internal';
|
|
7
|
+
import '@fullcalendar/core/preact';
|
|
8
|
+
import '@fullcalendar/timegrid/internal';
|
|
9
|
+
import '@fullcalendar/resource/internal';
|
|
10
|
+
import '@fullcalendar/resource-daygrid/internal';
|
|
2
11
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var core = require('@fullcalendar/core');
|
|
6
|
-
var premiumCommonPlugin = require('@fullcalendar/premium-common');
|
|
7
|
-
var resourcePlugin = require('@fullcalendar/resource');
|
|
8
|
-
var timeGridPlugin = require('@fullcalendar/timegrid');
|
|
9
|
-
var internalCommon = require('./internal.js');
|
|
10
|
-
require('@fullcalendar/core/internal');
|
|
11
|
-
require('@fullcalendar/core/preact');
|
|
12
|
-
require('@fullcalendar/timegrid/internal');
|
|
13
|
-
require('@fullcalendar/resource/internal');
|
|
14
|
-
require('@fullcalendar/resource-daygrid/internal');
|
|
15
|
-
|
|
16
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
-
|
|
18
|
-
var premiumCommonPlugin__default = /*#__PURE__*/_interopDefaultLegacy(premiumCommonPlugin);
|
|
19
|
-
var resourcePlugin__default = /*#__PURE__*/_interopDefaultLegacy(resourcePlugin);
|
|
20
|
-
var timeGridPlugin__default = /*#__PURE__*/_interopDefaultLegacy(timeGridPlugin);
|
|
21
|
-
|
|
22
|
-
var index = core.createPlugin({
|
|
12
|
+
var index = createPlugin({
|
|
23
13
|
name: '@fullcalendar/resource-timegrid',
|
|
24
14
|
premiumReleaseDate: '2023-01-30',
|
|
25
15
|
deps: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
16
|
+
premiumCommonPlugin,
|
|
17
|
+
resourcePlugin,
|
|
18
|
+
timeGridPlugin,
|
|
29
19
|
],
|
|
30
20
|
initialView: 'resourceTimeGridDay',
|
|
31
21
|
views: {
|
|
32
22
|
resourceTimeGrid: {
|
|
33
23
|
type: 'timeGrid',
|
|
34
|
-
component:
|
|
24
|
+
component: ResourceDayTimeColsView,
|
|
35
25
|
needsResourceData: true,
|
|
36
26
|
},
|
|
37
27
|
resourceTimeGridDay: {
|
|
@@ -45,4 +35,4 @@ var index = core.createPlugin({
|
|
|
45
35
|
},
|
|
46
36
|
});
|
|
47
37
|
|
|
48
|
-
|
|
38
|
+
export { index as default };
|
package/internal.cjs
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var internal_cjs$1 = require('@fullcalendar/core/internal.cjs');
|
|
6
|
+
var preact_cjs = require('@fullcalendar/core/preact.cjs');
|
|
7
|
+
var internal_cjs$2 = require('@fullcalendar/timegrid/internal.cjs');
|
|
8
|
+
var internal_cjs = require('@fullcalendar/resource/internal.cjs');
|
|
9
|
+
var internal_cjs$3 = require('@fullcalendar/resource-daygrid/internal.cjs');
|
|
10
|
+
|
|
11
|
+
class ResourceDayTimeColsJoiner extends internal_cjs.VResourceJoiner {
|
|
12
|
+
transformSeg(seg, resourceDayTable, resourceI) {
|
|
13
|
+
return [
|
|
14
|
+
Object.assign(Object.assign({}, seg), { col: resourceDayTable.computeCol(seg.col, resourceI) }),
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
class ResourceDayTimeCols extends internal_cjs$1.DateComponent {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
this.buildDayRanges = internal_cjs$1.memoize(internal_cjs$2.buildDayRanges);
|
|
23
|
+
this.splitter = new internal_cjs.VResourceSplitter();
|
|
24
|
+
this.slicers = {};
|
|
25
|
+
this.joiner = new ResourceDayTimeColsJoiner();
|
|
26
|
+
this.timeColsRef = preact_cjs.createRef();
|
|
27
|
+
this.isHitComboAllowed = (hit0, hit1) => {
|
|
28
|
+
let allowAcrossResources = this.dayRanges.length === 1;
|
|
29
|
+
return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
render() {
|
|
33
|
+
let { props, context } = this;
|
|
34
|
+
let { dateEnv, options } = context;
|
|
35
|
+
let { dateProfile, resourceDayTableModel } = props;
|
|
36
|
+
let dayRanges = this.dayRanges = this.buildDayRanges(resourceDayTableModel.dayTableModel, dateProfile, dateEnv);
|
|
37
|
+
let splitProps = this.splitter.splitProps(props);
|
|
38
|
+
this.slicers = internal_cjs$1.mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new internal_cjs$2.DayTimeColsSlicer());
|
|
39
|
+
let slicedProps = internal_cjs$1.mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(splitProps[resourceId], dateProfile, null, context, dayRanges));
|
|
40
|
+
return ( // TODO: would move this further down hierarchy, but sliceNowDate needs it
|
|
41
|
+
preact_cjs.createElement(internal_cjs$1.NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (preact_cjs.createElement(internal_cjs$2.TimeCols, Object.assign({ ref: this.timeColsRef }, this.joiner.joinProps(slicedProps, resourceDayTableModel), { dateProfile: dateProfile, axis: props.axis, slotDuration: props.slotDuration, slatMetas: props.slatMetas, cells: resourceDayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: options.nowIndicator && this.buildNowIndicatorSegs(nowDate), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, forPrint: props.forPrint, onSlatCoords: props.onSlatCoords, isHitComboAllowed: this.isHitComboAllowed })))));
|
|
42
|
+
}
|
|
43
|
+
buildNowIndicatorSegs(date) {
|
|
44
|
+
let nonResourceSegs = this.slicers[''].sliceNowDate(date, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);
|
|
45
|
+
return this.joiner.expandSegs(this.props.resourceDayTableModel, nonResourceSegs);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
class ResourceDayTimeColsView extends internal_cjs$2.TimeColsView {
|
|
50
|
+
constructor() {
|
|
51
|
+
super(...arguments);
|
|
52
|
+
this.flattenResources = internal_cjs$1.memoize(internal_cjs.flattenResources);
|
|
53
|
+
this.buildResourceTimeColsModel = internal_cjs$1.memoize(buildResourceTimeColsModel);
|
|
54
|
+
this.buildSlatMetas = internal_cjs$1.memoize(internal_cjs$2.buildSlatMetas);
|
|
55
|
+
}
|
|
56
|
+
render() {
|
|
57
|
+
let { props, context } = this;
|
|
58
|
+
let { options, dateEnv } = context;
|
|
59
|
+
let { dateProfile } = props;
|
|
60
|
+
let splitProps = this.allDaySplitter.splitProps(props);
|
|
61
|
+
let resourceOrderSpecs = options.resourceOrder || internal_cjs.DEFAULT_RESOURCE_ORDER;
|
|
62
|
+
let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs);
|
|
63
|
+
let resourceDayTableModel = this.buildResourceTimeColsModel(dateProfile, context.dateProfileGenerator, resources, options.datesAboveResources, context);
|
|
64
|
+
let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);
|
|
65
|
+
let { dayMinWidth } = options;
|
|
66
|
+
let hasAttachedAxis = !dayMinWidth;
|
|
67
|
+
let hasDetachedAxis = dayMinWidth;
|
|
68
|
+
let headerContent = options.dayHeaders && (preact_cjs.createElement(internal_cjs.ResourceDayHeader, { resources: resources, dates: resourceDayTableModel.dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));
|
|
69
|
+
let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (preact_cjs.createElement(internal_cjs$3.ResourceDayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, resourceDayTableModel: resourceDayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));
|
|
70
|
+
let timeGridContent = (contentArg) => (preact_cjs.createElement(ResourceDayTimeCols, Object.assign({}, splitProps.timed, { dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, resourceDayTableModel: resourceDayTableModel, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, forPrint: props.forPrint, onScrollTopRequest: this.handleScrollTopRequest })));
|
|
71
|
+
return hasDetachedAxis
|
|
72
|
+
? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, resourceDayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)
|
|
73
|
+
: this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function buildResourceTimeColsModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {
|
|
77
|
+
let dayTable = internal_cjs$2.buildTimeColsModel(dateProfile, dateProfileGenerator);
|
|
78
|
+
return datesAboveResources ?
|
|
79
|
+
new internal_cjs.DayResourceTableModel(dayTable, resources, context) :
|
|
80
|
+
new internal_cjs.ResourceDayTableModel(dayTable, resources, context);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
exports.ResourceDayTimeCols = ResourceDayTimeCols;
|
|
84
|
+
exports.ResourceDayTimeColsView = ResourceDayTimeColsView;
|
package/internal.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { DateComponent, memoize, mapHash, NowTimer } from '@fullcalendar/core/internal';
|
|
2
|
+
import { createRef, createElement } from '@fullcalendar/core/preact';
|
|
3
|
+
import { buildDayRanges, DayTimeColsSlicer, TimeCols, TimeColsView, buildSlatMetas, buildTimeColsModel } from '@fullcalendar/timegrid/internal';
|
|
4
|
+
import { VResourceJoiner, VResourceSplitter, flattenResources, DEFAULT_RESOURCE_ORDER, ResourceDayHeader, DayResourceTableModel, ResourceDayTableModel } from '@fullcalendar/resource/internal';
|
|
5
|
+
import { ResourceDayTable } from '@fullcalendar/resource-daygrid/internal';
|
|
2
6
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var internal$1 = require('@fullcalendar/core/internal');
|
|
6
|
-
var preact = require('@fullcalendar/core/preact');
|
|
7
|
-
var internal$2 = require('@fullcalendar/timegrid/internal');
|
|
8
|
-
var internal = require('@fullcalendar/resource/internal');
|
|
9
|
-
var internal$3 = require('@fullcalendar/resource-daygrid/internal');
|
|
10
|
-
|
|
11
|
-
class ResourceDayTimeColsJoiner extends internal.VResourceJoiner {
|
|
7
|
+
class ResourceDayTimeColsJoiner extends VResourceJoiner {
|
|
12
8
|
transformSeg(seg, resourceDayTable, resourceI) {
|
|
13
9
|
return [
|
|
14
10
|
Object.assign(Object.assign({}, seg), { col: resourceDayTable.computeCol(seg.col, resourceI) }),
|
|
@@ -16,14 +12,14 @@ class ResourceDayTimeColsJoiner extends internal.VResourceJoiner {
|
|
|
16
12
|
}
|
|
17
13
|
}
|
|
18
14
|
|
|
19
|
-
class ResourceDayTimeCols extends
|
|
15
|
+
class ResourceDayTimeCols extends DateComponent {
|
|
20
16
|
constructor() {
|
|
21
17
|
super(...arguments);
|
|
22
|
-
this.buildDayRanges =
|
|
23
|
-
this.splitter = new
|
|
18
|
+
this.buildDayRanges = memoize(buildDayRanges);
|
|
19
|
+
this.splitter = new VResourceSplitter();
|
|
24
20
|
this.slicers = {};
|
|
25
21
|
this.joiner = new ResourceDayTimeColsJoiner();
|
|
26
|
-
this.timeColsRef =
|
|
22
|
+
this.timeColsRef = createRef();
|
|
27
23
|
this.isHitComboAllowed = (hit0, hit1) => {
|
|
28
24
|
let allowAcrossResources = this.dayRanges.length === 1;
|
|
29
25
|
return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;
|
|
@@ -35,10 +31,10 @@ class ResourceDayTimeCols extends internal$1.DateComponent {
|
|
|
35
31
|
let { dateProfile, resourceDayTableModel } = props;
|
|
36
32
|
let dayRanges = this.dayRanges = this.buildDayRanges(resourceDayTableModel.dayTableModel, dateProfile, dateEnv);
|
|
37
33
|
let splitProps = this.splitter.splitProps(props);
|
|
38
|
-
this.slicers =
|
|
39
|
-
let slicedProps =
|
|
34
|
+
this.slicers = mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new DayTimeColsSlicer());
|
|
35
|
+
let slicedProps = mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(splitProps[resourceId], dateProfile, null, context, dayRanges));
|
|
40
36
|
return ( // TODO: would move this further down hierarchy, but sliceNowDate needs it
|
|
41
|
-
|
|
37
|
+
createElement(NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (createElement(TimeCols, Object.assign({ ref: this.timeColsRef }, this.joiner.joinProps(slicedProps, resourceDayTableModel), { dateProfile: dateProfile, axis: props.axis, slotDuration: props.slotDuration, slatMetas: props.slatMetas, cells: resourceDayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: options.nowIndicator && this.buildNowIndicatorSegs(nowDate), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, forPrint: props.forPrint, onSlatCoords: props.onSlatCoords, isHitComboAllowed: this.isHitComboAllowed })))));
|
|
42
38
|
}
|
|
43
39
|
buildNowIndicatorSegs(date) {
|
|
44
40
|
let nonResourceSegs = this.slicers[''].sliceNowDate(date, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);
|
|
@@ -46,39 +42,38 @@ class ResourceDayTimeCols extends internal$1.DateComponent {
|
|
|
46
42
|
}
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
class ResourceDayTimeColsView extends
|
|
45
|
+
class ResourceDayTimeColsView extends TimeColsView {
|
|
50
46
|
constructor() {
|
|
51
47
|
super(...arguments);
|
|
52
|
-
this.flattenResources =
|
|
53
|
-
this.buildResourceTimeColsModel =
|
|
54
|
-
this.buildSlatMetas =
|
|
48
|
+
this.flattenResources = memoize(flattenResources);
|
|
49
|
+
this.buildResourceTimeColsModel = memoize(buildResourceTimeColsModel);
|
|
50
|
+
this.buildSlatMetas = memoize(buildSlatMetas);
|
|
55
51
|
}
|
|
56
52
|
render() {
|
|
57
53
|
let { props, context } = this;
|
|
58
54
|
let { options, dateEnv } = context;
|
|
59
55
|
let { dateProfile } = props;
|
|
60
56
|
let splitProps = this.allDaySplitter.splitProps(props);
|
|
61
|
-
let resourceOrderSpecs = options.resourceOrder ||
|
|
57
|
+
let resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;
|
|
62
58
|
let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs);
|
|
63
59
|
let resourceDayTableModel = this.buildResourceTimeColsModel(dateProfile, context.dateProfileGenerator, resources, options.datesAboveResources, context);
|
|
64
60
|
let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);
|
|
65
61
|
let { dayMinWidth } = options;
|
|
66
62
|
let hasAttachedAxis = !dayMinWidth;
|
|
67
63
|
let hasDetachedAxis = dayMinWidth;
|
|
68
|
-
let headerContent = options.dayHeaders && (
|
|
69
|
-
let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (
|
|
70
|
-
let timeGridContent = (contentArg) => (
|
|
64
|
+
let headerContent = options.dayHeaders && (createElement(ResourceDayHeader, { resources: resources, dates: resourceDayTableModel.dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));
|
|
65
|
+
let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (createElement(ResourceDayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, resourceDayTableModel: resourceDayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));
|
|
66
|
+
let timeGridContent = (contentArg) => (createElement(ResourceDayTimeCols, Object.assign({}, splitProps.timed, { dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, resourceDayTableModel: resourceDayTableModel, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, forPrint: props.forPrint, onScrollTopRequest: this.handleScrollTopRequest })));
|
|
71
67
|
return hasDetachedAxis
|
|
72
68
|
? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, resourceDayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)
|
|
73
69
|
: this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);
|
|
74
70
|
}
|
|
75
71
|
}
|
|
76
72
|
function buildResourceTimeColsModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {
|
|
77
|
-
let dayTable =
|
|
73
|
+
let dayTable = buildTimeColsModel(dateProfile, dateProfileGenerator);
|
|
78
74
|
return datesAboveResources ?
|
|
79
|
-
new
|
|
80
|
-
new
|
|
75
|
+
new DayResourceTableModel(dayTable, resources, context) :
|
|
76
|
+
new ResourceDayTableModel(dayTable, resources, context);
|
|
81
77
|
}
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
exports.ResourceDayTimeColsView = ResourceDayTimeColsView;
|
|
79
|
+
export { ResourceDayTimeCols, ResourceDayTimeColsView };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fullcalendar/resource-timegrid",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.1",
|
|
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,13 +15,13 @@
|
|
|
15
15
|
],
|
|
16
16
|
"homepage": "https://fullcalendar.io/docs/vertical-resource-view",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@fullcalendar/premium-common": "~6.1.
|
|
19
|
-
"@fullcalendar/resource-daygrid": "~6.1.
|
|
20
|
-
"@fullcalendar/timegrid": "~6.1.
|
|
18
|
+
"@fullcalendar/premium-common": "~6.1.1",
|
|
19
|
+
"@fullcalendar/resource-daygrid": "~6.1.1",
|
|
20
|
+
"@fullcalendar/timegrid": "~6.1.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@fullcalendar/core": "~6.1.
|
|
24
|
-
"@fullcalendar/resource": "~6.1.
|
|
23
|
+
"@fullcalendar/core": "~6.1.1",
|
|
24
|
+
"@fullcalendar/resource": "~6.1.1"
|
|
25
25
|
},
|
|
26
26
|
"type": "module",
|
|
27
27
|
"bugs": "https://fullcalendar.io/reporting-bugs",
|
|
@@ -36,23 +36,25 @@
|
|
|
36
36
|
"email": "arshaw@arshaw.com",
|
|
37
37
|
"url": "http://arshaw.com/"
|
|
38
38
|
},
|
|
39
|
-
"copyright": "
|
|
39
|
+
"copyright": "2023 Adam Shaw",
|
|
40
40
|
"types": "./index.d.ts",
|
|
41
|
-
"main": "./index.
|
|
42
|
-
"module": "./index.
|
|
41
|
+
"main": "./index.cjs",
|
|
42
|
+
"module": "./index.js",
|
|
43
43
|
"unpkg": "./index.global.min.js",
|
|
44
44
|
"jsdelivr": "./index.global.min.js",
|
|
45
45
|
"exports": {
|
|
46
46
|
"./package.json": "./package.json",
|
|
47
|
+
"./index.cjs": "./index.cjs",
|
|
47
48
|
".": {
|
|
48
49
|
"types": "./index.d.ts",
|
|
49
|
-
"require": "./index.
|
|
50
|
-
"import": "./index.
|
|
50
|
+
"require": "./index.cjs",
|
|
51
|
+
"import": "./index.js"
|
|
51
52
|
},
|
|
53
|
+
"./internal.cjs": "./internal.cjs",
|
|
52
54
|
"./internal": {
|
|
53
55
|
"types": "./internal.d.ts",
|
|
54
|
-
"require": "./internal.
|
|
55
|
-
"import": "./internal.
|
|
56
|
+
"require": "./internal.cjs",
|
|
57
|
+
"import": "./internal.js"
|
|
56
58
|
}
|
|
57
59
|
},
|
|
58
60
|
"sideEffects": false
|
package/index.esm.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { createPlugin } from '@fullcalendar/core';
|
|
2
|
-
import premiumCommonPlugin from '@fullcalendar/premium-common';
|
|
3
|
-
import resourcePlugin from '@fullcalendar/resource';
|
|
4
|
-
import timeGridPlugin from '@fullcalendar/timegrid';
|
|
5
|
-
import { ResourceDayTimeColsView } from './internal.esm.js';
|
|
6
|
-
import '@fullcalendar/core/internal';
|
|
7
|
-
import '@fullcalendar/core/preact';
|
|
8
|
-
import '@fullcalendar/timegrid/internal';
|
|
9
|
-
import '@fullcalendar/resource/internal';
|
|
10
|
-
import '@fullcalendar/resource-daygrid/internal';
|
|
11
|
-
|
|
12
|
-
var index = createPlugin({
|
|
13
|
-
name: '@fullcalendar/resource-timegrid',
|
|
14
|
-
premiumReleaseDate: '2023-01-30',
|
|
15
|
-
deps: [
|
|
16
|
-
premiumCommonPlugin,
|
|
17
|
-
resourcePlugin,
|
|
18
|
-
timeGridPlugin,
|
|
19
|
-
],
|
|
20
|
-
initialView: 'resourceTimeGridDay',
|
|
21
|
-
views: {
|
|
22
|
-
resourceTimeGrid: {
|
|
23
|
-
type: 'timeGrid',
|
|
24
|
-
component: ResourceDayTimeColsView,
|
|
25
|
-
needsResourceData: true,
|
|
26
|
-
},
|
|
27
|
-
resourceTimeGridDay: {
|
|
28
|
-
type: 'resourceTimeGrid',
|
|
29
|
-
duration: { days: 1 },
|
|
30
|
-
},
|
|
31
|
-
resourceTimeGridWeek: {
|
|
32
|
-
type: 'resourceTimeGrid',
|
|
33
|
-
duration: { weeks: 1 },
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
export { index as default };
|
package/internal.esm.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { DateComponent, memoize, mapHash, NowTimer } from '@fullcalendar/core/internal';
|
|
2
|
-
import { createRef, createElement } from '@fullcalendar/core/preact';
|
|
3
|
-
import { buildDayRanges, DayTimeColsSlicer, TimeCols, TimeColsView, buildSlatMetas, buildTimeColsModel } from '@fullcalendar/timegrid/internal';
|
|
4
|
-
import { VResourceJoiner, VResourceSplitter, flattenResources, DEFAULT_RESOURCE_ORDER, ResourceDayHeader, DayResourceTableModel, ResourceDayTableModel } from '@fullcalendar/resource/internal';
|
|
5
|
-
import { ResourceDayTable } from '@fullcalendar/resource-daygrid/internal';
|
|
6
|
-
|
|
7
|
-
class ResourceDayTimeColsJoiner extends VResourceJoiner {
|
|
8
|
-
transformSeg(seg, resourceDayTable, resourceI) {
|
|
9
|
-
return [
|
|
10
|
-
Object.assign(Object.assign({}, seg), { col: resourceDayTable.computeCol(seg.col, resourceI) }),
|
|
11
|
-
];
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
class ResourceDayTimeCols extends DateComponent {
|
|
16
|
-
constructor() {
|
|
17
|
-
super(...arguments);
|
|
18
|
-
this.buildDayRanges = memoize(buildDayRanges);
|
|
19
|
-
this.splitter = new VResourceSplitter();
|
|
20
|
-
this.slicers = {};
|
|
21
|
-
this.joiner = new ResourceDayTimeColsJoiner();
|
|
22
|
-
this.timeColsRef = createRef();
|
|
23
|
-
this.isHitComboAllowed = (hit0, hit1) => {
|
|
24
|
-
let allowAcrossResources = this.dayRanges.length === 1;
|
|
25
|
-
return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
render() {
|
|
29
|
-
let { props, context } = this;
|
|
30
|
-
let { dateEnv, options } = context;
|
|
31
|
-
let { dateProfile, resourceDayTableModel } = props;
|
|
32
|
-
let dayRanges = this.dayRanges = this.buildDayRanges(resourceDayTableModel.dayTableModel, dateProfile, dateEnv);
|
|
33
|
-
let splitProps = this.splitter.splitProps(props);
|
|
34
|
-
this.slicers = mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new DayTimeColsSlicer());
|
|
35
|
-
let slicedProps = mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(splitProps[resourceId], dateProfile, null, context, dayRanges));
|
|
36
|
-
return ( // TODO: would move this further down hierarchy, but sliceNowDate needs it
|
|
37
|
-
createElement(NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (createElement(TimeCols, Object.assign({ ref: this.timeColsRef }, this.joiner.joinProps(slicedProps, resourceDayTableModel), { dateProfile: dateProfile, axis: props.axis, slotDuration: props.slotDuration, slatMetas: props.slatMetas, cells: resourceDayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: options.nowIndicator && this.buildNowIndicatorSegs(nowDate), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, forPrint: props.forPrint, onSlatCoords: props.onSlatCoords, isHitComboAllowed: this.isHitComboAllowed })))));
|
|
38
|
-
}
|
|
39
|
-
buildNowIndicatorSegs(date) {
|
|
40
|
-
let nonResourceSegs = this.slicers[''].sliceNowDate(date, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);
|
|
41
|
-
return this.joiner.expandSegs(this.props.resourceDayTableModel, nonResourceSegs);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
class ResourceDayTimeColsView extends TimeColsView {
|
|
46
|
-
constructor() {
|
|
47
|
-
super(...arguments);
|
|
48
|
-
this.flattenResources = memoize(flattenResources);
|
|
49
|
-
this.buildResourceTimeColsModel = memoize(buildResourceTimeColsModel);
|
|
50
|
-
this.buildSlatMetas = memoize(buildSlatMetas);
|
|
51
|
-
}
|
|
52
|
-
render() {
|
|
53
|
-
let { props, context } = this;
|
|
54
|
-
let { options, dateEnv } = context;
|
|
55
|
-
let { dateProfile } = props;
|
|
56
|
-
let splitProps = this.allDaySplitter.splitProps(props);
|
|
57
|
-
let resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;
|
|
58
|
-
let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs);
|
|
59
|
-
let resourceDayTableModel = this.buildResourceTimeColsModel(dateProfile, context.dateProfileGenerator, resources, options.datesAboveResources, context);
|
|
60
|
-
let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);
|
|
61
|
-
let { dayMinWidth } = options;
|
|
62
|
-
let hasAttachedAxis = !dayMinWidth;
|
|
63
|
-
let hasDetachedAxis = dayMinWidth;
|
|
64
|
-
let headerContent = options.dayHeaders && (createElement(ResourceDayHeader, { resources: resources, dates: resourceDayTableModel.dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));
|
|
65
|
-
let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (createElement(ResourceDayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, resourceDayTableModel: resourceDayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));
|
|
66
|
-
let timeGridContent = (contentArg) => (createElement(ResourceDayTimeCols, Object.assign({}, splitProps.timed, { dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, resourceDayTableModel: resourceDayTableModel, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, forPrint: props.forPrint, onScrollTopRequest: this.handleScrollTopRequest })));
|
|
67
|
-
return hasDetachedAxis
|
|
68
|
-
? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, resourceDayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)
|
|
69
|
-
: this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
function buildResourceTimeColsModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {
|
|
73
|
-
let dayTable = buildTimeColsModel(dateProfile, dateProfileGenerator);
|
|
74
|
-
return datesAboveResources ?
|
|
75
|
-
new DayResourceTableModel(dayTable, resources, context) :
|
|
76
|
-
new ResourceDayTableModel(dayTable, resources, context);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export { ResourceDayTimeCols, ResourceDayTimeColsView };
|