@fullcalendar/list 7.0.0-beta.0 → 7.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.global.js +126 -136
- package/index.global.min.js +2 -2
- package/internal-common.d.ts +19 -11
- package/internal.cjs +125 -135
- package/internal.js +126 -136
- package/package.json +2 -2
package/internal.cjs
CHANGED
|
@@ -5,46 +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
|
-
class
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
this.state = {
|
|
12
|
-
textId: internal_cjs.getUniqueDomId(),
|
|
13
|
-
};
|
|
14
|
-
}
|
|
8
|
+
class ListDayHeader extends internal_cjs.BaseComponent {
|
|
15
9
|
render() {
|
|
16
|
-
let {
|
|
17
|
-
let {
|
|
18
|
-
let { textId } = this.state;
|
|
10
|
+
let { dateEnv, options, viewApi } = this.context;
|
|
11
|
+
let { dayDate, todayRange } = this.props;
|
|
19
12
|
let stickyHeaderDates = !this.props.forPrint && internal_cjs.getStickyHeaderDates(options);
|
|
20
13
|
let dayMeta = internal_cjs.getDateMeta(dayDate, todayRange);
|
|
21
14
|
// will ever be falsy?
|
|
22
15
|
let text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';
|
|
23
16
|
// will ever be falsy? also, BAD NAME "alt"
|
|
24
17
|
let sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';
|
|
25
|
-
let renderProps = Object.assign({ date: dateEnv.toDate(dayDate), view: viewApi,
|
|
26
|
-
text,
|
|
18
|
+
let renderProps = Object.assign({ date: dateEnv.toDate(dayDate), view: viewApi, text,
|
|
27
19
|
sideText, navLinkAttrs: internal_cjs.buildNavLinkAttrs(this.context, dayDate), sideNavLinkAttrs: internal_cjs.buildNavLinkAttrs(this.context, dayDate, 'day', false) }, dayMeta);
|
|
28
20
|
// TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)
|
|
29
|
-
return (preact_cjs.createElement(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
'data-date': internal_cjs.formatDayString(dayDate),
|
|
34
|
-
}, 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: {
|
|
35
|
-
id: cellId,
|
|
36
|
-
colSpan: 3,
|
|
37
|
-
'aria-labelledby': textId,
|
|
38
|
-
}, elClasses: [
|
|
39
|
-
'fc-list-day-cell',
|
|
40
|
-
stickyHeaderDates ? 'fc-list-day-cell-sticky' : '',
|
|
41
|
-
] }))));
|
|
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 })));
|
|
42
25
|
}
|
|
43
26
|
}
|
|
44
27
|
function renderInnerContent(props) {
|
|
45
|
-
return (preact_cjs.createElement(
|
|
28
|
+
return (preact_cjs.createElement(preact_cjs.Fragment, null,
|
|
46
29
|
props.text && (preact_cjs.createElement("a", Object.assign({ id: props.textId, className: "fc-list-day-text" }, props.navLinkAttrs), props.text)),
|
|
47
|
-
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))));
|
|
48
31
|
}
|
|
49
32
|
|
|
50
33
|
const DEFAULT_TIME_FORMAT = internal_cjs.createFormatter({
|
|
@@ -52,92 +35,131 @@ const DEFAULT_TIME_FORMAT = internal_cjs.createFormatter({
|
|
|
52
35
|
minute: '2-digit',
|
|
53
36
|
meridiem: 'short',
|
|
54
37
|
});
|
|
55
|
-
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
|
+
}
|
|
56
52
|
render() {
|
|
57
53
|
let { props, context } = this;
|
|
54
|
+
let { eventRange } = props;
|
|
58
55
|
let { options } = context;
|
|
59
|
-
let { seg, timeHeaderId, eventHeaderId, dateHeaderId } = props;
|
|
60
56
|
let timeFormat = options.eventTimeFormat || DEFAULT_TIME_FORMAT;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId),
|
|
66
|
-
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" },
|
|
67
61
|
preact_cjs.createElement("span", { className: "fc-list-event-dot", style: {
|
|
68
62
|
borderColor: eventContentArg.borderColor || eventContentArg.backgroundColor,
|
|
69
63
|
} })),
|
|
70
|
-
preact_cjs.createElement(InnerContent, {
|
|
64
|
+
preact_cjs.createElement(InnerContent, { tag: "div", className: 'fc-list-event-title' })))));
|
|
71
65
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (eventDef.allDay) {
|
|
85
|
-
doAllDay = true;
|
|
86
|
-
}
|
|
87
|
-
else if (internal_cjs.isMultiDayRange(seg.eventRange.range)) { // TODO: use (!isStart || !isEnd) instead?
|
|
88
|
-
if (seg.isStart) {
|
|
89
|
-
timeText = internal_cjs.buildSegTimeText(seg, timeFormat, context, null, null, eventInstance.range.start, seg.end);
|
|
90
|
-
}
|
|
91
|
-
else if (seg.isEnd) {
|
|
92
|
-
timeText = internal_cjs.buildSegTimeText(seg, timeFormat, context, null, null, seg.start, 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 }));
|
|
93
78
|
}
|
|
94
79
|
else {
|
|
95
|
-
|
|
80
|
+
return (preact_cjs.createElement("div", { className: "fc-list-event-time", ref: this.handleTitleEl }, internal_cjs.buildEventRangeTimeText(timeFormat, eventRange, slicedStart, slicedEnd, isStart, isEnd, context)));
|
|
96
81
|
}
|
|
97
82
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
let renderProps = {
|
|
103
|
-
text: context.options.allDayText,
|
|
104
|
-
view: context.viewApi,
|
|
105
|
-
};
|
|
106
|
-
return (preact_cjs.createElement(internal_cjs.ContentContainer, { elTag: "td", elClasses: ['fc-list-event-time'], elAttrs: {
|
|
107
|
-
headers: `${timeHeaderId} ${dateHeaderId}`,
|
|
108
|
-
}, renderProps: renderProps, generatorName: "allDayContent", customGenerator: options.allDayContent, defaultGenerator: renderAllDayInner, classNameGenerator: options.allDayClassNames, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }));
|
|
109
|
-
}
|
|
110
|
-
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);
|
|
111
87
|
}
|
|
112
|
-
|
|
88
|
+
}
|
|
89
|
+
function renderEventTitleOnly(renderProps) {
|
|
90
|
+
return renderProps.event.title;
|
|
113
91
|
}
|
|
114
92
|
function renderAllDayInner(renderProps) {
|
|
115
93
|
return renderProps.text;
|
|
116
94
|
}
|
|
117
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
|
+
|
|
118
131
|
/*
|
|
119
132
|
Responsible for the scroller, and forwarding event-related actions into the "grid".
|
|
120
133
|
*/
|
|
121
134
|
class ListView extends internal_cjs.DateComponent {
|
|
122
135
|
constructor() {
|
|
123
136
|
super(...arguments);
|
|
137
|
+
// memo
|
|
124
138
|
this.computeDateVars = internal_cjs.memoize(computeDateVars);
|
|
125
139
|
this.eventStoreToSegs = internal_cjs.memoize(this._eventStoreToSegs);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
};
|
|
140
|
+
// ref
|
|
141
|
+
this.timeWidthRefMap = new internal_cjs.RefMap(() => {
|
|
142
|
+
internal_cjs.afterSize(this.handleTimeWidths);
|
|
143
|
+
});
|
|
131
144
|
this.setRootEl = (rootEl) => {
|
|
132
145
|
if (rootEl) {
|
|
133
146
|
this.context.registerInteractiveComponent(this, {
|
|
134
147
|
el: rootEl,
|
|
148
|
+
disableHits: true, // HACK to not do date-clicking/selecting
|
|
135
149
|
});
|
|
136
150
|
}
|
|
137
151
|
else {
|
|
138
152
|
this.context.unregisterInteractiveComponent(this);
|
|
139
153
|
}
|
|
140
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
|
+
};
|
|
141
163
|
}
|
|
142
164
|
render() {
|
|
143
165
|
let { props, context } = this;
|
|
@@ -145,13 +167,9 @@ class ListView extends internal_cjs.DateComponent {
|
|
|
145
167
|
let { dayDates, dayRanges } = this.computeDateVars(props.dateProfile);
|
|
146
168
|
let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges);
|
|
147
169
|
let verticalScrolling = !props.forPrint && !internal_cjs.getIsHeightAuto(options);
|
|
148
|
-
return (preact_cjs.createElement(internal_cjs.ViewContainer, { elRef: this.setRootEl,
|
|
149
|
-
'fc-list-view',
|
|
150
|
-
'fc-flex-column',
|
|
151
|
-
'fc-border',
|
|
152
|
-
], 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 },
|
|
153
171
|
preact_cjs.createElement(internal_cjs.Scroller // TODO: don't need heavyweight component
|
|
154
|
-
, { vertical: verticalScrolling,
|
|
172
|
+
, { vertical: verticalScrolling, className: verticalScrolling ? 'fc-liquid' : '' }, eventSegs.length > 0 ?
|
|
155
173
|
this.renderSegList(eventSegs, dayDates) :
|
|
156
174
|
this.renderEmptyMessage())));
|
|
157
175
|
}
|
|
@@ -161,78 +179,50 @@ class ListView extends internal_cjs.DateComponent {
|
|
|
161
179
|
text: options.noEventsText,
|
|
162
180
|
view: viewApi,
|
|
163
181
|
};
|
|
164
|
-
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' }))));
|
|
165
183
|
}
|
|
166
184
|
renderSegList(allSegs, dayDates) {
|
|
167
|
-
let { options } = this.context;
|
|
168
|
-
let { timeHeaderId, eventHeaderId, dateHeaderIdRoot } = this.state;
|
|
169
185
|
let segsByDay = groupSegsByDay(allSegs); // sparse array
|
|
170
186
|
return (preact_cjs.createElement(internal_cjs.NowTimer, { unit: "day" }, (nowDate, todayRange) => {
|
|
171
|
-
|
|
187
|
+
const dayNodes = [];
|
|
172
188
|
for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
|
|
173
189
|
let daySegs = segsByDay[dayIndex];
|
|
174
190
|
if (daySegs) { // sparse array, so might be undefined
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
innerNodes.push(preact_cjs.createElement(ListViewHeaderRow, { key: dayStr, forPrint: this.props.forPrint, cellId: dateHeaderId, dayDate: dayDates[dayIndex], todayRange: todayRange }));
|
|
179
|
-
daySegs = internal_cjs.sortEventSegs(daySegs, options.eventOrder);
|
|
180
|
-
for (let seg of daySegs) {
|
|
181
|
-
innerNodes.push(preact_cjs.createElement(ListViewEventRow, Object.assign({ key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */, seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, timeHeaderId: timeHeaderId, eventHeaderId: eventHeaderId, dateHeaderId: dateHeaderId }, internal_cjs.getSegMeta(seg, todayRange, nowDate))));
|
|
182
|
-
}
|
|
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 }));
|
|
183
194
|
}
|
|
184
195
|
}
|
|
185
|
-
return (preact_cjs.createElement(
|
|
186
|
-
preact_cjs.createElement("thead", { className: 'fc-offscreen' },
|
|
187
|
-
preact_cjs.createElement("tr", null,
|
|
188
|
-
preact_cjs.createElement("th", { scope: "col", id: timeHeaderId }, options.timeHint),
|
|
189
|
-
preact_cjs.createElement("th", { scope: "col", "aria-hidden": true }),
|
|
190
|
-
preact_cjs.createElement("th", { scope: "col", id: eventHeaderId }, options.eventHint))),
|
|
191
|
-
preact_cjs.createElement("tbody", null, innerNodes)));
|
|
196
|
+
return (preact_cjs.createElement(preact_cjs.Fragment, null, dayNodes));
|
|
192
197
|
}));
|
|
193
198
|
}
|
|
194
199
|
_eventStoreToSegs(eventStore, eventUiBases, dayRanges) {
|
|
195
|
-
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);
|
|
196
203
|
}
|
|
197
|
-
eventRangesToSegs(
|
|
204
|
+
eventRangesToSegs(fullDayEventRanges, dayRanges) {
|
|
198
205
|
let segs = [];
|
|
199
|
-
for (let
|
|
200
|
-
segs.push(...this.eventRangeToSegs(
|
|
206
|
+
for (let fullDayEventRange of fullDayEventRanges) {
|
|
207
|
+
segs.push(...this.eventRangeToSegs(fullDayEventRange, dayRanges));
|
|
201
208
|
}
|
|
202
209
|
return segs;
|
|
203
210
|
}
|
|
204
|
-
eventRangeToSegs(
|
|
205
|
-
let
|
|
206
|
-
let { nextDayThreshold } = this.context.options;
|
|
207
|
-
let range = eventRange.range;
|
|
208
|
-
let allDay = eventRange.def.allDay;
|
|
211
|
+
eventRangeToSegs(fullDayEventRange, dayRanges) {
|
|
212
|
+
let fullDayRange = fullDayEventRange.range;
|
|
209
213
|
let dayIndex;
|
|
210
|
-
let segRange;
|
|
211
|
-
let seg;
|
|
212
214
|
let segs = [];
|
|
213
215
|
for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {
|
|
214
|
-
|
|
215
|
-
if (
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),
|
|
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(),
|
|
223
224
|
dayIndex,
|
|
224
|
-
};
|
|
225
|
-
segs.push(seg);
|
|
226
|
-
// detect when range won't go fully into the next day,
|
|
227
|
-
// and mutate the latest seg to the be the end.
|
|
228
|
-
if (!seg.isEnd && !allDay &&
|
|
229
|
-
dayIndex + 1 < dayRanges.length &&
|
|
230
|
-
range.end <
|
|
231
|
-
dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) {
|
|
232
|
-
seg.end = range.end;
|
|
233
|
-
seg.isEnd = true;
|
|
234
|
-
break;
|
|
235
|
-
}
|
|
225
|
+
});
|
|
236
226
|
}
|
|
237
227
|
}
|
|
238
228
|
return segs;
|
|
@@ -269,7 +259,7 @@ function groupSegsByDay(segs) {
|
|
|
269
259
|
return segsByDay;
|
|
270
260
|
}
|
|
271
261
|
|
|
272
|
-
var css_248z = ":root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-
|
|
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}";
|
|
273
263
|
internal_cjs.injectStyles(css_248z);
|
|
274
264
|
|
|
275
265
|
exports.ListView = ListView;
|