@fullcalendar/list 5.7.2 → 5.10.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/main.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar v5.7.2
2
+ FullCalendar v5.10.1
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2021 Adam Shaw
5
5
  */
@@ -14,37 +14,36 @@ var tslib = require('tslib');
14
14
  var ListViewHeaderRow = /** @class */ (function (_super) {
15
15
  tslib.__extends(ListViewHeaderRow, _super);
16
16
  function ListViewHeaderRow() {
17
- return _super !== null && _super.apply(this, arguments) || this;
17
+ var _this = _super !== null && _super.apply(this, arguments) || this;
18
+ _this.state = {
19
+ textId: common.getUniqueDomId(),
20
+ };
21
+ return _this;
18
22
  }
19
23
  ListViewHeaderRow.prototype.render = function () {
20
- var _a = this.props, dayDate = _a.dayDate, todayRange = _a.todayRange;
21
- var _b = this.context, theme = _b.theme, dateEnv = _b.dateEnv, options = _b.options, viewApi = _b.viewApi;
24
+ var _a = this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options, viewApi = _a.viewApi;
25
+ var _b = this.props, cellId = _b.cellId, dayDate = _b.dayDate, todayRange = _b.todayRange;
26
+ var textId = this.state.textId;
22
27
  var dayMeta = common.getDateMeta(dayDate, todayRange);
23
28
  // will ever be falsy?
24
29
  var text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';
25
30
  // will ever be falsy? also, BAD NAME "alt"
26
31
  var sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';
27
- var navLinkData = options.navLinks
28
- ? common.buildNavLinkData(dayDate)
29
- : null;
30
- var hookProps = tslib.__assign({ date: dateEnv.toDate(dayDate), view: viewApi, text: text,
31
- sideText: sideText,
32
- navLinkData: navLinkData }, dayMeta);
32
+ var hookProps = tslib.__assign({ date: dateEnv.toDate(dayDate), view: viewApi, textId: textId,
33
+ text: text,
34
+ sideText: sideText, navLinkAttrs: common.buildNavLinkAttrs(this.context, dayDate), sideNavLinkAttrs: common.buildNavLinkAttrs(this.context, dayDate, 'day', false) }, dayMeta);
33
35
  var classNames = ['fc-list-day'].concat(common.getDayClassNames(dayMeta, theme));
34
36
  // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)
35
37
  return (common.createElement(common.RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInnerContent, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (common.createElement("tr", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": common.formatDayString(dayDate) },
36
- common.createElement("th", { colSpan: 3 },
38
+ common.createElement("th", { scope: "colgroup", colSpan: 3, id: cellId, "aria-labelledby": textId },
37
39
  common.createElement("div", { className: 'fc-list-day-cushion ' + theme.getClass('tableCellShaded'), ref: innerElRef }, innerContent)))); }));
38
40
  };
39
41
  return ListViewHeaderRow;
40
42
  }(common.BaseComponent));
41
43
  function renderInnerContent(props) {
42
- var navLinkAttrs = props.navLinkData // is there a type for this?
43
- ? { 'data-navlink': props.navLinkData, tabIndex: 0 }
44
- : {};
45
44
  return (common.createElement(common.Fragment, null,
46
- props.text && (common.createElement("a", tslib.__assign({ className: "fc-list-day-text" }, navLinkAttrs), props.text)),
47
- props.sideText && (common.createElement("a", tslib.__assign({ className: "fc-list-day-side-text" }, navLinkAttrs), props.sideText))));
45
+ props.text && (common.createElement("a", tslib.__assign({ id: props.textId, className: "fc-list-day-text" }, props.navLinkAttrs), props.text)),
46
+ props.sideText && ( /* not keyboard tabbable */common.createElement("a", tslib.__assign({ "aria-hidden": true, className: "fc-list-day-side-text" }, props.sideNavLinkAttrs), props.sideText))));
48
47
  }
49
48
 
50
49
  var DEFAULT_TIME_FORMAT = common.createFormatter({
@@ -59,24 +58,22 @@ var ListViewEventRow = /** @class */ (function (_super) {
59
58
  }
60
59
  ListViewEventRow.prototype.render = function () {
61
60
  var _a = this, props = _a.props, context = _a.context;
62
- var seg = props.seg;
61
+ var seg = props.seg, timeHeaderId = props.timeHeaderId, eventHeaderId = props.eventHeaderId, dateHeaderId = props.dateHeaderId;
63
62
  var timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT;
64
63
  return (common.createElement(common.EventRoot, { seg: seg, timeText: "" // BAD. because of all-day content
65
- , disableDragging: true, disableResizing: true, defaultContent: renderEventInnerContent, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (common.createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
66
- buildTimeContent(seg, timeFormat, context),
67
- common.createElement("td", { className: "fc-list-event-graphic" },
64
+ , disableDragging: true, disableResizing: true, defaultContent: function () { return renderEventInnerContent(seg, context); } /* weird */, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (common.createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
65
+ buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId),
66
+ common.createElement("td", { "aria-hidden": true, className: "fc-list-event-graphic" },
68
67
  common.createElement("span", { className: "fc-list-event-dot", style: { borderColor: hookProps.borderColor || hookProps.backgroundColor } })),
69
- common.createElement("td", { className: "fc-list-event-title", ref: innerElRef }, innerContent))); }));
68
+ common.createElement("td", { ref: innerElRef, headers: eventHeaderId + " " + dateHeaderId, className: "fc-list-event-title" }, innerContent))); }));
70
69
  };
71
70
  return ListViewEventRow;
72
71
  }(common.BaseComponent));
73
- function renderEventInnerContent(props) {
74
- var event = props.event;
75
- var url = event.url;
76
- var anchorAttrs = url ? { href: url } : {};
77
- return (common.createElement("a", tslib.__assign({}, anchorAttrs), event.title));
72
+ function renderEventInnerContent(seg, context) {
73
+ var interactiveAttrs = common.getSegAnchorAttrs(seg, context);
74
+ return (common.createElement("a", tslib.__assign({}, interactiveAttrs), seg.eventRange.def.title));
78
75
  }
79
- function buildTimeContent(seg, timeFormat, context) {
76
+ function buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId) {
80
77
  var options = context.options;
81
78
  if (options.displayEventTime !== false) {
82
79
  var eventDef = seg.eventRange.def;
@@ -105,7 +102,7 @@ function buildTimeContent(seg, timeFormat, context) {
105
102
  text: context.options.allDayText,
106
103
  view: context.viewApi,
107
104
  };
108
- return (common.createElement(common.RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (common.createElement("td", { className: ['fc-list-event-time'].concat(classNames).join(' '), ref: rootElRef }, innerContent)); }));
105
+ return (common.createElement(common.RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (common.createElement("td", { ref: rootElRef, headers: timeHeaderId + " " + dateHeaderId, className: ['fc-list-event-time'].concat(classNames).join(' ') }, innerContent)); }));
109
106
  }
110
107
  return (common.createElement("td", { className: "fc-list-event-time" }, timeText));
111
108
  }
