@fullcalendar/core 7.0.0-beta.1 → 7.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.cjs +68 -76
- package/index.d.ts +0 -1
- package/index.global.js +1454 -1325
- package/index.global.min.js +2 -2
- package/index.js +70 -78
- package/internal-common.cjs +2757 -2620
- package/internal-common.d.ts +263 -220
- package/internal-common.js +2743 -2603
- package/internal.cjs +12 -16
- package/internal.d.ts +1 -2
- 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.global.js +1 -1
- package/locales/az.global.min.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.global.js +1 -1
- package/locales/bs.global.min.js +1 -1
- package/locales/ca.global.js +1 -1
- package/locales/ca.global.min.js +1 -1
- package/locales/cs.global.js +1 -1
- package/locales/cs.global.min.js +1 -1
- package/locales/cy.global.js +1 -1
- package/locales/cy.global.min.js +1 -1
- package/locales/da.global.js +1 -1
- package/locales/da.global.min.js +1 -1
- package/locales/de-at.cjs +1 -2
- package/locales/de-at.global.js +2 -3
- package/locales/de-at.global.min.js +2 -2
- package/locales/de-at.js +1 -2
- package/locales/de.cjs +1 -2
- package/locales/de.global.js +2 -3
- package/locales/de.global.min.js +2 -2
- package/locales/de.js +1 -2
- 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.global.js +1 -1
- package/locales/eo.global.min.js +1 -1
- package/locales/es-us.global.js +1 -1
- package/locales/es-us.global.min.js +1 -1
- package/locales/es.cjs +1 -2
- package/locales/es.global.js +2 -3
- package/locales/es.global.min.js +2 -2
- package/locales/es.js +1 -2
- package/locales/et.global.js +1 -1
- package/locales/et.global.min.js +1 -1
- package/locales/eu.global.js +1 -1
- package/locales/eu.global.min.js +1 -1
- package/locales/fa.global.js +1 -1
- package/locales/fa.global.min.js +1 -1
- package/locales/fi.global.js +1 -1
- package/locales/fi.global.min.js +1 -1
- package/locales/fr-ca.global.js +1 -1
- package/locales/fr-ca.global.min.js +1 -1
- package/locales/fr-ch.global.js +1 -1
- package/locales/fr-ch.global.min.js +1 -1
- package/locales/fr.global.js +1 -1
- package/locales/fr.global.min.js +1 -1
- package/locales/gl.cjs +1 -2
- package/locales/gl.global.js +2 -3
- package/locales/gl.global.min.js +2 -2
- package/locales/gl.js +1 -2
- 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.global.js +1 -1
- package/locales/hr.global.min.js +1 -1
- package/locales/hu.global.js +1 -1
- package/locales/hu.global.min.js +1 -1
- package/locales/hy-am.global.js +1 -1
- package/locales/hy-am.global.min.js +1 -1
- package/locales/id.global.js +1 -1
- package/locales/id.global.min.js +1 -1
- package/locales/is.global.js +1 -1
- package/locales/is.global.min.js +1 -1
- package/locales/it.global.js +1 -1
- package/locales/it.global.min.js +1 -1
- package/locales/ja.global.js +1 -1
- package/locales/ja.global.min.js +1 -1
- package/locales/ka.global.js +1 -1
- package/locales/ka.global.min.js +1 -1
- package/locales/kk.global.js +1 -1
- package/locales/kk.global.min.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.global.js +1 -1
- package/locales/lb.global.min.js +1 -1
- package/locales/lt.global.js +1 -1
- package/locales/lt.global.min.js +1 -1
- package/locales/lv.global.js +1 -1
- package/locales/lv.global.min.js +1 -1
- package/locales/mk.global.js +1 -1
- package/locales/mk.global.min.js +1 -1
- package/locales/ms.global.js +1 -1
- package/locales/ms.global.min.js +1 -1
- package/locales/nb.global.js +1 -1
- package/locales/nb.global.min.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.global.js +1 -1
- package/locales/nn.global.min.js +1 -1
- package/locales/pl.global.js +1 -1
- package/locales/pl.global.min.js +1 -1
- package/locales/pt-br.cjs +1 -2
- package/locales/pt-br.global.js +2 -3
- package/locales/pt-br.global.min.js +2 -2
- package/locales/pt-br.js +1 -2
- package/locales/pt.global.js +1 -1
- package/locales/pt.global.min.js +1 -1
- package/locales/ro.global.js +1 -1
- package/locales/ro.global.min.js +1 -1
- package/locales/ru.global.js +1 -1
- package/locales/ru.global.min.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.global.js +1 -1
- package/locales/sq.global.min.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.cjs +1 -2
- package/locales/sv.global.js +2 -3
- package/locales/sv.global.min.js +2 -2
- package/locales/sv.js +1 -2
- package/locales/ta-in.global.js +1 -1
- package/locales/ta-in.global.min.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.global.js +1 -1
- package/locales/uk.global.min.js +1 -1
- package/locales/uz-cy.global.js +1 -1
- package/locales/uz-cy.global.min.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 +7 -13
- package/locales-all.global.min.js +2 -2
- package/package.json +1 -1
- package/preact.cjs +1 -0
- package/preact.d.ts +3 -2
- package/preact.js +1 -1
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as
|
|
2
|
-
export {
|
|
1
|
+
import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassName, c as greatestDurationDenominator, d as createDuration, e as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as getInitialDate, H as rangeContainsMarker, I as createEmptyEventStore, J as reduceCurrentDate, K as reduceEventStore, L as rezoneEventStoreDates, M as mergeRawOptions, N as BASE_OPTION_REFINERS, O as CALENDAR_LISTENER_REFINERS, P as CALENDAR_OPTION_REFINERS, Q as COMPLEX_OPTION_COMPARATORS, R as VIEW_OPTION_REFINERS, S as DateEnv, U as DateProfileGenerator, W as createEventUi, X as parseBusinessHours, Y as joinClassNames, Z as Interaction, _ as getElEventRange, $ as EventImpl, a0 as listenBySelector, a1 as listenToHoverBySelector, a2 as PureComponent, a3 as buildViewContext, a4 as getUniqueDomId, a5 as parseInteractionSettings, a6 as interactionSettingsStore, a7 as getNow, a8 as getIsHeightAuto, a9 as CalendarImpl, aa as flushSync, ab as CalendarRoot, ac as RenderId, ad as ensureElHasStyles, ae as applyStyleProp, af as sliceEventStore } from './internal-common.js';
|
|
2
|
+
export { ag as JsonRequestError } from './internal-common.js';
|
|
3
3
|
import { createElement, Component, Fragment, render } from 'preact';
|
|
4
4
|
import 'preact/compat';
|
|
5
5
|
|
|
@@ -27,9 +27,9 @@ const MINIMAL_RAW_EN_LOCALE = {
|
|
|
27
27
|
weekText: 'W',
|
|
28
28
|
weekTextLong: 'Week',
|
|
29
29
|
closeHint: 'Close',
|
|
30
|
-
|
|
31
|
-
eventHint: 'Event',
|
|
30
|
+
eventsHint: 'Events',
|
|
32
31
|
allDayText: 'all-day',
|
|
32
|
+
timedText: 'timed',
|
|
33
33
|
moreLinkText: 'more',
|
|
34
34
|
noEventsText: 'No events to display',
|
|
35
35
|
};
|
|
@@ -44,7 +44,7 @@ const RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), {
|
|
|
44
44
|
? 'Today'
|
|
45
45
|
: `This ${buttonText}`;
|
|
46
46
|
},
|
|
47
|
-
}, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {
|
|
47
|
+
}, viewHint: '$0 view', viewChangeHint: 'Change view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {
|
|
48
48
|
return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;
|
|
49
49
|
} });
|
|
50
50
|
function organizeRawLocales(explicitRawLocales) {
|
|
@@ -356,7 +356,7 @@ function parseViewConfig(input) {
|
|
|
356
356
|
};
|
|
357
357
|
}
|
|
358
358
|
function createViewHookComponent(options) {
|
|
359
|
-
return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, {
|
|
359
|
+
return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, { tag: "div", className: buildViewClassName(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
function buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {
|
|
@@ -716,17 +716,25 @@ function parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpec
|
|
|
716
716
|
return { header, footer };
|
|
717
717
|
}
|
|
718
718
|
function parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {
|
|
719
|
-
let
|
|
719
|
+
let isRtl = calendarOptions.direction === 'rtl';
|
|
720
720
|
let viewsWithButtons = [];
|
|
721
721
|
let hasTitle = false;
|
|
722
|
-
|
|
723
|
-
let sectionStr = sectionStrHash[sectionName];
|
|
722
|
+
function processSectionStr(sectionStr) {
|
|
724
723
|
let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);
|
|
725
|
-
sectionWidgets[sectionName] = sectionRes.widgets;
|
|
726
724
|
viewsWithButtons.push(...sectionRes.viewsWithButtons);
|
|
727
725
|
hasTitle = hasTitle || sectionRes.hasTitle;
|
|
726
|
+
return sectionRes.widgets;
|
|
728
727
|
}
|
|
729
|
-
|
|
728
|
+
const sectionWidgets = {
|
|
729
|
+
start: processSectionStr(sectionStrHash[isRtl ? 'right' : 'left'] || sectionStrHash.start || ''),
|
|
730
|
+
center: processSectionStr(sectionStrHash.center || ''),
|
|
731
|
+
end: processSectionStr(sectionStrHash[isRtl ? 'left' : 'right'] || sectionStrHash.end || ''),
|
|
732
|
+
};
|
|
733
|
+
return {
|
|
734
|
+
sectionWidgets,
|
|
735
|
+
viewsWithButtons,
|
|
736
|
+
hasTitle,
|
|
737
|
+
};
|
|
730
738
|
}
|
|
731
739
|
/*
|
|
732
740
|
BAD: querying icons and text here. should be done at render time
|
|
@@ -754,6 +762,7 @@ theme, viewSpecs, calendarApi) {
|
|
|
754
762
|
let buttonIcon; // only one of these will be set
|
|
755
763
|
let buttonText; // "
|
|
756
764
|
let buttonHint;
|
|
765
|
+
let isView = false;
|
|
757
766
|
// ^ for the title="" attribute, for accessibility
|
|
758
767
|
if ((customButtonProps = calendarCustomButtons[buttonName])) {
|
|
759
768
|
buttonClick = (ev) => {
|
|
@@ -767,6 +776,7 @@ theme, viewSpecs, calendarApi) {
|
|
|
767
776
|
buttonHint = customButtonProps.hint || customButtonProps.text;
|
|
768
777
|
}
|
|
769
778
|
else if ((viewSpec = viewSpecs[buttonName])) {
|
|
779
|
+
isView = true;
|
|
770
780
|
viewsWithButtons.push(buttonName);
|
|
771
781
|
buttonClick = () => {
|
|
772
782
|
calendarApi.changeView(buttonName);
|
|
@@ -804,7 +814,7 @@ theme, viewSpecs, calendarApi) {
|
|
|
804
814
|
], calendarButtonText[buttonName]);
|
|
805
815
|
}
|
|
806
816
|
}
|
|
807
|
-
return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };
|
|
817
|
+
return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint, isView };
|
|
808
818
|
})));
|
|
809
819
|
return { widgets, viewsWithButtons, hasTitle };
|
|
810
820
|
}
|
|
@@ -1624,35 +1634,45 @@ class ToolbarSection extends BaseComponent {
|
|
|
1624
1634
|
render() {
|
|
1625
1635
|
let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));
|
|
1626
1636
|
return createElement('div', {
|
|
1627
|
-
className: 'fc-toolbar-
|
|
1637
|
+
className: 'fc-toolbar-section fc-toolbar-' + this.props.name
|
|
1628
1638
|
}, ...children);
|
|
1629
1639
|
}
|
|
1630
1640
|
renderWidgetGroup(widgetGroup) {
|
|
1631
|
-
let { props } = this;
|
|
1632
|
-
let { theme } =
|
|
1641
|
+
let { props, context } = this;
|
|
1642
|
+
let { options, theme } = context;
|
|
1633
1643
|
let children = [];
|
|
1634
1644
|
let isOnlyButtons = true;
|
|
1645
|
+
let isOnlyView = true;
|
|
1646
|
+
for (const widget of widgetGroup) {
|
|
1647
|
+
const { buttonName, isView } = widget;
|
|
1648
|
+
if (buttonName === 'title') {
|
|
1649
|
+
isOnlyButtons = false;
|
|
1650
|
+
}
|
|
1651
|
+
else if (!isView) {
|
|
1652
|
+
isOnlyView = false;
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1635
1655
|
for (let widget of widgetGroup) {
|
|
1636
1656
|
let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;
|
|
1637
1657
|
if (buttonName === 'title') {
|
|
1638
|
-
|
|
1639
|
-
children.push(createElement("h2", { className: "fc-toolbar-title" }, props.title));
|
|
1658
|
+
children.push(createElement("div", { role: 'heading', "aria-level": options.headingLevel, id: props.titleId, className: 'fc-toolbar-title' }, props.title));
|
|
1640
1659
|
}
|
|
1641
1660
|
else {
|
|
1642
1661
|
let isPressed = buttonName === props.activeButton;
|
|
1643
1662
|
let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||
|
|
1644
1663
|
(!props.isPrevEnabled && buttonName === 'prev') ||
|
|
1645
1664
|
(!props.isNextEnabled && buttonName === 'next');
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
}
|
|
1650
|
-
children.push(createElement("button", { type: "button", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, "aria-pressed": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement("span", { className: buttonIcon, role: "img" }) : '')));
|
|
1665
|
+
children.push(createElement("button", Object.assign({ type: "button", disabled: isDisabled }, ((isOnlyButtons && isOnlyView)
|
|
1666
|
+
? { 'role': 'tab', 'aria-selected': isPressed }
|
|
1667
|
+
: { 'aria-pressed': isPressed }), { "aria-label": typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, className: joinClassNames(`fc-${buttonName}-button`, theme.getClassName('button'), isPressed && theme.getClassName('buttonActive')), onClick: buttonClick }), buttonText || (buttonIcon ? createElement("span", { className: buttonIcon, "aria-hidden": true }) : '')));
|
|
1651
1668
|
}
|
|
1652
1669
|
}
|
|
1653
1670
|
if (children.length > 1) {
|
|
1654
|
-
|
|
1655
|
-
|
|
1671
|
+
return createElement('div', {
|
|
1672
|
+
role: (isOnlyButtons && isOnlyView) ? 'tablist' : undefined,
|
|
1673
|
+
'aria-label': (isOnlyButtons && isOnlyView) ? options.viewChangeHint : undefined,
|
|
1674
|
+
className: isOnlyButtons ? theme.getClassName('buttonGroup') : undefined,
|
|
1675
|
+
}, ...children);
|
|
1656
1676
|
}
|
|
1657
1677
|
return children[0];
|
|
1658
1678
|
}
|
|
@@ -1660,39 +1680,16 @@ class ToolbarSection extends BaseComponent {
|
|
|
1660
1680
|
|
|
1661
1681
|
class Toolbar extends BaseComponent {
|
|
1662
1682
|
render() {
|
|
1663
|
-
let { model,
|
|
1664
|
-
let
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
if (sectionWidgets.left) {
|
|
1670
|
-
forceLtr = true;
|
|
1671
|
-
startContent = sectionWidgets.left;
|
|
1672
|
-
}
|
|
1673
|
-
else {
|
|
1674
|
-
startContent = sectionWidgets.start;
|
|
1675
|
-
}
|
|
1676
|
-
if (sectionWidgets.right) {
|
|
1677
|
-
forceLtr = true;
|
|
1678
|
-
endContent = sectionWidgets.right;
|
|
1679
|
-
}
|
|
1680
|
-
else {
|
|
1681
|
-
endContent = sectionWidgets.end;
|
|
1682
|
-
}
|
|
1683
|
-
let classNames = [
|
|
1684
|
-
extraClassName || '',
|
|
1685
|
-
'fc-toolbar',
|
|
1686
|
-
forceLtr ? 'fc-toolbar-ltr' : '',
|
|
1687
|
-
];
|
|
1688
|
-
return (createElement("div", { className: classNames.join(' ') },
|
|
1689
|
-
this.renderSection('start', startContent || []),
|
|
1690
|
-
this.renderSection('center', centerContent || []),
|
|
1691
|
-
this.renderSection('end', endContent || [])));
|
|
1683
|
+
let { model, className } = this.props;
|
|
1684
|
+
let { sectionWidgets } = model;
|
|
1685
|
+
return (createElement("div", { className: joinClassNames(className, 'fc-toolbar') },
|
|
1686
|
+
this.renderSection('start', sectionWidgets.start),
|
|
1687
|
+
this.renderSection('center', sectionWidgets.center),
|
|
1688
|
+
this.renderSection('end', sectionWidgets.end)));
|
|
1692
1689
|
}
|
|
1693
1690
|
renderSection(key, widgetGroups) {
|
|
1694
1691
|
let { props } = this;
|
|
1695
|
-
return (createElement(ToolbarSection, { key: key, name: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled }));
|
|
1692
|
+
return (createElement(ToolbarSection, { key: key, name: key, widgetGroups: widgetGroups, title: props.title, titleId: props.titleId, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled }));
|
|
1696
1693
|
}
|
|
1697
1694
|
}
|
|
1698
1695
|
|
|
@@ -1708,19 +1705,12 @@ class EventClicking extends Interaction {
|
|
|
1708
1705
|
let eventRange = getElEventRange(segEl);
|
|
1709
1706
|
if (eventRange && // might be the <div> surrounding the more link
|
|
1710
1707
|
component.isValidSegDownEl(ev.target)) {
|
|
1711
|
-
// our way to simulate a link click for elements that can't be <a> tags
|
|
1712
|
-
// grab before trigger fired in case trigger trashes DOM thru rerendering
|
|
1713
|
-
let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');
|
|
1714
|
-
let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';
|
|
1715
1708
|
context.emitter.trigger('eventClick', {
|
|
1716
1709
|
el: segEl,
|
|
1717
1710
|
event: new EventImpl(component.context, eventRange.def, eventRange.instance),
|
|
1718
1711
|
jsEvent: ev,
|
|
1719
1712
|
view: context.viewApi,
|
|
1720
1713
|
});
|
|
1721
|
-
if (url && !ev.defaultPrevented) {
|
|
1722
|
-
window.location.href = url;
|
|
1723
|
-
}
|
|
1724
1714
|
}
|
|
1725
1715
|
};
|
|
1726
1716
|
this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events
|
|
@@ -1777,16 +1767,12 @@ class EventHovering extends Interaction {
|
|
|
1777
1767
|
class ViewHarness extends Component {
|
|
1778
1768
|
render() {
|
|
1779
1769
|
const { props } = this;
|
|
1780
|
-
return (createElement("div", { className:
|
|
1781
|
-
'fc-view-
|
|
1782
|
-
props.
|
|
1783
|
-
? 'fc-view-
|
|
1784
|
-
: props.
|
|
1785
|
-
|
|
1786
|
-
: props.aspectRatio != null
|
|
1787
|
-
? 'fc-view-harness-aspectratio'
|
|
1788
|
-
: ''
|
|
1789
|
-
].join(' '), style: {
|
|
1770
|
+
return (createElement("div", { className: joinClassNames('fc-view-outer', props.height != null
|
|
1771
|
+
? 'fc-view-outer-static'
|
|
1772
|
+
: props.heightLiquid
|
|
1773
|
+
? 'fc-view-outer-liquid'
|
|
1774
|
+
: props.aspectRatio != null
|
|
1775
|
+
&& 'fc-view-outer-aspect-ratio'), style: {
|
|
1790
1776
|
height: props.height,
|
|
1791
1777
|
paddingBottom: props.aspectRatio != null
|
|
1792
1778
|
? `${(1 / props.aspectRatio) * 100}%`
|
|
@@ -1802,6 +1788,7 @@ class CalendarContent extends PureComponent {
|
|
|
1802
1788
|
this.buildViewPropTransformers = memoize(buildViewPropTransformers);
|
|
1803
1789
|
this.buildToolbarProps = memoize(buildToolbarProps);
|
|
1804
1790
|
this.interactionsStore = {};
|
|
1791
|
+
this.viewTitleId = getUniqueDomId();
|
|
1805
1792
|
// Component Registration
|
|
1806
1793
|
// -----------------------------------------------------------------------------------------------------------------
|
|
1807
1794
|
this.registerInteractiveComponent = (component, settingsInput) => {
|
|
@@ -1810,7 +1797,10 @@ class CalendarContent extends PureComponent {
|
|
|
1810
1797
|
EventClicking,
|
|
1811
1798
|
EventHovering,
|
|
1812
1799
|
];
|
|
1813
|
-
let interactionClasses = DEFAULT_INTERACTIONS
|
|
1800
|
+
let interactionClasses = DEFAULT_INTERACTIONS;
|
|
1801
|
+
if (!settingsInput.disableHits) {
|
|
1802
|
+
interactionClasses = interactionClasses.concat(this.props.pluginHooks.componentInteractions);
|
|
1803
|
+
}
|
|
1814
1804
|
let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));
|
|
1815
1805
|
this.interactionsStore[component.uid] = interactions;
|
|
1816
1806
|
interactionSettingsStore[component.uid] = settings;
|
|
@@ -1849,11 +1839,11 @@ class CalendarContent extends PureComponent {
|
|
|
1849
1839
|
}
|
|
1850
1840
|
let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);
|
|
1851
1841
|
return (createElement(ViewContextType.Provider, { value: viewContext },
|
|
1852
|
-
toolbarConfig.header && (createElement(Toolbar, Object.assign({
|
|
1842
|
+
toolbarConfig.header && (createElement(Toolbar, Object.assign({ className: "fc-header-toolbar", model: toolbarConfig.header, titleId: this.viewTitleId }, toolbarProps))),
|
|
1853
1843
|
createElement(ViewHarness, { height: viewHeight, heightLiquid: viewHeightLiquid, aspectRatio: viewAspectRatio },
|
|
1854
|
-
this.renderView(props),
|
|
1844
|
+
this.renderView(props, toolbarProps.title),
|
|
1855
1845
|
this.buildAppendContent()),
|
|
1856
|
-
toolbarConfig.footer && (createElement(Toolbar, Object.assign({
|
|
1846
|
+
toolbarConfig.footer && (createElement(Toolbar, Object.assign({ className: "fc-footer-toolbar", model: toolbarConfig.footer }, toolbarProps)))));
|
|
1857
1847
|
}
|
|
1858
1848
|
componentDidMount() {
|
|
1859
1849
|
let { props } = this;
|
|
@@ -1884,9 +1874,9 @@ class CalendarContent extends PureComponent {
|
|
|
1884
1874
|
let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));
|
|
1885
1875
|
return createElement(Fragment, {}, ...children);
|
|
1886
1876
|
}
|
|
1887
|
-
renderView(props) {
|
|
1877
|
+
renderView(props, title) {
|
|
1888
1878
|
let { pluginHooks } = props;
|
|
1889
|
-
let { viewSpec } = props;
|
|
1879
|
+
let { viewSpec, toolbarConfig } = props;
|
|
1890
1880
|
let viewProps = {
|
|
1891
1881
|
dateProfile: props.dateProfile,
|
|
1892
1882
|
businessHours: props.businessHours,
|
|
@@ -1897,6 +1887,8 @@ class CalendarContent extends PureComponent {
|
|
|
1897
1887
|
eventDrag: props.eventDrag,
|
|
1898
1888
|
eventResize: props.eventResize,
|
|
1899
1889
|
forPrint: props.forPrint,
|
|
1890
|
+
labelId: toolbarConfig.header && toolbarConfig.header.hasTitle ? this.viewTitleId : undefined,
|
|
1891
|
+
labelStr: toolbarConfig.header && toolbarConfig.header.hasTitle ? undefined : title,
|
|
1900
1892
|
};
|
|
1901
1893
|
let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);
|
|
1902
1894
|
for (let transformer of transformers) {
|
|
@@ -2074,6 +2066,6 @@ function sliceEvents(props, allDay) {
|
|
|
2074
2066
|
return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
|
|
2075
2067
|
}
|
|
2076
2068
|
|
|
2077
|
-
const version = '7.0.0-beta.
|
|
2069
|
+
const version = '7.0.0-beta.4';
|
|
2078
2070
|
|
|
2079
2071
|
export { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };
|