@fullcalendar/list 7.0.0-beta.3 → 7.0.0-beta.5
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/LICENSE.md +1 -1
- package/README.md +6 -1
- package/cjs/index.cjs +60 -0
- package/cjs/internal.cjs +228 -0
- package/esm/index.d.ts +54 -0
- package/{index.js → esm/index.js} +15 -11
- package/{internal-common.d.ts → esm/internal-common.d.ts} +5 -10
- package/esm/internal.js +220 -0
- package/global.js +290 -0
- package/global.min.js +6 -0
- package/package.json +22 -19
- package/index.cjs +0 -56
- package/index.d.ts +0 -27
- package/index.global.js +0 -326
- package/index.global.min.js +0 -6
- package/internal.cjs +0 -265
- package/internal.js +0 -261
- /package/{internal.d.ts → esm/internal.d.ts} +0 -0
package/LICENSE.md
CHANGED
package/README.md
CHANGED
|
@@ -18,10 +18,15 @@ Instantiate a Calendar with the necessary plugin:
|
|
|
18
18
|
```js
|
|
19
19
|
import { Calendar } from '@fullcalendar/core'
|
|
20
20
|
import listPlugin from '@fullcalendar/list'
|
|
21
|
+
import classicThemePlugin from '@fullcalendar/theme-classic'
|
|
22
|
+
|
|
23
|
+
import '@fullcalendar/core/skeleton.css'
|
|
24
|
+
import '@fullcalendar/theme-classic/theme.css'
|
|
25
|
+
import '@fullcalendar/theme-classic/palette.css'
|
|
21
26
|
|
|
22
27
|
const calendarEl = document.getElementById('calendar')
|
|
23
28
|
const calendar = new Calendar(calendarEl, {
|
|
24
|
-
plugins: [listPlugin],
|
|
29
|
+
plugins: [listPlugin, classicThemePlugin],
|
|
25
30
|
initialView: 'listWeek',
|
|
26
31
|
events: [
|
|
27
32
|
{ title: 'Meeting', start: new Date() }
|
package/cjs/index.cjs
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@fullcalendar/core');
|
|
6
|
+
var internalCommon = require('./internal.cjs');
|
|
7
|
+
var internal = require('@fullcalendar/core/internal');
|
|
8
|
+
require('@fullcalendar/core/internal-classnames');
|
|
9
|
+
require('@fullcalendar/core/preact');
|
|
10
|
+
|
|
11
|
+
const OPTION_REFINERS = {
|
|
12
|
+
listDaysClass: internal.identity,
|
|
13
|
+
listDayClass: internal.identity,
|
|
14
|
+
listDayFormat: createFalsableFormatter,
|
|
15
|
+
listDaySideFormat: createFalsableFormatter,
|
|
16
|
+
listDayHeaderDidMount: internal.identity,
|
|
17
|
+
listDayHeaderWillUnmount: internal.identity,
|
|
18
|
+
listDayHeaderClass: internal.identity,
|
|
19
|
+
listDayHeaderInnerClass: internal.identity,
|
|
20
|
+
listDayHeaderContent: internal.identity,
|
|
21
|
+
listDayEventsClass: internal.identity,
|
|
22
|
+
noEventsClass: internal.identity,
|
|
23
|
+
noEventsInnerClass: internal.identity,
|
|
24
|
+
noEventsContent: internal.identity,
|
|
25
|
+
noEventsDidMount: internal.identity,
|
|
26
|
+
noEventsWillUnmount: internal.identity,
|
|
27
|
+
// noEventsText is defined in base options
|
|
28
|
+
};
|
|
29
|
+
function createFalsableFormatter(input) {
|
|
30
|
+
return input === false ? null : internal.createFormatter(input);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var index = core.createPlugin({
|
|
34
|
+
name: '@fullcalendar/list',
|
|
35
|
+
optionRefiners: OPTION_REFINERS,
|
|
36
|
+
views: {
|
|
37
|
+
list: {
|
|
38
|
+
component: internalCommon.ListView,
|
|
39
|
+
buttonTextKey: 'listText', // what to lookup in locale files
|
|
40
|
+
},
|
|
41
|
+
listDay: {
|
|
42
|
+
type: 'list',
|
|
43
|
+
duration: { days: 1 },
|
|
44
|
+
},
|
|
45
|
+
listWeek: {
|
|
46
|
+
type: 'list',
|
|
47
|
+
duration: { weeks: 1 },
|
|
48
|
+
},
|
|
49
|
+
listMonth: {
|
|
50
|
+
type: 'list',
|
|
51
|
+
duration: { month: 1 },
|
|
52
|
+
},
|
|
53
|
+
listYear: {
|
|
54
|
+
type: 'list',
|
|
55
|
+
duration: { year: 1 },
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
exports["default"] = index;
|
package/cjs/internal.cjs
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@fullcalendar/core');
|
|
6
|
+
var internal = require('@fullcalendar/core/internal');
|
|
7
|
+
var classNames = require('@fullcalendar/core/internal-classnames');
|
|
8
|
+
var preact = require('@fullcalendar/core/preact');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
13
|
+
|
|
14
|
+
class ListDayHeaderInner extends internal.BaseComponent {
|
|
15
|
+
render() {
|
|
16
|
+
const { props, context } = this;
|
|
17
|
+
const { options } = context;
|
|
18
|
+
const [text, textParts] = context.dateEnv.format(props.dayDate, props.dayFormat);
|
|
19
|
+
const hasNavLink = options.navLinks;
|
|
20
|
+
const renderProps = Object.assign(Object.assign({}, props.dateMeta), { view: context.viewApi, text,
|
|
21
|
+
textParts,
|
|
22
|
+
get dayNumberText() { return internal.findDayNumberText(textParts); },
|
|
23
|
+
hasNavLink, level: props.level });
|
|
24
|
+
const navLinkAttrs = hasNavLink
|
|
25
|
+
? internal.buildNavLinkAttrs(this.context, props.dayDate, undefined, text, this.props.isTabbable)
|
|
26
|
+
: {};
|
|
27
|
+
return (preact.createElement(internal.ContentContainer, { tag: "div", attrs: navLinkAttrs, renderProps: renderProps, generatorName: "listDayHeaderContent", customGenerator: options.listDayHeaderContent, defaultGenerator: internal.renderText, classNameGenerator: options.listDayHeaderInnerClass }));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
class ListDayHeader extends internal.BaseComponent {
|
|
32
|
+
render() {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
let { options, viewApi, viewSpec } = this.context;
|
|
35
|
+
let { dayDate, dateMeta } = this.props;
|
|
36
|
+
let stickyHeaderDates = !this.props.forPrint;
|
|
37
|
+
const listDayFormat = (_a = options.listDayFormat) !== null && _a !== void 0 ? _a : createDefaultListDayFormat(viewSpec);
|
|
38
|
+
const listDaySideFormat = (_b = options.listDaySideFormat) !== null && _b !== void 0 ? _b : createDefaultListDaySideFormat(viewSpec);
|
|
39
|
+
let renderProps = Object.assign(Object.assign({}, dateMeta), { view: viewApi });
|
|
40
|
+
return (preact.createElement(internal.ContentContainer, { tag: "div", attrs: Object.assign({ 'data-date': internal.formatDayString(dayDate) }, (dateMeta.isToday ? { 'aria-current': 'date' } : {})), className: stickyHeaderDates ? classNames__default["default"].stickyT : '', renderProps: renderProps, generatorName: undefined, classNameGenerator: options.listDayHeaderClass, didMount: options.listDayHeaderDidMount, willUnmount: options.listDayHeaderWillUnmount }, () => (preact.createElement(preact.Fragment, null,
|
|
41
|
+
Boolean(listDayFormat) && (preact.createElement(ListDayHeaderInner, { dayDate: dayDate, dayFormat: listDayFormat, isTabbable: true, dateMeta: dateMeta, level: 0 })),
|
|
42
|
+
Boolean(listDaySideFormat) && (preact.createElement(ListDayHeaderInner, { dayDate: dayDate, dayFormat: listDaySideFormat, isTabbable: false, dateMeta: dateMeta, level: 1 }))))));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function createDefaultListDayFormat({ durationUnit, singleUnit }) {
|
|
46
|
+
if (singleUnit === 'day') {
|
|
47
|
+
return internal.WEEKDAY_ONLY_FORMAT;
|
|
48
|
+
}
|
|
49
|
+
else if (durationUnit === 'day' || singleUnit === 'week') {
|
|
50
|
+
return internal.WEEKDAY_ONLY_FORMAT;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return internal.FULL_DATE_FORMAT;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function createDefaultListDaySideFormat({ durationUnit, singleUnit }) {
|
|
57
|
+
if (singleUnit === 'day') ;
|
|
58
|
+
else if (durationUnit === 'day' || singleUnit === 'week') {
|
|
59
|
+
return internal.FULL_DATE_FORMAT;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return internal.WEEKDAY_ONLY_FORMAT;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const DEFAULT_TIME_FORMAT = internal.createFormatter({
|
|
67
|
+
hour: 'numeric',
|
|
68
|
+
minute: '2-digit',
|
|
69
|
+
meridiem: 'short',
|
|
70
|
+
});
|
|
71
|
+
class ListEvent extends internal.BaseComponent {
|
|
72
|
+
render() {
|
|
73
|
+
let { props, context } = this;
|
|
74
|
+
let { eventRange } = props;
|
|
75
|
+
let forcedTimeText = (eventRange.def.allDay || (!props.isStart && !props.isEnd))
|
|
76
|
+
? context.options.allDayText
|
|
77
|
+
: undefined;
|
|
78
|
+
return (preact.createElement(internal.StandardEvent, Object.assign({}, props, { attrs: {
|
|
79
|
+
role: 'listitem',
|
|
80
|
+
}, forcedTimeText: forcedTimeText, defaultTimeFormat: DEFAULT_TIME_FORMAT, disableDragging: true, disableResizing: true, disableZindexes // because conflicts with sticky list headers
|
|
81
|
+
: true, display: 'list-item' })));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
class ListDay extends internal.BaseComponent {
|
|
86
|
+
constructor() {
|
|
87
|
+
super(...arguments);
|
|
88
|
+
// memo
|
|
89
|
+
this.getDateMeta = internal.memoize(internal.getDateMeta);
|
|
90
|
+
this.sortEventSegs = internal.memoize(internal.sortEventSegs);
|
|
91
|
+
}
|
|
92
|
+
render() {
|
|
93
|
+
const { props, context } = this;
|
|
94
|
+
const { nowDate, todayRange } = props;
|
|
95
|
+
const { options } = context;
|
|
96
|
+
const dateMeta = this.getDateMeta(props.dayDate, context.dateEnv, undefined, todayRange);
|
|
97
|
+
const segs = this.sortEventSegs(props.segs, options.eventOrder);
|
|
98
|
+
const fullDateStr = internal.buildDateStr(this.context, props.dayDate);
|
|
99
|
+
return (preact.createElement("div", { role: 'listitem', "aria-label": fullDateStr, className: internal.generateClassName(options.listDayClass, Object.assign(Object.assign({}, dateMeta), { view: context.viewApi })) },
|
|
100
|
+
preact.createElement(ListDayHeader, { dayDate: props.dayDate, dateMeta: dateMeta, forPrint: props.forPrint }),
|
|
101
|
+
preact.createElement("div", { role: 'list', "aria-label": options.eventsHint, className: core.joinClassNames(internal.generateClassName(options.listDayEventsClass, dateMeta), classNames__default["default"].flexCol) }, segs.map((seg) => {
|
|
102
|
+
const key = internal.getEventKey(seg);
|
|
103
|
+
return (preact.createElement(ListEvent, Object.assign({ key: key, eventRange: seg.eventRange, slicedStart: seg.slicedStart, slicedEnd: seg.slicedEnd, isStart: seg.isStart, isEnd: seg.isEnd, isDragging: false, isResizing: false, isMirror: false, isSelected: false }, internal.getEventRangeMeta(seg.eventRange, todayRange, nowDate))));
|
|
104
|
+
}))));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/*
|
|
109
|
+
Responsible for the scroller, and forwarding event-related actions into the "grid".
|
|
110
|
+
*/
|
|
111
|
+
class ListView extends internal.DateComponent {
|
|
112
|
+
constructor() {
|
|
113
|
+
super(...arguments);
|
|
114
|
+
// memo
|
|
115
|
+
this.computeDateVars = internal.memoize(computeDateVars);
|
|
116
|
+
this.eventStoreToSegs = internal.memoize(this._eventStoreToSegs);
|
|
117
|
+
this.setRootEl = (rootEl) => {
|
|
118
|
+
if (rootEl) {
|
|
119
|
+
this.context.registerInteractiveComponent(this, {
|
|
120
|
+
el: rootEl,
|
|
121
|
+
disableHits: true, // HACK to not do date-clicking/selecting
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this.context.unregisterInteractiveComponent(this);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
render() {
|
|
130
|
+
let { props, context } = this;
|
|
131
|
+
let { options } = context;
|
|
132
|
+
let { dayDates, dayRanges } = this.computeDateVars(props.dateProfile);
|
|
133
|
+
let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges);
|
|
134
|
+
let verticalScrolling = !props.forPrint && !internal.getIsHeightAuto(options);
|
|
135
|
+
return (preact.createElement(internal.ViewContainer, { viewSpec: context.viewSpec, className: core.joinClassNames(props.className, classNames__default["default"].flexCol), elRef: this.setRootEl, borderlessX: props.borderlessX, borderlessTop: props.borderlessTop, borderlessBottom: props.borderlessBottom, noEdgeEffects: props.noEdgeEffects }, eventSegs.length ? (preact.createElement(internal.Scroller // TODO: don't need heavyweight component
|
|
136
|
+
, { vertical: verticalScrolling, className: core.joinClassNames(classNames__default["default"].flexCol, verticalScrolling ? classNames__default["default"].liquid : '') }, this.renderSegList(eventSegs, dayDates))) : this.renderEmptyMessage()));
|
|
137
|
+
}
|
|
138
|
+
renderEmptyMessage() {
|
|
139
|
+
let { options, viewApi } = this.context;
|
|
140
|
+
let renderProps = {
|
|
141
|
+
text: options.noEventsText,
|
|
142
|
+
view: viewApi,
|
|
143
|
+
};
|
|
144
|
+
return (preact.createElement(internal.ContentContainer, { tag: "div", attrs: {
|
|
145
|
+
role: 'status', // does a polite announcement
|
|
146
|
+
}, renderProps: renderProps, generatorName: "noEventsContent", customGenerator: options.noEventsContent, defaultGenerator: renderNoEventsInner, classNameGenerator: options.noEventsClass, className: classNames__default["default"].grow, didMount: options.noEventsDidMount, willUnmount: options.noEventsWillUnmount }, (InnerContent) => (preact.createElement(InnerContent, { tag: "div", className: internal.generateClassName(options.noEventsInnerClass, renderProps) }))));
|
|
147
|
+
}
|
|
148
|
+
renderSegList(allSegs, dayDates) {
|
|
149
|
+
let { options } = this.context;
|
|
150
|
+
let segsByDay = groupSegsByDay(allSegs); // sparse array
|
|
151
|
+
return (preact.createElement("div", { role: "list", "aria-labelledby": this.props.labelId, "aria-label": this.props.labelStr, className: core.joinClassNames(classNames__default["default"].flexCol, internal.joinArrayishClassNames(options.listDaysClass)) },
|
|
152
|
+
preact.createElement(internal.NowTimer, { unit: "day" }, (nowDate, todayRange) => {
|
|
153
|
+
const dayNodes = [];
|
|
154
|
+
for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
|
|
155
|
+
let daySegs = segsByDay[dayIndex];
|
|
156
|
+
if (daySegs) { // sparse array, so might be undefined
|
|
157
|
+
const dayDate = dayDates[dayIndex];
|
|
158
|
+
const key = internal.formatDayString(dayDate);
|
|
159
|
+
dayNodes.push(preact.createElement(ListDay, { key: key, dayDate: dayDate, nowDate: nowDate, todayRange: todayRange, segs: daySegs, forPrint: this.props.forPrint }));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return (preact.createElement(preact.Fragment, null, dayNodes));
|
|
163
|
+
})));
|
|
164
|
+
}
|
|
165
|
+
_eventStoreToSegs(eventStore, eventUiBases, dayRanges) {
|
|
166
|
+
return this.eventRangesToSegs(internal.sliceEventStore(eventStore, eventUiBases,
|
|
167
|
+
// HACKY to reference internal state...
|
|
168
|
+
this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, dayRanges);
|
|
169
|
+
}
|
|
170
|
+
eventRangesToSegs(fullDayEventRanges, dayRanges) {
|
|
171
|
+
let segs = [];
|
|
172
|
+
for (let fullDayEventRange of fullDayEventRanges) {
|
|
173
|
+
segs.push(...this.eventRangeToSegs(fullDayEventRange, dayRanges));
|
|
174
|
+
}
|
|
175
|
+
return segs;
|
|
176
|
+
}
|
|
177
|
+
eventRangeToSegs(fullDayEventRange, dayRanges) {
|
|
178
|
+
let fullDayRange = fullDayEventRange.range;
|
|
179
|
+
let dayIndex;
|
|
180
|
+
let segs = [];
|
|
181
|
+
for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {
|
|
182
|
+
const slicedFullDayRange = internal.intersectRanges(fullDayRange, dayRanges[dayIndex]);
|
|
183
|
+
if (slicedFullDayRange) {
|
|
184
|
+
segs.push({
|
|
185
|
+
eventRange: fullDayEventRange,
|
|
186
|
+
slicedStart: slicedFullDayRange.start,
|
|
187
|
+
slicedEnd: slicedFullDayRange.end,
|
|
188
|
+
isStart: fullDayEventRange.isStart && fullDayRange.start.valueOf() === slicedFullDayRange.start.valueOf(),
|
|
189
|
+
isEnd: fullDayEventRange.isEnd && fullDayRange.end.valueOf() === slicedFullDayRange.end.valueOf(),
|
|
190
|
+
dayIndex,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return segs;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function renderNoEventsInner(renderProps) {
|
|
198
|
+
return renderProps.text;
|
|
199
|
+
}
|
|
200
|
+
function computeDateVars(dateProfile) {
|
|
201
|
+
let dayStart = internal.startOfDay(dateProfile.renderRange.start);
|
|
202
|
+
let viewEnd = dateProfile.renderRange.end;
|
|
203
|
+
let dayDates = [];
|
|
204
|
+
let dayRanges = [];
|
|
205
|
+
while (dayStart < viewEnd) {
|
|
206
|
+
dayDates.push(dayStart);
|
|
207
|
+
dayRanges.push({
|
|
208
|
+
start: dayStart,
|
|
209
|
+
end: internal.addDays(dayStart, 1),
|
|
210
|
+
});
|
|
211
|
+
dayStart = internal.addDays(dayStart, 1);
|
|
212
|
+
}
|
|
213
|
+
return { dayDates, dayRanges };
|
|
214
|
+
}
|
|
215
|
+
// Returns a sparse array of arrays, segs grouped by their dayIndex
|
|
216
|
+
function groupSegsByDay(segs) {
|
|
217
|
+
let segsByDay = []; // sparse array
|
|
218
|
+
let i;
|
|
219
|
+
let seg;
|
|
220
|
+
for (i = 0; i < segs.length; i += 1) {
|
|
221
|
+
seg = segs[i];
|
|
222
|
+
(segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))
|
|
223
|
+
.push(seg);
|
|
224
|
+
}
|
|
225
|
+
return segsByDay;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
exports.ListView = ListView;
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ViewApi, ClassNameGenerator, FormatterInput, PluginDef } from '@fullcalendar/core';
|
|
2
|
+
import { DateMeta, MountData, RawOptionsFromRefiners, RefinedOptionsFromRefiners, Identity, DidMountHandler, WillUnmountHandler, CustomContentGenerator, DateFormatter } from '@fullcalendar/core/internal';
|
|
3
|
+
import { N as NoEventsData, a as NoEventsMountData } from './internal-common.js';
|
|
4
|
+
export { N as NoEventsData, a as NoEventsMountData } from './internal-common.js';
|
|
5
|
+
import '@fullcalendar/core/preact';
|
|
6
|
+
|
|
7
|
+
interface ListDayData extends DateMeta {
|
|
8
|
+
view: ViewApi;
|
|
9
|
+
}
|
|
10
|
+
interface ListDayHeaderData extends ListDayData {
|
|
11
|
+
}
|
|
12
|
+
type ListDayHeaderMountData = MountData<ListDayHeaderData>;
|
|
13
|
+
interface ListDayHeaderInnerData extends ListDayData {
|
|
14
|
+
text: string;
|
|
15
|
+
textParts: Intl.DateTimeFormatPart[];
|
|
16
|
+
dayNumberText: string;
|
|
17
|
+
hasNavLink: boolean;
|
|
18
|
+
level: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare const OPTION_REFINERS: {
|
|
22
|
+
listDaysClass: Identity<string>;
|
|
23
|
+
listDayClass: Identity<ClassNameGenerator<ListDayData>>;
|
|
24
|
+
listDayFormat: typeof createFalsableFormatter;
|
|
25
|
+
listDaySideFormat: typeof createFalsableFormatter;
|
|
26
|
+
listDayHeaderDidMount: Identity<DidMountHandler<ListDayHeaderMountData>>;
|
|
27
|
+
listDayHeaderWillUnmount: Identity<WillUnmountHandler<ListDayHeaderMountData>>;
|
|
28
|
+
listDayHeaderClass: Identity<ClassNameGenerator<ListDayHeaderData>>;
|
|
29
|
+
listDayHeaderInnerClass: Identity<ClassNameGenerator<ListDayHeaderInnerData>>;
|
|
30
|
+
listDayHeaderContent: Identity<CustomContentGenerator<ListDayHeaderInnerData>>;
|
|
31
|
+
listDayEventsClass: Identity<ClassNameGenerator<ListDayData>>;
|
|
32
|
+
noEventsClass: Identity<ClassNameGenerator<NoEventsData>>;
|
|
33
|
+
noEventsInnerClass: Identity<ClassNameGenerator<NoEventsData>>;
|
|
34
|
+
noEventsContent: Identity<CustomContentGenerator<NoEventsData>>;
|
|
35
|
+
noEventsDidMount: Identity<DidMountHandler<NoEventsMountData>>;
|
|
36
|
+
noEventsWillUnmount: Identity<WillUnmountHandler<NoEventsMountData>>;
|
|
37
|
+
};
|
|
38
|
+
type ListOptionRefiners = typeof OPTION_REFINERS;
|
|
39
|
+
type ListOptions = RawOptionsFromRefiners<ListOptionRefiners>;
|
|
40
|
+
type ListOptionsRefined = RefinedOptionsFromRefiners<ListOptionRefiners>;
|
|
41
|
+
declare function createFalsableFormatter(input: FormatterInput | false): DateFormatter;
|
|
42
|
+
|
|
43
|
+
declare module '@fullcalendar/core/internal' {
|
|
44
|
+
interface BaseOptions extends ListOptions {
|
|
45
|
+
}
|
|
46
|
+
interface BaseOptionsRefined extends ListOptionsRefined {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ambient.d.ts.map
|
|
50
|
+
|
|
51
|
+
declare const _default: PluginDef;
|
|
52
|
+
//# sourceMappingURL=index.d.ts.map
|
|
53
|
+
|
|
54
|
+
export { ListDayData, ListDayHeaderData, ListDayHeaderInnerData, ListDayHeaderMountData, ListOptions, _default as default };
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { createPlugin } from '@fullcalendar/core
|
|
1
|
+
import { createPlugin } from '@fullcalendar/core';
|
|
2
2
|
import { ListView } from './internal.js';
|
|
3
|
-
import { identity, createFormatter } from '@fullcalendar/core/internal
|
|
4
|
-
import '@fullcalendar/core/
|
|
3
|
+
import { identity, createFormatter } from '@fullcalendar/core/internal';
|
|
4
|
+
import '@fullcalendar/core/internal-classnames';
|
|
5
|
+
import '@fullcalendar/core/preact';
|
|
5
6
|
|
|
6
7
|
const OPTION_REFINERS = {
|
|
8
|
+
listDaysClass: identity,
|
|
9
|
+
listDayClass: identity,
|
|
7
10
|
listDayFormat: createFalsableFormatter,
|
|
8
11
|
listDaySideFormat: createFalsableFormatter,
|
|
9
|
-
|
|
12
|
+
listDayHeaderDidMount: identity,
|
|
13
|
+
listDayHeaderWillUnmount: identity,
|
|
14
|
+
listDayHeaderClass: identity,
|
|
15
|
+
listDayHeaderInnerClass: identity,
|
|
16
|
+
listDayHeaderContent: identity,
|
|
17
|
+
listDayEventsClass: identity,
|
|
18
|
+
noEventsClass: identity,
|
|
19
|
+
noEventsInnerClass: identity,
|
|
10
20
|
noEventsContent: identity,
|
|
11
21
|
noEventsDidMount: identity,
|
|
12
22
|
noEventsWillUnmount: identity,
|
|
@@ -22,29 +32,23 @@ var index = createPlugin({
|
|
|
22
32
|
views: {
|
|
23
33
|
list: {
|
|
24
34
|
component: ListView,
|
|
25
|
-
buttonTextKey: '
|
|
26
|
-
listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' }, // like "January 1, 2016"
|
|
35
|
+
buttonTextKey: 'listText', // what to lookup in locale files
|
|
27
36
|
},
|
|
28
37
|
listDay: {
|
|
29
38
|
type: 'list',
|
|
30
39
|
duration: { days: 1 },
|
|
31
|
-
listDayFormat: { weekday: 'long' }, // day-of-week is all we need. full date is probably in headerToolbar
|
|
32
40
|
},
|
|
33
41
|
listWeek: {
|
|
34
42
|
type: 'list',
|
|
35
43
|
duration: { weeks: 1 },
|
|
36
|
-
listDayFormat: { weekday: 'long' },
|
|
37
|
-
listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' },
|
|
38
44
|
},
|
|
39
45
|
listMonth: {
|
|
40
46
|
type: 'list',
|
|
41
47
|
duration: { month: 1 },
|
|
42
|
-
listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have
|
|
43
48
|
},
|
|
44
49
|
listYear: {
|
|
45
50
|
type: 'list',
|
|
46
51
|
duration: { year: 1 },
|
|
47
|
-
listDaySideFormat: { weekday: 'long' }, // day-of-week is nice-to-have
|
|
48
52
|
},
|
|
49
53
|
},
|
|
50
54
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ViewApi, EventRenderRange } from '@fullcalendar/core';
|
|
2
|
-
import { DateMarker,
|
|
2
|
+
import { DateMarker, MountData, DateComponent, ViewProps, EventRangeProps, EventStore, EventUiHash, DateRange } from '@fullcalendar/core/internal';
|
|
3
3
|
import { createElement } from '@fullcalendar/core/preact';
|
|
4
4
|
|
|
5
5
|
interface ListSeg {
|
|
@@ -10,18 +10,14 @@ interface ListSeg {
|
|
|
10
10
|
dayIndex: number;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
interface
|
|
13
|
+
interface NoEventsData {
|
|
14
14
|
text: string;
|
|
15
15
|
view: ViewApi;
|
|
16
16
|
}
|
|
17
|
-
type
|
|
18
|
-
|
|
19
|
-
timeOuterWidth?: number;
|
|
20
|
-
}
|
|
21
|
-
declare class ListView extends DateComponent<ViewProps, ListViewState> {
|
|
17
|
+
type NoEventsMountData = MountData<NoEventsData>;
|
|
18
|
+
declare class ListView extends DateComponent<ViewProps> {
|
|
22
19
|
private computeDateVars;
|
|
23
20
|
private eventStoreToSegs;
|
|
24
|
-
private timeWidthRefMap;
|
|
25
21
|
render(): createElement.JSX.Element;
|
|
26
22
|
setRootEl: (rootEl: HTMLElement | null) => void;
|
|
27
23
|
renderEmptyMessage(): createElement.JSX.Element;
|
|
@@ -29,7 +25,6 @@ declare class ListView extends DateComponent<ViewProps, ListViewState> {
|
|
|
29
25
|
_eventStoreToSegs(eventStore: EventStore, eventUiBases: EventUiHash, dayRanges: DateRange[]): (ListSeg & EventRangeProps)[];
|
|
30
26
|
eventRangesToSegs(fullDayEventRanges: EventRenderRange[], dayRanges: DateRange[]): (ListSeg & EventRangeProps)[];
|
|
31
27
|
eventRangeToSegs(fullDayEventRange: EventRenderRange, dayRanges: DateRange[]): (ListSeg & EventRangeProps)[];
|
|
32
|
-
handleTimeWidths: () => void;
|
|
33
28
|
}
|
|
34
29
|
|
|
35
|
-
export { ListView as L,
|
|
30
|
+
export { ListView as L, NoEventsData as N, NoEventsMountData as a };
|