@@ -124,6 +121,11 @@ var ListView = /** @class */ (function (_super) {
124
121
  var _this = _super !== null && _super.apply(this, arguments) || this;
125
122
  _this.computeDateVars = common.memoize(computeDateVars);
126
123
  _this.eventStoreToSegs = common.memoize(_this._eventStoreToSegs);
124
+ _this.state = {
125
+ timeHeaderId: common.getUniqueDomId(),
126
+ eventHeaderId: common.getUniqueDomId(),
127
+ dateHeaderIdRoot: common.getUniqueDomId(),
128
+ };
127
129
  _this.setRootEl = function (rootEl) {
128
130
  if (rootEl) {
129
131
  _this.context.registerInteractiveComponent(_this, {
@@ -162,23 +164,30 @@ var ListView = /** @class */ (function (_super) {
162
164
  };
163
165
  ListView.prototype.renderSegList = function (allSegs, dayDates) {
164
166
  var _a = this.context, theme = _a.theme, options = _a.options;
167
+ var _b = this.state, timeHeaderId = _b.timeHeaderId, eventHeaderId = _b.eventHeaderId, dateHeaderIdRoot = _b.dateHeaderIdRoot;
165
168
  var segsByDay = groupSegsByDay(allSegs); // sparse array
166
169
  return (common.createElement(common.NowTimer, { unit: "day" }, function (nowDate, todayRange) {
167
170
  var innerNodes = [];
168
171
  for (var dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
169
172
  var daySegs = segsByDay[dayIndex];
170
173
  if (daySegs) { // sparse array, so might be undefined
171
- var dayStr = dayDates[dayIndex].toISOString();
174
+ var dayStr = common.formatDayString(dayDates[dayIndex]);
175
+ var dateHeaderId = dateHeaderIdRoot + '-' + dayStr;
172
176
  // append a day header
173
- innerNodes.push(common.createElement(ListViewHeaderRow, { key: dayStr, dayDate: dayDates[dayIndex], todayRange: todayRange }));
177
+ innerNodes.push(common.createElement(ListViewHeaderRow, { key: dayStr, cellId: dateHeaderId, dayDate: dayDates[dayIndex], todayRange: todayRange }));
174
178
  daySegs = common.sortEventSegs(daySegs, options.eventOrder);
175
179
  for (var _i = 0, daySegs_1 = daySegs; _i < daySegs_1.length; _i++) {
176
180
  var seg = daySegs_1[_i];
177
- innerNodes.push(common.createElement(ListViewEventRow, tslib.__assign({ key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */, seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false }, common.getSegMeta(seg, todayRange, nowDate))));
181
+ innerNodes.push(common.createElement(ListViewEventRow, tslib.__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 }, common.getSegMeta(seg, todayRange, nowDate))));
178
182
  }
179
183
  }
180
184
  }
181
185
  return (common.createElement("table", { className: 'fc-list-table ' + theme.getClass('table') },
186
+ common.createElement("thead", null,
187
+ common.createElement("tr", null,
188
+ common.createElement("th", { scope: "col", id: timeHeaderId }, options.timeHint),
189
+ common.createElement("th", { scope: "col", "aria-hidden": true }),
190
+ common.createElement("th", { scope: "col", id: eventHeaderId }, options.eventHint))),
182
191
  common.createElement("tbody", null, innerNodes)));
183
192
  }));
184
193
  };
package/main.css CHANGED
@@ -43,6 +43,23 @@
43
43
  background: #fff;
44
44
  background: var(--fc-page-bg-color, #fff); /* for when headers are styled to be transparent and sticky */
45
45
  }
46
+ .fc {
47
+
48
+ /* only exists for aria reasons, hide for non-screen-readers */
49
+
50
+ }
51
+ .fc .fc-list-table thead {
52
+ position: absolute;
53
+ left: -10000px;
54
+ }
55
+ .fc {
56
+
57
+ /* the table's border-style:hidden gets confused by hidden thead. force-hide top border of first cell */
58
+
59
+ }
60
+ .fc .fc-list-table tbody > tr:first-child th {
61
+ border-top: 0;
62
+ }
46
63
  .fc .fc-list-table th {
47
64
  padding: 0; /* uses an inner-wrapper instead... */
48
65
  }
package/main.d.ts CHANGED
@@ -9,6 +9,11 @@ declare type NoEventsMountArg = MountArg<NoEventsContentArg>;
9
9
  declare class ListView extends DateComponent<ViewProps> {
10
10
  private computeDateVars;
11
11
  private eventStoreToSegs;
12
+ state: {
13
+ timeHeaderId: string;
14
+ eventHeaderId: string;
15
+ dateHeaderIdRoot: string;
16
+ };
12
17
  render(): createElement.JSX.Element;
13
18
  setRootEl: (rootEl: HTMLDivElement | null) => void;
14
19
  renderEmptyMessage(): createElement.JSX.Element;
package/main.global.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar v5.7.2
2
+ FullCalendar v5.10.1
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2021 Adam Shaw
5
5
  */
@@ -51,37 +51,36 @@ var FullCalendarList = (function (exports, common) {
51
51
  var ListViewHeaderRow = /** @class */ (function (_super) {
52
52
  __extends(ListViewHeaderRow, _super);
53
53
  function ListViewHeaderRow() {
54
- return _super !== null && _super.apply(this, arguments) || this;
54
+ var _this = _super !== null && _super.apply(this, arguments) || this;
55
+ _this.state = {
56
+ textId: common.getUniqueDomId(),
57
+ };
58
+ return _this;
55
59
  }
56
60
  ListViewHeaderRow.prototype.render = function () {
57
- var _a = this.props, dayDate = _a.dayDate, todayRange = _a.todayRange;
58
- var _b = this.context, theme = _b.theme, dateEnv = _b.dateEnv, options = _b.options, viewApi = _b.viewApi;
61
+ var _a = this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options, viewApi = _a.viewApi;
62
+ var _b = this.props, cellId = _b.cellId, dayDate = _b.dayDate, todayRange = _b.todayRange;
63
+ var textId = this.state.textId;
59
64
  var dayMeta = common.getDateMeta(dayDate, todayRange);
60
65
  // will ever be falsy?
61
66
  var text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';
62
67
  // will ever be falsy? also, BAD NAME "alt"
63
68
  var sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';
64
- var navLinkData = options.navLinks
65
- ? common.buildNavLinkData(dayDate)
66
- : null;
67
- var hookProps = __assign({ date: dateEnv.toDate(dayDate), view: viewApi, text: text,
68
- sideText: sideText,
69
- navLinkData: navLinkData }, dayMeta);
69
+ var hookProps = __assign({ date: dateEnv.toDate(dayDate), view: viewApi, textId: textId,
70
+ text: text,
71
+ sideText: sideText, navLinkAttrs: common.buildNavLinkAttrs(this.context, dayDate), sideNavLinkAttrs: common.buildNavLinkAttrs(this.context, dayDate, 'day', false) }, dayMeta);
70
72
  var classNames = ['fc-list-day'].concat(common.getDayClassNames(dayMeta, theme));
71
73
  // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)
72
74
  return (common.createElement(common.RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInnerContent, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (common.createElement("tr", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": common.formatDayString(dayDate) },
73
- common.createElement("th", { colSpan: 3 },
75
+ common.createElement("th", { scope: "colgroup", colSpan: 3, id: cellId, "aria-labelledby": textId },
74
76
  common.createElement("div", { className: 'fc-list-day-cushion ' + theme.getClass('tableCellShaded'), ref: innerElRef }, innerContent)))); }));
75
77
  };
76
78
  return ListViewHeaderRow;
77
79
  }(common.BaseComponent));
78
80
  function renderInnerContent(props) {
79
- var navLinkAttrs = props.navLinkData // is there a type for this?
80
- ? { 'data-navlink': props.navLinkData, tabIndex: 0 }
81
- : {};
82
81
  return (common.createElement(common.Fragment, null,
83
- props.text && (common.createElement("a", __assign({ className: "fc-list-day-text" }, navLinkAttrs), props.text)),
84
- props.sideText && (common.createElement("a", __assign({ className: "fc-list-day-side-text" }, navLinkAttrs), props.sideText))));
82
+ props.text && (common.createElement("a", __assign({ id: props.textId, className: "fc-list-day-text" }, props.navLinkAttrs), props.text)),
83
+ props.sideText && ( /* not keyboard tabbable */common.createElement("a", __assign({ "aria-hidden": true, className: "fc-list-day-side-text" }, props.sideNavLinkAttrs), props.sideText))));
85
84
  }
86
85
 
87
86
  var DEFAULT_TIME_FORMAT = common.createFormatter({
@@ -96,24 +95,22 @@ var FullCalendarList = (function (exports, common) {
96
95
  }
97
96
  ListViewEventRow.prototype.render = function () {
98
97
  var _a = this, props = _a.props, context = _a.context;
99
- var seg = props.seg;
98
+ var seg = props.seg, timeHeaderId = props.timeHeaderId, eventHeaderId = props.eventHeaderId, dateHeaderId = props.dateHeaderId;
100
99
  var timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT;
101
100
  return (common.createElement(common.EventRoot, { seg: seg, timeText: "" // BAD. because of all-day content
102
- , disableDragging: true, disableResizing: true, defaultContent: renderEventInnerContent, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (common.createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
103
- buildTimeContent(seg, timeFormat, context),
104
- common.createElement("td", { className: "fc-list-event-graphic" },
101
+ , disableDragging: true, disableResizing: true, defaultContent: function () { return renderEventInnerContent(seg, context); } /* weird */, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (common.createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
102
+ buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId),
103
+ common.createElement("td", { "aria-hidden": true, className: "fc-list-event-graphic" },
105
104
  common.createElement("span", { className: "fc-list-event-dot", style: { borderColor: hookProps.borderColor || hookProps.backgroundColor } })),
106
- common.createElement("td", { className: "fc-list-event-title", ref: innerElRef }, innerContent))); }));
105
+ common.createElement("td", { ref: innerElRef, headers: eventHeaderId + " " + dateHeaderId, className: "fc-list-event-title" }, innerContent))); }));
107
106
  };
108
107
  return ListViewEventRow;
109
108
  }(common.BaseComponent));
110
- function renderEventInnerContent(props) {
111
- var event = props.event;
112
- var url = event.url;
113
- var anchorAttrs = url ? { href: url } : {};
114
- return (common.createElement("a", __assign({}, anchorAttrs), event.title));
109
+ function renderEventInnerContent(seg, context) {
110
+ var interactiveAttrs = common.getSegAnchorAttrs(seg, context);
111
+ return (common.createElement("a", __assign({}, interactiveAttrs), seg.eventRange.def.title));
115
112
  }
116
- function buildTimeContent(seg, timeFormat, context) {
113
+ function buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId) {
117
114
  var options = context.options;
118
115
  if (options.displayEventTime !== false) {
119
116
  var eventDef = seg.eventRange.def;
@@ -142,7 +139,7 @@ var FullCalendarList = (function (exports, common) {
142
139
  text: context.options.allDayText,
143
140
  view: context.viewApi,
144
141
  };
145
- return (common.createElement(common.RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (common.createElement("td", { className: ['fc-list-event-time'].concat(classNames).join(' '), ref: rootElRef }, innerContent)); }));
142
+ return (common.createElement(common.RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (common.createElement("td", { ref: rootElRef, headers: timeHeaderId + " " + dateHeaderId, className: ['fc-list-event-time'].concat(classNames).join(' ') }, innerContent)); }));
146
143
  }
147
144
  return (common.createElement("td", { className: "fc-list-event-time" }, timeText));
148
145
  }
@@ -161,6 +158,11 @@ var FullCalendarList = (function (exports, common) {
161
158
  var _this = _super !== null && _super.apply(this, arguments) || this;
162
159
  _this.computeDateVars = common.memoize(computeDateVars);
163
160
  _this.eventStoreToSegs = common.memoize(_this._eventStoreToSegs);
161
+ _this.state = {
162
+ timeHeaderId: common.getUniqueDomId(),
163
+ eventHeaderId: common.getUniqueDomId(),
164
+ dateHeaderIdRoot: common.getUniqueDomId(),
165
+ };
164
166
  _this.setRootEl = function (rootEl) {
165
167
  if (rootEl) {
166
168
  _this.context.registerInteractiveComponent(_this, {
@@ -199,23 +201,30 @@ var FullCalendarList = (function (exports, common) {
199
201
  };
200
202
  ListView.prototype.renderSegList = function (allSegs, dayDates) {
201
203
  var _a = this.context, theme = _a.theme, options = _a.options;
204
+ var _b = this.state, timeHeaderId = _b.timeHeaderId, eventHeaderId = _b.eventHeaderId, dateHeaderIdRoot = _b.dateHeaderIdRoot;
202
205
  var segsByDay = groupSegsByDay(allSegs); // sparse array
203
206
  return (common.createElement(common.NowTimer, { unit: "day" }, function (nowDate, todayRange) {
204
207
  var innerNodes = [];
205
208
  for (var dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
206
209
  var daySegs = segsByDay[dayIndex];
207
210
  if (daySegs) { // sparse array, so might be undefined
208
- var dayStr = dayDates[dayIndex].toISOString();
211
+ var dayStr = common.formatDayString(dayDates[dayIndex]);
212
+ var dateHeaderId = dateHeaderIdRoot + '-' + dayStr;
209
213
  // append a day header
210
- innerNodes.push(common.createElement(ListViewHeaderRow, { key: dayStr, dayDate: dayDates[dayIndex], todayRange: todayRange }));
214
+ innerNodes.push(common.createElement(ListViewHeaderRow, { key: dayStr, cellId: dateHeaderId, dayDate: dayDates[dayIndex], todayRange: todayRange }));
211
215
  daySegs = common.sortEventSegs(daySegs, options.eventOrder);
212
216
  for (var _i = 0, daySegs_1 = daySegs; _i < daySegs_1.length; _i++) {
213
217
  var seg = daySegs_1[_i];
214
- innerNodes.push(common.createElement(ListViewEventRow, __assign({ key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */, seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false }, common.getSegMeta(seg, todayRange, nowDate))));
218
+ innerNodes.push(common.createElement(ListViewEventRow, __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 }, common.getSegMeta(seg, todayRange, nowDate))));
215
219
  }
216
220
  }
217
221
  }
218
222
  return (common.createElement("table", { className: 'fc-list-table ' + theme.getClass('table') },
223
+ common.createElement("thead", null,
224
+ common.createElement("tr", null,
225
+ common.createElement("th", { scope: "col", id: timeHeaderId }, options.timeHint),
226
+ common.createElement("th", { scope: "col", "aria-hidden": true }),
227
+ common.createElement("th", { scope: "col", id: eventHeaderId }, options.eventHint))),
219
228
  common.createElement("tbody", null, innerNodes)));
220
229
  }));
221
230
  };
@@ -1,6 +1,6 @@
1
1
  /*!
2
- FullCalendar v5.7.2
2
+ FullCalendar v5.10.1
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2021 Adam Shaw
5
5
  */
6
- var FullCalendarList=function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function a(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return a(n,e),n.prototype.render=function(){var e=this.props,n=e.dayDate,a=e.todayRange,i=this.context,s=i.theme,l=i.dateEnv,c=i.options,u=i.viewApi,d=t.getDateMeta(n,a),m=c.listDayFormat?l.format(n,c.listDayFormat):"",v=c.listDaySideFormat?l.format(n,c.listDaySideFormat):"",y=c.navLinks?t.buildNavLinkData(n):null,f=r({date:l.toDate(n),view:u,text:m,sideText:v,navLinkData:y},d),p=["fc-list-day"].concat(t.getDayClassNames(d,s));return t.createElement(t.RenderHook,{hookProps:f,classNames:c.dayHeaderClassNames,content:c.dayHeaderContent,defaultContent:o,didMount:c.dayHeaderDidMount,willUnmount:c.dayHeaderWillUnmount},(function(e,a,r,i){return t.createElement("tr",{ref:e,className:p.concat(a).join(" "),"data-date":t.formatDayString(n)},t.createElement("th",{colSpan:3},t.createElement("div",{className:"fc-list-day-cushion "+s.getClass("tableCellShaded"),ref:r},i)))}))},n}(t.BaseComponent);function o(e){var n=e.navLinkData?{"data-navlink":e.navLinkData,tabIndex:0}:{};return t.createElement(t.Fragment,null,e.text&&t.createElement("a",r({className:"fc-list-day-text"},n),e.text),e.sideText&&t.createElement("a",r({className:"fc-list-day-side-text"},n),e.sideText))}var s=t.createFormatter({hour:"numeric",minute:"2-digit",meridiem:"short"}),l=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return a(n,e),n.prototype.render=function(){var e=this.props,n=this.context,a=e.seg,r=n.options.eventTimeFormat||s;return t.createElement(t.EventRoot,{seg:a,timeText:"",disableDragging:!0,disableResizing:!0,defaultContent:c,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,isSelected:e.isSelected,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting},(function(e,i,o,s,l){return t.createElement("tr",{className:["fc-list-event",l.event.url?"fc-event-forced-url":""].concat(i).join(" "),ref:e},function(e,n,a){var r=a.options;if(!1!==r.displayEventTime){var i=e.eventRange.def,o=e.eventRange.instance,s=!1,l=void 0;if(i.allDay?s=!0:t.isMultiDayRange(e.eventRange.range)?e.isStart?l=t.buildSegTimeText(e,n,a,null,null,o.range.start,e.end):e.isEnd?l=t.buildSegTimeText(e,n,a,null,null,e.start,o.range.end):s=!0:l=t.buildSegTimeText(e,n,a),s){var c={text:a.options.allDayText,view:a.viewApi};return t.createElement(t.RenderHook,{hookProps:c,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:u,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(e,n,a,r){return t.createElement("td",{className:["fc-list-event-time"].concat(n).join(" "),ref:e},r)}))}return t.createElement("td",{className:"fc-list-event-time"},l)}return null}(a,r,n),t.createElement("td",{className:"fc-list-event-graphic"},t.createElement("span",{className:"fc-list-event-dot",style:{borderColor:l.borderColor||l.backgroundColor}})),t.createElement("td",{className:"fc-list-event-title",ref:o},s))}))},n}(t.BaseComponent);function c(e){var n=e.event,a=n.url,i=a?{href:a}:{};return t.createElement("a",r({},i),n.title)}function u(e){return e.text}var d=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.computeDateVars=t.memoize(v),n.eventStoreToSegs=t.memoize(n._eventStoreToSegs),n.setRootEl=function(e){e?n.context.registerInteractiveComponent(n,{el:e}):n.context.unregisterInteractiveComponent(n)},n}return a(n,e),n.prototype.render=function(){var e=this,n=this.props,a=this.context,r=["fc-list",a.theme.getClass("table"),!1!==a.options.stickyHeaderDates?"fc-list-sticky":""],i=this.computeDateVars(n.dateProfile),o=i.dayDates,s=i.dayRanges,l=this.eventStoreToSegs(n.eventStore,n.eventUiBases,s);return t.createElement(t.ViewRoot,{viewSpec:a.viewSpec,elRef:this.setRootEl},(function(a,i){return t.createElement("div",{ref:a,className:r.concat(i).join(" ")},t.createElement(t.Scroller,{liquid:!n.isHeightAuto,overflowX:n.isHeightAuto?"visible":"hidden",overflowY:n.isHeightAuto?"visible":"auto"},l.length>0?e.renderSegList(l,o):e.renderEmptyMessage()))}))},n.prototype.renderEmptyMessage=function(){var e=this.context,n=e.options,a=e.viewApi,r={text:n.noEventsText,view:a};return t.createElement(t.RenderHook,{hookProps:r,classNames:n.noEventsClassNames,content:n.noEventsContent,defaultContent:m,didMount:n.noEventsDidMount,willUnmount:n.noEventsWillUnmount},(function(e,n,a,r){return t.createElement("div",{className:["fc-list-empty"].concat(n).join(" "),ref:e},t.createElement("div",{className:"fc-list-empty-cushion",ref:a},r))}))},n.prototype.renderSegList=function(e,n){var a=this.context,o=a.theme,s=a.options,c=function(e){var t,n,a=[];for(t=0;t<e.length;t+=1)(a[(n=e[t]).dayIndex]||(a[n.dayIndex]=[])).push(n);return a}(e);return t.createElement(t.NowTimer,{unit:"day"},(function(e,a){for(var u=[],d=0;d<c.length;d+=1){var m=c[d];if(m){var v=n[d].toISOString();u.push(t.createElement(i,{key:v,dayDate:n[d],todayRange:a}));for(var y=0,f=m=t.sortEventSegs(m,s.eventOrder);y<f.length;y++){var p=f[y];u.push(t.createElement(l,r({key:v+":"+p.eventRange.instance.instanceId,seg:p,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1},t.getSegMeta(p,a,e))))}}}return t.createElement("table",{className:"fc-list-table "+o.getClass("table")},t.createElement("tbody",null,u))}))},n.prototype._eventStoreToSegs=function(e,n,a){return this.eventRangesToSegs(t.sliceEventStore(e,n,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,a)},n.prototype.eventRangesToSegs=function(e,t){for(var n=[],a=0,r=e;a<r.length;a++){var i=r[a];n.push.apply(n,this.eventRangeToSegs(i,t))}return n},n.prototype.eventRangeToSegs=function(e,n){var a,r,i,o=this.context.dateEnv,s=this.context.options.nextDayThreshold,l=e.range,c=e.def.allDay,u=[];for(a=0;a<n.length;a+=1)if((r=t.intersectRanges(l,n[a]))&&(i={component:this,eventRange:e,start:r.start,end:r.end,isStart:e.isStart&&r.start.valueOf()===l.start.valueOf(),isEnd:e.isEnd&&r.end.valueOf()===l.end.valueOf(),dayIndex:a},u.push(i),!i.isEnd&&!c&&a+1<n.length&&l.end<o.add(n[a+1].start,s))){i.end=l.end,i.isEnd=!0;break}return u},n}(t.DateComponent);function m(e){return e.text}function v(e){for(var n=t.startOfDay(e.renderRange.start),a=e.renderRange.end,r=[],i=[];n<a;)r.push(n),i.push({start:n,end:t.addDays(n,1)}),n=t.addDays(n,1);return{dayDates:r,dayRanges:i}}var y={listDayFormat:f,listDaySideFormat:f,noEventsClassNames:t.identity,noEventsContent:t.identity,noEventsDidMount:t.identity,noEventsWillUnmount:t.identity};function f(e){return!1===e?null:t.createFormatter(e)}var p=t.createPlugin({optionRefiners:y,views:{list:{component:d,buttonTextKey:"list",listDayFormat:{month:"long",day:"numeric",year:"numeric"}},listDay:{type:"list",duration:{days:1},listDayFormat:{weekday:"long"}},listWeek:{type:"list",duration:{weeks:1},listDayFormat:{weekday:"long"},listDaySideFormat:{month:"long",day:"numeric",year:"numeric"}},listMonth:{type:"list",duration:{month:1},listDaySideFormat:{weekday:"long"}},listYear:{type:"list",duration:{year:1},listDaySideFormat:{weekday:"long"}}}});return t.globalPlugins.push(p),e.ListView=d,e.default=p,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar);
6
+ var FullCalendarList=function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function a(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.state={textId:t.getUniqueDomId()},n}return a(n,e),n.prototype.render=function(){var e=this.context,n=e.theme,a=e.dateEnv,i=e.options,s=e.viewApi,l=this.props,d=l.cellId,c=l.dayDate,u=l.todayRange,m=this.state.textId,v=t.getDateMeta(c,u),y=i.listDayFormat?a.format(c,i.listDayFormat):"",f=i.listDaySideFormat?a.format(c,i.listDaySideFormat):"",g=r({date:a.toDate(c),view:s,textId:m,text:y,sideText:f,navLinkAttrs:t.buildNavLinkAttrs(this.context,c),sideNavLinkAttrs:t.buildNavLinkAttrs(this.context,c,"day",!1)},v),p=["fc-list-day"].concat(t.getDayClassNames(v,n));return t.createElement(t.RenderHook,{hookProps:g,classNames:i.dayHeaderClassNames,content:i.dayHeaderContent,defaultContent:o,didMount:i.dayHeaderDidMount,willUnmount:i.dayHeaderWillUnmount},(function(e,a,r,i){return t.createElement("tr",{ref:e,className:p.concat(a).join(" "),"data-date":t.formatDayString(c)},t.createElement("th",{scope:"colgroup",colSpan:3,id:d,"aria-labelledby":m},t.createElement("div",{className:"fc-list-day-cushion "+n.getClass("tableCellShaded"),ref:r},i)))}))},n}(t.BaseComponent);function o(e){return t.createElement(t.Fragment,null,e.text&&t.createElement("a",r({id:e.textId,className:"fc-list-day-text"},e.navLinkAttrs),e.text),e.sideText&&t.createElement("a",r({"aria-hidden":!0,className:"fc-list-day-side-text"},e.sideNavLinkAttrs),e.sideText))}var s=t.createFormatter({hour:"numeric",minute:"2-digit",meridiem:"short"}),l=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return a(n,e),n.prototype.render=function(){var e=this.props,n=this.context,a=e.seg,i=e.timeHeaderId,o=e.eventHeaderId,l=e.dateHeaderId,c=n.options.eventTimeFormat||s;return t.createElement(t.EventRoot,{seg:a,timeText:"",disableDragging:!0,disableResizing:!0,defaultContent:function(){return function(e,n){var a=t.getSegAnchorAttrs(e,n);return t.createElement("a",r({},a),e.eventRange.def.title)}(a,n)},isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,isSelected:e.isSelected,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting},(function(e,r,s,u,m){return t.createElement("tr",{className:["fc-list-event",m.event.url?"fc-event-forced-url":""].concat(r).join(" "),ref:e},function(e,n,a,r,i){var o=a.options;if(!1!==o.displayEventTime){var s=e.eventRange.def,l=e.eventRange.instance,c=!1,u=void 0;if(s.allDay?c=!0:t.isMultiDayRange(e.eventRange.range)?e.isStart?u=t.buildSegTimeText(e,n,a,null,null,l.range.start,e.end):e.isEnd?u=t.buildSegTimeText(e,n,a,null,null,e.start,l.range.end):c=!0:u=t.buildSegTimeText(e,n,a),c){var m={text:a.options.allDayText,view:a.viewApi};return t.createElement(t.RenderHook,{hookProps:m,classNames:o.allDayClassNames,content:o.allDayContent,defaultContent:d,didMount:o.allDayDidMount,willUnmount:o.allDayWillUnmount},(function(e,n,a,o){return t.createElement("td",{ref:e,headers:r+" "+i,className:["fc-list-event-time"].concat(n).join(" ")},o)}))}return t.createElement("td",{className:"fc-list-event-time"},u)}return null}(a,c,n,i,l),t.createElement("td",{"aria-hidden":!0,className:"fc-list-event-graphic"},t.createElement("span",{className:"fc-list-event-dot",style:{borderColor:m.borderColor||m.backgroundColor}})),t.createElement("td",{ref:s,headers:o+" "+l,className:"fc-list-event-title"},u))}))},n}(t.BaseComponent);function d(e){return e.text}var c=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.computeDateVars=t.memoize(m),n.eventStoreToSegs=t.memoize(n._eventStoreToSegs),n.state={timeHeaderId:t.getUniqueDomId(),eventHeaderId:t.getUniqueDomId(),dateHeaderIdRoot:t.getUniqueDomId()},n.setRootEl=function(e){e?n.context.registerInteractiveComponent(n,{el:e}):n.context.unregisterInteractiveComponent(n)},n}return a(n,e),n.prototype.render=function(){var e=this,n=this.props,a=this.context,r=["fc-list",a.theme.getClass("table"),!1!==a.options.stickyHeaderDates?"fc-list-sticky":""],i=this.computeDateVars(n.dateProfile),o=i.dayDates,s=i.dayRanges,l=this.eventStoreToSegs(n.eventStore,n.eventUiBases,s);return t.createElement(t.ViewRoot,{viewSpec:a.viewSpec,elRef:this.setRootEl},(function(a,i){return t.createElement("div",{ref:a,className:r.concat(i).join(" ")},t.createElement(t.Scroller,{liquid:!n.isHeightAuto,overflowX:n.isHeightAuto?"visible":"hidden",overflowY:n.isHeightAuto?"visible":"auto"},l.length>0?e.renderSegList(l,o):e.renderEmptyMessage()))}))},n.prototype.renderEmptyMessage=function(){var e=this.context,n=e.options,a=e.viewApi,r={text:n.noEventsText,view:a};return t.createElement(t.RenderHook,{hookProps:r,classNames:n.noEventsClassNames,content:n.noEventsContent,defaultContent:u,didMount:n.noEventsDidMount,willUnmount:n.noEventsWillUnmount},(function(e,n,a,r){return t.createElement("div",{className:["fc-list-empty"].concat(n).join(" "),ref:e},t.createElement("div",{className:"fc-list-empty-cushion",ref:a},r))}))},n.prototype.renderSegList=function(e,n){var a=this.context,o=a.theme,s=a.options,d=this.state,c=d.timeHeaderId,u=d.eventHeaderId,m=d.dateHeaderIdRoot,v=function(e){var t,n,a=[];for(t=0;t<e.length;t+=1)(a[(n=e[t]).dayIndex]||(a[n.dayIndex]=[])).push(n);return a}(e);return t.createElement(t.NowTimer,{unit:"day"},(function(e,a){for(var d=[],y=0;y<v.length;y+=1){var f=v[y];if(f){var g=t.formatDayString(n[y]),p=m+"-"+g;d.push(t.createElement(i,{key:g,cellId:p,dayDate:n[y],todayRange:a}));for(var h=0,E=f=t.sortEventSegs(f,s.eventOrder);h<E.length;h++){var D=E[h];d.push(t.createElement(l,r({key:g+":"+D.eventRange.instance.instanceId,seg:D,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,timeHeaderId:c,eventHeaderId:u,dateHeaderId:p},t.getSegMeta(D,a,e))))}}}return t.createElement("table",{className:"fc-list-table "+o.getClass("table")},t.createElement("thead",null,t.createElement("tr",null,t.createElement("th",{scope:"col",id:c},s.timeHint),t.createElement("th",{scope:"col","aria-hidden":!0}),t.createElement("th",{scope:"col",id:u},s.eventHint))),t.createElement("tbody",null,d))}))},n.prototype._eventStoreToSegs=function(e,n,a){return this.eventRangesToSegs(t.sliceEventStore(e,n,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,a)},n.prototype.eventRangesToSegs=function(e,t){for(var n=[],a=0,r=e;a<r.length;a++){var i=r[a];n.push.apply(n,this.eventRangeToSegs(i,t))}return n},n.prototype.eventRangeToSegs=function(e,n){var a,r,i,o=this.context.dateEnv,s=this.context.options.nextDayThreshold,l=e.range,d=e.def.allDay,c=[];for(a=0;a<n.length;a+=1)if((r=t.intersectRanges(l,n[a]))&&(i={component:this,eventRange:e,start:r.start,end:r.end,isStart:e.isStart&&r.start.valueOf()===l.start.valueOf(),isEnd:e.isEnd&&r.end.valueOf()===l.end.valueOf(),dayIndex:a},c.push(i),!i.isEnd&&!d&&a+1<n.length&&l.end<o.add(n[a+1].start,s))){i.end=l.end,i.isEnd=!0;break}return c},n}(t.DateComponent);function u(e){return e.text}function m(e){for(var n=t.startOfDay(e.renderRange.start),a=e.renderRange.end,r=[],i=[];n<a;)r.push(n),i.push({start:n,end:t.addDays(n,1)}),n=t.addDays(n,1);return{dayDates:r,dayRanges:i}}var v={listDayFormat:y,listDaySideFormat:y,noEventsClassNames:t.identity,noEventsContent:t.identity,noEventsDidMount:t.identity,noEventsWillUnmount:t.identity};function y(e){return!1===e?null:t.createFormatter(e)}var f=t.createPlugin({optionRefiners:v,views:{list:{component:c,buttonTextKey:"list",listDayFormat:{month:"long",day:"numeric",year:"numeric"}},listDay:{type:"list",duration:{days:1},listDayFormat:{weekday:"long"}},listWeek:{type:"list",duration:{weeks:1},listDayFormat:{weekday:"long"},listDaySideFormat:{month:"long",day:"numeric",year:"numeric"}},listMonth:{type:"list",duration:{month:1},listDaySideFormat:{weekday:"long"}},listYear:{type:"list",duration:{year:1},listDaySideFormat:{weekday:"long"}}}});return t.globalPlugins.push(f),e.ListView=c,e.default=f,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar);
package/main.js CHANGED
@@ -1,47 +1,46 @@
1
1
  /*!
2
- FullCalendar v5.7.2
2
+ FullCalendar v5.10.1
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2021 Adam Shaw
5
5
  */
