@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/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
- var css_248z = ":root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-table{border-spacing:0;width:100%}.fc-table>*>*>*{border-color:var(--fc-border-color);border-style:solid;border-width:0 0 1px;padding:0}.fc-table>:last-child>:last-child>*{border-bottom-width:0}.fc-list-day-inner,.fc-list-event-dot-cell,.fc-list-event-time,.fc-list-event-title{padding:8px 14px}.fc-direction-ltr .fc-list-event-dot-cell{padding-right:0}.fc-direction-rtl .fc-list-event-dot-cell{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-cell-sticky{background:var(--fc-page-bg-color);position:sticky;top:0}.fc-list-day-inner{background:var(--fc-neutral-bg-color);display:flex;justify-content:space-between}.fc-list-event.fc-event-forced-url{cursor:pointer}.fc-list-event:hover td{background-color:var(--fc-list-event-hover-bg-color)}.fc-list-event-dot-cell,.fc-list-event-time{white-space:nowrap;width:1px}.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}.fc-list-event-title a{color:inherit;text-decoration:none}.fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}";
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 { theme, dateEnv, options, viewApi } = this.context;
20
- let { cellId, dayDate, todayRange } = this.props;
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, textId,
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(internal_cjs.ContentContainer, { elTag: "tr", elClasses: [
33
- 'fc-list-day',
34
- ...internal_cjs.getDayClassNames(dayMeta, theme),
35
- ], elAttrs: {
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("div", { className: 'fc-list-day-inner' },
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({ "aria-hidden": true, className: "fc-list-day-side-text" }, props.sideNavLinkAttrs), props.sideText))));
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 ListViewEventRow extends internal_cjs.BaseComponent {
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
- return (preact_cjs.createElement(internal_cjs.EventContainer, Object.assign({}, props, { elTag: "tr", elClasses: [
65
- 'fc-list-event',
66
- eventRange.def.url && 'fc-event-forced-url',
67
- ], defaultGenerator: () => renderEventInnerContent(eventRange, context) /* weird */, eventRange: eventRange, timeText: "", disableDragging: true, disableResizing: true }), (InnerContent, eventContentArg) => (preact_cjs.createElement(preact_cjs.Fragment, null,
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, { elTag: "td", elClasses: ['fc-list-event-title'], elAttrs: { headers: `${eventHeaderId} ${dateHeaderId}` } })))));
64
+ preact_cjs.createElement(InnerContent, { tag: "div", className: 'fc-list-event-title' })))));
74
65
  }
75
- }
76
- function renderEventInnerContent(eventRange, context) {
77
- let interactiveAttrs = internal_cjs.getEventRangeAnchorAttrs(eventRange, context);
78
- return (preact_cjs.createElement("a", Object.assign({}, interactiveAttrs), eventRange.def.title));
79
- }
80
- function buildTimeContent(eventRange, isStart, isEnd, segStart, segEnd, timeFormat, context, timeHeaderId, dateHeaderId) {
81
- let { options } = context;
82
- if (options.displayEventTime !== false) {
83
- let eventDef = eventRange.def;
84
- let eventInstance = eventRange.instance;
85
- let doAllDay = false;
86
- let timeText;
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
- doAllDay = true;
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
- else {
102
- timeText = internal_cjs.buildEventRangeTimeText(eventRange, timeFormat, context, null, null, segStart, segEnd);
103
- }
104
- if (doAllDay) {
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
- return null;
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
- this.state = {
130
- timeHeaderId: internal_cjs.getUniqueDomId(),
131
- eventHeaderId: internal_cjs.getUniqueDomId(),
132
- dateHeaderIdRoot: internal_cjs.getUniqueDomId(),
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, elClasses: [
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, elClassNames: [verticalScrolling ? 'fc-liquid' : ''] }, eventSegs.length > 0 ?
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, { elTag: "div", elClasses: ['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, { elTag: "div", elClasses: ['fc-list-empty-inner'] }))));
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
- let innerNodes = [];
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
- let dayStr = internal_cjs.formatDayString(dayDates[dayIndex]);
179
- let dateHeaderId = dateHeaderIdRoot + '-' + dayStr;
180
- // append a day header
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("table", { className: 'fc-table' },
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, this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, dayRanges);
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(eventRanges, dayRanges) {
204
+ eventRangesToSegs(fullDayEventRanges, dayRanges) {
201
205
  let segs = [];
202
- for (let eventRange of eventRanges) {
203
- segs.push(...this.eventRangeToSegs(eventRange, dayRanges));
206
+ for (let fullDayEventRange of fullDayEventRanges) {
207
+ segs.push(...this.eventRangeToSegs(fullDayEventRange, dayRanges));
204
208
  }
205
209
  return segs;
206
210
  }
207
- eventRangeToSegs(eventRange, dayRanges) {
208
- let { dateEnv } = this.context;
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
- segRange = internal_cjs.intersectRanges(range, dayRanges[dayIndex]);
218
- if (segRange) {
219
- seg = {
220
- eventRange,
221
- start: segRange.start,
222
- end: segRange.end,
223
- isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),
224
- 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(),
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;