@fullcalendar/list 7.0.0-beta.1 → 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.global.js +126 -135
- package/index.global.min.js +2 -2
- package/internal-common.d.ts +19 -16
- package/internal.cjs +127 -136
- package/internal.js +128 -137
- package/package.json +2 -2
package/internal.cjs
CHANGED
|
@@ -5,49 +5,29 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var internal_cjs = require('@fullcalendar/core/internal.cjs');
|
|
6
6
|
var preact_cjs = require('@fullcalendar/core/preact.cjs');
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
internal_cjs.injectStyles(css_248z);
|
|
10
|
-
|
|
11
|
-
class ListViewHeaderRow extends internal_cjs.BaseComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.state = {
|
|
15
|
-
textId: internal_cjs.getUniqueDomId(),
|
|
16
|
-
};
|
|
17
|
-
}
|
|
8
|
+
class ListDayHeader extends internal_cjs.BaseComponent {
|
|
18
9
|
render() {
|
|
19
|
-
let {
|
|
20
|
-
let {
|
|
21
|
-
let { textId } = this.state;
|
|
10
|
+
let { dateEnv, options, viewApi } = this.context;
|
|
11
|
+
let { dayDate, todayRange } = this.props;
|
|
22
12
|
let stickyHeaderDates = !this.props.forPrint && internal_cjs.getStickyHeaderDates(options);
|
|
23
13
|
let dayMeta = internal_cjs.getDateMeta(dayDate, todayRange);
|
|
24
14
|
// will ever be falsy?
|
|
25
15
|
let text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';
|
|
26
16
|
// will ever be falsy? also, BAD NAME "alt"
|
|
27
17
|
let sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';
|
|
28
|
-
let renderProps = Object.assign({ date: dateEnv.toDate(dayDate), view: viewApi,
|
|
29
|
-
text,
|
|
18
|
+
let renderProps = Object.assign({ date: dateEnv.toDate(dayDate), view: viewApi, text,
|
|
30
19
|
sideText, navLinkAttrs: internal_cjs.buildNavLinkAttrs(this.context, dayDate), sideNavLinkAttrs: internal_cjs.buildNavLinkAttrs(this.context, dayDate, 'day', false) }, dayMeta);
|
|
31
20
|
// TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)
|
|
32
|
-
return (preact_cjs.createElement(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
'data-date': internal_cjs.formatDayString(dayDate),
|
|
37
|
-
}, renderProps: renderProps, generatorName: "dayHeaderContent", customGenerator: options.dayHeaderContent, defaultGenerator: renderInnerContent, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContent) => (preact_cjs.createElement(InnerContent, { elTag: "th", elAttrs: {
|
|
38
|
-
id: cellId,
|
|
39
|
-
colSpan: 3,
|
|
40
|
-
'aria-labelledby': textId,
|
|
41
|
-
}, elClasses: [
|
|
42
|
-
'fc-list-day-cell',
|
|
43
|
-
stickyHeaderDates ? 'fc-list-day-cell-sticky' : '',
|
|
44
|
-
] }))));
|
|
21
|
+
return (preact_cjs.createElement("div", { className: internal_cjs.joinClassNames('fc-list-day-outer', stickyHeaderDates && 'fc-list-day-outer-sticky') },
|
|
22
|
+
preact_cjs.createElement(internal_cjs.ContentContainer, { tag: "div", className: internal_cjs.joinClassNames('fc-list-day', internal_cjs.getDayClassName(dayMeta)), attrs: {
|
|
23
|
+
'data-date': internal_cjs.formatDayString(dayDate),
|
|
24
|
+
}, renderProps: renderProps, generatorName: "dayHeaderContent", customGenerator: options.dayHeaderContent, defaultGenerator: renderInnerContent, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount })));
|
|
45
25
|
}
|
|
46
26
|
}
|
|
47
27
|
function renderInnerContent(props) {
|
|
48
|
-
return (preact_cjs.createElement(
|
|
28
|
+
return (preact_cjs.createElement(preact_cjs.Fragment, null,
|
|
49
29
|
props.text && (preact_cjs.createElement("a", Object.assign({ id: props.textId, className: "fc-list-day-text" }, props.navLinkAttrs), props.text)),
|
|
50
|
-
props.sideText && ( /* not keyboard tabbable */preact_cjs.createElement("a", Object.assign({
|
|
30
|
+
props.sideText && ( /* not keyboard tabbable */preact_cjs.createElement("a", Object.assign({ className: "fc-list-day-side-text" }, props.sideNavLinkAttrs), props.sideText))));
|
|
51
31
|
}
|
|
52
32
|
|
|
53
33
|
const DEFAULT_TIME_FORMAT = internal_cjs.createFormatter({
|
|
@@ -55,92 +35,131 @@ const DEFAULT_TIME_FORMAT = internal_cjs.createFormatter({
|
|
|
55
35
|
minute: '2-digit',
|
|
56
36
|
meridiem: 'short',
|
|
57
37
|
});
|
|
58
|
-
class
|
|
38
|
+
class ListEvent extends internal_cjs.BaseComponent {
|
|
39
|
+
constructor() {
|
|
40
|
+
super(...arguments);
|
|
41
|
+
this.handleTitleEl = (titleEl) => {
|
|
42
|
+
if (this.disconnectTitleWidth) {
|
|
43
|
+
this.disconnectTitleWidth();
|
|
44
|
+
}
|
|
45
|
+
if (titleEl) {
|
|
46
|
+
this.disconnectTitleWidth = internal_cjs.watchWidth(titleEl, (titleWidth) => {
|
|
47
|
+
internal_cjs.setRef(this.props.timeWidthRef, titleWidth);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
59
52
|
render() {
|
|
60
53
|
let { props, context } = this;
|
|
54
|
+
let { eventRange } = props;
|
|
61
55
|
let { options } = context;
|
|
62
|
-
let { eventRange, timeHeaderId, eventHeaderId, dateHeaderId } = props;
|
|
63
56
|
let timeFormat = options.eventTimeFormat || DEFAULT_TIME_FORMAT;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
buildTimeContent(eventRange, props.isStart, props.isEnd, props.segStart, props.segEnd, timeFormat, context, timeHeaderId, dateHeaderId),
|
|
69
|
-
preact_cjs.createElement("td", { "aria-hidden": true, className: "fc-list-event-dot-cell" },
|
|
57
|
+
let anchorAttrs = internal_cjs.getEventRangeAnchorAttrs(eventRange, context);
|
|
58
|
+
return (preact_cjs.createElement(internal_cjs.EventContainer, Object.assign({}, props, { tag: anchorAttrs ? 'a' : 'div', attrs: anchorAttrs, className: 'fc-list-event', defaultGenerator: renderEventTitleOnly, eventRange: eventRange, timeText: "", disableDragging: true, disableResizing: true }), (InnerContent, eventContentArg) => (preact_cjs.createElement(preact_cjs.Fragment, null,
|
|
59
|
+
preact_cjs.createElement("div", { className: 'fc-list-event-time-outer', style: { width: props.timeOuterWidth } }, this.buildTimeContent(eventRange, props.slicedStart, props.slicedEnd, props.isStart, props.isEnd, timeFormat, context)),
|
|
60
|
+
preact_cjs.createElement("div", { className: "fc-list-event-dot-outer" },
|
|
70
61
|
preact_cjs.createElement("span", { className: "fc-list-event-dot", style: {
|
|
71
62
|
borderColor: eventContentArg.borderColor || eventContentArg.backgroundColor,
|
|
72
63
|
} })),
|
|
73
|
-
preact_cjs.createElement(InnerContent, {
|
|
64
|
+
preact_cjs.createElement(InnerContent, { tag: "div", className: 'fc-list-event-title' })))));
|
|
74
65
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (eventDef.allDay) {
|
|
88
|
-
doAllDay = true;
|
|
89
|
-
}
|
|
90
|
-
else if (internal_cjs.isMultiDayRange(eventRange.range)) { // TODO: use (!isStart || !isEnd) instead?
|
|
91
|
-
if (isStart) {
|
|
92
|
-
timeText = internal_cjs.buildEventRangeTimeText(eventRange, timeFormat, context, null, null, eventInstance.range.start, segEnd);
|
|
93
|
-
}
|
|
94
|
-
else if (isEnd) {
|
|
95
|
-
timeText = internal_cjs.buildEventRangeTimeText(eventRange, timeFormat, context, null, null, segStart, eventInstance.range.end);
|
|
66
|
+
buildTimeContent(eventRange, // whole-day span
|
|
67
|
+
slicedStart, // view-sliced whole-day span
|
|
68
|
+
slicedEnd, // view-sliced whole-day span
|
|
69
|
+
isStart, isEnd, timeFormat, context) {
|
|
70
|
+
let { options } = context;
|
|
71
|
+
if (options.displayEventTime !== false) {
|
|
72
|
+
if (eventRange.def.allDay || (!isStart && !isEnd)) {
|
|
73
|
+
let renderProps = {
|
|
74
|
+
text: context.options.allDayText,
|
|
75
|
+
view: context.viewApi,
|
|
76
|
+
};
|
|
77
|
+
return (preact_cjs.createElement(internal_cjs.ContentContainer, { tag: "div", className: 'fc-list-event-time', renderProps: renderProps, elRef: this.handleTitleEl, generatorName: "allDayContent", customGenerator: options.allDayContent, defaultGenerator: renderAllDayInner, classNameGenerator: options.allDayClassNames, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }));
|
|
96
78
|
}
|
|
97
79
|
else {
|
|
98
|
-
|
|
80
|
+
return (preact_cjs.createElement("div", { className: "fc-list-event-time", ref: this.handleTitleEl }, internal_cjs.buildEventRangeTimeText(timeFormat, eventRange, slicedStart, slicedEnd, isStart, isEnd, context)));
|
|
99
81
|
}
|
|
100
82
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
let renderProps = {
|
|
106
|
-
text: context.options.allDayText,
|
|
107
|
-
view: context.viewApi,
|
|
108
|
-
};
|
|
109
|
-
return (preact_cjs.createElement(internal_cjs.ContentContainer, { elTag: "td", elClasses: ['fc-list-event-time'], elAttrs: {
|
|
110
|
-
headers: `${timeHeaderId} ${dateHeaderId}`,
|
|
111
|
-
}, renderProps: renderProps, generatorName: "allDayContent", customGenerator: options.allDayContent, defaultGenerator: renderAllDayInner, classNameGenerator: options.allDayClassNames, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }));
|
|
112
|
-
}
|
|
113
|
-
return (preact_cjs.createElement("td", { className: "fc-list-event-time" }, timeText));
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
componentWillUnmount() {
|
|
86
|
+
internal_cjs.setRef(this.props.timeWidthRef, null);
|
|
114
87
|
}
|
|
115
|
-
|
|
88
|
+
}
|
|
89
|
+
function renderEventTitleOnly(renderProps) {
|
|
90
|
+
return renderProps.event.title;
|
|
116
91
|
}
|
|
117
92
|
function renderAllDayInner(renderProps) {
|
|
118
93
|
return renderProps.text;
|
|
119
94
|
}
|
|
120
95
|
|
|
96
|
+
class ListDay extends internal_cjs.BaseComponent {
|
|
97
|
+
constructor() {
|
|
98
|
+
super(...arguments);
|
|
99
|
+
// memo
|
|
100
|
+
this.sortEventSegs = internal_cjs.memoize(internal_cjs.sortEventSegs);
|
|
101
|
+
// ref
|
|
102
|
+
this.timeWidthRefMap = new internal_cjs.RefMap(() => {
|
|
103
|
+
internal_cjs.afterSize(this.handleTimeWidths);
|
|
104
|
+
});
|
|
105
|
+
this.handleTimeWidths = () => {
|
|
106
|
+
const timeWidthMap = this.timeWidthRefMap.current;
|
|
107
|
+
let max = 0;
|
|
108
|
+
for (const timeWidth of timeWidthMap.values()) {
|
|
109
|
+
max = Math.max(max, timeWidth);
|
|
110
|
+
}
|
|
111
|
+
internal_cjs.setRef(this.props.timeWidthRef, max);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
render() {
|
|
115
|
+
const { props, context, timeWidthRefMap } = this;
|
|
116
|
+
const { nowDate, todayRange } = props;
|
|
117
|
+
const { options } = context;
|
|
118
|
+
const segs = this.sortEventSegs(props.segs, options.eventOrder);
|
|
119
|
+
return (preact_cjs.createElement("div", { className: 'fc-list-day-and-events' },
|
|
120
|
+
preact_cjs.createElement(ListDayHeader, { dayDate: props.dayDate, todayRange: todayRange, forPrint: props.forPrint }),
|
|
121
|
+
segs.map((seg) => {
|
|
122
|
+
const key = internal_cjs.getEventKey(seg);
|
|
123
|
+
return (preact_cjs.createElement(ListEvent, Object.assign({ key: key, eventRange: seg.eventRange, slicedStart: seg.slicedStart, slicedEnd: seg.slicedEnd, isStart: seg.isStart, isEnd: seg.isEnd, timeWidthRef: timeWidthRefMap.createRef(key), timeOuterWidth: props.timeOuterWidth, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false }, internal_cjs.getEventRangeMeta(seg.eventRange, todayRange, nowDate))));
|
|
124
|
+
})));
|
|
125
|
+
}
|
|
126
|
+
componentWillUnmount() {
|
|
127
|
+
internal_cjs.setRef(this.props.timeWidthRef, null);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
121
131
|
/*
|
|
122
132
|
Responsible for the scroller, and forwarding event-related actions into the "grid".
|
|
123
133
|
*/
|
|
124
134
|
class ListView extends internal_cjs.DateComponent {
|
|
125
135
|
constructor() {
|
|
126
136
|
super(...arguments);
|
|
137
|
+
// memo
|
|
127
138
|
this.computeDateVars = internal_cjs.memoize(computeDateVars);
|
|
128
139
|
this.eventStoreToSegs = internal_cjs.memoize(this._eventStoreToSegs);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
};
|
|
140
|
+
// ref
|
|
141
|
+
this.timeWidthRefMap = new internal_cjs.RefMap(() => {
|
|
142
|
+
internal_cjs.afterSize(this.handleTimeWidths);
|
|
143
|
+
});
|
|
134
144
|
this.setRootEl = (rootEl) => {
|
|
135
145
|
if (rootEl) {
|
|
136
146
|
this.context.registerInteractiveComponent(this, {
|
|
137
147
|
el: rootEl,
|
|
148
|
+
disableHits: true, // HACK to not do date-clicking/selecting
|
|
138
149
|
});
|
|
139
150
|
}
|
|
140
151
|
else {
|
|
141
152
|
this.context.unregisterInteractiveComponent(this);
|
|
142
153
|
}
|
|
143
154
|
};
|
|
155
|
+
this.handleTimeWidths = () => {
|
|
156
|
+
const timeWidthMap = this.timeWidthRefMap.current;
|
|
157
|
+
let max = 0;
|
|
158
|
+
for (const timeWidth of timeWidthMap.values()) {
|
|
159
|
+
max = Math.max(max, timeWidth);
|
|
160
|
+
}
|
|
161
|
+
this.setState({ timeOuterWidth: max });
|
|
162
|
+
};
|
|
144
163
|
}
|
|
145
164
|
render() {
|
|
146
165
|
let { props, context } = this;
|
|
@@ -148,13 +167,9 @@ class ListView extends internal_cjs.DateComponent {
|
|
|
148
167
|
let { dayDates, dayRanges } = this.computeDateVars(props.dateProfile);
|
|
149
168
|
let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges);
|
|
150
169
|
let verticalScrolling = !props.forPrint && !internal_cjs.getIsHeightAuto(options);
|
|
151
|
-
return (preact_cjs.createElement(internal_cjs.ViewContainer, { elRef: this.setRootEl,
|
|
152
|
-
'fc-list-view',
|
|
153
|
-
'fc-flex-column',
|
|
154
|
-
'fc-border',
|
|
155
|
-
], viewSpec: context.viewSpec },
|
|
170
|
+
return (preact_cjs.createElement(internal_cjs.ViewContainer, { elRef: this.setRootEl, className: 'fc-list fc-flex-col fc-border', viewSpec: context.viewSpec },
|
|
156
171
|
preact_cjs.createElement(internal_cjs.Scroller // TODO: don't need heavyweight component
|
|
157
|
-
, { vertical: verticalScrolling,
|
|
172
|
+
, { vertical: verticalScrolling, className: verticalScrolling ? 'fc-liquid' : '' }, eventSegs.length > 0 ?
|
|
158
173
|
this.renderSegList(eventSegs, dayDates) :
|
|
159
174
|
this.renderEmptyMessage())));
|
|
160
175
|
}
|
|
@@ -164,77 +179,50 @@ class ListView extends internal_cjs.DateComponent {
|
|
|
164
179
|
text: options.noEventsText,
|
|
165
180
|
view: viewApi,
|
|
166
181
|
};
|
|
167
|
-
return (preact_cjs.createElement(internal_cjs.ContentContainer, {
|
|
182
|
+
return (preact_cjs.createElement(internal_cjs.ContentContainer, { tag: "div", className: 'fc-list-empty', renderProps: renderProps, generatorName: "noEventsContent", customGenerator: options.noEventsContent, defaultGenerator: renderNoEventsInner, classNameGenerator: options.noEventsClassNames, didMount: options.noEventsDidMount, willUnmount: options.noEventsWillUnmount }, (InnerContent) => (preact_cjs.createElement(InnerContent, { tag: "div", className: 'fc-list-empty-inner' }))));
|
|
168
183
|
}
|
|
169
184
|
renderSegList(allSegs, dayDates) {
|
|
170
|
-
let { options } = this.context;
|
|
171
|
-
let { timeHeaderId, eventHeaderId, dateHeaderIdRoot } = this.state;
|
|
172
185
|
let segsByDay = groupSegsByDay(allSegs); // sparse array
|
|
173
186
|
return (preact_cjs.createElement(internal_cjs.NowTimer, { unit: "day" }, (nowDate, todayRange) => {
|
|
174
|
-
|
|
187
|
+
const dayNodes = [];
|
|
175
188
|
for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
|
|
176
189
|
let daySegs = segsByDay[dayIndex];
|
|
177
190
|
if (daySegs) { // sparse array, so might be undefined
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
innerNodes.push(preact_cjs.createElement(ListViewHeaderRow, { key: dayStr, forPrint: this.props.forPrint, cellId: dateHeaderId, dayDate: dayDates[dayIndex], todayRange: todayRange }));
|
|
182
|
-
daySegs = internal_cjs.sortEventSegs(daySegs, options.eventOrder);
|
|
183
|
-
for (let seg of daySegs) {
|
|
184
|
-
innerNodes.push(preact_cjs.createElement(ListViewEventRow, Object.assign({ key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */, eventRange: seg.eventRange, isStart: seg.isStart, isEnd: seg.isEnd, segStart: seg.start, segEnd: seg.end, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, timeHeaderId: timeHeaderId, eventHeaderId: eventHeaderId, dateHeaderId: dateHeaderId }, internal_cjs.getEventRangeMeta(seg.eventRange, todayRange, nowDate))));
|
|
185
|
-
}
|
|
191
|
+
const dayDate = dayDates[dayIndex];
|
|
192
|
+
const key = internal_cjs.formatDayString(dayDate);
|
|
193
|
+
dayNodes.push(preact_cjs.createElement(ListDay, { key: key, dayDate: dayDate, nowDate: nowDate, todayRange: todayRange, segs: daySegs, forPrint: this.props.forPrint, timeWidthRef: this.timeWidthRefMap.createRef(key), timeOuterWidth: this.state.timeOuterWidth }));
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
|
-
return (preact_cjs.createElement(
|
|
189
|
-
preact_cjs.createElement("thead", { className: 'fc-offscreen' },
|
|
190
|
-
preact_cjs.createElement("tr", null,
|
|
191
|
-
preact_cjs.createElement("th", { scope: "col", id: timeHeaderId }, options.timeHint),
|
|
192
|
-
preact_cjs.createElement("th", { scope: "col", "aria-hidden": true }),
|
|
193
|
-
preact_cjs.createElement("th", { scope: "col", id: eventHeaderId }, options.eventHint))),
|
|
194
|
-
preact_cjs.createElement("tbody", null, innerNodes)));
|
|
196
|
+
return (preact_cjs.createElement(preact_cjs.Fragment, null, dayNodes));
|
|
195
197
|
}));
|
|
196
198
|
}
|
|
197
199
|
_eventStoreToSegs(eventStore, eventUiBases, dayRanges) {
|
|
198
|
-
return this.eventRangesToSegs(internal_cjs.sliceEventStore(eventStore, eventUiBases,
|
|
200
|
+
return this.eventRangesToSegs(internal_cjs.sliceEventStore(eventStore, eventUiBases,
|
|
201
|
+
// HACKY to reference internal state...
|
|
202
|
+
this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, dayRanges);
|
|
199
203
|
}
|
|
200
|
-
eventRangesToSegs(
|
|
204
|
+
eventRangesToSegs(fullDayEventRanges, dayRanges) {
|
|
201
205
|
let segs = [];
|
|
202
|
-
for (let
|
|
203
|
-
segs.push(...this.eventRangeToSegs(
|
|
206
|
+
for (let fullDayEventRange of fullDayEventRanges) {
|
|
207
|
+
segs.push(...this.eventRangeToSegs(fullDayEventRange, dayRanges));
|
|
204
208
|
}
|
|
205
209
|
return segs;
|
|
206
210
|
}
|
|
207
|
-
eventRangeToSegs(
|
|
208
|
-
let
|
|
209
|
-
let { nextDayThreshold } = this.context.options;
|
|
210
|
-
let range = eventRange.range;
|
|
211
|
-
let allDay = eventRange.def.allDay;
|
|
211
|
+
eventRangeToSegs(fullDayEventRange, dayRanges) {
|
|
212
|
+
let fullDayRange = fullDayEventRange.range;
|
|
212
213
|
let dayIndex;
|
|
213
|
-
let segRange;
|
|
214
|
-
let seg;
|
|
215
214
|
let segs = [];
|
|
216
215
|
for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {
|
|
217
|
-
|
|
218
|
-
if (
|
|
219
|
-
|
|
220
|
-
eventRange,
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
isStart:
|
|
224
|
-
isEnd:
|
|
216
|
+
const slicedFullDayRange = internal_cjs.intersectRanges(fullDayRange, dayRanges[dayIndex]);
|
|
217
|
+
if (slicedFullDayRange) {
|
|
218
|
+
segs.push({
|
|
219
|
+
eventRange: fullDayEventRange,
|
|
220
|
+
slicedStart: slicedFullDayRange.start,
|
|
221
|
+
slicedEnd: slicedFullDayRange.end,
|
|
222
|
+
isStart: fullDayEventRange.isStart && fullDayRange.start.valueOf() === slicedFullDayRange.start.valueOf(),
|
|
223
|
+
isEnd: fullDayEventRange.isEnd && fullDayRange.end.valueOf() === slicedFullDayRange.end.valueOf(),
|
|
225
224
|
dayIndex,
|
|
226
|
-
};
|
|
227
|
-
segs.push(seg);
|
|
228
|
-
// detect when range won't go fully into the next day,
|
|
229
|
-
// and mutate the latest seg to the be the end.
|
|
230
|
-
if (!seg.isEnd && !allDay &&
|
|
231
|
-
dayIndex + 1 < dayRanges.length &&
|
|
232
|
-
range.end <
|
|
233
|
-
dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) {
|
|
234
|
-
seg.end = range.end;
|
|
235
|
-
seg.isEnd = true;
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
225
|
+
});
|
|
238
226
|
}
|
|
239
227
|
}
|
|
240
228
|
return segs;
|
|
@@ -271,4 +259,7 @@ function groupSegsByDay(segs) {
|
|
|
271
259
|
return segsByDay;
|
|
272
260
|
}
|
|
273
261
|
|
|
262
|
+
var css_248z = ":root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-list-day,.fc-list-event-dot-outer,.fc-list-event-time,.fc-list-event-title{padding:8px 14px}.fc-direction-ltr .fc-list-event-dot-outer{padding-right:0}.fc-direction-rtl .fc-list-event-dot-outer{padding-left:0}.fc-list-empty{align-items:center;background-color:var(--fc-neutral-bg-color);display:flex;height:100%;justify-content:center}.fc-list-empty-inner{margin:5em 0}.fc-list-day,.fc-list-event:not(.fc-list-day-and-events:last-child .fc-list-event:last-child){border-bottom:1px solid var(--fc-border-color)}.fc-list-day-outer-sticky{background:var(--fc-page-bg-color);position:sticky;top:0}.fc-list-day{background:var(--fc-neutral-bg-color);display:flex;font-weight:700;justify-content:space-between}.fc-list-event{display:flex;flex-direction:row}a.fc-list-event{color:inherit;text-decoration:none}.fc-list-event:hover{background-color:var(--fc-list-event-hover-bg-color)}.fc-list-event-time-outer{display:flex;flex-direction:row}.fc-list-event-dot-outer,.fc-list-event-time{white-space:nowrap}.fc-list-event-dot{border:calc(var(--fc-list-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-list-event-dot-width)/2);box-sizing:content-box;display:inline-block;height:0;width:0}a.fc-list-event:hover .fc-list-event-title{text-decoration:underline}";
|
|
263
|
+
internal_cjs.injectStyles(css_248z);
|
|
264
|
+
|
|
274
265
|
exports.ListView = ListView;
|