6
6
  import './main.css';
7
7
 
8
- import { getDateMeta, buildNavLinkData, getDayClassNames, createElement, RenderHook, formatDayString, BaseComponent, Fragment, createFormatter, EventRoot, isMultiDayRange, buildSegTimeText, memoize, ViewRoot, Scroller, NowTimer, sortEventSegs, getSegMeta, sliceEventStore, intersectRanges, DateComponent, startOfDay, addDays, identity, createPlugin } from '@fullcalendar/common';
8
+ import { getUniqueDomId, getDateMeta, buildNavLinkAttrs, getDayClassNames, createElement, RenderHook, formatDayString, BaseComponent, Fragment, createFormatter, EventRoot, getSegAnchorAttrs, isMultiDayRange, buildSegTimeText, memoize, ViewRoot, Scroller, NowTimer, sortEventSegs, getSegMeta, sliceEventStore, intersectRanges, DateComponent, startOfDay, addDays, identity, createPlugin } from '@fullcalendar/common';
9
9
  import { __extends, __assign } from 'tslib';
10
10
 
11
11
  var ListViewHeaderRow = /** @class */ (function (_super) {
12
12
  __extends(ListViewHeaderRow, _super);
13
13
  function ListViewHeaderRow() {
14
- return _super !== null && _super.apply(this, arguments) || this;
14
+ var _this = _super !== null && _super.apply(this, arguments) || this;
15
+ _this.state = {
16
+ textId: getUniqueDomId(),
17
+ };
18
+ return _this;
15
19
  }
16
20
  ListViewHeaderRow.prototype.render = function () {
17
- var _a = this.props, dayDate = _a.dayDate, todayRange = _a.todayRange;
18
- var _b = this.context, theme = _b.theme, dateEnv = _b.dateEnv, options = _b.options, viewApi = _b.viewApi;
21
+ var _a = this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options, viewApi = _a.viewApi;
22
+ var _b = this.props, cellId = _b.cellId, dayDate = _b.dayDate, todayRange = _b.todayRange;
23
+ var textId = this.state.textId;
19
24
  var dayMeta = getDateMeta(dayDate, todayRange);
20
25
  // will ever be falsy?
21
26
  var text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';
22
27
  // will ever be falsy? also, BAD NAME "alt"
23
28
  var sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';
24
- var navLinkData = options.navLinks
25
- ? buildNavLinkData(dayDate)
26
- : null;
27
- var hookProps = __assign({ date: dateEnv.toDate(dayDate), view: viewApi, text: text,
28
- sideText: sideText,
29
- navLinkData: navLinkData }, dayMeta);
29
+ var hookProps = __assign({ date: dateEnv.toDate(dayDate), view: viewApi, textId: textId,
30
+ text: text,
31
+ sideText: sideText, navLinkAttrs: buildNavLinkAttrs(this.context, dayDate), sideNavLinkAttrs: buildNavLinkAttrs(this.context, dayDate, 'day', false) }, dayMeta);
30
32
  var classNames = ['fc-list-day'].concat(getDayClassNames(dayMeta, theme));
31
33
  // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)
32
34
  return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInnerContent, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement("tr", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": formatDayString(dayDate) },
33
- createElement("th", { colSpan: 3 },
35
+ createElement("th", { scope: "colgroup", colSpan: 3, id: cellId, "aria-labelledby": textId },
34
36
  createElement("div", { className: 'fc-list-day-cushion ' + theme.getClass('tableCellShaded'), ref: innerElRef }, innerContent)))); }));
