@fullcalendar/core 7.0.0-beta.4 → 7.0.0-rc.0
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.cjs +1 -6
- package/index.d.ts +0 -1
- package/index.global.js +146 -238
- package/index.global.min.js +2 -2
- package/index.js +1 -6
- package/internal-common.cjs +165 -252
- package/internal-common.d.ts +40 -56
- package/internal-common.js +164 -249
- package/internal.cjs +2 -5
- package/internal.d.ts +1 -1
- package/internal.js +1 -1
- package/locales/af.global.js +1 -1
- package/locales/af.global.min.js +1 -1
- package/locales/ar-dz.global.js +1 -1
- package/locales/ar-dz.global.min.js +1 -1
- package/locales/ar-kw.global.js +1 -1
- package/locales/ar-kw.global.min.js +1 -1
- package/locales/ar-ly.global.js +1 -1
- package/locales/ar-ly.global.min.js +1 -1
- package/locales/ar-ma.global.js +1 -1
- package/locales/ar-ma.global.min.js +1 -1
- package/locales/ar-sa.global.js +1 -1
- package/locales/ar-sa.global.min.js +1 -1
- package/locales/ar-tn.global.js +1 -1
- package/locales/ar-tn.global.min.js +1 -1
- package/locales/ar.global.js +1 -1
- package/locales/ar.global.min.js +1 -1
- package/locales/az.cjs +1 -1
- package/locales/az.global.js +2 -2
- package/locales/az.global.min.js +2 -2
- package/locales/az.js +1 -1
- package/locales/bg.global.js +1 -1
- package/locales/bg.global.min.js +1 -1
- package/locales/bn.global.js +1 -1
- package/locales/bn.global.min.js +1 -1
- package/locales/bs.cjs +1 -1
- package/locales/bs.global.js +2 -2
- package/locales/bs.global.min.js +2 -2
- package/locales/bs.js +1 -1
- package/locales/ca.cjs +1 -1
- package/locales/ca.global.js +2 -2
- package/locales/ca.global.min.js +2 -2
- package/locales/ca.js +1 -1
- package/locales/cs.global.js +1 -1
- package/locales/cs.global.min.js +1 -1
- package/locales/cy.cjs +1 -1
- package/locales/cy.global.js +2 -2
- package/locales/cy.global.min.js +2 -2
- package/locales/cy.js +1 -1
- package/locales/da.cjs +1 -1
- package/locales/da.global.js +2 -2
- package/locales/da.global.min.js +2 -2
- package/locales/da.js +1 -1
- package/locales/de-at.global.js +1 -1
- package/locales/de-at.global.min.js +1 -1
- package/locales/de.global.js +1 -1
- package/locales/de.global.min.js +1 -1
- package/locales/el.global.js +1 -1
- package/locales/el.global.min.js +1 -1
- package/locales/en-au.global.js +1 -1
- package/locales/en-au.global.min.js +1 -1
- package/locales/en-gb.global.js +1 -1
- package/locales/en-gb.global.min.js +1 -1
- package/locales/en-nz.global.js +1 -1
- package/locales/en-nz.global.min.js +1 -1
- package/locales/eo.cjs +1 -1
- package/locales/eo.global.js +2 -2
- package/locales/eo.global.min.js +2 -2
- package/locales/eo.js +1 -1
- package/locales/es-us.cjs +1 -1
- package/locales/es-us.global.js +2 -2
- package/locales/es-us.global.min.js +2 -2
- package/locales/es-us.js +1 -1
- package/locales/es.cjs +1 -1
- package/locales/es.global.js +2 -2
- package/locales/es.global.min.js +2 -2
- package/locales/es.js +1 -1
- package/locales/et.cjs +1 -1
- package/locales/et.global.js +2 -2
- package/locales/et.global.min.js +2 -2
- package/locales/et.js +1 -1
- package/locales/eu.cjs +1 -1
- package/locales/eu.global.js +2 -2
- package/locales/eu.global.min.js +2 -2
- package/locales/eu.js +1 -1
- package/locales/fa.global.js +1 -1
- package/locales/fa.global.min.js +1 -1
- package/locales/fi.cjs +1 -1
- package/locales/fi.global.js +2 -2
- package/locales/fi.global.min.js +2 -2
- package/locales/fi.js +1 -1
- package/locales/fr-ca.cjs +1 -1
- package/locales/fr-ca.global.js +2 -2
- package/locales/fr-ca.global.min.js +2 -2
- package/locales/fr-ca.js +1 -1
- package/locales/fr-ch.cjs +1 -1
- package/locales/fr-ch.global.js +2 -2
- package/locales/fr-ch.global.min.js +2 -2
- package/locales/fr-ch.js +1 -1
- package/locales/fr.cjs +1 -1
- package/locales/fr.global.js +2 -2
- package/locales/fr.global.min.js +2 -2
- package/locales/fr.js +1 -1
- package/locales/gl.cjs +1 -1
- package/locales/gl.global.js +2 -2
- package/locales/gl.global.min.js +2 -2
- package/locales/gl.js +1 -1
- package/locales/he.global.js +1 -1
- package/locales/he.global.min.js +1 -1
- package/locales/hi.global.js +1 -1
- package/locales/hi.global.min.js +1 -1
- package/locales/hr.cjs +1 -1
- package/locales/hr.global.js +2 -2
- package/locales/hr.global.min.js +2 -2
- package/locales/hr.js +1 -1
- package/locales/hu.cjs +1 -1
- package/locales/hu.global.js +2 -2
- package/locales/hu.global.min.js +2 -2
- package/locales/hu.js +1 -1
- package/locales/hy-am.global.js +1 -1
- package/locales/hy-am.global.min.js +1 -1
- package/locales/id.cjs +1 -1
- package/locales/id.global.js +2 -2
- package/locales/id.global.min.js +2 -2
- package/locales/id.js +1 -1
- package/locales/is.cjs +1 -1
- package/locales/is.global.js +2 -2
- package/locales/is.global.min.js +2 -2
- package/locales/is.js +1 -1
- package/locales/it.cjs +1 -1
- package/locales/it.global.js +2 -2
- package/locales/it.global.min.js +2 -2
- package/locales/it.js +1 -1
- package/locales/ja.global.js +1 -1
- package/locales/ja.global.min.js +1 -1
- package/locales/ka.cjs +1 -1
- package/locales/ka.global.js +2 -2
- package/locales/ka.global.min.js +2 -2
- package/locales/ka.js +1 -1
- package/locales/kk.cjs +1 -1
- package/locales/kk.global.js +2 -2
- package/locales/kk.global.min.js +2 -2
- package/locales/kk.js +1 -1
- package/locales/km.global.js +1 -1
- package/locales/km.global.min.js +1 -1
- package/locales/ko.global.js +1 -1
- package/locales/ko.global.min.js +1 -1
- package/locales/ku.global.js +1 -1
- package/locales/ku.global.min.js +1 -1
- package/locales/lb.cjs +1 -1
- package/locales/lb.global.js +2 -2
- package/locales/lb.global.min.js +2 -2
- package/locales/lb.js +1 -1
- package/locales/lt.cjs +1 -1
- package/locales/lt.global.js +2 -2
- package/locales/lt.global.min.js +2 -2
- package/locales/lt.js +1 -1
- package/locales/lv.cjs +1 -1
- package/locales/lv.global.js +2 -2
- package/locales/lv.global.min.js +2 -2
- package/locales/lv.js +1 -1
- package/locales/mk.global.js +1 -1
- package/locales/mk.global.min.js +1 -1
- package/locales/ms.cjs +1 -1
- package/locales/ms.global.js +2 -2
- package/locales/ms.global.min.js +2 -2
- package/locales/ms.js +1 -1
- package/locales/nb.cjs +1 -1
- package/locales/nb.global.js +2 -2
- package/locales/nb.global.min.js +2 -2
- package/locales/nb.js +1 -1
- package/locales/ne.global.js +1 -1
- package/locales/ne.global.min.js +1 -1
- package/locales/nl.global.js +1 -1
- package/locales/nl.global.min.js +1 -1
- package/locales/nn.cjs +1 -1
- package/locales/nn.global.js +2 -2
- package/locales/nn.global.min.js +2 -2
- package/locales/nn.js +1 -1
- package/locales/pl.cjs +1 -1
- package/locales/pl.global.js +2 -2
- package/locales/pl.global.min.js +2 -2
- package/locales/pl.js +1 -1
- package/locales/pt-br.cjs +1 -1
- package/locales/pt-br.global.js +2 -2
- package/locales/pt-br.global.min.js +2 -2
- package/locales/pt-br.js +1 -1
- package/locales/pt.cjs +1 -1
- package/locales/pt.global.js +2 -2
- package/locales/pt.global.min.js +2 -2
- package/locales/pt.js +1 -1
- package/locales/ro.cjs +1 -1
- package/locales/ro.global.js +2 -2
- package/locales/ro.global.min.js +2 -2
- package/locales/ro.js +1 -1
- package/locales/ru.cjs +1 -1
- package/locales/ru.global.js +2 -2
- package/locales/ru.global.min.js +2 -2
- package/locales/ru.js +1 -1
- package/locales/si-lk.global.js +1 -1
- package/locales/si-lk.global.min.js +1 -1
- package/locales/sk.global.js +1 -1
- package/locales/sk.global.min.js +1 -1
- package/locales/sl.global.js +1 -1
- package/locales/sl.global.min.js +1 -1
- package/locales/sm.global.js +1 -1
- package/locales/sm.global.min.js +1 -1
- package/locales/sq.cjs +1 -1
- package/locales/sq.global.js +2 -2
- package/locales/sq.global.min.js +2 -2
- package/locales/sq.js +1 -1
- package/locales/sr-cyrl.global.js +1 -1
- package/locales/sr-cyrl.global.min.js +1 -1
- package/locales/sr.global.js +1 -1
- package/locales/sr.global.min.js +1 -1
- package/locales/sv.global.js +1 -1
- package/locales/sv.global.min.js +1 -1
- package/locales/ta-in.cjs +1 -1
- package/locales/ta-in.global.js +2 -2
- package/locales/ta-in.global.min.js +2 -2
- package/locales/ta-in.js +1 -1
- package/locales/th.global.js +1 -1
- package/locales/th.global.min.js +1 -1
- package/locales/tr.global.js +1 -1
- package/locales/tr.global.min.js +1 -1
- package/locales/ug.global.js +1 -1
- package/locales/ug.global.min.js +1 -1
- package/locales/uk.cjs +1 -1
- package/locales/uk.global.js +2 -2
- package/locales/uk.global.min.js +2 -2
- package/locales/uk.js +1 -1
- package/locales/uz-cy.cjs +1 -1
- package/locales/uz-cy.global.js +2 -2
- package/locales/uz-cy.global.min.js +2 -2
- package/locales/uz-cy.js +1 -1
- package/locales/uz.global.js +1 -1
- package/locales/uz.global.min.js +1 -1
- package/locales/vi.global.js +1 -1
- package/locales/vi.global.min.js +1 -1
- package/locales/zh-cn.global.js +1 -1
- package/locales/zh-cn.global.min.js +1 -1
- package/locales/zh-tw.global.js +1 -1
- package/locales/zh-tw.global.min.js +1 -1
- package/locales-all.global.js +38 -38
- package/locales-all.global.min.js +2 -2
- package/package.json +1 -1
- package/preact.cjs +1 -0
- package/preact.d.ts +4 -3
- package/preact.js +1 -1
package/internal-common.cjs
CHANGED
|
@@ -23,70 +23,6 @@ function _interopNamespace(e) {
|
|
|
23
23
|
|
|
24
24
|
var preact__namespace = /*#__PURE__*/_interopNamespace(preact);
|
|
25
25
|
|
|
26
|
-
/*
|
|
27
|
-
NOTE: this can be a public API, especially createElement for hooks.
|
|
28
|
-
See examples/typescript-scheduler/src/index.ts
|
|
29
|
-
*/
|
|
30
|
-
/*
|
|
31
|
-
HACK for flushSync being a noop:
|
|
32
|
-
https://github.com/preactjs/preact/issues/3929
|
|
33
|
-
*/
|
|
34
|
-
function flushSync(renderActionToFlush) {
|
|
35
|
-
renderActionToFlush();
|
|
36
|
-
let oldDebounceRendering = preact__namespace.options.debounceRendering; // orig
|
|
37
|
-
let callbackQ = [];
|
|
38
|
-
function execCallbackSync(callback) {
|
|
39
|
-
callbackQ.push(callback);
|
|
40
|
-
}
|
|
41
|
-
preact__namespace.options.debounceRendering = execCallbackSync;
|
|
42
|
-
preact__namespace.render(preact__namespace.createElement(FakeComponent, {}), document.createElement('div'));
|
|
43
|
-
while (callbackQ.length) {
|
|
44
|
-
callbackQ.shift()();
|
|
45
|
-
}
|
|
46
|
-
preact__namespace.options.debounceRendering = oldDebounceRendering;
|
|
47
|
-
}
|
|
48
|
-
/*
|
|
49
|
-
Triggers a state-change which unclogs the render queue? Needed?
|
|
50
|
-
*/
|
|
51
|
-
class FakeComponent extends preact__namespace.Component {
|
|
52
|
-
render() { return preact__namespace.createElement('div', {}); }
|
|
53
|
-
componentDidMount() { this.setState({}); }
|
|
54
|
-
}
|
|
55
|
-
/*
|
|
56
|
-
HACK for Preact wrongly calling shouldComponentUpdate during context changes:
|
|
57
|
-
https://github.com/preactjs/preact/issues/2510
|
|
58
|
-
*/
|
|
59
|
-
function createContext(defaultValue) {
|
|
60
|
-
let ContextType = preact__namespace.createContext(defaultValue);
|
|
61
|
-
let origProvider = ContextType.Provider;
|
|
62
|
-
ContextType.Provider = function () {
|
|
63
|
-
let isNew = !this.getChildContext;
|
|
64
|
-
let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
|
65
|
-
if (isNew) {
|
|
66
|
-
let subs = [];
|
|
67
|
-
this.shouldComponentUpdate = (_props) => {
|
|
68
|
-
if (this.props.value !== _props.value) {
|
|
69
|
-
subs.forEach((c) => {
|
|
70
|
-
c.context = _props.value;
|
|
71
|
-
c.forceUpdate();
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
this.sub = (c) => {
|
|
76
|
-
subs.push(c);
|
|
77
|
-
let old = c.componentWillUnmount;
|
|
78
|
-
c.componentWillUnmount = () => {
|
|
79
|
-
subs.splice(subs.indexOf(c), 1);
|
|
80
|
-
old && old.call(c);
|
|
81
|
-
};
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
return children;
|
|
85
|
-
};
|
|
86
|
-
return ContextType;
|
|
87
|
-
}
|
|
88
|
-
const preactOptions = preact__namespace.options;
|
|
89
|
-
|
|
90
26
|
const styleTexts = [];
|
|
91
27
|
const styleEls = new Map();
|
|
92
28
|
function injectStyles(styleText) {
|
|
@@ -167,7 +103,7 @@ if (typeof document !== 'undefined') {
|
|
|
167
103
|
registerStylesRoot(document);
|
|
168
104
|
}
|
|
169
105
|
|
|
170
|
-
var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc{display:flex;flex-direction:column;gap:1.5em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-border,.fc-border-b,.fc-border-e,.fc-border-s,.fc-border-t{border:0 solid var(--fc-border-color)}.fc-border-transparent{border-color:transparent}.fc-border{border-width:1px}.fc-border-t{border-top-width:1px}.fc-border-b{border-bottom-width:1px}.fc-direction-ltr .fc-border-s,.fc-direction-rtl .fc-border-e{border-left-width:1px}.fc-direction-ltr .fc-border-e,.fc-direction-rtl .fc-border-s{border-right-width:1px}.fc-flex-row{display:flex;flex-direction:row}.fc-flex-col{display:flex;flex-direction:column}.fc-grow{flex-grow:1}.fc-basis0,.fc-liquid{flex-basis:0}.fc-liquid{flex-grow:1;min-height:0;min-width:0}.fc-media-screen .fc-print-header,.fc-media-screen .fc-print-root{display:flex;flex-direction:column}.fc-cell{margin:0!important;padding:0!important}.fc-cell-inner{flex-shrink:0;overflow:hidden;white-space:nowrap}.fc-celldivider,.fc-rowdivider{border:0 solid var(--fc-border-color)}.fc-rowdivider{border-width:1px 0}.fc-celldivider{border-width:0 1px}.fc-celldivider,.fc-rowdivider{background:var(--fc-neutral-bg-color)}.fc-celldivider{padding-left:2px}.fc-rowdivider{padding-bottom:2px}.fc-crop{overflow:hidden}.fc-rel{position:relative}.fc-abs{position:absolute}.fc-fill{bottom:0;top:0}.fc-fill,.fc-fill-x{left:0;position:absolute;right:0}.fc-fill-y{bottom:0;position:absolute;top:0}.fc-sticky-t{position:sticky;top:0}.fc-sticky-s{left:0;position:sticky;right:0}.fc-table-header-sticky{background:var(--fc-page-bg-color);position:sticky;top:0;z-index:5}.fc-sticky-footer-scrollbar{bottom:0;position:sticky;z-index:5}.fc-sticky-footer-scrollbar>.fc-scroller{margin-top:-1px}.fc-sticky-footer-scrollbar>.fc-scroller>*{height:1px}.fc-content-box{box-sizing:content-box}.fc-offscreen{left:-10000px;position:absolute}.fc-shaded{background-color:var(--fc-neutral-bg-color)}.fc-filler{opacity:.5}.fc-padding-sm{padding:2px 4px}.fc-padding-md{padding:4px 5px}.fc-padding-lg{padding:8px}.fc-justify-center{justify-content:center}.fc-align-center{align-items:center}.fc-align-start{align-items:flex-start}.fc [data-navlink]{cursor:pointer}.fc [data-navlink]:hover{text-decoration:underline}.fc-view-outer{position:relative}.fc-view-outer-liquid,.fc-view-outer-static{display:flex;flex-direction:column}.fc-view-outer-liquid,.fc-view-outer-liquid>.fc-view,.fc-view-outer-static>.fc-view{flex-basis:0;flex-grow:1;min-height:0;min-width:0}.fc-view-outer-aspect-ratio>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event-selected:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-event-inner{position:relative;z-index:2}.fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-bg-event,.fc-highlight,.fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc-non-business{background:var(--fc-non-business-color)}.fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc-highlight{background:var(--fc-highlight-color)}.fc-day-disabled{background:var(--fc-neutral-bg-color)}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:flex;flex-direction:column;position:relative}.fc-h-event.fc-event-mirror{z-index:3}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-h-event .fc-event-inner{color:var(--fc-event-text-color);display:flex;flex-direction:row}.fc-h-event .fc-event-time,.fc-h-event .fc-event-title{overflow:hidden;white-space:nowrap}.fc-h-event .fc-event-title-outer{display:flex;flex-basis:0;flex-direction:row;flex-grow:1;min-height:0;min-width:0}.fc-h-event .fc-event-title{left:0;position:sticky;right:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:6}.fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc-popover-title{margin:0 2px}.fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}.fc-scroller{padding:0!important}.fc-scroller-no-bars{-ms-overflow-style:none;scrollbar-width:none}.fc-scroller-no-bars::-webkit-scrollbar{display:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc-button{-webkit-appearance:button}.fc-button:not(:disabled){cursor:pointer}.fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-moz-user-select:none;user-select:none;vertical-align:middle}.fc-button:hover{text-decoration:none}.fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc-button:disabled{opacity:.65}.fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button-primary:not(:disabled).fc-button-active,.fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc-button-primary:not(:disabled).fc-button-active:focus,.fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc-button-group>.fc-button.fc-button-active,.fc-button-group>.fc-button:active,.fc-button-group>.fc-button:focus,.fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc-toolbar{align-items:center;justify-content:space-between}.fc-toolbar,.fc-toolbar-section{display:flex;flex-direction:row;gap:.75em}.fc-toolbar-section{flex-shrink:0}.fc-toolbar-title{font-size:1.75em;font-weight:700;white-space:nowrap}";
|
|
106
|
+
var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc{display:flex;flex-direction:column;gap:1.5em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-border,.fc-border-b,.fc-border-e,.fc-border-s,.fc-border-t{border:0 solid var(--fc-border-color)}.fc-border-transparent{border-color:transparent}.fc-border{border-width:1px}.fc-border-t{border-top-width:1px}.fc-border-b{border-bottom-width:1px}.fc-direction-ltr .fc-border-s,.fc-direction-rtl .fc-border-e{border-left-width:1px}.fc-direction-ltr .fc-border-e,.fc-direction-rtl .fc-border-s{border-right-width:1px}.fc-flex-row{display:flex;flex-direction:row}.fc-flex-col{display:flex;flex-direction:column}.fc-grow{flex-grow:1}.fc-basis0,.fc-liquid{flex-basis:0}.fc-liquid{flex-grow:1;min-height:0;min-width:0}.fc-media-screen .fc-print-header,.fc-media-screen .fc-print-root{display:flex;flex-direction:column}.fc-cell{margin:0!important;padding:0!important}.fc-cell-inner{flex-shrink:0;overflow:hidden;white-space:nowrap}.fc-celldivider,.fc-rowdivider{border:0 solid var(--fc-border-color)}.fc-rowdivider{border-width:1px 0}.fc-celldivider{border-width:0 1px}.fc-celldivider,.fc-rowdivider{background:var(--fc-neutral-bg-color)}.fc-celldivider{padding-left:2px}.fc-rowdivider{padding-bottom:2px}.fc-crop{overflow:hidden}.fc-rel{position:relative}.fc-abs{position:absolute}.fc-fill{bottom:0;top:0}.fc-fill,.fc-fill-top,.fc-fill-x{left:0;position:absolute;right:0}.fc-fill-start,.fc-fill-y{bottom:0;position:absolute;top:0}.fc-fill-top{top:0}.fc-fill-start{left:0;right:0;width:0}.fc-sticky-t{position:sticky;top:0}.fc-sticky-s{left:0;position:sticky;right:0}.fc-table-header-sticky{background:var(--fc-page-bg-color);position:sticky;top:0;z-index:3}.fc-content-box{box-sizing:content-box}.fc-offscreen{left:-10000px;position:absolute}.fc-shaded{background-color:var(--fc-neutral-bg-color)}.fc-filler{opacity:.5}.fc-padding-sm{padding:2px 4px}.fc-padding-md{padding:4px 5px}.fc-padding-lg{padding:8px}.fc-justify-center{justify-content:center}.fc-align-center{align-items:center}.fc-align-start{align-items:flex-start}.fc-footer-scrollbar-sticky{bottom:0;position:sticky;z-index:3}.fc-footer-scrollbar>.fc-scroller{margin-top:-1px}.fc-footer-scrollbar>.fc-scroller>*{height:1px}.fc-navlink{cursor:pointer}.fc-navlink:hover{text-decoration:underline}.fc-view-outer{position:relative}.fc-view-outer-liquid,.fc-view-outer-static{display:flex;flex-direction:column}.fc-view-outer-liquid,.fc-view-outer-liquid>.fc-view,.fc-view-outer-static>.fc-view{flex-basis:0;flex-grow:1;min-height:0;min-width:0}.fc-view-outer-aspect-ratio>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event-selected:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected,.fc-event:focus:not(.fc-list-event){box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:after,.fc-event:focus:not(.fc-list-event):after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-event-inner{position:relative;z-index:2}.fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-bg-event,.fc-highlight,.fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc-non-business{background:var(--fc-non-business-color)}.fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc-highlight{background:var(--fc-highlight-color)}.fc-day-disabled{background:var(--fc-neutral-bg-color)}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:flex;flex-direction:column;position:relative}.fc-h-event.fc-event-mirror{z-index:1}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-h-event .fc-event-inner{color:var(--fc-event-text-color);display:flex;flex-direction:row}.fc-h-event .fc-event-time,.fc-h-event .fc-event-title{overflow:hidden;white-space:nowrap}.fc-media-print .fc-h-event .fc-event-time,.fc-media-print .fc-h-event .fc-event-title{overflow:hidden!important;white-space:nowrap!important}.fc-h-event .fc-event-title-outer{display:flex;flex-basis:0;flex-direction:row;flex-grow:1;min-height:0;min-width:0}.fc-h-event .fc-event-title{left:0;position:sticky;right:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:4}.fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc-popover-title{margin:0 2px}.fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}.fc-scroller{padding:0!important}.fc-scroller-no-bars{-ms-overflow-style:none;scrollbar-width:none}.fc-scroller-no-bars::-webkit-scrollbar{display:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc-button{-webkit-appearance:button}.fc-button:not(:disabled){cursor:pointer}.fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc-button:hover{text-decoration:none}.fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc-button:disabled{opacity:.65}.fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button-primary:not(:disabled).fc-button-active,.fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc-button-primary:not(:disabled).fc-button-active:focus,.fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc-button-group>.fc-button.fc-button-active,.fc-button-group>.fc-button:active,.fc-button-group>.fc-button:focus,.fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc-toolbar{align-items:center;justify-content:space-between}.fc-toolbar,.fc-toolbar-section{display:flex;flex-direction:row;gap:.75em}.fc-toolbar-section{flex-shrink:0}.fc-toolbar-title{font-size:1.75em;font-weight:700;white-space:nowrap}";
|
|
171
107
|
injectStyles(css_248z);
|
|
172
108
|
|
|
173
109
|
class DelayedRunner {
|
|
@@ -879,65 +815,6 @@ function memoizeObjArg(workerFunc, resEquality, teardownFunc) {
|
|
|
879
815
|
return currentRes;
|
|
880
816
|
};
|
|
881
817
|
}
|
|
882
|
-
function memoizeArraylike(// used at all?
|
|
883
|
-
workerFunc, resEquality, teardownFunc) {
|
|
884
|
-
let currentArgSets = [];
|
|
885
|
-
let currentResults = [];
|
|
886
|
-
return (newArgSets) => {
|
|
887
|
-
let currentLen = currentArgSets.length;
|
|
888
|
-
let newLen = newArgSets.length;
|
|
889
|
-
let i = 0;
|
|
890
|
-
for (; i < currentLen; i += 1) {
|
|
891
|
-
if (!newArgSets[i]) { // one of the old sets no longer exists
|
|
892
|
-
if (teardownFunc) {
|
|
893
|
-
teardownFunc(currentResults[i]);
|
|
894
|
-
}
|
|
895
|
-
}
|
|
896
|
-
else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {
|
|
897
|
-
if (teardownFunc) {
|
|
898
|
-
teardownFunc(currentResults[i]);
|
|
899
|
-
}
|
|
900
|
-
let res = workerFunc.apply(this, newArgSets[i]);
|
|
901
|
-
if (!resEquality || !resEquality(res, currentResults[i])) {
|
|
902
|
-
currentResults[i] = res;
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
}
|
|
906
|
-
for (; i < newLen; i += 1) {
|
|
907
|
-
currentResults[i] = workerFunc.apply(this, newArgSets[i]);
|
|
908
|
-
}
|
|
909
|
-
currentArgSets = newArgSets;
|
|
910
|
-
currentResults.splice(newLen); // remove excess
|
|
911
|
-
return currentResults;
|
|
912
|
-
};
|
|
913
|
-
}
|
|
914
|
-
function memoizeHashlike(workerFunc, resEquality, teardownFunc) {
|
|
915
|
-
let currentArgHash = {};
|
|
916
|
-
let currentResHash = {};
|
|
917
|
-
return (newArgHash) => {
|
|
918
|
-
let newResHash = {};
|
|
919
|
-
for (let key in newArgHash) {
|
|
920
|
-
if (!currentResHash[key]) {
|
|
921
|
-
newResHash[key] = workerFunc.apply(this, newArgHash[key]);
|
|
922
|
-
}
|
|
923
|
-
else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {
|
|
924
|
-
if (teardownFunc) {
|
|
925
|
-
teardownFunc(currentResHash[key]);
|
|
926
|
-
}
|
|
927
|
-
let res = workerFunc.apply(this, newArgHash[key]);
|
|
928
|
-
newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))
|
|
929
|
-
? currentResHash[key]
|
|
930
|
-
: res;
|
|
931
|
-
}
|
|
932
|
-
else {
|
|
933
|
-
newResHash[key] = currentResHash[key];
|
|
934
|
-
}
|
|
935
|
-
}
|
|
936
|
-
currentArgHash = newArgHash;
|
|
937
|
-
currentResHash = newResHash;
|
|
938
|
-
return newResHash;
|
|
939
|
-
};
|
|
940
|
-
}
|
|
941
818
|
|
|
942
819
|
const EXTENDED_SETTINGS_AND_SEVERITIES = {
|
|
943
820
|
week: 3,
|
|
@@ -1368,7 +1245,6 @@ const BASE_OPTION_REFINERS = {
|
|
|
1368
1245
|
eventDataTransform: identity,
|
|
1369
1246
|
stickyHeaderDates: identity,
|
|
1370
1247
|
stickyFooterScrollbar: identity,
|
|
1371
|
-
viewHeight: identity,
|
|
1372
1248
|
defaultAllDay: Boolean,
|
|
1373
1249
|
eventSourceFailure: identity,
|
|
1374
1250
|
eventSourceSuccess: identity,
|
|
@@ -2197,6 +2073,37 @@ Theme.prototype.iconClasses = {};
|
|
|
2197
2073
|
Theme.prototype.baseIconClass = '';
|
|
2198
2074
|
Theme.prototype.iconOverridePrefix = '';
|
|
2199
2075
|
|
|
2076
|
+
/*
|
|
2077
|
+
Like flushSync, but flushes ALL pending updates, not only those initiated in a callback
|
|
2078
|
+
BTW, flushSync doesn't work in Preact: https://github.com/preactjs/preact/issues/3929
|
|
2079
|
+
*/
|
|
2080
|
+
function flushUpdates() {
|
|
2081
|
+
let oldDebounceRendering = preact__namespace.options.debounceRendering; // orig
|
|
2082
|
+
let callbackQ = [];
|
|
2083
|
+
function execCallbackSync(callback) {
|
|
2084
|
+
callbackQ.push(callback);
|
|
2085
|
+
}
|
|
2086
|
+
preact__namespace.options.debounceRendering = execCallbackSync;
|
|
2087
|
+
preact__namespace.render(preact__namespace.createElement(FakeComponent, {}), document.createElement('div'));
|
|
2088
|
+
while (callbackQ.length) {
|
|
2089
|
+
callbackQ.shift()();
|
|
2090
|
+
}
|
|
2091
|
+
preact__namespace.options.debounceRendering = oldDebounceRendering;
|
|
2092
|
+
}
|
|
2093
|
+
function flushSync(f) {
|
|
2094
|
+
f();
|
|
2095
|
+
flushUpdates();
|
|
2096
|
+
}
|
|
2097
|
+
/*
|
|
2098
|
+
Triggers a state-change which unclogs the render queue? Needed?
|
|
2099
|
+
*/
|
|
2100
|
+
class FakeComponent extends preact__namespace.Component {
|
|
2101
|
+
render() { return preact__namespace.createElement('div', {}); }
|
|
2102
|
+
componentDidMount() { this.setState({}); }
|
|
2103
|
+
}
|
|
2104
|
+
const createContext = preact__namespace.createContext;
|
|
2105
|
+
const preactOptions = preact__namespace.options;
|
|
2106
|
+
|
|
2200
2107
|
const ViewContextType = createContext({}); // for Components
|
|
2201
2108
|
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
2202
2109
|
return {
|
|
@@ -4268,8 +4175,19 @@ isStart, isEnd, context, defaultDisplayEventTime = true, defaultDisplayEventEnd
|
|
|
4268
4175
|
if (displayEventEnd == null) {
|
|
4269
4176
|
displayEventEnd = defaultDisplayEventEnd !== false;
|
|
4270
4177
|
}
|
|
4271
|
-
const startDate = (!isStart &&
|
|
4272
|
-
|
|
4178
|
+
const startDate = (!isStart &&
|
|
4179
|
+
slicedStart &&
|
|
4180
|
+
// if seg is the first seg, but start-date cut-off by slotMinTime, (technically isStart=false)
|
|
4181
|
+
// we still want to display the original start-time
|
|
4182
|
+
startOfDay(slicedStart).valueOf() !== startOfDay(eventRange.instance.range.start).valueOf())
|
|
4183
|
+
? slicedStart
|
|
4184
|
+
: eventRange.instance.range.start;
|
|
4185
|
+
const endDate = (!isEnd &&
|
|
4186
|
+
slicedEnd &&
|
|
4187
|
+
// See above HACK, but for end-time
|
|
4188
|
+
startOfDay(addMs(slicedEnd, -1)).valueOf() !== startOfDay(addMs(eventRange.instance.range.end, -1)).valueOf())
|
|
4189
|
+
? slicedEnd
|
|
4190
|
+
: eventRange.instance.range.end;
|
|
4273
4191
|
if (displayEventTime && !def.allDay) {
|
|
4274
4192
|
if (displayEventEnd && (isStart || isEnd) && def.hasEnd) {
|
|
4275
4193
|
return dateEnv.formatRange(startDate, endDate, timeFormat, {
|
|
@@ -4550,21 +4468,15 @@ but our Preact system does not commit to the DOM immediately, commits are batche
|
|
|
4550
4468
|
so we can skip this.
|
|
4551
4469
|
*/
|
|
4552
4470
|
function checkConfigMap() {
|
|
4471
|
+
let anyDirty = true;
|
|
4553
4472
|
if (!isHandling) {
|
|
4554
4473
|
isHandling = true;
|
|
4555
4474
|
const dirtyConfigs = [];
|
|
4556
4475
|
for (const [el, config] of configMap.entries()) {
|
|
4557
|
-
|
|
4558
|
-
let height;
|
|
4559
|
-
if (config.client) {
|
|
4560
|
-
width = el.clientWidth;
|
|
4561
|
-
height = el.clientHeight;
|
|
4562
|
-
}
|
|
4563
|
-
else {
|
|
4564
|
-
({ width, height } = el.getBoundingClientRect());
|
|
4565
|
-
}
|
|
4476
|
+
const { width, height } = el.getBoundingClientRect();
|
|
4566
4477
|
if (storeConfigDims(config, width, height)) {
|
|
4567
4478
|
dirtyConfigs.push(config);
|
|
4479
|
+
anyDirty = true;
|
|
4568
4480
|
}
|
|
4569
4481
|
}
|
|
4570
4482
|
for (const dirtyConfig of dirtyConfigs) {
|
|
@@ -4573,6 +4485,7 @@ function checkConfigMap() {
|
|
|
4573
4485
|
flushAfterSize();
|
|
4574
4486
|
isHandling = false;
|
|
4575
4487
|
}
|
|
4488
|
+
return anyDirty;
|
|
4576
4489
|
}
|
|
4577
4490
|
function storeConfigDims(config, width, height) {
|
|
4578
4491
|
let shouldFire = false;
|
|
@@ -4600,11 +4513,7 @@ function initNative() {
|
|
|
4600
4513
|
const config = configMap.get(el);
|
|
4601
4514
|
let width;
|
|
4602
4515
|
let height;
|
|
4603
|
-
if (
|
|
4604
|
-
width = el.clientWidth;
|
|
4605
|
-
height = el.clientHeight;
|
|
4606
|
-
}
|
|
4607
|
-
else if (entry.borderBoxSize && nativeBorderBoxEnabled) {
|
|
4516
|
+
if (entry.borderBoxSize && nativeBorderBoxEnabled) {
|
|
4608
4517
|
const borderBoxSize = entry.borderBoxSize[0] || entry.borderBoxSize; // HACK for Firefox
|
|
4609
4518
|
width = borderBoxSize.inlineSize;
|
|
4610
4519
|
height = borderBoxSize.blockSize;
|
|
@@ -4619,12 +4528,11 @@ function initNative() {
|
|
|
4619
4528
|
flushAfterSize();
|
|
4620
4529
|
isHandling = false;
|
|
4621
4530
|
});
|
|
4622
|
-
function watchSize(el, callback,
|
|
4623
|
-
configMap.set(el, { callback,
|
|
4531
|
+
function watchSize(el, callback, watchWidth = true, watchHeight = true) {
|
|
4532
|
+
configMap.set(el, { callback, watchWidth, watchHeight });
|
|
4624
4533
|
globalResizeObserver.observe(el, {
|
|
4625
|
-
box:
|
|
4626
|
-
|
|
4627
|
-
: undefined // default is 'content-box'
|
|
4534
|
+
box: 'border-box'
|
|
4535
|
+
// default is 'content-box'
|
|
4628
4536
|
});
|
|
4629
4537
|
return () => {
|
|
4630
4538
|
configMap.delete(el);
|
|
@@ -4666,13 +4574,13 @@ function initFallback() {
|
|
|
4666
4574
|
const [requestCheckSizes, cancelCheckSizes] = debounce(checkConfigMap, fallbackTimeout);
|
|
4667
4575
|
function requestCheckSizesSync() {
|
|
4668
4576
|
cancelCheckSizes();
|
|
4669
|
-
checkConfigMap();
|
|
4577
|
+
return checkConfigMap();
|
|
4670
4578
|
}
|
|
4671
|
-
function watchSize(el, callback,
|
|
4579
|
+
function watchSize(el, callback, watchWidth = true, watchHeight = true) {
|
|
4672
4580
|
if (!configMap.size) {
|
|
4673
4581
|
addGlobalHandlers();
|
|
4674
4582
|
}
|
|
4675
|
-
configMap.set(el, { callback,
|
|
4583
|
+
configMap.set(el, { callback, watchWidth, watchHeight });
|
|
4676
4584
|
requestCheckSizes();
|
|
4677
4585
|
return () => {
|
|
4678
4586
|
configMap.delete(el);
|
|
@@ -4788,7 +4696,7 @@ function debounce(fn, ms) {
|
|
|
4788
4696
|
PRECONDITION: element can only have one listener attached
|
|
4789
4697
|
|
|
4790
4698
|
NOTE: If we ever kill the fallback technique and use ResizeObserver unconditionally with full
|
|
4791
|
-
border-box support, we no longer need wrappers around the <
|
|
4699
|
+
border-box support, we no longer need wrappers around the <FooterScrollbar>'s <Scroller>
|
|
4792
4700
|
*/
|
|
4793
4701
|
const [watchSize, updateSizeSync] = typeof ResizeObserver !== 'undefined'
|
|
4794
4702
|
? initNative()
|
|
@@ -4811,13 +4719,13 @@ class CalendarRoot extends BaseComponent {
|
|
|
4811
4719
|
};
|
|
4812
4720
|
this.handleBeforePrint = () => {
|
|
4813
4721
|
this.setState({ forPrint: true });
|
|
4814
|
-
|
|
4722
|
+
flushUpdates();
|
|
4815
4723
|
updateSizeSync();
|
|
4816
|
-
|
|
4724
|
+
flushUpdates();
|
|
4817
4725
|
};
|
|
4818
4726
|
this.handleAfterPrint = () => {
|
|
4819
4727
|
this.setState({ forPrint: false });
|
|
4820
|
-
|
|
4728
|
+
flushUpdates();
|
|
4821
4729
|
};
|
|
4822
4730
|
}
|
|
4823
4731
|
render() {
|
|
@@ -4904,7 +4812,7 @@ function getUniqueDomId() {
|
|
|
4904
4812
|
}
|
|
4905
4813
|
|
|
4906
4814
|
function getIsHeightAuto(options) {
|
|
4907
|
-
return options.height === 'auto' || options.
|
|
4815
|
+
return options.height === 'auto' || options.contentHeight === 'auto';
|
|
4908
4816
|
}
|
|
4909
4817
|
function getStickyHeaderDates(options) {
|
|
4910
4818
|
let { stickyHeaderDates } = options;
|
|
@@ -4943,7 +4851,10 @@ class CalendarImpl {
|
|
|
4943
4851
|
callback();
|
|
4944
4852
|
}
|
|
4945
4853
|
updateSize() {
|
|
4946
|
-
|
|
4854
|
+
let cycleCount = 0;
|
|
4855
|
+
while (cycleCount++ < 3 && updateSizeSync()) {
|
|
4856
|
+
flushUpdates();
|
|
4857
|
+
}
|
|
4947
4858
|
}
|
|
4948
4859
|
// Options
|
|
4949
4860
|
// -----------------------------------------------------------------------------------------------------------------
|
|
@@ -5530,63 +5441,11 @@ function buildNavLinkAttrs(context, dateMarker, viewType = 'day', dateStr = buil
|
|
|
5530
5441
|
calendarApi.zoomTo(dateMarker, viewType);
|
|
5531
5442
|
}
|
|
5532
5443
|
};
|
|
5533
|
-
return Object.assign({ 'role': 'link', 'aria-label': formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), '
|
|
5444
|
+
return Object.assign({ 'role': 'link', 'aria-label': formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'className': 'fc-navlink' }, (isTabbable
|
|
5534
5445
|
? createAriaClickAttrs(handleInteraction)
|
|
5535
5446
|
: { onClick: handleInteraction }));
|
|
5536
5447
|
}
|
|
5537
5448
|
|
|
5538
|
-
let _isRtlScrollbarOnLeft = null;
|
|
5539
|
-
function getIsRtlScrollbarOnLeft() {
|
|
5540
|
-
if (_isRtlScrollbarOnLeft === null) {
|
|
5541
|
-
_isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();
|
|
5542
|
-
}
|
|
5543
|
-
return _isRtlScrollbarOnLeft;
|
|
5544
|
-
}
|
|
5545
|
-
function computeIsRtlScrollbarOnLeft() {
|
|
5546
|
-
let outerEl = document.createElement('div');
|
|
5547
|
-
applyStyle(outerEl, {
|
|
5548
|
-
position: 'absolute',
|
|
5549
|
-
top: -1000,
|
|
5550
|
-
left: 0,
|
|
5551
|
-
border: 0,
|
|
5552
|
-
padding: 0,
|
|
5553
|
-
overflow: 'scroll',
|
|
5554
|
-
direction: 'rtl',
|
|
5555
|
-
});
|
|
5556
|
-
outerEl.innerHTML = '<div></div>';
|
|
5557
|
-
document.body.appendChild(outerEl);
|
|
5558
|
-
let innerEl = outerEl.firstChild;
|
|
5559
|
-
let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;
|
|
5560
|
-
outerEl.remove();
|
|
5561
|
-
return res;
|
|
5562
|
-
}
|
|
5563
|
-
|
|
5564
|
-
let _scrollbarWidths;
|
|
5565
|
-
function getScrollbarWidths() {
|
|
5566
|
-
if (!_scrollbarWidths) {
|
|
5567
|
-
_scrollbarWidths = computeScrollbarWidths();
|
|
5568
|
-
}
|
|
5569
|
-
return _scrollbarWidths;
|
|
5570
|
-
}
|
|
5571
|
-
function computeScrollbarWidths() {
|
|
5572
|
-
let el = document.createElement('div');
|
|
5573
|
-
el.style.overflow = 'scroll';
|
|
5574
|
-
el.style.position = 'absolute';
|
|
5575
|
-
el.style.top = '-9999px';
|
|
5576
|
-
el.style.left = '-9999px';
|
|
5577
|
-
document.body.appendChild(el);
|
|
5578
|
-
let res = computeScrollbarWidthsForEl(el);
|
|
5579
|
-
document.body.removeChild(el);
|
|
5580
|
-
return res;
|
|
5581
|
-
}
|
|
5582
|
-
// WARNING: will include border
|
|
5583
|
-
function computeScrollbarWidthsForEl(el) {
|
|
5584
|
-
return {
|
|
5585
|
-
x: el.offsetHeight - el.clientHeight,
|
|
5586
|
-
y: el.offsetWidth - el.clientWidth,
|
|
5587
|
-
};
|
|
5588
|
-
}
|
|
5589
|
-
|
|
5590
5449
|
function computeEdges(el, getPadding = false) {
|
|
5591
5450
|
let computedStyle = window.getComputedStyle(el);
|
|
5592
5451
|
let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;
|
|
@@ -5605,7 +5464,7 @@ function computeEdges(el, getPadding = false) {
|
|
|
5605
5464
|
scrollbarLeft: 0,
|
|
5606
5465
|
scrollbarRight: 0,
|
|
5607
5466
|
};
|
|
5608
|
-
if (
|
|
5467
|
+
if (computedStyle.direction === 'rtl') {
|
|
5609
5468
|
res.scrollbarLeft = scrollbarLeftRight;
|
|
5610
5469
|
}
|
|
5611
5470
|
else {
|
|
@@ -5674,6 +5533,13 @@ function getClippingParents(el) {
|
|
|
5674
5533
|
}
|
|
5675
5534
|
return parents;
|
|
5676
5535
|
}
|
|
5536
|
+
// WARNING: will include border
|
|
5537
|
+
function computeScrollbarWidthsForEl(el) {
|
|
5538
|
+
return {
|
|
5539
|
+
x: el.offsetHeight - el.clientHeight,
|
|
5540
|
+
y: el.offsetWidth - el.clientWidth,
|
|
5541
|
+
};
|
|
5542
|
+
}
|
|
5677
5543
|
|
|
5678
5544
|
/*
|
|
5679
5545
|
Records offset information for a set of elements, relative to an origin element.
|
|
@@ -5887,7 +5753,7 @@ class DateComponent extends BaseComponent {
|
|
|
5887
5753
|
isValidDateDownEl(el) {
|
|
5888
5754
|
return !el.closest('.fc-event:not(.fc-bg-event)') &&
|
|
5889
5755
|
!el.closest('.fc-more-link') && // a "more.." link
|
|
5890
|
-
!el.closest('
|
|
5756
|
+
!el.closest('.fc-navlink') && // a clickable nav link
|
|
5891
5757
|
!el.closest('.fc-popover'); // hack
|
|
5892
5758
|
}
|
|
5893
5759
|
}
|
|
@@ -6484,37 +6350,54 @@ class Scroller extends DateComponent {
|
|
|
6484
6350
|
constructor() {
|
|
6485
6351
|
super(...arguments);
|
|
6486
6352
|
this.handleEl = (el) => {
|
|
6487
|
-
const { props } = this;
|
|
6488
6353
|
if (this.el) {
|
|
6489
6354
|
this.el = null;
|
|
6490
6355
|
this.listener.destroy();
|
|
6491
|
-
this.disconnectSize();
|
|
6492
|
-
setRef(props.clientWidthRef, null);
|
|
6493
|
-
setRef(props.clientHeightRef, null);
|
|
6494
|
-
setRef(props.endScrollbarWidthRef, null);
|
|
6495
|
-
setRef(props.bottomScrollbarWidthRef, null);
|
|
6496
6356
|
}
|
|
6497
6357
|
if (el) {
|
|
6498
6358
|
this.el = el;
|
|
6499
6359
|
this.listener = new ScrollListener(el);
|
|
6500
|
-
|
|
6501
|
-
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6360
|
+
}
|
|
6361
|
+
};
|
|
6362
|
+
this.handleHRuler = (el) => {
|
|
6363
|
+
if (this.disconnectHRuler) {
|
|
6364
|
+
this.disconnectHRuler();
|
|
6365
|
+
this.disconnectHRuler = undefined;
|
|
6366
|
+
if (this.clientWidth !== undefined) {
|
|
6367
|
+
this.clientWidth = undefined;
|
|
6368
|
+
setRef(this.props.clientWidthRef, null);
|
|
6369
|
+
}
|
|
6370
|
+
}
|
|
6371
|
+
if (el) {
|
|
6372
|
+
this.disconnectHRuler = watchWidth(el, (clientWidth) => {
|
|
6373
|
+
if (clientWidth !== this.clientWidth) {
|
|
6374
|
+
this.clientWidth = clientWidth;
|
|
6375
|
+
setRef(this.props.clientWidthRef, clientWidth);
|
|
6509
6376
|
}
|
|
6510
|
-
|
|
6511
|
-
|
|
6512
|
-
|
|
6377
|
+
});
|
|
6378
|
+
}
|
|
6379
|
+
};
|
|
6380
|
+
this.handleVRuler = (el) => {
|
|
6381
|
+
if (this.disconnectVRuler) {
|
|
6382
|
+
this.disconnectVRuler();
|
|
6383
|
+
this.disconnectVRuler = undefined;
|
|
6384
|
+
if (this.clientHeight !== undefined) {
|
|
6385
|
+
this.clientHeight = undefined;
|
|
6386
|
+
setRef(this.props.clientHeightRef, null);
|
|
6387
|
+
}
|
|
6388
|
+
}
|
|
6389
|
+
if (el) {
|
|
6390
|
+
this.disconnectVRuler = watchHeight(el, (clientHeight) => {
|
|
6391
|
+
if (clientHeight !== this.clientHeight) {
|
|
6392
|
+
this.clientHeight = clientHeight;
|
|
6393
|
+
setRef(this.props.clientHeightRef, clientHeight);
|
|
6513
6394
|
}
|
|
6514
|
-
|
|
6515
|
-
|
|
6395
|
+
const bottomScrollbarWidth = Math.round(this.el.getBoundingClientRect().height - clientHeight);
|
|
6396
|
+
if (bottomScrollbarWidth !== this.bottomScrollbarWidth) {
|
|
6397
|
+
this.bottomScrollbarWidth = bottomScrollbarWidth;
|
|
6398
|
+
setRef(this.props.bottomScrollbarWidthRef, bottomScrollbarWidth);
|
|
6516
6399
|
}
|
|
6517
|
-
}
|
|
6400
|
+
});
|
|
6518
6401
|
}
|
|
6519
6402
|
};
|
|
6520
6403
|
}
|
|
@@ -6523,7 +6406,11 @@ class Scroller extends DateComponent {
|
|
|
6523
6406
|
// if there's only one axis that needs scrolling, the other axis will unintentionally have
|
|
6524
6407
|
// scrollbars too if we don't force to 'hidden'
|
|
6525
6408
|
const fallbackOverflow = (props.horizontal || props.vertical) ? 'hidden' : '';
|
|
6526
|
-
return (preact.createElement("div", { ref: this.handleEl, className: joinClassNames(props.className, 'fc-scroller
|
|
6409
|
+
return (preact.createElement("div", { ref: this.handleEl, className: joinClassNames(props.className, 'fc-scroller fc-rel', // fc-rel for children fc-fill-top/start
|
|
6410
|
+
props.hideScrollbars && 'fc-scroller-no-bars'), style: Object.assign(Object.assign({}, props.style), { overflowX: props.horizontal ? 'auto' : fallbackOverflow, overflowY: props.vertical ? 'auto' : fallbackOverflow }) },
|
|
6411
|
+
props.children,
|
|
6412
|
+
Boolean(props.clientWidthRef) && (preact.createElement("div", { ref: this.handleHRuler, className: 'fc-fill-top' })),
|
|
6413
|
+
Boolean(props.clientHeightRef || props.bottomScrollbarWidthRef) && (preact.createElement("div", { ref: this.handleVRuler, className: 'fc-fill-start' }))));
|
|
6527
6414
|
}
|
|
6528
6415
|
endScroll() {
|
|
6529
6416
|
this.listener.endScroll();
|
|
@@ -6598,9 +6485,6 @@ let _rtlScrollerSystem;
|
|
|
6598
6485
|
function getRtlScrollerSystem() {
|
|
6599
6486
|
return _rtlScrollerSystem || (_rtlScrollerSystem = detectRtlScrollerSystem());
|
|
6600
6487
|
}
|
|
6601
|
-
/*
|
|
6602
|
-
TODO: make this more minimal now that scrollbar-side detection isn't needed?
|
|
6603
|
-
*/
|
|
6604
6488
|
function detectRtlScrollerSystem() {
|
|
6605
6489
|
let el = document.createElement('div');
|
|
6606
6490
|
el.style.position = 'absolute';
|
|
@@ -6933,6 +6817,30 @@ function anyRangesContainRange(outerRanges, innerRange) {
|
|
|
6933
6817
|
return false;
|
|
6934
6818
|
}
|
|
6935
6819
|
|
|
6820
|
+
class Ruler extends BaseComponent {
|
|
6821
|
+
constructor() {
|
|
6822
|
+
super(...arguments);
|
|
6823
|
+
this.elRef = preact.createRef();
|
|
6824
|
+
}
|
|
6825
|
+
render() {
|
|
6826
|
+
return (preact.createElement("div", { ref: this.elRef }));
|
|
6827
|
+
}
|
|
6828
|
+
componentDidMount() {
|
|
6829
|
+
const { props } = this;
|
|
6830
|
+
const el = this.elRef.current;
|
|
6831
|
+
this.disconnectWidth = watchWidth(el, (width) => {
|
|
6832
|
+
setRef(props.widthRef, width);
|
|
6833
|
+
});
|
|
6834
|
+
}
|
|
6835
|
+
componentWillUnmount() {
|
|
6836
|
+
this.disconnectWidth();
|
|
6837
|
+
const { props } = this;
|
|
6838
|
+
if (props.widthRef) {
|
|
6839
|
+
setRef(props.widthRef, null);
|
|
6840
|
+
}
|
|
6841
|
+
}
|
|
6842
|
+
}
|
|
6843
|
+
|
|
6936
6844
|
/*
|
|
6937
6845
|
TODO: make API where createRefMap() called
|
|
6938
6846
|
*/
|
|
@@ -7031,6 +6939,8 @@ function buildDayRange(date) {
|
|
|
7031
6939
|
class EventContainer extends BaseComponent {
|
|
7032
6940
|
constructor() {
|
|
7033
6941
|
super(...arguments);
|
|
6942
|
+
// memo
|
|
6943
|
+
this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));
|
|
7034
6944
|
this.handleEl = (el) => {
|
|
7035
6945
|
this.el = el;
|
|
7036
6946
|
if (el) {
|
|
@@ -7044,7 +6954,9 @@ class EventContainer extends BaseComponent {
|
|
|
7044
6954
|
const { eventRange } = props;
|
|
7045
6955
|
const { ui } = eventRange;
|
|
7046
6956
|
const renderProps = {
|
|
7047
|
-
|
|
6957
|
+
// make stable. everything else atomic
|
|
6958
|
+
// FYI, eventRange unfortunately gets reconstructed a lot, but def/instance is stable
|
|
6959
|
+
event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),
|
|
7048
6960
|
view: context.viewApi,
|
|
7049
6961
|
timeText: props.timeText,
|
|
7050
6962
|
textColor: ui.textColor,
|
|
@@ -7063,7 +6975,7 @@ class EventContainer extends BaseComponent {
|
|
|
7063
6975
|
isDragging: Boolean(props.isDragging),
|
|
7064
6976
|
isResizing: Boolean(props.isResizing),
|
|
7065
6977
|
};
|
|
7066
|
-
return (preact.createElement(ContentContainer,
|
|
6978
|
+
return (preact.createElement(ContentContainer, { attrs: props.attrs, className: joinClassNames(props.className, ...getEventClassNames(renderProps), ...eventRange.ui.classNames), style: props.style, elRef: this.handleEl, renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, tag: props.tag, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));
|
|
7067
6979
|
}
|
|
7068
6980
|
componentDidUpdate(prevProps) {
|
|
7069
6981
|
if (this.el && this.props.eventRange !== prevProps.eventRange) {
|
|
@@ -7167,6 +7079,7 @@ const WeekNumberContainer = (props) => (preact.createElement(ViewContextType.Con
|
|
|
7167
7079
|
}));
|
|
7168
7080
|
|
|
7169
7081
|
const PADDING_FROM_VIEWPORT = 10;
|
|
7082
|
+
const ROW_BORDER_WIDTH = 1;
|
|
7170
7083
|
class Popover extends BaseComponent {
|
|
7171
7084
|
constructor() {
|
|
7172
7085
|
super(...arguments);
|
|
@@ -7208,8 +7121,8 @@ class Popover extends BaseComponent {
|
|
|
7208
7121
|
return compat.createPortal(preact.createElement("div", Object.assign({}, props.attrs, { id: props.id, role: 'dialog', "aria-labelledby": this.titleId, className: joinClassNames(props.className, 'fc-popover', theme.getClassName('popover')), ref: this.handleRootEl }),
|
|
7209
7122
|
preact.createElement("div", { tabIndex: 0, style: { outline: 'none' }, ref: this.focusStartRef }),
|
|
7210
7123
|
preact.createElement("div", { className: 'fc-popover-header ' + theme.getClassName('popoverHeader') },
|
|
7211
|
-
preact.createElement("
|
|
7212
|
-
preact.createElement("
|
|
7124
|
+
preact.createElement("div", { className: "fc-popover-title", id: this.titleId }, props.title),
|
|
7125
|
+
preact.createElement("div", Object.assign({ role: 'button', "aria-label": options.closeHint, className: 'fc-popover-close ' + theme.getIconClass('close') }, createAriaClickAttrs(this.handleClose), { ref: this.closeRef }))),
|
|
7213
7126
|
preact.createElement("div", { className: 'fc-popover-body ' + theme.getClassName('popoverContent') }, props.children),
|
|
7214
7127
|
preact.createElement("div", { tabIndex: 0, style: { outline: 'none' }, ref: this.focusEndRef })), props.parentEl);
|
|
7215
7128
|
}
|
|
@@ -7236,7 +7149,8 @@ class Popover extends BaseComponent {
|
|
|
7236
7149
|
let popoverDims = rootEl.getBoundingClientRect();
|
|
7237
7150
|
// position relative to viewport
|
|
7238
7151
|
let popoverTop = alignParentTop
|
|
7239
|
-
|
|
7152
|
+
// HACK: subtract 1 for DayGrid, which has borders on row-bottom. Only view that uses alignParentTop
|
|
7153
|
+
? alignEl.closest(alignParentTop).getBoundingClientRect().top - ROW_BORDER_WIDTH
|
|
7240
7154
|
: alignmentRect.top;
|
|
7241
7155
|
let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;
|
|
7242
7156
|
// constrain
|
|
@@ -7290,7 +7204,7 @@ class MorePopover extends DateComponent {
|
|
|
7290
7204
|
start: props.startDate,
|
|
7291
7205
|
end: props.endDate,
|
|
7292
7206
|
} }, props.dateSpanProps),
|
|
7293
|
-
|
|
7207
|
+
getDayEl: () => rootEl,
|
|
7294
7208
|
rect: {
|
|
7295
7209
|
left: 0,
|
|
7296
7210
|
top: 0,
|
|
@@ -7319,21 +7233,22 @@ class MoreLinkContainer extends BaseComponent {
|
|
|
7319
7233
|
};
|
|
7320
7234
|
this.handleClick = (ev) => {
|
|
7321
7235
|
let { props, context } = this;
|
|
7322
|
-
let {
|
|
7236
|
+
let { dateEnv, options } = context;
|
|
7237
|
+
let { moreLinkClick } = options;
|
|
7323
7238
|
let date = computeRange(props).start;
|
|
7324
7239
|
function buildPublicSeg(seg) {
|
|
7325
7240
|
let { def, instance, range } = seg.eventRange;
|
|
7326
7241
|
return {
|
|
7327
7242
|
event: new EventImpl(context, def, instance),
|
|
7328
|
-
start:
|
|
7329
|
-
end:
|
|
7243
|
+
start: dateEnv.toDate(range.start),
|
|
7244
|
+
end: dateEnv.toDate(range.end),
|
|
7330
7245
|
isStart: seg.isStart,
|
|
7331
7246
|
isEnd: seg.isEnd,
|
|
7332
7247
|
};
|
|
7333
7248
|
}
|
|
7334
7249
|
if (typeof moreLinkClick === 'function') {
|
|
7335
7250
|
moreLinkClick = moreLinkClick({
|
|
7336
|
-
date,
|
|
7251
|
+
date: dateEnv.toDate(date),
|
|
7337
7252
|
allDay: Boolean(props.allDayDate),
|
|
7338
7253
|
allSegs: props.segs.map(buildPublicSeg),
|
|
7339
7254
|
hiddenSegs: props.hiddenSegs.map(buildPublicSeg),
|
|
@@ -7451,7 +7366,7 @@ class CustomRenderingStore extends Store {
|
|
|
7451
7366
|
}
|
|
7452
7367
|
}
|
|
7453
7368
|
|
|
7454
|
-
class
|
|
7369
|
+
class FooterScrollbar extends BaseComponent {
|
|
7455
7370
|
constructor() {
|
|
7456
7371
|
super(...arguments);
|
|
7457
7372
|
this.rootElRef = preact.createRef();
|
|
@@ -7462,7 +7377,7 @@ class StickyFooterScrollbar extends BaseComponent {
|
|
|
7462
7377
|
// the outer dimensions change, but the inner dimensions do not. The Scroller's
|
|
7463
7378
|
// dimension-watching, when used in ponyfill-mode, can't fire on border-box change, so we
|
|
7464
7379
|
// workaround it by monitoring dimensions of a wrapper instead
|
|
7465
|
-
return (preact.createElement("div", { ref: this.rootElRef, className: 'fc-
|
|
7380
|
+
return (preact.createElement("div", { ref: this.rootElRef, className: joinClassNames('fc-footer-scrollbar', props.isSticky && 'fc-footer-scrollbar-sticky') },
|
|
7466
7381
|
preact.createElement(Scroller, { horizontal: true, ref: props.scrollerRef },
|
|
7467
7382
|
preact.createElement("div", { style: { minWidth: props.canvasWidth } }))));
|
|
7468
7383
|
}
|
|
@@ -7500,6 +7415,7 @@ exports.ElementScrollController = ElementScrollController;
|
|
|
7500
7415
|
exports.Emitter = Emitter;
|
|
7501
7416
|
exports.EventContainer = EventContainer;
|
|
7502
7417
|
exports.EventImpl = EventImpl;
|
|
7418
|
+
exports.FooterScrollbar = FooterScrollbar;
|
|
7503
7419
|
exports.Interaction = Interaction;
|
|
7504
7420
|
exports.JsonRequestError = JsonRequestError;
|
|
7505
7421
|
exports.MoreLinkContainer = MoreLinkContainer;
|
|
@@ -7510,13 +7426,13 @@ exports.PositionCache = PositionCache;
|
|
|
7510
7426
|
exports.PureComponent = PureComponent;
|
|
7511
7427
|
exports.RefMap = RefMap;
|
|
7512
7428
|
exports.RenderId = RenderId;
|
|
7429
|
+
exports.Ruler = Ruler;
|
|
7513
7430
|
exports.ScrollController = ScrollController;
|
|
7514
7431
|
exports.Scroller = Scroller;
|
|
7515
7432
|
exports.SegHierarchy = SegHierarchy;
|
|
7516
7433
|
exports.Slicer = Slicer;
|
|
7517
7434
|
exports.Splitter = Splitter;
|
|
7518
7435
|
exports.StandardEvent = StandardEvent;
|
|
7519
|
-
exports.StickyFooterScrollbar = StickyFooterScrollbar;
|
|
7520
7436
|
exports.Theme = Theme;
|
|
7521
7437
|
exports.VIEW_OPTION_REFINERS = VIEW_OPTION_REFINERS;
|
|
7522
7438
|
exports.ViewContainer = ViewContainer;
|
|
@@ -7583,6 +7499,7 @@ exports.eventTupleToStore = eventTupleToStore;
|
|
|
7583
7499
|
exports.filterHash = filterHash;
|
|
7584
7500
|
exports.flexibleCompare = flexibleCompare;
|
|
7585
7501
|
exports.flushSync = flushSync;
|
|
7502
|
+
exports.flushUpdates = flushUpdates;
|
|
7586
7503
|
exports.formatDayString = formatDayString;
|
|
7587
7504
|
exports.formatIsoMonthStr = formatIsoMonthStr;
|
|
7588
7505
|
exports.formatIsoTimeString = formatIsoTimeString;
|
|
@@ -7600,12 +7517,10 @@ exports.getEventTagAndAttrs = getEventTagAndAttrs;
|
|
|
7600
7517
|
exports.getEventTargetViaRoot = getEventTargetViaRoot;
|
|
7601
7518
|
exports.getInitialDate = getInitialDate;
|
|
7602
7519
|
exports.getIsHeightAuto = getIsHeightAuto;
|
|
7603
|
-
exports.getIsRtlScrollbarOnLeft = getIsRtlScrollbarOnLeft;
|
|
7604
7520
|
exports.getNormalizedScrollX = getNormalizedScrollX;
|
|
7605
7521
|
exports.getNow = getNow;
|
|
7606
7522
|
exports.getRectCenter = getRectCenter;
|
|
7607
7523
|
exports.getRelevantEvents = getRelevantEvents;
|
|
7608
|
-
exports.getScrollbarWidths = getScrollbarWidths;
|
|
7609
7524
|
exports.getScrollerSyncerClass = getScrollerSyncerClass;
|
|
7610
7525
|
exports.getSlotClassName = getSlotClassName;
|
|
7611
7526
|
exports.getStickyFooterScrollbar = getStickyFooterScrollbar;
|
|
@@ -7637,8 +7552,6 @@ exports.listenBySelector = listenBySelector;
|
|
|
7637
7552
|
exports.listenToHoverBySelector = listenToHoverBySelector;
|
|
7638
7553
|
exports.mapHash = mapHash;
|
|
7639
7554
|
exports.memoize = memoize;
|
|
7640
|
-
exports.memoizeArraylike = memoizeArraylike;
|
|
7641
|
-
exports.memoizeHashlike = memoizeHashlike;
|
|
7642
7555
|
exports.memoizeObjArg = memoizeObjArg;
|
|
7643
7556
|
exports.mergeEventStores = mergeEventStores;
|
|
7644
7557
|
exports.mergeProps = mergeProps;
|