fullcalendar 6.0.0-beta.2 → 6.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.global.js +550 -157
- package/index.global.min.js +2 -2
- package/package.json +9 -10
- package/index.global.js.map +0 -1
package/index.global.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Standard Bundle v6.0.0-beta.
|
|
2
|
+
FullCalendar Standard Bundle v6.0.0-beta.4
|
|
3
3
|
Docs & License: https://fullcalendar.io/
|
|
4
4
|
(c) 2022 Adam Shaw
|
|
5
5
|
*/
|
|
@@ -12,59 +12,6 @@ var FullCalendar = (function (exports) {
|
|
|
12
12
|
|
|
13
13
|
function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if("__source"!==e&&!(e in t))return !0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return !0;return !1}function w(n){this.props=n;}(w.prototype=new d).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=l$1.__b;l$1.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n);};var T=l$1.__e;l$1.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r);};var I=l$1.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c();}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null;}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function V(){this.u=null,this.o=null;}l$1.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n);},(D.prototype=new d).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l());};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O);}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate();}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i);},D.prototype.componentWillUnmount=function(){this.t=[];},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P);}this.__b=null;}var i=e.__a&&h(p,null,n.fallback);return i&&(i.__h=null),[h(p,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2];}};function P(n){return this.getChildContext=function(){return n.context},n.children}function $(n){var e=this,r=n.i;e.componentWillUnmount=function(){P$1(null,e.l),e.l=null,e.i=null;},e.i&&e.i!==r&&e.componentWillUnmount(),n.__v?(e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n);},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n);},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n);}}),P$1(h(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount();}function j(n,e){var r=h($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new d).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u();};e?e(o):o();}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=x$1(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t);});};var z="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H="undefined"!=typeof document,Z=function(n){return ("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};d.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(d.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n});}});});var G=l$1.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}l$1.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var nn={configurable:!0,get:function(){return this.class}},tn=l$1.vnode;l$1.vnode=function(n){var t=n.type,e=n.props,u=e;if("string"==typeof t){var o=-1===t.indexOf("-");for(var i in u={},e){var l=e[i];H&&"children"===i&&"noscript"===t||"value"===i&&"defaultValue"in e&&null==l||("defaultValue"===i&&"value"in e&&null==e.value?i="value":"download"===i&&!0===l?l="":/ondoubleclick/i.test(i)?i="ondblclick":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i="oninput":/^onfocus$/i.test(i)?i="onfocusin":/^onblur$/i.test(i)?i="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,"-$&").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i="oninputCapture")),u[i]=l);}"select"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=x$1(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value);})),"select"==t&&null!=u.defaultValue&&(u.value=x$1(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value;})),n.props=u,e.class!=e.className&&(nn.enumerable="className"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,"className",nn));}n.$$typeof=z,tn&&tn(n);};var en=l$1.__r;l$1.__r=function(n){en&&en(n),n.__c;};
|
|
14
14
|
|
|
15
|
-
/*
|
|
16
|
-
NOTE: this can be a public API, especially createElement for hooks.
|
|
17
|
-
See examples/typescript-scheduler/src/index.ts
|
|
18
|
-
*/
|
|
19
|
-
function flushSync(runBeforeFlush) {
|
|
20
|
-
runBeforeFlush();
|
|
21
|
-
let oldDebounceRendering = l$1.debounceRendering; // orig
|
|
22
|
-
let callbackQ = [];
|
|
23
|
-
function execCallbackSync(callback) {
|
|
24
|
-
callbackQ.push(callback);
|
|
25
|
-
}
|
|
26
|
-
l$1.debounceRendering = execCallbackSync;
|
|
27
|
-
P$1(h(FakeComponent, {}), document.createElement('div'));
|
|
28
|
-
while (callbackQ.length) {
|
|
29
|
-
callbackQ.shift()();
|
|
30
|
-
}
|
|
31
|
-
l$1.debounceRendering = oldDebounceRendering;
|
|
32
|
-
}
|
|
33
|
-
class FakeComponent extends d {
|
|
34
|
-
render() { return h('div', {}); }
|
|
35
|
-
componentDidMount() { this.setState({}); }
|
|
36
|
-
}
|
|
37
|
-
// TODO: use preact/compat instead?
|
|
38
|
-
function createContext(defaultValue) {
|
|
39
|
-
let ContextType = B$1(defaultValue);
|
|
40
|
-
let origProvider = ContextType.Provider;
|
|
41
|
-
ContextType.Provider = function () {
|
|
42
|
-
let isNew = !this.getChildContext;
|
|
43
|
-
let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
|
44
|
-
if (isNew) {
|
|
45
|
-
let subs = [];
|
|
46
|
-
this.shouldComponentUpdate = (_props) => {
|
|
47
|
-
if (this.props.value !== _props.value) {
|
|
48
|
-
subs.forEach((c) => {
|
|
49
|
-
c.context = _props.value;
|
|
50
|
-
c.forceUpdate();
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
this.sub = (c) => {
|
|
55
|
-
subs.push(c);
|
|
56
|
-
let old = c.componentWillUnmount;
|
|
57
|
-
c.componentWillUnmount = () => {
|
|
58
|
-
subs.splice(subs.indexOf(c), 1);
|
|
59
|
-
old && old.call(c);
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
return children;
|
|
64
|
-
};
|
|
65
|
-
return ContextType;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
15
|
function injectStyles(css) {
|
|
69
16
|
if (!css || typeof document === 'undefined') {
|
|
70
17
|
return;
|
|
@@ -305,6 +252,22 @@ var FullCalendar = (function (exports) {
|
|
|
305
252
|
}
|
|
306
253
|
|
|
307
254
|
const globalLocales = [];
|
|
255
|
+
|
|
256
|
+
// TODO: new util arrayify?
|
|
257
|
+
function removeExact(array, exactVal) {
|
|
258
|
+
let removeCnt = 0;
|
|
259
|
+
let i = 0;
|
|
260
|
+
while (i < array.length) {
|
|
261
|
+
if (array[i] === exactVal) {
|
|
262
|
+
array.splice(i, 1);
|
|
263
|
+
removeCnt += 1;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
i += 1;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return removeCnt;
|
|
270
|
+
}
|
|
308
271
|
function isArraysEqual(a0, a1, equalityFunc) {
|
|
309
272
|
if (a0 === a1) {
|
|
310
273
|
return true;
|
|
@@ -362,6 +325,65 @@ var FullCalendar = (function (exports) {
|
|
|
362
325
|
return currentRes;
|
|
363
326
|
};
|
|
364
327
|
}
|
|
328
|
+
function memoizeArraylike(// used at all?
|
|
329
|
+
workerFunc, resEquality, teardownFunc) {
|
|
330
|
+
let currentArgSets = [];
|
|
331
|
+
let currentResults = [];
|
|
332
|
+
return (newArgSets) => {
|
|
333
|
+
let currentLen = currentArgSets.length;
|
|
334
|
+
let newLen = newArgSets.length;
|
|
335
|
+
let i = 0;
|
|
336
|
+
for (; i < currentLen; i += 1) {
|
|
337
|
+
if (!newArgSets[i]) { // one of the old sets no longer exists
|
|
338
|
+
if (teardownFunc) {
|
|
339
|
+
teardownFunc(currentResults[i]);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {
|
|
343
|
+
if (teardownFunc) {
|
|
344
|
+
teardownFunc(currentResults[i]);
|
|
345
|
+
}
|
|
346
|
+
let res = workerFunc.apply(this, newArgSets[i]);
|
|
347
|
+
if (!resEquality || !resEquality(res, currentResults[i])) {
|
|
348
|
+
currentResults[i] = res;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
for (; i < newLen; i += 1) {
|
|
353
|
+
currentResults[i] = workerFunc.apply(this, newArgSets[i]);
|
|
354
|
+
}
|
|
355
|
+
currentArgSets = newArgSets;
|
|
356
|
+
currentResults.splice(newLen); // remove excess
|
|
357
|
+
return currentResults;
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
function memoizeHashlike(workerFunc, resEquality, teardownFunc) {
|
|
361
|
+
let currentArgHash = {};
|
|
362
|
+
let currentResHash = {};
|
|
363
|
+
return (newArgHash) => {
|
|
364
|
+
let newResHash = {};
|
|
365
|
+
for (let key in newArgHash) {
|
|
366
|
+
if (!currentResHash[key]) {
|
|
367
|
+
newResHash[key] = workerFunc.apply(this, newArgHash[key]);
|
|
368
|
+
}
|
|
369
|
+
else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {
|
|
370
|
+
if (teardownFunc) {
|
|
371
|
+
teardownFunc(currentResHash[key]);
|
|
372
|
+
}
|
|
373
|
+
let res = workerFunc.apply(this, newArgHash[key]);
|
|
374
|
+
newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))
|
|
375
|
+
? currentResHash[key]
|
|
376
|
+
: res;
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
newResHash[key] = currentResHash[key];
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
currentArgHash = newArgHash;
|
|
383
|
+
currentResHash = newResHash;
|
|
384
|
+
return newResHash;
|
|
385
|
+
};
|
|
386
|
+
}
|
|
365
387
|
|
|
366
388
|
function removeElement(el) {
|
|
367
389
|
if (el.parentNode) {
|
|
@@ -405,6 +427,22 @@ var FullCalendar = (function (exports) {
|
|
|
405
427
|
}
|
|
406
428
|
return allMatches;
|
|
407
429
|
}
|
|
430
|
+
// accepts multiple subject els
|
|
431
|
+
// only queries direct child elements // TODO: rename to findDirectChildren!
|
|
432
|
+
function findDirectChildren(parent, selector) {
|
|
433
|
+
let parents = parent instanceof HTMLElement ? [parent] : parent;
|
|
434
|
+
let allMatches = [];
|
|
435
|
+
for (let i = 0; i < parents.length; i += 1) {
|
|
436
|
+
let childNodes = parents[i].children; // only ever elements
|
|
437
|
+
for (let j = 0; j < childNodes.length; j += 1) {
|
|
438
|
+
let childNode = childNodes[j];
|
|
439
|
+
if (!selector || elementMatches(childNode, selector)) {
|
|
440
|
+
allMatches.push(childNode);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return allMatches;
|
|
445
|
+
}
|
|
408
446
|
// Style
|
|
409
447
|
// ----------------------------------------------------------------------------------------------------------------
|
|
410
448
|
const PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;
|
|
@@ -1058,6 +1096,12 @@ var FullCalendar = (function (exports) {
|
|
|
1058
1096
|
d0.days === d1.days &&
|
|
1059
1097
|
d0.milliseconds === d1.milliseconds;
|
|
1060
1098
|
}
|
|
1099
|
+
function asCleanDays(dur) {
|
|
1100
|
+
if (!dur.years && !dur.months && !dur.milliseconds) {
|
|
1101
|
+
return dur.days;
|
|
1102
|
+
}
|
|
1103
|
+
return 0;
|
|
1104
|
+
}
|
|
1061
1105
|
// Simple Math
|
|
1062
1106
|
function addDurations(d0, d1) {
|
|
1063
1107
|
return {
|
|
@@ -1094,6 +1138,12 @@ var FullCalendar = (function (exports) {
|
|
|
1094
1138
|
function asRoughDays(dur) {
|
|
1095
1139
|
return asRoughMs(dur) / 864e5;
|
|
1096
1140
|
}
|
|
1141
|
+
function asRoughMinutes(dur) {
|
|
1142
|
+
return asRoughMs(dur) / (1000 * 60);
|
|
1143
|
+
}
|
|
1144
|
+
function asRoughSeconds(dur) {
|
|
1145
|
+
return asRoughMs(dur) / 1000;
|
|
1146
|
+
}
|
|
1097
1147
|
function asRoughMs(dur) {
|
|
1098
1148
|
return dur.years * (365 * 864e5) +
|
|
1099
1149
|
dur.months * (30 * 864e5) +
|
|
@@ -2106,6 +2156,7 @@ var FullCalendar = (function (exports) {
|
|
|
2106
2156
|
// (can't be part of plugin system b/c must be provided at runtime)
|
|
2107
2157
|
handleCustomRendering: identity,
|
|
2108
2158
|
customRenderingMetaMap: identity,
|
|
2159
|
+
customRenderingReplacesEl: Boolean,
|
|
2109
2160
|
};
|
|
2110
2161
|
// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.
|
|
2111
2162
|
// raw values.
|
|
@@ -2248,6 +2299,59 @@ var FullCalendar = (function (exports) {
|
|
|
2248
2299
|
return raw;
|
|
2249
2300
|
}
|
|
2250
2301
|
|
|
2302
|
+
/*
|
|
2303
|
+
NOTE: this can be a public API, especially createElement for hooks.
|
|
2304
|
+
See examples/typescript-scheduler/src/index.ts
|
|
2305
|
+
*/
|
|
2306
|
+
function flushSync(runBeforeFlush) {
|
|
2307
|
+
runBeforeFlush();
|
|
2308
|
+
let oldDebounceRendering = l$1.debounceRendering; // orig
|
|
2309
|
+
let callbackQ = [];
|
|
2310
|
+
function execCallbackSync(callback) {
|
|
2311
|
+
callbackQ.push(callback);
|
|
2312
|
+
}
|
|
2313
|
+
l$1.debounceRendering = execCallbackSync;
|
|
2314
|
+
P$1(h(FakeComponent, {}), document.createElement('div'));
|
|
2315
|
+
while (callbackQ.length) {
|
|
2316
|
+
callbackQ.shift()();
|
|
2317
|
+
}
|
|
2318
|
+
l$1.debounceRendering = oldDebounceRendering;
|
|
2319
|
+
}
|
|
2320
|
+
class FakeComponent extends d {
|
|
2321
|
+
render() { return h('div', {}); }
|
|
2322
|
+
componentDidMount() { this.setState({}); }
|
|
2323
|
+
}
|
|
2324
|
+
// TODO: use preact/compat instead?
|
|
2325
|
+
function createContext(defaultValue) {
|
|
2326
|
+
let ContextType = B$1(defaultValue);
|
|
2327
|
+
let origProvider = ContextType.Provider;
|
|
2328
|
+
ContextType.Provider = function () {
|
|
2329
|
+
let isNew = !this.getChildContext;
|
|
2330
|
+
let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
|
2331
|
+
if (isNew) {
|
|
2332
|
+
let subs = [];
|
|
2333
|
+
this.shouldComponentUpdate = (_props) => {
|
|
2334
|
+
if (this.props.value !== _props.value) {
|
|
2335
|
+
subs.forEach((c) => {
|
|
2336
|
+
c.context = _props.value;
|
|
2337
|
+
c.forceUpdate();
|
|
2338
|
+
});
|
|
2339
|
+
}
|
|
2340
|
+
};
|
|
2341
|
+
this.sub = (c) => {
|
|
2342
|
+
subs.push(c);
|
|
2343
|
+
let old = c.componentWillUnmount;
|
|
2344
|
+
c.componentWillUnmount = () => {
|
|
2345
|
+
subs.splice(subs.indexOf(c), 1);
|
|
2346
|
+
old && old.call(c);
|
|
2347
|
+
};
|
|
2348
|
+
};
|
|
2349
|
+
}
|
|
2350
|
+
return children;
|
|
2351
|
+
};
|
|
2352
|
+
return ContextType;
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2251
2355
|
class ScrollResponder {
|
|
2252
2356
|
constructor(execFunc, emitter, scrollTime, scrollTimeReset) {
|
|
2253
2357
|
this.execFunc = execFunc;
|
|
@@ -2365,6 +2469,11 @@ var FullCalendar = (function (exports) {
|
|
|
2365
2469
|
this.id = guid();
|
|
2366
2470
|
this.currentDomNodes = [];
|
|
2367
2471
|
this.queuedDomNodes = [];
|
|
2472
|
+
this.handleEl = (el) => {
|
|
2473
|
+
if (this.props.elRef) {
|
|
2474
|
+
setRef(this.props.elRef, el);
|
|
2475
|
+
}
|
|
2476
|
+
};
|
|
2368
2477
|
}
|
|
2369
2478
|
render() {
|
|
2370
2479
|
const { props, context } = this;
|
|
@@ -2373,7 +2482,12 @@ var FullCalendar = (function (exports) {
|
|
|
2373
2482
|
const attrs = buildElAttrs(props);
|
|
2374
2483
|
let innerContent;
|
|
2375
2484
|
let queuedDomNodes = [];
|
|
2376
|
-
if (
|
|
2485
|
+
if (hasCustomRenderingHandler(props.generatorName, options)) {
|
|
2486
|
+
if (options.customRenderingReplacesEl) {
|
|
2487
|
+
delete attrs.elRef; // because handleEl will be used
|
|
2488
|
+
}
|
|
2489
|
+
}
|
|
2490
|
+
else {
|
|
2377
2491
|
const customContent = typeof generator === 'function' ?
|
|
2378
2492
|
generator(renderProps, h) :
|
|
2379
2493
|
generator;
|
|
@@ -2398,7 +2512,7 @@ var FullCalendar = (function (exports) {
|
|
|
2398
2512
|
this.applyQueueudDomNodes();
|
|
2399
2513
|
this.triggerCustomRendering(true);
|
|
2400
2514
|
}
|
|
2401
|
-
componentDidUpdate(
|
|
2515
|
+
componentDidUpdate() {
|
|
2402
2516
|
this.applyQueueudDomNodes();
|
|
2403
2517
|
this.triggerCustomRendering(true);
|
|
2404
2518
|
}
|
|
@@ -2411,7 +2525,7 @@ var FullCalendar = (function (exports) {
|
|
|
2411
2525
|
if (handleCustomRendering) {
|
|
2412
2526
|
const customRenderingMeta = customRenderingMetaMap === null || customRenderingMetaMap === void 0 ? void 0 : customRenderingMetaMap[props.generatorName];
|
|
2413
2527
|
if (customRenderingMeta) {
|
|
2414
|
-
handleCustomRendering(Object.assign({ id: this.id, isActive, containerEl: this.base, generatorMeta: customRenderingMeta }, props));
|
|
2528
|
+
handleCustomRendering(Object.assign({ id: this.id, isActive, containerEl: this.base, reportNewContainerEl: this.handleEl, generatorMeta: customRenderingMeta }, props));
|
|
2415
2529
|
}
|
|
2416
2530
|
}
|
|
2417
2531
|
}
|
|
@@ -3541,12 +3655,17 @@ var FullCalendar = (function (exports) {
|
|
|
3541
3655
|
rawEvents,
|
|
3542
3656
|
});
|
|
3543
3657
|
}, (error) => {
|
|
3544
|
-
|
|
3658
|
+
let errorHandled = false;
|
|
3545
3659
|
if (options.eventSourceFailure) {
|
|
3546
3660
|
options.eventSourceFailure.call(calendarApi, error);
|
|
3661
|
+
errorHandled = true;
|
|
3547
3662
|
}
|
|
3548
3663
|
if (eventSource.failure) {
|
|
3549
3664
|
eventSource.failure(error);
|
|
3665
|
+
errorHandled = true;
|
|
3666
|
+
}
|
|
3667
|
+
if (!errorHandled) {
|
|
3668
|
+
console.warn(error.message, error);
|
|
3550
3669
|
}
|
|
3551
3670
|
context.dispatch({
|
|
3552
3671
|
type: 'RECEIVE_EVENT_ERROR',
|
|
@@ -4651,26 +4770,26 @@ var FullCalendar = (function (exports) {
|
|
|
4651
4770
|
};
|
|
4652
4771
|
}
|
|
4653
4772
|
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4773
|
+
/*
|
|
4774
|
+
given a function that resolves a result asynchronously.
|
|
4775
|
+
the function can either call passed-in success and failure callbacks,
|
|
4776
|
+
or it can return a promise.
|
|
4777
|
+
if you need to pass additional params to func, bind them first.
|
|
4778
|
+
*/
|
|
4779
|
+
function unpromisify(func, normalizedSuccessCallback, normalizedFailureCallback) {
|
|
4659
4780
|
// guard against success/failure callbacks being called more than once
|
|
4660
4781
|
// and guard against a promise AND callback being used together.
|
|
4661
4782
|
let isResolved = false;
|
|
4662
|
-
let wrappedSuccess = function () {
|
|
4783
|
+
let wrappedSuccess = function (res) {
|
|
4663
4784
|
if (!isResolved) {
|
|
4664
4785
|
isResolved = true;
|
|
4665
|
-
|
|
4786
|
+
normalizedSuccessCallback(res);
|
|
4666
4787
|
}
|
|
4667
4788
|
};
|
|
4668
|
-
let wrappedFailure = function () {
|
|
4789
|
+
let wrappedFailure = function (error) {
|
|
4669
4790
|
if (!isResolved) {
|
|
4670
4791
|
isResolved = true;
|
|
4671
|
-
|
|
4672
|
-
failure.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
|
4673
|
-
}
|
|
4792
|
+
normalizedFailureCallback(error);
|
|
4674
4793
|
}
|
|
4675
4794
|
};
|
|
4676
4795
|
let res = func(wrappedSuccess, wrappedFailure);
|
|
@@ -5434,6 +5553,14 @@ var FullCalendar = (function (exports) {
|
|
|
5434
5553
|
}
|
|
5435
5554
|
return false;
|
|
5436
5555
|
}
|
|
5556
|
+
function translateRect(rect, deltaX, deltaY) {
|
|
5557
|
+
return {
|
|
5558
|
+
left: rect.left + deltaX,
|
|
5559
|
+
right: rect.right + deltaX,
|
|
5560
|
+
top: rect.top + deltaY,
|
|
5561
|
+
bottom: rect.bottom + deltaY,
|
|
5562
|
+
};
|
|
5563
|
+
}
|
|
5437
5564
|
// Returns a new point that will have been moved to reside within the given rectangle
|
|
5438
5565
|
function constrainPoint(point, rect) {
|
|
5439
5566
|
return {
|
|
@@ -5619,6 +5746,28 @@ var FullCalendar = (function (exports) {
|
|
|
5619
5746
|
}
|
|
5620
5747
|
return classNames;
|
|
5621
5748
|
}
|
|
5749
|
+
function getSlotClassNames(meta, theme) {
|
|
5750
|
+
let classNames = [
|
|
5751
|
+
'fc-slot',
|
|
5752
|
+
`fc-slot-${DAY_IDS[meta.dow]}`,
|
|
5753
|
+
];
|
|
5754
|
+
if (meta.isDisabled) {
|
|
5755
|
+
classNames.push('fc-slot-disabled');
|
|
5756
|
+
}
|
|
5757
|
+
else {
|
|
5758
|
+
if (meta.isToday) {
|
|
5759
|
+
classNames.push('fc-slot-today');
|
|
5760
|
+
classNames.push(theme.getClass('today'));
|
|
5761
|
+
}
|
|
5762
|
+
if (meta.isPast) {
|
|
5763
|
+
classNames.push('fc-slot-past');
|
|
5764
|
+
}
|
|
5765
|
+
if (meta.isFuture) {
|
|
5766
|
+
classNames.push('fc-slot-future');
|
|
5767
|
+
}
|
|
5768
|
+
}
|
|
5769
|
+
return classNames;
|
|
5770
|
+
}
|
|
5622
5771
|
|
|
5623
5772
|
const DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });
|
|
5624
5773
|
const WEEK_FORMAT = createFormatter({ week: 'long' });
|
|
@@ -5986,6 +6135,12 @@ var FullCalendar = (function (exports) {
|
|
|
5986
6135
|
}
|
|
5987
6136
|
}
|
|
5988
6137
|
|
|
6138
|
+
class NamedTimeZoneImpl {
|
|
6139
|
+
constructor(timeZoneName) {
|
|
6140
|
+
this.timeZoneName = timeZoneName;
|
|
6141
|
+
}
|
|
6142
|
+
}
|
|
6143
|
+
|
|
5989
6144
|
class SegHierarchy {
|
|
5990
6145
|
constructor() {
|
|
5991
6146
|
// settings
|
|
@@ -7272,7 +7427,12 @@ var FullCalendar = (function (exports) {
|
|
|
7272
7427
|
class EventContainer extends BaseComponent {
|
|
7273
7428
|
constructor() {
|
|
7274
7429
|
super(...arguments);
|
|
7275
|
-
this.
|
|
7430
|
+
this.handleEl = (el) => {
|
|
7431
|
+
if (el) {
|
|
7432
|
+
setElSeg(el, this.props.seg);
|
|
7433
|
+
}
|
|
7434
|
+
// TODO: when null, should unset to avoid memory leaks?
|
|
7435
|
+
};
|
|
7276
7436
|
}
|
|
7277
7437
|
render() {
|
|
7278
7438
|
const { props, context } = this;
|
|
@@ -7300,15 +7460,12 @@ var FullCalendar = (function (exports) {
|
|
|
7300
7460
|
isDragging: Boolean(props.isDragging),
|
|
7301
7461
|
isResizing: Boolean(props.isResizing),
|
|
7302
7462
|
};
|
|
7303
|
-
return (h(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.
|
|
7463
|
+
return (h(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.handleEl, elClasses: [
|
|
7304
7464
|
...getEventClassNames(renderProps),
|
|
7305
7465
|
...seg.eventRange.ui.classNames,
|
|
7306
7466
|
...(props.elClasses || []),
|
|
7307
7467
|
], renderProps: renderProps, generatorName: "eventContent", generator: options.eventContent || props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount })));
|
|
7308
7468
|
}
|
|
7309
|
-
componentDidMount() {
|
|
7310
|
-
setElSeg(this.elRef.current, this.props.seg);
|
|
7311
|
-
}
|
|
7312
7469
|
}
|
|
7313
7470
|
|
|
7314
7471
|
// should not be a purecomponent
|
|
@@ -7650,6 +7807,242 @@ var FullCalendar = (function (exports) {
|
|
|
7650
7807
|
return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;
|
|
7651
7808
|
}
|
|
7652
7809
|
|
|
7810
|
+
class Store {
|
|
7811
|
+
constructor() {
|
|
7812
|
+
this.handlers = [];
|
|
7813
|
+
}
|
|
7814
|
+
set(value) {
|
|
7815
|
+
this.currentValue = value;
|
|
7816
|
+
for (let handler of this.handlers) {
|
|
7817
|
+
handler(value);
|
|
7818
|
+
}
|
|
7819
|
+
}
|
|
7820
|
+
subscribe(handler) {
|
|
7821
|
+
this.handlers.push(handler);
|
|
7822
|
+
if (this.currentValue !== undefined) {
|
|
7823
|
+
handler(this.currentValue);
|
|
7824
|
+
}
|
|
7825
|
+
}
|
|
7826
|
+
}
|
|
7827
|
+
|
|
7828
|
+
/*
|
|
7829
|
+
Subscribers will get a LIST of CustomRenderings
|
|
7830
|
+
*/
|
|
7831
|
+
class CustomRenderingStore extends Store {
|
|
7832
|
+
constructor() {
|
|
7833
|
+
super(...arguments);
|
|
7834
|
+
this.map = new Map();
|
|
7835
|
+
}
|
|
7836
|
+
// for consistent order
|
|
7837
|
+
handle(customRendering) {
|
|
7838
|
+
const { map } = this;
|
|
7839
|
+
let updated = false;
|
|
7840
|
+
if (customRendering.isActive) {
|
|
7841
|
+
map.set(customRendering.id, customRendering);
|
|
7842
|
+
updated = true;
|
|
7843
|
+
}
|
|
7844
|
+
else if (map.has(customRendering.id)) {
|
|
7845
|
+
map.delete(customRendering.id);
|
|
7846
|
+
updated = true;
|
|
7847
|
+
}
|
|
7848
|
+
if (updated) {
|
|
7849
|
+
this.set(map);
|
|
7850
|
+
}
|
|
7851
|
+
}
|
|
7852
|
+
}
|
|
7853
|
+
|
|
7854
|
+
var internal = {
|
|
7855
|
+
__proto__: null,
|
|
7856
|
+
BASE_OPTION_DEFAULTS: BASE_OPTION_DEFAULTS,
|
|
7857
|
+
BaseComponent: BaseComponent,
|
|
7858
|
+
BgEvent: BgEvent,
|
|
7859
|
+
CalendarImpl: CalendarImpl,
|
|
7860
|
+
CalendarRoot: CalendarRoot,
|
|
7861
|
+
ContentContainer: ContentContainer,
|
|
7862
|
+
CustomRenderingStore: CustomRenderingStore,
|
|
7863
|
+
DateComponent: DateComponent,
|
|
7864
|
+
DateEnv: DateEnv,
|
|
7865
|
+
DateProfileGenerator: DateProfileGenerator,
|
|
7866
|
+
DayCellContainer: DayCellContainer,
|
|
7867
|
+
DayHeader: DayHeader,
|
|
7868
|
+
DaySeriesModel: DaySeriesModel,
|
|
7869
|
+
DayTableModel: DayTableModel,
|
|
7870
|
+
DelayedRunner: DelayedRunner,
|
|
7871
|
+
ElementDragging: ElementDragging,
|
|
7872
|
+
ElementScrollController: ElementScrollController,
|
|
7873
|
+
Emitter: Emitter,
|
|
7874
|
+
EventContainer: EventContainer,
|
|
7875
|
+
EventImpl: EventImpl,
|
|
7876
|
+
Interaction: Interaction,
|
|
7877
|
+
MoreLinkContainer: MoreLinkContainer,
|
|
7878
|
+
NamedTimeZoneImpl: NamedTimeZoneImpl,
|
|
7879
|
+
NowIndicatorContainer: NowIndicatorContainer,
|
|
7880
|
+
NowTimer: NowTimer,
|
|
7881
|
+
PositionCache: PositionCache,
|
|
7882
|
+
RefMap: RefMap,
|
|
7883
|
+
ScrollController: ScrollController,
|
|
7884
|
+
ScrollResponder: ScrollResponder,
|
|
7885
|
+
Scroller: Scroller,
|
|
7886
|
+
SegHierarchy: SegHierarchy,
|
|
7887
|
+
SimpleScrollGrid: SimpleScrollGrid,
|
|
7888
|
+
Slicer: Slicer,
|
|
7889
|
+
Splitter: Splitter,
|
|
7890
|
+
StandardEvent: StandardEvent,
|
|
7891
|
+
TableDateCell: TableDateCell,
|
|
7892
|
+
TableDowCell: TableDowCell,
|
|
7893
|
+
Theme: Theme,
|
|
7894
|
+
ViewContainer: ViewContainer$1,
|
|
7895
|
+
ViewContextType: ViewContextType,
|
|
7896
|
+
WeekNumberContainer: WeekNumberContainer,
|
|
7897
|
+
WindowScrollController: WindowScrollController,
|
|
7898
|
+
addDays: addDays,
|
|
7899
|
+
addDurations: addDurations,
|
|
7900
|
+
addMs: addMs,
|
|
7901
|
+
addWeeks: addWeeks,
|
|
7902
|
+
allowContextMenu: allowContextMenu,
|
|
7903
|
+
allowSelection: allowSelection,
|
|
7904
|
+
applyMutationToEventStore: applyMutationToEventStore,
|
|
7905
|
+
applyStyle: applyStyle,
|
|
7906
|
+
asCleanDays: asCleanDays,
|
|
7907
|
+
asRoughMinutes: asRoughMinutes,
|
|
7908
|
+
asRoughMs: asRoughMs,
|
|
7909
|
+
asRoughSeconds: asRoughSeconds,
|
|
7910
|
+
binarySearch: binarySearch,
|
|
7911
|
+
buildElAttrs: buildElAttrs,
|
|
7912
|
+
buildEntryKey: buildEntryKey,
|
|
7913
|
+
buildEventApis: buildEventApis,
|
|
7914
|
+
buildEventRangeKey: buildEventRangeKey,
|
|
7915
|
+
buildIsoString: buildIsoString,
|
|
7916
|
+
buildNavLinkAttrs: buildNavLinkAttrs,
|
|
7917
|
+
buildSegTimeText: buildSegTimeText,
|
|
7918
|
+
collectFromHash: collectFromHash,
|
|
7919
|
+
combineEventUis: combineEventUis,
|
|
7920
|
+
compareByFieldSpecs: compareByFieldSpecs,
|
|
7921
|
+
compareNumbers: compareNumbers,
|
|
7922
|
+
compareObjs: compareObjs,
|
|
7923
|
+
computeEarliestSegStart: computeEarliestSegStart,
|
|
7924
|
+
computeEdges: computeEdges,
|
|
7925
|
+
computeFallbackHeaderFormat: computeFallbackHeaderFormat,
|
|
7926
|
+
computeInnerRect: computeInnerRect,
|
|
7927
|
+
computeRect: computeRect,
|
|
7928
|
+
computeShrinkWidth: computeShrinkWidth,
|
|
7929
|
+
computeVisibleDayRange: computeVisibleDayRange,
|
|
7930
|
+
config: config,
|
|
7931
|
+
constrainPoint: constrainPoint,
|
|
7932
|
+
createDuration: createDuration,
|
|
7933
|
+
createEmptyEventStore: createEmptyEventStore,
|
|
7934
|
+
createEventInstance: createEventInstance,
|
|
7935
|
+
createEventUi: createEventUi,
|
|
7936
|
+
createFormatter: createFormatter,
|
|
7937
|
+
diffDates: diffDates,
|
|
7938
|
+
diffDayAndTime: diffDayAndTime,
|
|
7939
|
+
diffDays: diffDays,
|
|
7940
|
+
diffPoints: diffPoints,
|
|
7941
|
+
diffWeeks: diffWeeks,
|
|
7942
|
+
diffWholeDays: diffWholeDays,
|
|
7943
|
+
diffWholeWeeks: diffWholeWeeks,
|
|
7944
|
+
disableCursor: disableCursor,
|
|
7945
|
+
elementClosest: elementClosest,
|
|
7946
|
+
elementMatches: elementMatches,
|
|
7947
|
+
enableCursor: enableCursor,
|
|
7948
|
+
eventTupleToStore: eventTupleToStore,
|
|
7949
|
+
filterHash: filterHash,
|
|
7950
|
+
findDirectChildren: findDirectChildren,
|
|
7951
|
+
findElements: findElements,
|
|
7952
|
+
flexibleCompare: flexibleCompare,
|
|
7953
|
+
formatDayString: formatDayString,
|
|
7954
|
+
formatIsoTimeString: formatIsoTimeString,
|
|
7955
|
+
getAllowYScrolling: getAllowYScrolling,
|
|
7956
|
+
getCanVGrowWithinCell: getCanVGrowWithinCell,
|
|
7957
|
+
getClippingParents: getClippingParents,
|
|
7958
|
+
getDateMeta: getDateMeta,
|
|
7959
|
+
getDayClassNames: getDayClassNames,
|
|
7960
|
+
getDefaultEventEnd: getDefaultEventEnd,
|
|
7961
|
+
getElRoot: getElRoot,
|
|
7962
|
+
getElSeg: getElSeg,
|
|
7963
|
+
getEntrySpanEnd: getEntrySpanEnd,
|
|
7964
|
+
getEventTargetViaRoot: getEventTargetViaRoot,
|
|
7965
|
+
getIsRtlScrollbarOnLeft: getIsRtlScrollbarOnLeft,
|
|
7966
|
+
getRectCenter: getRectCenter,
|
|
7967
|
+
getRelevantEvents: getRelevantEvents,
|
|
7968
|
+
getScrollGridClassNames: getScrollGridClassNames,
|
|
7969
|
+
getScrollbarWidths: getScrollbarWidths,
|
|
7970
|
+
getSectionClassNames: getSectionClassNames,
|
|
7971
|
+
getSectionHasLiquidHeight: getSectionHasLiquidHeight,
|
|
7972
|
+
getSegAnchorAttrs: getSegAnchorAttrs,
|
|
7973
|
+
getSegMeta: getSegMeta,
|
|
7974
|
+
getSlotClassNames: getSlotClassNames,
|
|
7975
|
+
getStickyFooterScrollbar: getStickyFooterScrollbar,
|
|
7976
|
+
getStickyHeaderDates: getStickyHeaderDates,
|
|
7977
|
+
getUniqueDomId: getUniqueDomId,
|
|
7978
|
+
globalLocales: globalLocales,
|
|
7979
|
+
globalPlugins: globalPlugins,
|
|
7980
|
+
greatestDurationDenominator: greatestDurationDenominator,
|
|
7981
|
+
groupIntersectingEntries: groupIntersectingEntries,
|
|
7982
|
+
guid: guid,
|
|
7983
|
+
hasBgRendering: hasBgRendering,
|
|
7984
|
+
hasCustomDayCellContent: hasCustomDayCellContent,
|
|
7985
|
+
hasShrinkWidth: hasShrinkWidth,
|
|
7986
|
+
identity: identity,
|
|
7987
|
+
injectStyles: injectStyles,
|
|
7988
|
+
interactionSettingsStore: interactionSettingsStore,
|
|
7989
|
+
interactionSettingsToStore: interactionSettingsToStore,
|
|
7990
|
+
intersectRanges: intersectRanges,
|
|
7991
|
+
intersectRects: intersectRects,
|
|
7992
|
+
intersectSpans: intersectSpans,
|
|
7993
|
+
isArraysEqual: isArraysEqual,
|
|
7994
|
+
isColPropsEqual: isColPropsEqual,
|
|
7995
|
+
isDateSelectionValid: isDateSelectionValid,
|
|
7996
|
+
isDateSpansEqual: isDateSpansEqual,
|
|
7997
|
+
isInt: isInt,
|
|
7998
|
+
isInteractionValid: isInteractionValid,
|
|
7999
|
+
isMultiDayRange: isMultiDayRange,
|
|
8000
|
+
isPropsEqual: isPropsEqual,
|
|
8001
|
+
isPropsValid: isPropsValid,
|
|
8002
|
+
isValidDate: isValidDate,
|
|
8003
|
+
mapHash: mapHash,
|
|
8004
|
+
memoize: memoize,
|
|
8005
|
+
memoizeArraylike: memoizeArraylike,
|
|
8006
|
+
memoizeHashlike: memoizeHashlike,
|
|
8007
|
+
memoizeObjArg: memoizeObjArg,
|
|
8008
|
+
mergeEventStores: mergeEventStores,
|
|
8009
|
+
multiplyDuration: multiplyDuration,
|
|
8010
|
+
padStart: padStart,
|
|
8011
|
+
parseBusinessHours: parseBusinessHours,
|
|
8012
|
+
parseClassNames: parseClassNames,
|
|
8013
|
+
parseDragMeta: parseDragMeta,
|
|
8014
|
+
parseEventDef: parseEventDef,
|
|
8015
|
+
parseFieldSpecs: parseFieldSpecs,
|
|
8016
|
+
parseMarker: parse,
|
|
8017
|
+
pointInsideRect: pointInsideRect,
|
|
8018
|
+
preventContextMenu: preventContextMenu,
|
|
8019
|
+
preventDefault: preventDefault,
|
|
8020
|
+
preventSelection: preventSelection,
|
|
8021
|
+
rangeContainsMarker: rangeContainsMarker,
|
|
8022
|
+
rangeContainsRange: rangeContainsRange,
|
|
8023
|
+
rangesEqual: rangesEqual,
|
|
8024
|
+
rangesIntersect: rangesIntersect,
|
|
8025
|
+
refineEventDef: refineEventDef,
|
|
8026
|
+
refineProps: refineProps,
|
|
8027
|
+
removeElement: removeElement,
|
|
8028
|
+
removeExact: removeExact,
|
|
8029
|
+
renderChunkContent: renderChunkContent,
|
|
8030
|
+
renderFill: renderFill,
|
|
8031
|
+
renderMicroColGroup: renderMicroColGroup,
|
|
8032
|
+
renderScrollShim: renderScrollShim,
|
|
8033
|
+
requestJson: requestJson,
|
|
8034
|
+
sanitizeShrinkWidth: sanitizeShrinkWidth,
|
|
8035
|
+
setRef: setRef,
|
|
8036
|
+
sliceEventStore: sliceEventStore,
|
|
8037
|
+
sortEventSegs: sortEventSegs,
|
|
8038
|
+
startOfDay: startOfDay,
|
|
8039
|
+
translateRect: translateRect,
|
|
8040
|
+
triggerDateSelect: triggerDateSelect,
|
|
8041
|
+
unpromisify: unpromisify,
|
|
8042
|
+
whenTransitionDone: whenTransitionDone,
|
|
8043
|
+
wholeDivideDurations: wholeDivideDurations
|
|
8044
|
+
};
|
|
8045
|
+
|
|
7653
8046
|
var css_248z$3 = "\n/*\nfor css vars only.\nthese values are automatically known in all stylesheets.\nthe :root statement itself is only included in the common stylesheet.\nthis file is not processed by postcss when imported into the postcss-custom-properties plugin,\nso only write standard css!\n\nNOTE: for old browsers, will need to restart watcher after changing a variable\n*/\n\n:root {\n --fc-small-font-size: .85em;\n --fc-page-bg-color: #fff;\n --fc-neutral-bg-color: rgba(208, 208, 208, 0.3);\n --fc-neutral-text-color: #808080;\n --fc-border-color: #ddd;\n\n --fc-button-text-color: #fff;\n --fc-button-bg-color: #2C3E50;\n --fc-button-border-color: #2C3E50;\n --fc-button-hover-bg-color: #1e2b37;\n --fc-button-hover-border-color: #1a252f;\n --fc-button-active-bg-color: #1a252f;\n --fc-button-active-border-color: #151e27;\n\n --fc-event-bg-color: #3788d8;\n --fc-event-border-color: #3788d8;\n --fc-event-text-color: #fff;\n --fc-event-selected-overlay-color: rgba(0, 0, 0, 0.25);\n\n --fc-more-link-bg-color: #d0d0d0;\n --fc-more-link-text-color: inherit;\n\n --fc-event-resizer-thickness: 8px;\n --fc-event-resizer-dot-total-width: 8px;\n --fc-event-resizer-dot-border-width: 1px;\n\n --fc-non-business-color: rgba(215, 215, 215, 0.3);\n --fc-bg-event-color: rgb(143, 223, 130);\n --fc-bg-event-opacity: 0.3;\n --fc-highlight-color: rgba(188, 232, 241, 0.3);\n --fc-today-bg-color: rgba(255, 220, 40, 0.15);\n --fc-now-indicator-color: red;\n}\n\n/* classes attached to <body> */\n\n/* TODO: make fc-event selector work when calender in shadow DOM */\n\n.fc-not-allowed,\n.fc-not-allowed .fc-event { /* override events' custom cursors */\n cursor: not-allowed;\n}\n\n/* TODO: not attached to body. attached to specific els. move */\n\n.fc-unselectable {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n.fc {\n /* layout of immediate children */\n display: flex;\n flex-direction: column;\n\n font-size: 1em\n}\n.fc,\n .fc *,\n .fc *:before,\n .fc *:after {\n box-sizing: border-box;\n }\n.fc table {\n border-collapse: collapse;\n border-spacing: 0;\n font-size: 1em; /* normalize cross-browser */\n }\n.fc th {\n text-align: center;\n }\n.fc th,\n .fc td {\n vertical-align: top;\n padding: 0;\n }\n.fc a[data-navlink] {\n cursor: pointer;\n }\n.fc a[data-navlink]:hover {\n text-decoration: underline;\n }\n.fc-direction-ltr {\n direction: ltr;\n text-align: left;\n}\n.fc-direction-rtl {\n direction: rtl;\n text-align: right;\n}\n.fc-theme-standard td,\n .fc-theme-standard th {\n border: 1px solid var(--fc-border-color);\n }\n/* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */\n/* inner-wrappers are responsible for being absolute */\n/* TODO: best place for this? */\n.fc-liquid-hack td,\n .fc-liquid-hack th {\n position: relative;\n }\n\n@font-face {\n font-family: 'fcicons';\n src: url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format('truetype');\n font-weight: normal;\n font-style: normal;\n}\n\n.fc-icon {\n /* added for fc */\n display: inline-block;\n width: 1em;\n height: 1em;\n text-align: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'fcicons' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.fc-icon-chevron-left:before {\n content: \"\\e900\";\n}\n\n.fc-icon-chevron-right:before {\n content: \"\\e901\";\n}\n\n.fc-icon-chevrons-left:before {\n content: \"\\e902\";\n}\n\n.fc-icon-chevrons-right:before {\n content: \"\\e903\";\n}\n\n.fc-icon-minus-square:before {\n content: \"\\e904\";\n}\n\n.fc-icon-plus-square:before {\n content: \"\\e905\";\n}\n\n.fc-icon-x:before {\n content: \"\\e906\";\n}\n/*\nLots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css\n\nThese styles only apply when the standard-theme is activated.\nWhen it's NOT activated, the fc-button classes won't even be in the DOM.\n*/\n.fc {\n\n /* reset */\n\n}\n.fc .fc-button {\n border-radius: 0;\n overflow: visible;\n text-transform: none;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n.fc .fc-button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n.fc .fc-button {\n -webkit-appearance: button;\n }\n.fc .fc-button:not(:disabled) {\n cursor: pointer;\n }\n.fc .fc-button::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n.fc {\n\n /* theme */\n\n}\n.fc .fc-button {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.4em 0.65em;\n font-size: 1em;\n line-height: 1.5;\n border-radius: 0.25em;\n }\n.fc .fc-button:hover {\n text-decoration: none;\n }\n.fc .fc-button:focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n }\n.fc .fc-button:disabled {\n opacity: 0.65;\n }\n.fc {\n\n /* \"primary\" coloring */\n\n}\n.fc .fc-button-primary {\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-bg-color);\n border-color: var(--fc-button-border-color);\n }\n.fc .fc-button-primary:hover {\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-hover-bg-color);\n border-color: var(--fc-button-hover-border-color);\n }\n.fc .fc-button-primary:disabled { /* not DRY */\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-bg-color);\n border-color: var(--fc-button-border-color); /* overrides :hover */\n }\n.fc .fc-button-primary:focus {\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\n }\n.fc .fc-button-primary:not(:disabled):active,\n .fc .fc-button-primary:not(:disabled).fc-button-active {\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-active-bg-color);\n border-color: var(--fc-button-active-border-color);\n }\n.fc .fc-button-primary:not(:disabled):active:focus,\n .fc .fc-button-primary:not(:disabled).fc-button-active:focus {\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\n }\n.fc {\n\n /* icons within buttons */\n\n}\n.fc .fc-button .fc-icon {\n vertical-align: middle;\n font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */\n }\n.fc .fc-button-group {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n }\n.fc .fc-button-group > .fc-button {\n position: relative;\n flex: 1 1 auto;\n }\n.fc .fc-button-group > .fc-button:hover {\n z-index: 1;\n }\n.fc .fc-button-group > .fc-button:focus,\n .fc .fc-button-group > .fc-button:active,\n .fc .fc-button-group > .fc-button.fc-button-active {\n z-index: 1;\n }\n.fc-direction-ltr .fc-button-group > .fc-button:not(:first-child) {\n margin-left: -1px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n.fc-direction-ltr .fc-button-group > .fc-button:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n.fc-direction-rtl .fc-button-group > .fc-button:not(:first-child) {\n margin-right: -1px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n.fc-direction-rtl .fc-button-group > .fc-button:not(:last-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n.fc .fc-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n.fc .fc-toolbar.fc-header-toolbar {\n margin-bottom: 1.5em;\n }\n.fc .fc-toolbar.fc-footer-toolbar {\n margin-top: 1.5em;\n }\n.fc .fc-toolbar-title {\n font-size: 1.75em;\n margin: 0;\n }\n.fc-direction-ltr .fc-toolbar > * > :not(:first-child) {\n margin-left: .75em; /* space between */\n }\n.fc-direction-rtl .fc-toolbar > * > :not(:first-child) {\n margin-right: .75em; /* space between */\n }\n.fc-direction-rtl .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */\n flex-direction: row-reverse;\n }\n.fc .fc-scroller {\n -webkit-overflow-scrolling: touch;\n position: relative; /* for abs-positioned elements within */\n }\n.fc .fc-scroller-liquid {\n height: 100%;\n }\n.fc .fc-scroller-liquid-absolute {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n }\n.fc .fc-scroller-harness {\n position: relative;\n overflow: hidden;\n direction: ltr;\n /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */\n /* TODO: demonstrate in codepen */\n }\n.fc .fc-scroller-harness-liquid {\n height: 100%;\n }\n.fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */\n direction: rtl;\n }\n.fc-theme-standard .fc-scrollgrid {\n border: 1px solid var(--fc-border-color); /* bootstrap does this. match */\n }\n.fc .fc-scrollgrid,\n .fc .fc-scrollgrid table { /* all tables (self included) */\n width: 100%; /* because tables don't normally do this */\n table-layout: fixed;\n }\n.fc .fc-scrollgrid table { /* inner tables */\n border-top-style: hidden;\n border-left-style: hidden;\n border-right-style: hidden;\n }\n.fc .fc-scrollgrid {\n\n border-collapse: separate;\n border-right-width: 0;\n border-bottom-width: 0;\n\n }\n.fc .fc-scrollgrid-liquid {\n height: 100%;\n }\n.fc .fc-scrollgrid-section { /* a <tr> */\n height: 1px /* better than 0, for firefox */\n\n }\n.fc .fc-scrollgrid-section > td {\n height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */\n }\n.fc .fc-scrollgrid-section table {\n height: 1px;\n /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */\n /* serves as a min-height. harmless */\n }\n.fc .fc-scrollgrid-section-liquid > td {\n height: 100%; /* better than `auto`, for firefox */\n }\n.fc .fc-scrollgrid-section > * {\n border-top-width: 0;\n border-left-width: 0;\n }\n.fc .fc-scrollgrid-section-header > *,\n .fc .fc-scrollgrid-section-footer > * {\n border-bottom-width: 0;\n }\n.fc .fc-scrollgrid-section-body table,\n .fc .fc-scrollgrid-section-footer table {\n border-bottom-style: hidden; /* head keeps its bottom border tho */\n }\n.fc {\n\n /* stickiness */\n\n}\n.fc .fc-scrollgrid-section-sticky > * {\n background: var(--fc-page-bg-color);\n position: sticky;\n z-index: 3; /* TODO: var */\n /* TODO: box-shadow when sticking */\n }\n.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {\n top: 0; /* because border-sharing causes a gap at the top */\n /* TODO: give safari -1. has bug */\n }\n.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {\n bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */\n }\n.fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */\n height: 1px; /* needs height to create scrollbars */\n margin-bottom: -1px;\n }\n.fc-sticky { /* no .fc wrap because used as child of body */\n position: sticky;\n}\n.fc .fc-view-harness {\n flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */\n position: relative;\n }\n.fc {\n\n /* when the harness controls the height, make the view liquid */\n\n}\n.fc .fc-view-harness-active > .fc-view {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc .fc-col-header-cell-cushion {\n display: inline-block; /* x-browser for when sticky (when multi-tier header) */\n padding: 2px 4px;\n }\n.fc .fc-bg-event,\n .fc .fc-non-business,\n .fc .fc-highlight {\n /* will always have a harness with position:relative/absolute, so absolutely expand */\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n.fc .fc-non-business {\n background: var(--fc-non-business-color);\n }\n.fc .fc-bg-event {\n background: var(--fc-bg-event-color);\n opacity: var(--fc-bg-event-opacity)\n }\n.fc .fc-bg-event .fc-event-title {\n margin: .5em;\n font-size: var(--fc-small-font-size);\n font-style: italic;\n }\n.fc .fc-highlight {\n background: var(--fc-highlight-color);\n }\n.fc .fc-cell-shaded,\n .fc .fc-day-disabled {\n background: var(--fc-neutral-bg-color);\n }\n/* link resets */\n/* ---------------------------------------------------------------------------------------------------- */\na.fc-event,\na.fc-event:hover {\n text-decoration: none;\n}\n/* cursor */\n.fc-event[href],\n.fc-event.fc-event-draggable {\n cursor: pointer;\n}\n/* event text content */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event .fc-event-main {\n position: relative;\n z-index: 2;\n }\n/* dragging */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event-dragging:not(.fc-event-selected) { /* MOUSE */\n opacity: 0.75;\n }\n.fc-event-dragging.fc-event-selected { /* TOUCH */\n box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);\n }\n/* resizing */\n/* ---------------------------------------------------------------------------------------------------- */\n/* (subclasses should hone positioning for touch and non-touch) */\n.fc-event .fc-event-resizer {\n display: none;\n position: absolute;\n z-index: 4;\n }\n.fc-event:hover, /* MOUSE */\n.fc-event-selected { /* TOUCH */\n\n}\n.fc-event:hover .fc-event-resizer, .fc-event-selected .fc-event-resizer {\n display: block;\n }\n.fc-event-selected .fc-event-resizer {\n border-radius: calc(var(--fc-event-resizer-dot-total-width) / 2);\n border-width: var(--fc-event-resizer-dot-border-width);\n width: var(--fc-event-resizer-dot-total-width);\n height: var(--fc-event-resizer-dot-total-width);\n border-style: solid;\n border-color: inherit;\n background: var(--fc-page-bg-color)\n\n /* expand hit area */\n\n }\n.fc-event-selected .fc-event-resizer:before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n right: -20px;\n bottom: -20px;\n }\n/* selecting (always TOUCH) */\n/* OR, focused by tab-index */\n/* (TODO: maybe not the best focus-styling for .fc-daygrid-dot-event) */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event-selected,\n.fc-event:focus {\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2)\n\n /* expand hit area (subclasses should expand) */\n\n}\n.fc-event-selected:before, .fc-event:focus:before {\n content: \"\";\n position: absolute;\n z-index: 3;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n.fc-event-selected,\n.fc-event:focus {\n\n /* dimmer effect */\n\n}\n.fc-event-selected:after, .fc-event:focus:after {\n content: \"\";\n background: var(--fc-event-selected-overlay-color);\n position: absolute;\n z-index: 1;\n\n /* assume there's a border on all sides. overcome it. */\n /* sometimes there's NOT a border, in which case the dimmer will go over */\n /* an adjacent border, which looks fine. */\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n }\n/*\nA HORIZONTAL event\n*/\n.fc-h-event { /* allowed to be top-level */\n display: block;\n border: 1px solid var(--fc-event-border-color);\n background-color: var(--fc-event-bg-color)\n\n}\n.fc-h-event .fc-event-main {\n color: var(--fc-event-text-color);\n }\n.fc-h-event .fc-event-main-frame {\n display: flex; /* for make fc-event-title-container expand */\n }\n.fc-h-event .fc-event-time {\n max-width: 100%; /* clip overflow on this element */\n overflow: hidden;\n }\n.fc-h-event .fc-event-title-container { /* serves as a container for the sticky cushion */\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n }\n.fc-h-event .fc-event-title {\n display: inline-block; /* need this to be sticky cross-browser */\n vertical-align: top; /* for not messing up line-height */\n left: 0; /* for sticky */\n right: 0; /* for sticky */\n max-width: 100%; /* clip overflow on this element */\n overflow: hidden;\n }\n.fc-h-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n/* adjust border and border-radius (if there is any) for non-start/end */\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left-width: 0;\n}\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right-width: 0;\n}\n/* resizers */\n.fc-h-event:not(.fc-event-selected) .fc-event-resizer {\n top: 0;\n bottom: 0;\n width: var(--fc-event-resizer-thickness);\n}\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end {\n cursor: w-resize;\n left: calc(-0.5 * var(--fc-event-resizer-thickness));\n}\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start {\n cursor: e-resize;\n right: calc(-0.5 * var(--fc-event-resizer-thickness));\n}\n/* resizers for TOUCH */\n.fc-h-event.fc-event-selected .fc-event-resizer {\n top: 50%;\n margin-top: calc(-0.5 * var(--fc-event-resizer-dot-total-width));\n}\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end {\n left: calc(-0.5 * var(--fc-event-resizer-dot-total-width));\n}\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start {\n right: calc(-0.5 * var(--fc-event-resizer-dot-total-width));\n}\n.fc .fc-popover {\n position: absolute;\n z-index: 9999;\n box-shadow: 0 2px 6px rgba(0,0,0,.15);\n }\n.fc .fc-popover-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 3px 4px;\n }\n.fc .fc-popover-title {\n margin: 0 2px;\n }\n.fc .fc-popover-close {\n cursor: pointer;\n opacity: 0.65;\n font-size: 1.1em;\n }\n.fc-theme-standard .fc-popover {\n border: 1px solid var(--fc-border-color);\n background: var(--fc-page-bg-color);\n }\n.fc-theme-standard .fc-popover-header {\n background: var(--fc-neutral-bg-color);\n }\n";
|
|
7654
8047
|
injectStyles(css_248z$3);
|
|
7655
8048
|
|
|
@@ -9178,7 +9571,7 @@ var FullCalendar = (function (exports) {
|
|
|
9178
9571
|
return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
|
|
9179
9572
|
}
|
|
9180
9573
|
|
|
9181
|
-
const version = '6.0.0-beta.
|
|
9574
|
+
const version = '6.0.0-beta.4';
|
|
9182
9575
|
|
|
9183
9576
|
config.touchMouseIgnoreWait = 500;
|
|
9184
9577
|
let ignoreMouseDepth = 0;
|
|
@@ -11275,87 +11668,6 @@ var FullCalendar = (function (exports) {
|
|
|
11275
11668
|
listenerRefiners: LISTENER_REFINERS,
|
|
11276
11669
|
});
|
|
11277
11670
|
|
|
11278
|
-
/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.
|
|
11279
|
-
----------------------------------------------------------------------------------------------------------------------*/
|
|
11280
|
-
// It is a manager for a Table subcomponent, which does most of the heavy lifting.
|
|
11281
|
-
// It is responsible for managing width/height.
|
|
11282
|
-
class TableView extends DateComponent {
|
|
11283
|
-
constructor() {
|
|
11284
|
-
super(...arguments);
|
|
11285
|
-
this.headerElRef = y();
|
|
11286
|
-
}
|
|
11287
|
-
renderSimpleLayout(headerRowContent, bodyContent) {
|
|
11288
|
-
let { props, context } = this;
|
|
11289
|
-
let sections = [];
|
|
11290
|
-
let stickyHeaderDates = getStickyHeaderDates(context.options);
|
|
11291
|
-
if (headerRowContent) {
|
|
11292
|
-
sections.push({
|
|
11293
|
-
type: 'header',
|
|
11294
|
-
key: 'header',
|
|
11295
|
-
isSticky: stickyHeaderDates,
|
|
11296
|
-
chunk: {
|
|
11297
|
-
elRef: this.headerElRef,
|
|
11298
|
-
tableClassName: 'fc-col-header',
|
|
11299
|
-
rowContent: headerRowContent,
|
|
11300
|
-
},
|
|
11301
|
-
});
|
|
11302
|
-
}
|
|
11303
|
-
sections.push({
|
|
11304
|
-
type: 'body',
|
|
11305
|
-
key: 'body',
|
|
11306
|
-
liquid: true,
|
|
11307
|
-
chunk: { content: bodyContent },
|
|
11308
|
-
});
|
|
11309
|
-
return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
|
|
11310
|
-
h(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));
|
|
11311
|
-
}
|
|
11312
|
-
renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {
|
|
11313
|
-
let ScrollGrid = this.context.pluginHooks.scrollGridImpl;
|
|
11314
|
-
if (!ScrollGrid) {
|
|
11315
|
-
throw new Error('No ScrollGrid implementation');
|
|
11316
|
-
}
|
|
11317
|
-
let { props, context } = this;
|
|
11318
|
-
let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);
|
|
11319
|
-
let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);
|
|
11320
|
-
let sections = [];
|
|
11321
|
-
if (headerRowContent) {
|
|
11322
|
-
sections.push({
|
|
11323
|
-
type: 'header',
|
|
11324
|
-
key: 'header',
|
|
11325
|
-
isSticky: stickyHeaderDates,
|
|
11326
|
-
chunks: [{
|
|
11327
|
-
key: 'main',
|
|
11328
|
-
elRef: this.headerElRef,
|
|
11329
|
-
tableClassName: 'fc-col-header',
|
|
11330
|
-
rowContent: headerRowContent,
|
|
11331
|
-
}],
|
|
11332
|
-
});
|
|
11333
|
-
}
|
|
11334
|
-
sections.push({
|
|
11335
|
-
type: 'body',
|
|
11336
|
-
key: 'body',
|
|
11337
|
-
liquid: true,
|
|
11338
|
-
chunks: [{
|
|
11339
|
-
key: 'main',
|
|
11340
|
-
content: bodyContent,
|
|
11341
|
-
}],
|
|
11342
|
-
});
|
|
11343
|
-
if (stickyFooterScrollbar) {
|
|
11344
|
-
sections.push({
|
|
11345
|
-
type: 'footer',
|
|
11346
|
-
key: 'footer',
|
|
11347
|
-
isSticky: true,
|
|
11348
|
-
chunks: [{
|
|
11349
|
-
key: 'main',
|
|
11350
|
-
content: renderScrollShim,
|
|
11351
|
-
}],
|
|
11352
|
-
});
|
|
11353
|
-
}
|
|
11354
|
-
return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
|
|
11355
|
-
h(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));
|
|
11356
|
-
}
|
|
11357
|
-
}
|
|
11358
|
-
|
|
11359
11671
|
function splitSegsByRow(segs, rowCnt) {
|
|
11360
11672
|
let byRow = [];
|
|
11361
11673
|
for (let i = 0; i < rowCnt; i += 1) {
|
|
@@ -12064,6 +12376,87 @@ var FullCalendar = (function (exports) {
|
|
|
12064
12376
|
}
|
|
12065
12377
|
}
|
|
12066
12378
|
|
|
12379
|
+
/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.
|
|
12380
|
+
----------------------------------------------------------------------------------------------------------------------*/
|
|
12381
|
+
// It is a manager for a Table subcomponent, which does most of the heavy lifting.
|
|
12382
|
+
// It is responsible for managing width/height.
|
|
12383
|
+
class TableView extends DateComponent {
|
|
12384
|
+
constructor() {
|
|
12385
|
+
super(...arguments);
|
|
12386
|
+
this.headerElRef = y();
|
|
12387
|
+
}
|
|
12388
|
+
renderSimpleLayout(headerRowContent, bodyContent) {
|
|
12389
|
+
let { props, context } = this;
|
|
12390
|
+
let sections = [];
|
|
12391
|
+
let stickyHeaderDates = getStickyHeaderDates(context.options);
|
|
12392
|
+
if (headerRowContent) {
|
|
12393
|
+
sections.push({
|
|
12394
|
+
type: 'header',
|
|
12395
|
+
key: 'header',
|
|
12396
|
+
isSticky: stickyHeaderDates,
|
|
12397
|
+
chunk: {
|
|
12398
|
+
elRef: this.headerElRef,
|
|
12399
|
+
tableClassName: 'fc-col-header',
|
|
12400
|
+
rowContent: headerRowContent,
|
|
12401
|
+
},
|
|
12402
|
+
});
|
|
12403
|
+
}
|
|
12404
|
+
sections.push({
|
|
12405
|
+
type: 'body',
|
|
12406
|
+
key: 'body',
|
|
12407
|
+
liquid: true,
|
|
12408
|
+
chunk: { content: bodyContent },
|
|
12409
|
+
});
|
|
12410
|
+
return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
|
|
12411
|
+
h(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));
|
|
12412
|
+
}
|
|
12413
|
+
renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {
|
|
12414
|
+
let ScrollGrid = this.context.pluginHooks.scrollGridImpl;
|
|
12415
|
+
if (!ScrollGrid) {
|
|
12416
|
+
throw new Error('No ScrollGrid implementation');
|
|
12417
|
+
}
|
|
12418
|
+
let { props, context } = this;
|
|
12419
|
+
let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);
|
|
12420
|
+
let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);
|
|
12421
|
+
let sections = [];
|
|
12422
|
+
if (headerRowContent) {
|
|
12423
|
+
sections.push({
|
|
12424
|
+
type: 'header',
|
|
12425
|
+
key: 'header',
|
|
12426
|
+
isSticky: stickyHeaderDates,
|
|
12427
|
+
chunks: [{
|
|
12428
|
+
key: 'main',
|
|
12429
|
+
elRef: this.headerElRef,
|
|
12430
|
+
tableClassName: 'fc-col-header',
|
|
12431
|
+
rowContent: headerRowContent,
|
|
12432
|
+
}],
|
|
12433
|
+
});
|
|
12434
|
+
}
|
|
12435
|
+
sections.push({
|
|
12436
|
+
type: 'body',
|
|
12437
|
+
key: 'body',
|
|
12438
|
+
liquid: true,
|
|
12439
|
+
chunks: [{
|
|
12440
|
+
key: 'main',
|
|
12441
|
+
content: bodyContent,
|
|
12442
|
+
}],
|
|
12443
|
+
});
|
|
12444
|
+
if (stickyFooterScrollbar) {
|
|
12445
|
+
sections.push({
|
|
12446
|
+
type: 'footer',
|
|
12447
|
+
key: 'footer',
|
|
12448
|
+
isSticky: true,
|
|
12449
|
+
chunks: [{
|
|
12450
|
+
key: 'main',
|
|
12451
|
+
content: renderScrollShim,
|
|
12452
|
+
}],
|
|
12453
|
+
});
|
|
12454
|
+
}
|
|
12455
|
+
return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
|
|
12456
|
+
h(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));
|
|
12457
|
+
}
|
|
12458
|
+
}
|
|
12459
|
+
|
|
12067
12460
|
class DayTableView extends TableView {
|
|
12068
12461
|
constructor() {
|
|
12069
12462
|
super(...arguments);
|
|
@@ -13623,6 +14016,7 @@ var FullCalendar = (function (exports) {
|
|
|
13623
14016
|
|
|
13624
14017
|
exports.Calendar = Calendar;
|
|
13625
14018
|
exports.Draggable = ExternalDraggable;
|
|
14019
|
+
exports.Internal = internal;
|
|
13626
14020
|
exports.JsonRequestError = JsonRequestError;
|
|
13627
14021
|
exports.ThirdPartyDraggable = ThirdPartyDraggable;
|
|
13628
14022
|
exports.createPlugin = createPlugin;
|
|
@@ -13636,4 +14030,3 @@ var FullCalendar = (function (exports) {
|
|
|
13636
14030
|
return exports;
|
|
13637
14031
|
|
|
13638
14032
|
})({});
|
|
13639
|
-
//# sourceMappingURL=index.global.js.map
|