35
37
  };
36
38
  return ListViewHeaderRow;
37
39
  }(BaseComponent));
38
40
  function renderInnerContent(props) {
39
- var navLinkAttrs = props.navLinkData // is there a type for this?
40
- ? { 'data-navlink': props.navLinkData, tabIndex: 0 }
41
- : {};
42
41
  return (createElement(Fragment, null,
43
- props.text && (createElement("a", __assign({ className: "fc-list-day-text" }, navLinkAttrs), props.text)),
44
- props.sideText && (createElement("a", __assign({ className: "fc-list-day-side-text" }, navLinkAttrs), props.sideText))));
42
+ props.text && (createElement("a", __assign({ id: props.textId, className: "fc-list-day-text" }, props.navLinkAttrs), props.text)),
43
+ props.sideText && ( /* not keyboard tabbable */createElement("a", __assign({ "aria-hidden": true, className: "fc-list-day-side-text" }, props.sideNavLinkAttrs), props.sideText))));
45
44
  }
46
45
 
47
46
  var DEFAULT_TIME_FORMAT = createFormatter({
@@ -56,24 +55,22 @@ var ListViewEventRow = /** @class */ (function (_super) {
56
55
  }
57
56
  ListViewEventRow.prototype.render = function () {
58
57
  var _a = this, props = _a.props, context = _a.context;
59
- var seg = props.seg;
58
+ var seg = props.seg, timeHeaderId = props.timeHeaderId, eventHeaderId = props.eventHeaderId, dateHeaderId = props.dateHeaderId;
60
59
  var timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT;
61
60
  return (createElement(EventRoot, { seg: seg, timeText: "" // BAD. because of all-day content
62
- , disableDragging: true, disableResizing: true, defaultContent: renderEventInnerContent, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
63
- buildTimeContent(seg, timeFormat, context),
64
- createElement("td", { className: "fc-list-event-graphic" },
61
+ , disableDragging: true, disableResizing: true, defaultContent: function () { return renderEventInnerContent(seg, context); } /* weird */, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
62
+ buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId),
63
+ createElement("td", { "aria-hidden": true, className: "fc-list-event-graphic" },
65
64
  createElement("span", { className: "fc-list-event-dot", style: { borderColor: hookProps.borderColor || hookProps.backgroundColor } })),
66
- createElement("td", { className: "fc-list-event-title", ref: innerElRef }, innerContent))); }));
65
+ createElement("td", { ref: innerElRef, headers: eventHeaderId + " " + dateHeaderId, className: "fc-list-event-title" }, innerContent))); }));
67
66
  };
68
67
  return ListViewEventRow;
69
68
  }(BaseComponent));
70
- function renderEventInnerContent(props) {
71
- var event = props.event;
72
- var url = event.url;
73
- var anchorAttrs = url ? { href: url } : {};
74
- return (createElement("a", __assign({}, anchorAttrs), event.title));
69
+ function renderEventInnerContent(seg, context) {
70
+ var interactiveAttrs = getSegAnchorAttrs(seg, context);
71
+ return (createElement("a", __assign({}, interactiveAttrs), seg.eventRange.def.title));
75
72
  }
76
- function buildTimeContent(seg, timeFormat, context) {
73
+ function buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId) {
77
74
  var options = context.options;
78
75
  if (options.displayEventTime !== false) {
79
76
  var eventDef = seg.eventRange.def;
@@ -102,7 +99,7 @@ function buildTimeContent(seg, timeFormat, context) {
102
99
  text: context.options.allDayText,
103
100
  view: context.viewApi,
104
101
  };
105
- return (createElement(RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { className: ['fc-list-event-time'].concat(classNames).join(' '), ref: rootElRef }, innerContent)); }));
102
+ return (createElement(RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { ref: rootElRef, headers: timeHeaderId + " " + dateHeaderId, className: ['fc-list-event-time'].concat(classNames).join(' ') }, innerContent)); }));
106
103
  }
107
104
  return (createElement("td", { className: "fc-list-event-time" }, timeText));
108
105
  }
@@ -121,6 +118,11 @@ var ListView = /** @class */ (function (_super) {
121
118
  var _this = _super !== null && _super.apply(this, arguments) || this;
122
119
  _this.computeDateVars = memoize(computeDateVars);
123
120
  _this.eventStoreToSegs = memoize(_this._eventStoreToSegs);
121
+ _this.state = {
122
+ timeHeaderId: getUniqueDomId(),
123
+ eventHeaderId: getUniqueDomId(),
124
+ dateHeaderIdRoot: getUniqueDomId(),
125
+ };
124
126
  _this.setRootEl = function (rootEl) {
125
127
  if (rootEl) {
126
128
  _this.context.registerInteractiveComponent(_this, {
@@ -159,23 +161,30 @@ var ListView = /** @class */ (function (_super) {
159
161
  };
160
162
  ListView.prototype.renderSegList = function (allSegs, dayDates) {
161
163
  var _a = this.context, theme = _a.theme, options = _a.options;
164
+ var _b = this.state, timeHeaderId = _b.timeHeaderId, eventHeaderId = _b.eventHeaderId, dateHeaderIdRoot = _b.dateHeaderIdRoot;
162
165
  var segsByDay = groupSegsByDay(allSegs); // sparse array
163
166
  return (createElement(NowTimer, { unit: "day" }, function (nowDate, todayRange) {
164
167
  var innerNodes = [];
165
168
  for (var dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
166
169
  var daySegs = segsByDay[dayIndex];
167
170
  if (daySegs) { // sparse array, so might be undefined
168
- var dayStr = dayDates[dayIndex].toISOString();
171
+ var dayStr = formatDayString(dayDates[dayIndex]);
172
+ var dateHeaderId = dateHeaderIdRoot + '-' + dayStr;
169
173
  // append a day header
170
- innerNodes.push(createElement(ListViewHeaderRow, { key: dayStr, dayDate: dayDates[dayIndex], todayRange: todayRange }));
174
+ innerNodes.push(createElement(ListViewHeaderRow, { key: dayStr, cellId: dateHeaderId, dayDate: dayDates[dayIndex], todayRange: todayRange }));
171
175
  daySegs = sortEventSegs(daySegs, options.eventOrder);
172
176
  for (var _i = 0, daySegs_1 = daySegs; _i < daySegs_1.length; _i++) {
173
177
  var seg = daySegs_1[_i];
174
- innerNodes.push(createElement(ListViewEventRow, __assign({ key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */, seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false }, getSegMeta(seg, todayRange, nowDate))));
178
+ innerNodes.push(createElement(ListViewEventRow, __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 }, getSegMeta(seg, todayRange, nowDate))));
175
179
  }
176
180
  }
177
181
  }
178
182
  return (createElement("table", { className: 'fc-list-table ' + theme.getClass('table') },
183
+ createElement("thead", null,
184
+ createElement("tr", null,
185
+ createElement("th", { scope: "col", id: timeHeaderId }, options.timeHint),
186
+ createElement("th", { scope: "col", "aria-hidden": true }),
187
+ createElement("th", { scope: "col", id: eventHeaderId }, options.eventHint))),
179
188
  createElement("tbody", null, innerNodes)));
180
189
  }));
181
190
  };
package/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["src/ListViewHeaderRow.tsx","src/ListViewEventRow.tsx","src/ListView.tsx","src/options.ts","src/main.ts"],"sourcesContent":["import {\n BaseComponent, DateMarker, createElement, DateRange, getDateMeta,\n RenderHook, buildNavLinkData, DayHeaderContentArg, getDayClassNames, formatDayString, Fragment,\n} from '@fullcalendar/common'\n\nexport interface ListViewHeaderRowProps {\n dayDate: DateMarker\n todayRange: DateRange\n}\n\ninterface HookProps extends DayHeaderContentArg { // doesn't enforce much since DayCellContentArg allow extra props\n text: string\n sideText: string\n}\n\nexport class ListViewHeaderRow extends BaseComponent<ListViewHeaderRowProps> {\n render() {\n let { dayDate, todayRange } = this.props\n let { theme, dateEnv, options, viewApi } = this.context\n let dayMeta = getDateMeta(dayDate, todayRange)\n\n // will ever be falsy?\n let text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : ''\n\n // will ever be falsy? also, BAD NAME \"alt\"\n let sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : ''\n\n let navLinkData = options.navLinks\n ? buildNavLinkData(dayDate)\n : null\n\n let hookProps: HookProps = {\n date: dateEnv.toDate(dayDate),\n view: viewApi,\n text,\n sideText,\n navLinkData,\n ...dayMeta,\n }\n\n let classNames = ['fc-list-day'].concat(\n getDayClassNames(dayMeta, theme),\n )\n\n // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)\n return (\n <RenderHook<HookProps>\n hookProps={hookProps}\n classNames={options.dayHeaderClassNames}\n content={options.dayHeaderContent}\n defaultContent={renderInnerContent}\n didMount={options.dayHeaderDidMount}\n willUnmount={options.dayHeaderWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <tr\n ref={rootElRef}\n className={classNames.concat(customClassNames).join(' ')}\n data-date={formatDayString(dayDate)}\n >\n <th colSpan={3}>\n <div className={'fc-list-day-cushion ' + theme.getClass('tableCellShaded')} ref={innerElRef}>\n {innerContent}\n </div>\n </th>\n </tr>\n )}\n </RenderHook>\n )\n }\n}\n\nfunction renderInnerContent(props: HookProps) {\n let navLinkAttrs = props.navLinkData // is there a type for this?\n ? { 'data-navlink': props.navLinkData, tabIndex: 0 }\n : {}\n\n return (\n <Fragment>\n {props.text && (\n <a className=\"fc-list-day-text\" {...navLinkAttrs}>\n {props.text}\n </a>\n )}\n {props.sideText && (\n <a className=\"fc-list-day-side-text\" {...navLinkAttrs}>\n {props.sideText}\n </a>\n )}\n </Fragment>\n )\n}\n","import {\n MinimalEventProps, BaseComponent, ViewContext, createElement, AllDayContentArg,\n Seg, isMultiDayRange, DateFormatter, buildSegTimeText, createFormatter, EventContentArg, EventRoot, ComponentChildren, RenderHook,\n} from '@fullcalendar/common'\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: 'short',\n})\n\nexport class ListViewEventRow extends BaseComponent<MinimalEventProps> {\n render() {\n let { props, context } = this\n let { seg } = props\n\n let timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT\n\n return (\n <EventRoot\n seg={seg}\n timeText=\"\" // BAD. because of all-day content\n disableDragging\n disableResizing\n defaultContent={renderEventInnerContent}\n isPast={props.isPast}\n isFuture={props.isFuture}\n isToday={props.isToday}\n isSelected={props.isSelected}\n isDragging={props.isDragging}\n isResizing={props.isResizing}\n isDateSelecting={props.isDateSelecting}\n >\n {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n <tr className={['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' ')} ref={rootElRef}>\n {buildTimeContent(seg, timeFormat, context)}\n <td className=\"fc-list-event-graphic\">\n <span className=\"fc-list-event-dot\" style={{ borderColor: hookProps.borderColor || hookProps.backgroundColor }} />\n </td>\n <td className=\"fc-list-event-title\" ref={innerElRef}>\n {innerContent}\n </td>\n </tr>\n )}\n </EventRoot>\n )\n }\n}\n\nfunction renderEventInnerContent(props: EventContentArg) {\n let { event } = props\n let url = event.url\n let anchorAttrs = url ? { href: url } : {}\n\n return (\n <a {...anchorAttrs}>\n {/* TODO: document how whole row become clickable */}\n {event.title}\n </a>\n )\n}\n\nfunction buildTimeContent(seg: Seg, timeFormat: DateFormatter, context: ViewContext): ComponentChildren {\n let { options } = context\n\n if (options.displayEventTime !== false) {\n let eventDef = seg.eventRange.def\n let eventInstance = seg.eventRange.instance\n let doAllDay = false\n let timeText: string\n\n if (eventDef.allDay) {\n doAllDay = true\n } else if (isMultiDayRange(seg.eventRange.range)) { // TODO: use (!isStart || !isEnd) instead?\n if (seg.isStart) {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n null,\n null,\n eventInstance.range.start,\n seg.end,\n )\n } else if (seg.isEnd) {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n null,\n null,\n seg.start,\n eventInstance.range.end,\n )\n } else {\n doAllDay = true\n }\n } else {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n )\n }\n\n if (doAllDay) {\n let hookProps: AllDayContentArg = {\n text: context.options.allDayText,\n view: context.viewApi,\n }\n\n return (\n <RenderHook<AllDayContentArg> // needed?\n hookProps={hookProps}\n classNames={options.allDayClassNames}\n content={options.allDayContent}\n defaultContent={renderAllDayInner}\n didMount={options.allDayDidMount}\n willUnmount={options.allDayWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <td className={['fc-list-event-time'].concat(classNames).join(' ')} ref={rootElRef}>\n {innerContent}\n </td>\n )}\n </RenderHook>\n )\n }\n\n return (\n <td className=\"fc-list-event-time\">\n {timeText}\n </td>\n )\n }\n\n return null\n}\n\nfunction renderAllDayInner(hookProps) {\n return hookProps.text\n}\n","import {\n createElement,\n ViewProps,\n Scroller,\n DateMarker,\n addDays,\n startOfDay,\n DateRange,\n intersectRanges,\n DateProfile,\n EventUiHash,\n EventRenderRange,\n sliceEventStore,\n EventStore,\n memoize,\n Seg,\n VNode,\n sortEventSegs,\n getSegMeta,\n NowTimer,\n ViewRoot,\n RenderHook,\n DateComponent,\n ViewApi,\n MountArg,\n} from '@fullcalendar/common'\nimport { ListViewHeaderRow } from './ListViewHeaderRow'\nimport { ListViewEventRow } from './ListViewEventRow'\n\nexport interface NoEventsContentArg {\n text: string\n view: ViewApi\n}\n\nexport type NoEventsMountArg = MountArg<NoEventsContentArg>\n\n/*\nResponsible for the scroller, and forwarding event-related actions into the \"grid\".\n*/\nexport class ListView extends DateComponent<ViewProps> {\n private computeDateVars = memoize(computeDateVars)\n private eventStoreToSegs = memoize(this._eventStoreToSegs)\n\n render() {\n let { props, context } = this\n\n let extraClassNames = [\n 'fc-list',\n context.theme.getClass('table'), // just for the outer border. will be on div\n context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : '',\n ]\n\n let { dayDates, dayRanges } = this.computeDateVars(props.dateProfile)\n let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges)\n\n return (\n <ViewRoot viewSpec={context.viewSpec} elRef={this.setRootEl}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={extraClassNames.concat(classNames).join(' ')}>\n <Scroller\n liquid={!props.isHeightAuto}\n overflowX={props.isHeightAuto ? 'visible' : 'hidden'}\n overflowY={props.isHeightAuto ? 'visible' : 'auto'}\n >\n {eventSegs.length > 0 ?\n this.renderSegList(eventSegs, dayDates) :\n this.renderEmptyMessage()}\n </Scroller>\n </div>\n )}\n </ViewRoot>\n )\n }\n\n setRootEl = (rootEl: HTMLDivElement | null) => {\n if (rootEl) {\n this.context.registerInteractiveComponent(this, { // TODO: make aware that it doesn't do Hits\n el: rootEl,\n })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n renderEmptyMessage() {\n let { options, viewApi } = this.context\n let hookProps: NoEventsContentArg = {\n text: options.noEventsText,\n view: viewApi,\n }\n\n return (\n <RenderHook<NoEventsContentArg> // needed???\n hookProps={hookProps}\n classNames={options.noEventsClassNames}\n content={options.noEventsContent}\n defaultContent={renderNoEventsInner}\n didMount={options.noEventsDidMount}\n willUnmount={options.noEventsWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div className={['fc-list-empty'].concat(classNames).join(' ')} ref={rootElRef}>\n <div className=\"fc-list-empty-cushion\" ref={innerElRef}>\n {innerContent}\n </div>\n </div>\n )}\n </RenderHook>\n )\n }\n\n renderSegList(allSegs: Seg[], dayDates: DateMarker[]) {\n let { theme, options } = this.context\n let segsByDay = groupSegsByDay(allSegs) // sparse array\n\n return (\n <NowTimer unit=\"day\">\n {(nowDate: DateMarker, todayRange: DateRange) => {\n let innerNodes: VNode[] = []\n\n for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {\n let daySegs = segsByDay[dayIndex]\n\n if (daySegs) { // sparse array, so might be undefined\n let dayStr = dayDates[dayIndex].toISOString()\n\n // append a day header\n innerNodes.push(\n <ListViewHeaderRow\n key={dayStr}\n dayDate={dayDates[dayIndex]}\n todayRange={todayRange}\n />,\n )\n\n daySegs = sortEventSegs(daySegs, options.eventOrder)\n\n for (let seg of daySegs) {\n innerNodes.push(\n <ListViewEventRow\n key={dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */}\n seg={seg}\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={false}\n {...getSegMeta(seg, todayRange, nowDate)}\n />,\n )\n }\n }\n }\n\n return (\n <table className={'fc-list-table ' + theme.getClass('table')}>\n <tbody>{innerNodes}</tbody>\n </table>\n )\n }}\n </NowTimer>\n )\n }\n\n _eventStoreToSegs(eventStore: EventStore, eventUiBases: EventUiHash, dayRanges: DateRange[]): Seg[] {\n return this.eventRangesToSegs(\n sliceEventStore(\n eventStore,\n eventUiBases,\n this.props.dateProfile.activeRange,\n this.context.options.nextDayThreshold,\n ).fg,\n dayRanges,\n )\n }\n\n eventRangesToSegs(eventRanges: EventRenderRange[], dayRanges: DateRange[]) {\n let segs = []\n\n for (let eventRange of eventRanges) {\n segs.push(...this.eventRangeToSegs(eventRange, dayRanges))\n }\n\n return segs\n }\n\n eventRangeToSegs(eventRange: EventRenderRange, dayRanges: DateRange[]) {\n let { dateEnv } = this.context\n let { nextDayThreshold } = this.context.options\n let range = eventRange.range\n let allDay = eventRange.def.allDay\n let dayIndex\n let segRange\n let seg\n let segs = []\n\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {\n segRange = intersectRanges(range, dayRanges[dayIndex])\n\n if (segRange) {\n seg = {\n component: this,\n eventRange,\n start: segRange.start,\n end: segRange.end,\n isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),\n isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),\n dayIndex,\n }\n\n segs.push(seg)\n\n // detect when range won't go fully into the next day,\n // and mutate the latest seg to the be the end.\n if (\n !seg.isEnd && !allDay &&\n dayIndex + 1 < dayRanges.length &&\n range.end <\n dateEnv.add(\n dayRanges[dayIndex + 1].start,\n nextDayThreshold,\n )\n ) {\n seg.end = range.end\n seg.isEnd = true\n break\n }\n }\n }\n\n return segs\n }\n}\n\nfunction renderNoEventsInner(hookProps) {\n return hookProps.text\n}\n\nfunction computeDateVars(dateProfile: DateProfile) {\n let dayStart = startOfDay(dateProfile.renderRange.start)\n let viewEnd = dateProfile.renderRange.end\n let dayDates: DateMarker[] = []\n let dayRanges: DateRange[] = []\n\n while (dayStart < viewEnd) {\n dayDates.push(dayStart)\n\n dayRanges.push({\n start: dayStart,\n end: addDays(dayStart, 1),\n })\n\n dayStart = addDays(dayStart, 1)\n }\n\n return { dayDates, dayRanges }\n}\n\n// Returns a sparse array of arrays, segs grouped by their dayIndex\nfunction groupSegsByDay(segs): Seg[][] {\n let segsByDay = [] // sparse array\n let i\n let seg\n\n for (i = 0; i < segs.length; i += 1) {\n seg = segs[i];\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\n .push(seg)\n }\n\n return segsByDay\n}\n","import {\n identity,\n Identity,\n ClassNamesGenerator,\n CustomContentGenerator,\n DidMountHandler,\n WillUnmountHandler,\n createFormatter,\n FormatterInput,\n} from '@fullcalendar/common'\n\n// public\nimport {\n NoEventsContentArg,\n NoEventsMountArg,\n} from './api-type-deps'\n\nexport const OPTION_REFINERS = {\n listDayFormat: createFalsableFormatter, // defaults specified in list plugins\n listDaySideFormat: createFalsableFormatter, // \"\n\n noEventsClassNames: identity as Identity<ClassNamesGenerator<NoEventsContentArg>>,\n noEventsContent: identity as Identity<CustomContentGenerator<NoEventsContentArg>>,\n noEventsDidMount: identity as Identity<DidMountHandler<NoEventsMountArg>>,\n noEventsWillUnmount: identity as Identity<WillUnmountHandler<NoEventsMountArg>>,\n\n // noEventsText is defined in base options\n}\n\nfunction createFalsableFormatter(input: FormatterInput | false) {\n return input === false ? null : createFormatter(input)\n}\n","import { createPlugin } from '@fullcalendar/common'\nimport { ListView } from './ListView'\nimport { OPTION_REFINERS } from './options'\nimport './options-declare'\nimport './main.css'\n\nexport { ListView }\nexport * from './api-type-deps'\n\nexport default createPlugin({\n optionRefiners: OPTION_REFINERS,\n views: {\n\n list: {\n component: ListView,\n buttonTextKey: 'list', // what to lookup in locale files\n listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' }, // like \"January 1, 2016\"\n },\n\n listDay: {\n type: 'list',\n duration: { days: 1 },\n listDayFormat: { weekday: 'long' }, // day-of-week is all we need. full date is probably in headerToolbar\n },\n\n listWeek: {\n type: 'list',\n duration: { weeks: 1 },\n listDayFormat: { weekday: 'long' }, // day-of-week is more important\n listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n },\n\n listMonth: {\n type: 'list',\n duration: { month: 1 },\n listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have\n },\n\n listYear: {\n type: 'list',\n duration: { year: 1 },\n listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have\n },\n\n },\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["src/ListViewHeaderRow.tsx","src/ListViewEventRow.tsx","src/ListView.tsx","src/options.ts","src/main.ts"],"sourcesContent":["import {\n BaseComponent, DateMarker, createElement, DateRange, getDateMeta,\n RenderHook, DayHeaderContentArg, getDayClassNames, formatDayString, Fragment, buildNavLinkAttrs, getUniqueDomId,\n} from '@fullcalendar/common'\n\nexport interface ListViewHeaderRowProps {\n cellId: string\n dayDate: DateMarker\n todayRange: DateRange\n}\n\ninterface HookProps extends DayHeaderContentArg { // doesn't enforce much since DayCellContentArg allow extra props\n textId: string // for aria-labelledby\n text: string\n sideText: string\n}\n\nexport class ListViewHeaderRow extends BaseComponent<ListViewHeaderRowProps> {\n state = {\n textId: getUniqueDomId(),\n }\n\n render() {\n let { theme, dateEnv, options, viewApi } = this.context\n let { cellId, dayDate, todayRange } = this.props\n let { textId } = this.state\n let dayMeta = getDateMeta(dayDate, todayRange)\n\n // will ever be falsy?\n let text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : ''\n\n // will ever be falsy? also, BAD NAME \"alt\"\n let sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : ''\n\n let hookProps: HookProps = {\n date: dateEnv.toDate(dayDate),\n view: viewApi,\n textId,\n text,\n sideText,\n navLinkAttrs: buildNavLinkAttrs(this.context, dayDate),\n sideNavLinkAttrs: buildNavLinkAttrs(this.context, dayDate, 'day', false),\n ...dayMeta,\n }\n\n let classNames = ['fc-list-day'].concat(\n getDayClassNames(dayMeta, theme),\n )\n\n // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)\n return (\n <RenderHook<HookProps>\n hookProps={hookProps}\n classNames={options.dayHeaderClassNames}\n content={options.dayHeaderContent}\n defaultContent={renderInnerContent}\n didMount={options.dayHeaderDidMount}\n willUnmount={options.dayHeaderWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <tr\n ref={rootElRef}\n className={classNames.concat(customClassNames).join(' ')}\n data-date={formatDayString(dayDate)}\n >\n {/* TODO: force-hide top border based on :first-child */}\n <th scope=\"colgroup\" colSpan={3} id={cellId} aria-labelledby={textId}>\n <div className={'fc-list-day-cushion ' + theme.getClass('tableCellShaded')} ref={innerElRef}>\n {innerContent}\n </div>\n </th>\n </tr>\n )}\n </RenderHook>\n )\n }\n}\n\nfunction renderInnerContent(props: HookProps) {\n return (\n <Fragment>\n {props.text && (\n <a id={props.textId} className=\"fc-list-day-text\" {...props.navLinkAttrs}>\n {props.text}\n </a>\n )}\n {props.sideText && (/* not keyboard tabbable */\n <a aria-hidden className=\"fc-list-day-side-text\" {...props.sideNavLinkAttrs}>\n {props.sideText}\n </a>\n )}\n </Fragment>\n )\n}\n","import {\n MinimalEventProps, BaseComponent, ViewContext, createElement, AllDayContentArg,\n Seg, isMultiDayRange, DateFormatter, buildSegTimeText, createFormatter, EventRoot, ComponentChildren, RenderHook, getSegAnchorAttrs,\n} from '@fullcalendar/common'\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: 'short',\n})\n\nexport interface ListViewEventRowProps extends MinimalEventProps {\n timeHeaderId: string\n eventHeaderId: string\n dateHeaderId: string\n}\n\nexport class ListViewEventRow extends BaseComponent<ListViewEventRowProps> {\n render() {\n let { props, context } = this\n let { seg, timeHeaderId, eventHeaderId, dateHeaderId } = props\n let timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT\n\n return (\n <EventRoot\n seg={seg}\n timeText=\"\" // BAD. because of all-day content\n disableDragging\n disableResizing\n defaultContent={() => renderEventInnerContent(seg, context) /* weird */}\n isPast={props.isPast}\n isFuture={props.isFuture}\n isToday={props.isToday}\n isSelected={props.isSelected}\n isDragging={props.isDragging}\n isResizing={props.isResizing}\n isDateSelecting={props.isDateSelecting}\n >\n {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n <tr className={['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' ')} ref={rootElRef}>\n {buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId)}\n <td aria-hidden className=\"fc-list-event-graphic\">\n <span className=\"fc-list-event-dot\" style={{ borderColor: hookProps.borderColor || hookProps.backgroundColor }} />\n </td>\n <td ref={innerElRef} headers={`${eventHeaderId} ${dateHeaderId}`} className=\"fc-list-event-title\">\n {innerContent}\n </td>\n </tr>\n )}\n </EventRoot>\n )\n }\n}\n\nfunction renderEventInnerContent(seg: Seg, context: ViewContext) {\n let interactiveAttrs = getSegAnchorAttrs(seg, context)\n return (\n <a {...interactiveAttrs}>\n {/* TODO: document how whole row become clickable */}\n {seg.eventRange.def.title}\n </a>\n )\n}\n\nfunction buildTimeContent(\n seg: Seg,\n timeFormat: DateFormatter,\n context: ViewContext,\n timeHeaderId: string,\n dateHeaderId: string,\n): ComponentChildren {\n let { options } = context\n\n if (options.displayEventTime !== false) {\n let eventDef = seg.eventRange.def\n let eventInstance = seg.eventRange.instance\n let doAllDay = false\n let timeText: string\n\n if (eventDef.allDay) {\n doAllDay = true\n } else if (isMultiDayRange(seg.eventRange.range)) { // TODO: use (!isStart || !isEnd) instead?\n if (seg.isStart) {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n null,\n null,\n eventInstance.range.start,\n seg.end,\n )\n } else if (seg.isEnd) {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n null,\n null,\n seg.start,\n eventInstance.range.end,\n )\n } else {\n doAllDay = true\n }\n } else {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n )\n }\n\n if (doAllDay) {\n let hookProps: AllDayContentArg = {\n text: context.options.allDayText,\n view: context.viewApi,\n }\n\n return (\n <RenderHook<AllDayContentArg> // needed?\n hookProps={hookProps}\n classNames={options.allDayClassNames}\n content={options.allDayContent}\n defaultContent={renderAllDayInner}\n didMount={options.allDayDidMount}\n willUnmount={options.allDayWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <td ref={rootElRef} headers={`${timeHeaderId} ${dateHeaderId}`} className={['fc-list-event-time'].concat(classNames).join(' ')}>\n {innerContent}\n </td>\n )}\n </RenderHook>\n )\n }\n\n return (\n <td className=\"fc-list-event-time\">\n {timeText}\n </td>\n )\n }\n\n return null\n}\n\nfunction renderAllDayInner(hookProps) {\n return hookProps.text\n}\n","import {\n createElement,\n ViewProps,\n Scroller,\n DateMarker,\n addDays,\n startOfDay,\n DateRange,\n intersectRanges,\n DateProfile,\n EventUiHash,\n EventRenderRange,\n sliceEventStore,\n EventStore,\n memoize,\n Seg,\n VNode,\n sortEventSegs,\n getSegMeta,\n NowTimer,\n ViewRoot,\n RenderHook,\n DateComponent,\n ViewApi,\n MountArg,\n getUniqueDomId,\n formatDayString,\n} from '@fullcalendar/common'\nimport { ListViewHeaderRow } from './ListViewHeaderRow'\nimport { ListViewEventRow } from './ListViewEventRow'\n\nexport interface NoEventsContentArg {\n text: string\n view: ViewApi\n}\n\nexport type NoEventsMountArg = MountArg<NoEventsContentArg>\n\n/*\nResponsible for the scroller, and forwarding event-related actions into the \"grid\".\n*/\nexport class ListView extends DateComponent<ViewProps> {\n private computeDateVars = memoize(computeDateVars)\n private eventStoreToSegs = memoize(this._eventStoreToSegs)\n state = {\n timeHeaderId: getUniqueDomId(),\n eventHeaderId: getUniqueDomId(),\n dateHeaderIdRoot: getUniqueDomId(),\n }\n\n render() {\n let { props, context } = this\n\n let extraClassNames = [\n 'fc-list',\n context.theme.getClass('table'), // just for the outer border. will be on div\n context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : '',\n ]\n\n let { dayDates, dayRanges } = this.computeDateVars(props.dateProfile)\n let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges)\n\n return (\n <ViewRoot viewSpec={context.viewSpec} elRef={this.setRootEl}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={extraClassNames.concat(classNames).join(' ')}>\n <Scroller\n liquid={!props.isHeightAuto}\n overflowX={props.isHeightAuto ? 'visible' : 'hidden'}\n overflowY={props.isHeightAuto ? 'visible' : 'auto'}\n >\n {eventSegs.length > 0 ?\n this.renderSegList(eventSegs, dayDates) :\n this.renderEmptyMessage()}\n </Scroller>\n </div>\n )}\n </ViewRoot>\n )\n }\n\n setRootEl = (rootEl: HTMLDivElement | null) => {\n if (rootEl) {\n this.context.registerInteractiveComponent(this, { // TODO: make aware that it doesn't do Hits\n el: rootEl,\n })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n renderEmptyMessage() {\n let { options, viewApi } = this.context\n let hookProps: NoEventsContentArg = {\n text: options.noEventsText,\n view: viewApi,\n }\n\n return (\n <RenderHook<NoEventsContentArg> // needed???\n hookProps={hookProps}\n classNames={options.noEventsClassNames}\n content={options.noEventsContent}\n defaultContent={renderNoEventsInner}\n didMount={options.noEventsDidMount}\n willUnmount={options.noEventsWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div className={['fc-list-empty'].concat(classNames).join(' ')} ref={rootElRef}>\n <div className=\"fc-list-empty-cushion\" ref={innerElRef}>\n {innerContent}\n </div>\n </div>\n )}\n </RenderHook>\n )\n }\n\n renderSegList(allSegs: Seg[], dayDates: DateMarker[]) {\n let { theme, options } = this.context\n let { timeHeaderId, eventHeaderId, dateHeaderIdRoot } = this.state\n let segsByDay = groupSegsByDay(allSegs) // sparse array\n\n return (\n <NowTimer unit=\"day\">\n {(nowDate: DateMarker, todayRange: DateRange) => {\n let innerNodes: VNode[] = []\n\n for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {\n let daySegs = segsByDay[dayIndex]\n\n if (daySegs) { // sparse array, so might be undefined\n let dayStr = formatDayString(dayDates[dayIndex])\n let dateHeaderId = dateHeaderIdRoot + '-' + dayStr\n\n // append a day header\n innerNodes.push(\n <ListViewHeaderRow\n key={dayStr}\n cellId={dateHeaderId}\n dayDate={dayDates[dayIndex]}\n todayRange={todayRange}\n />,\n )\n\n daySegs = sortEventSegs(daySegs, options.eventOrder)\n\n for (let seg of daySegs) {\n innerNodes.push(\n <ListViewEventRow\n key={dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */}\n seg={seg}\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={false}\n timeHeaderId={timeHeaderId}\n eventHeaderId={eventHeaderId}\n dateHeaderId={dateHeaderId}\n {...getSegMeta(seg, todayRange, nowDate)}\n />,\n )\n }\n }\n }\n\n return (\n <table className={'fc-list-table ' + theme.getClass('table')}>\n <thead>\n <tr>\n <th scope=\"col\" id={timeHeaderId}>{options.timeHint}</th>\n <th scope=\"col\" aria-hidden />\n <th scope=\"col\" id={eventHeaderId}>{options.eventHint}</th>\n </tr>\n </thead>\n <tbody>{innerNodes}</tbody>\n </table>\n )\n }}\n </NowTimer>\n )\n }\n\n _eventStoreToSegs(eventStore: EventStore, eventUiBases: EventUiHash, dayRanges: DateRange[]): Seg[] {\n return this.eventRangesToSegs(\n sliceEventStore(\n eventStore,\n eventUiBases,\n this.props.dateProfile.activeRange,\n this.context.options.nextDayThreshold,\n ).fg,\n dayRanges,\n )\n }\n\n eventRangesToSegs(eventRanges: EventRenderRange[], dayRanges: DateRange[]) {\n let segs = []\n\n for (let eventRange of eventRanges) {\n segs.push(...this.eventRangeToSegs(eventRange, dayRanges))\n }\n\n return segs\n }\n\n eventRangeToSegs(eventRange: EventRenderRange, dayRanges: DateRange[]) {\n let { dateEnv } = this.context\n let { nextDayThreshold } = this.context.options\n let range = eventRange.range\n let allDay = eventRange.def.allDay\n let dayIndex\n let segRange\n let seg\n let segs = []\n\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {\n segRange = intersectRanges(range, dayRanges[dayIndex])\n\n if (segRange) {\n seg = {\n component: this,\n eventRange,\n start: segRange.start,\n end: segRange.end,\n isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),\n isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),\n dayIndex,\n }\n\n segs.push(seg)\n\n // detect when range won't go fully into the next day,\n // and mutate the latest seg to the be the end.\n if (\n !seg.isEnd && !allDay &&\n dayIndex + 1 < dayRanges.length &&\n range.end <\n dateEnv.add(\n dayRanges[dayIndex + 1].start,\n nextDayThreshold,\n )\n ) {\n seg.end = range.end\n seg.isEnd = true\n break\n }\n }\n }\n\n return segs\n }\n}\n\nfunction renderNoEventsInner(hookProps) {\n return hookProps.text\n}\n\nfunction computeDateVars(dateProfile: DateProfile) {\n let dayStart = startOfDay(dateProfile.renderRange.start)\n let viewEnd = dateProfile.renderRange.end\n let dayDates: DateMarker[] = []\n let dayRanges: DateRange[] = []\n\n while (dayStart < viewEnd) {\n dayDates.push(dayStart)\n\n dayRanges.push({\n start: dayStart,\n end: addDays(dayStart, 1),\n })\n\n dayStart = addDays(dayStart, 1)\n }\n\n return { dayDates, dayRanges }\n}\n\n// Returns a sparse array of arrays, segs grouped by their dayIndex\nfunction groupSegsByDay(segs): Seg[][] {\n let segsByDay = [] // sparse array\n let i\n let seg\n\n for (i = 0; i < segs.length; i += 1) {\n seg = segs[i];\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\n .push(seg)\n }\n\n return segsByDay\n}\n","import {\n identity,\n Identity,\n ClassNamesGenerator,\n CustomContentGenerator,\n DidMountHandler,\n WillUnmountHandler,\n createFormatter,\n FormatterInput,\n} from '@fullcalendar/common'\n\n// public\nimport {\n NoEventsContentArg,\n NoEventsMountArg,\n} from './api-type-deps'\n\nexport const OPTION_REFINERS = {\n listDayFormat: createFalsableFormatter, // defaults specified in list plugins\n listDaySideFormat: createFalsableFormatter, // \"\n\n noEventsClassNames: identity as Identity<ClassNamesGenerator<NoEventsContentArg>>,\n noEventsContent: identity as Identity<CustomContentGenerator<NoEventsContentArg>>,\n noEventsDidMount: identity as Identity<DidMountHandler<NoEventsMountArg>>,\n noEventsWillUnmount: identity as Identity<WillUnmountHandler<NoEventsMountArg>>,\n\n // noEventsText is defined in base options\n}\n\nfunction createFalsableFormatter(input: FormatterInput | false) {\n return input === false ? null : createFormatter(input)\n}\n","import { createPlugin } from '@fullcalendar/common'\nimport { ListView } from './ListView'\nimport { OPTION_REFINERS } from './options'\nimport './options-declare'\nimport './main.css'\n\nexport { ListView }\nexport * from './api-type-deps'\n\nexport default createPlugin({\n optionRefiners: OPTION_REFINERS,\n views: {\n\n list: {\n component: ListView,\n buttonTextKey: 'list', // what to lookup in locale files\n listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' }, // like \"January 1, 2016\"\n },\n\n listDay: {\n type: 'list',\n duration: { days: 1 },\n listDayFormat: { weekday: 'long' }, // day-of-week is all we need. full date is probably in headerToolbar\n },\n\n listWeek: {\n type: 'list',\n duration: { weeks: 1 },\n listDayFormat: { weekday: 'long' }, // day-of-week is more important\n listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n },\n\n listMonth: {\n type: 'list',\n duration: { month: 1 },\n listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have\n },\n\n listYear: {\n type: 'list',\n duration: { year: 1 },\n listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have\n },\n\n },\n})\n"],"names":[],"mappings":"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"}
package/main.min.css CHANGED
@@ -1 +1 @@
1
- :root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-list-empty{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:sticky;top:0;background:var(--fc-page-bg-color,#fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{content:"";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color,#f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width,10px)/ 2) solid var(--fc-event-border-color,#3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width,10px)/ 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}
1
+ :root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-list-empty{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:sticky;top:0;background:var(--fc-page-bg-color,#fff)}.fc .fc-list-table thead{position:absolute;left:-10000px}.fc .fc-list-table tbody>tr:first-child th{border-top:0}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{content:"";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color,#f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width,10px)/ 2) solid var(--fc-event-border-color,#3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width,10px)/ 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@fullcalendar/list",
3
- "version": "5.7.2",
3
+ "version": "5.10.1",
4
4
  "title": "FullCalendar List View Plugin",
5
5
  "description": "View your events as a bulleted list",
6
6
  "docs": "https://fullcalendar.io/docs/list-view",
7
7
  "dependencies": {
8
- "@fullcalendar/common": "~5.7.2",
9
- "tslib": "^2.0.3"
8
+ "@fullcalendar/common": "~5.10.1",
9
+ "tslib": "^2.1.0"
10
10
  },
11
11
  "main": "main.cjs.js",
12
12
  "module": "main.js",
@@ -27,6 +27,6 @@
27
27
  "url": "http://arshaw.com/"
28
28
  },
29
29
  "devDependencies": {
30
- "@fullcalendar/core-preact": "5.7.2"
30
+ "@fullcalendar/core-preact": "5.10.1"
31
31
  }
32
32
  }