@fullcalendar/core 7.0.0-beta.0 → 7.0.0-beta.3

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.
Files changed (175) hide show
  1. package/index.cjs +25 -42
  2. package/index.d.ts +0 -1
  3. package/index.global.js +1509 -1352
  4. package/index.global.min.js +2 -2
  5. package/index.js +26 -43
  6. package/internal-common.cjs +4139 -3965
  7. package/internal-common.d.ts +188 -165
  8. package/internal-common.js +4123 -3944
  9. package/internal.cjs +14 -20
  10. package/internal.d.ts +1 -2
  11. package/internal.js +1 -1
  12. package/locales/af.global.js +1 -1
  13. package/locales/af.global.min.js +1 -1
  14. package/locales/ar-dz.global.js +1 -1
  15. package/locales/ar-dz.global.min.js +1 -1
  16. package/locales/ar-kw.global.js +1 -1
  17. package/locales/ar-kw.global.min.js +1 -1
  18. package/locales/ar-ly.global.js +1 -1
  19. package/locales/ar-ly.global.min.js +1 -1
  20. package/locales/ar-ma.global.js +1 -1
  21. package/locales/ar-ma.global.min.js +1 -1
  22. package/locales/ar-sa.global.js +1 -1
  23. package/locales/ar-sa.global.min.js +1 -1
  24. package/locales/ar-tn.global.js +1 -1
  25. package/locales/ar-tn.global.min.js +1 -1
  26. package/locales/ar.global.js +1 -1
  27. package/locales/ar.global.min.js +1 -1
  28. package/locales/az.global.js +1 -1
  29. package/locales/az.global.min.js +1 -1
  30. package/locales/bg.global.js +1 -1
  31. package/locales/bg.global.min.js +1 -1
  32. package/locales/bn.global.js +1 -1
  33. package/locales/bn.global.min.js +1 -1
  34. package/locales/bs.global.js +1 -1
  35. package/locales/bs.global.min.js +1 -1
  36. package/locales/ca.global.js +1 -1
  37. package/locales/ca.global.min.js +1 -1
  38. package/locales/cs.global.js +1 -1
  39. package/locales/cs.global.min.js +1 -1
  40. package/locales/cy.global.js +1 -1
  41. package/locales/cy.global.min.js +1 -1
  42. package/locales/da.global.js +1 -1
  43. package/locales/da.global.min.js +1 -1
  44. package/locales/de-at.global.js +1 -1
  45. package/locales/de-at.global.min.js +1 -1
  46. package/locales/de.global.js +1 -1
  47. package/locales/de.global.min.js +1 -1
  48. package/locales/el.global.js +1 -1
  49. package/locales/el.global.min.js +1 -1
  50. package/locales/en-au.global.js +1 -1
  51. package/locales/en-au.global.min.js +1 -1
  52. package/locales/en-gb.global.js +1 -1
  53. package/locales/en-gb.global.min.js +1 -1
  54. package/locales/en-nz.global.js +1 -1
  55. package/locales/en-nz.global.min.js +1 -1
  56. package/locales/eo.global.js +1 -1
  57. package/locales/eo.global.min.js +1 -1
  58. package/locales/es-us.global.js +1 -1
  59. package/locales/es-us.global.min.js +1 -1
  60. package/locales/es.global.js +1 -1
  61. package/locales/es.global.min.js +1 -1
  62. package/locales/et.global.js +1 -1
  63. package/locales/et.global.min.js +1 -1
  64. package/locales/eu.global.js +1 -1
  65. package/locales/eu.global.min.js +1 -1
  66. package/locales/fa.global.js +1 -1
  67. package/locales/fa.global.min.js +1 -1
  68. package/locales/fi.global.js +1 -1
  69. package/locales/fi.global.min.js +1 -1
  70. package/locales/fr-ca.global.js +1 -1
  71. package/locales/fr-ca.global.min.js +1 -1
  72. package/locales/fr-ch.global.js +1 -1
  73. package/locales/fr-ch.global.min.js +1 -1
  74. package/locales/fr.global.js +1 -1
  75. package/locales/fr.global.min.js +1 -1
  76. package/locales/gl.global.js +1 -1
  77. package/locales/gl.global.min.js +1 -1
  78. package/locales/he.global.js +1 -1
  79. package/locales/he.global.min.js +1 -1
  80. package/locales/hi.global.js +1 -1
  81. package/locales/hi.global.min.js +1 -1
  82. package/locales/hr.global.js +1 -1
  83. package/locales/hr.global.min.js +1 -1
  84. package/locales/hu.global.js +1 -1
  85. package/locales/hu.global.min.js +1 -1
  86. package/locales/hy-am.global.js +1 -1
  87. package/locales/hy-am.global.min.js +1 -1
  88. package/locales/id.global.js +1 -1
  89. package/locales/id.global.min.js +1 -1
  90. package/locales/is.global.js +1 -1
  91. package/locales/is.global.min.js +1 -1
  92. package/locales/it.global.js +1 -1
  93. package/locales/it.global.min.js +1 -1
  94. package/locales/ja.global.js +1 -1
  95. package/locales/ja.global.min.js +1 -1
  96. package/locales/ka.global.js +1 -1
  97. package/locales/ka.global.min.js +1 -1
  98. package/locales/kk.global.js +1 -1
  99. package/locales/kk.global.min.js +1 -1
  100. package/locales/km.global.js +1 -1
  101. package/locales/km.global.min.js +1 -1
  102. package/locales/ko.global.js +1 -1
  103. package/locales/ko.global.min.js +1 -1
  104. package/locales/ku.global.js +1 -1
  105. package/locales/ku.global.min.js +1 -1
  106. package/locales/lb.global.js +1 -1
  107. package/locales/lb.global.min.js +1 -1
  108. package/locales/lt.global.js +1 -1
  109. package/locales/lt.global.min.js +1 -1
  110. package/locales/lv.global.js +1 -1
  111. package/locales/lv.global.min.js +1 -1
  112. package/locales/mk.global.js +1 -1
  113. package/locales/mk.global.min.js +1 -1
  114. package/locales/ms.global.js +1 -1
  115. package/locales/ms.global.min.js +1 -1
  116. package/locales/nb.global.js +1 -1
  117. package/locales/nb.global.min.js +1 -1
  118. package/locales/ne.global.js +1 -1
  119. package/locales/ne.global.min.js +1 -1
  120. package/locales/nl.global.js +1 -1
  121. package/locales/nl.global.min.js +1 -1
  122. package/locales/nn.global.js +1 -1
  123. package/locales/nn.global.min.js +1 -1
  124. package/locales/pl.global.js +1 -1
  125. package/locales/pl.global.min.js +1 -1
  126. package/locales/pt-br.global.js +1 -1
  127. package/locales/pt-br.global.min.js +1 -1
  128. package/locales/pt.global.js +1 -1
  129. package/locales/pt.global.min.js +1 -1
  130. package/locales/ro.global.js +1 -1
  131. package/locales/ro.global.min.js +1 -1
  132. package/locales/ru.global.js +1 -1
  133. package/locales/ru.global.min.js +1 -1
  134. package/locales/si-lk.global.js +1 -1
  135. package/locales/si-lk.global.min.js +1 -1
  136. package/locales/sk.global.js +1 -1
  137. package/locales/sk.global.min.js +1 -1
  138. package/locales/sl.global.js +1 -1
  139. package/locales/sl.global.min.js +1 -1
  140. package/locales/sm.global.js +1 -1
  141. package/locales/sm.global.min.js +1 -1
  142. package/locales/sq.global.js +1 -1
  143. package/locales/sq.global.min.js +1 -1
  144. package/locales/sr-cyrl.global.js +1 -1
  145. package/locales/sr-cyrl.global.min.js +1 -1
  146. package/locales/sr.global.js +1 -1
  147. package/locales/sr.global.min.js +1 -1
  148. package/locales/sv.global.js +1 -1
  149. package/locales/sv.global.min.js +1 -1
  150. package/locales/ta-in.global.js +1 -1
  151. package/locales/ta-in.global.min.js +1 -1
  152. package/locales/th.global.js +1 -1
  153. package/locales/th.global.min.js +1 -1
  154. package/locales/tr.global.js +1 -1
  155. package/locales/tr.global.min.js +1 -1
  156. package/locales/ug.global.js +1 -1
  157. package/locales/ug.global.min.js +1 -1
  158. package/locales/uk.global.js +1 -1
  159. package/locales/uk.global.min.js +1 -1
  160. package/locales/uz-cy.global.js +1 -1
  161. package/locales/uz-cy.global.min.js +1 -1
  162. package/locales/uz.global.js +1 -1
  163. package/locales/uz.global.min.js +1 -1
  164. package/locales/vi.global.js +1 -1
  165. package/locales/vi.global.min.js +1 -1
  166. package/locales/zh-cn.global.js +1 -1
  167. package/locales/zh-cn.global.min.js +1 -1
  168. package/locales/zh-tw.global.js +1 -1
  169. package/locales/zh-tw.global.min.js +1 -1
  170. package/locales-all.global.js +1 -1
  171. package/locales-all.global.min.js +1 -1
  172. package/package.json +1 -1
  173. package/preact.cjs +1 -0
  174. package/preact.d.ts +9 -2
  175. package/preact.js +1 -1
package/index.js CHANGED
@@ -1,4 +1,4 @@
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 buildViewClassNames, 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 Interaction, Z as getElSeg, _ as elementClosest, $ as EventImpl, a0 as listenBySelector, a1 as listenToHoverBySelector, a2 as PureComponent, a3 as buildViewContext, a4 as parseInteractionSettings, a5 as interactionSettingsStore, a6 as getNow, a7 as getIsHeightAuto, a8 as CalendarImpl, a9 as flushSync, aa as CalendarRoot, ab as RenderId, ac as ensureElHasStyles, ad as applyStyleProp, ae as sliceEventStore } from './internal-common.js';
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 parseInteractionSettings, a5 as interactionSettingsStore, a6 as getNow, a7 as getIsHeightAuto, a8 as CalendarImpl, a9 as flushSync, aa as CalendarRoot, ab as RenderId, ac as ensureElHasStyles, ad as applyStyleProp, ae as sliceEventStore } from './internal-common.js';
2
2
  export { af as JsonRequestError } from './internal-common.js';
3
3
  import { createElement, Component, Fragment, render } from 'preact';
4
4
  import 'preact/compat';
@@ -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, { elTag: "div", elClasses: buildViewClassNames(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 }))));
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) {
@@ -1624,7 +1624,7 @@ class ToolbarSection extends BaseComponent {
1624
1624
  render() {
1625
1625
  let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));
1626
1626
  return createElement('div', {
1627
- className: 'fc-toolbar-chunk fc-toolbar-' + this.props.name
1627
+ className: 'fc-toolbar-section fc-toolbar-' + this.props.name
1628
1628
  }, ...children);
1629
1629
  }
1630
1630
  renderWidgetGroup(widgetGroup) {
@@ -1643,15 +1643,11 @@ class ToolbarSection extends BaseComponent {
1643
1643
  let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||
1644
1644
  (!props.isPrevEnabled && buttonName === 'prev') ||
1645
1645
  (!props.isNextEnabled && buttonName === 'next');
1646
- let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];
1647
- if (isPressed) {
1648
- buttonClasses.push(theme.getClass('buttonActive'));
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" }) : '')));
1646
+ children.push(createElement("button", { type: "button", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, "aria-pressed": isPressed, className: joinClassNames(`fc-${buttonName}-button`, theme.getClassName('button'), isPressed && theme.getClassName('buttonActive')), onClick: buttonClick }, buttonText || (buttonIcon ? createElement("span", { className: buttonIcon, role: "img" }) : '')));
1651
1647
  }
1652
1648
  }
1653
1649
  if (children.length > 1) {
1654
- let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';
1650
+ let groupClassName = (isOnlyButtons && theme.getClassName('buttonGroup')) || '';
1655
1651
  return createElement('div', { className: groupClassName }, ...children);
1656
1652
  }
1657
1653
  return children[0];
@@ -1660,7 +1656,7 @@ class ToolbarSection extends BaseComponent {
1660
1656
 
1661
1657
  class Toolbar extends BaseComponent {
1662
1658
  render() {
1663
- let { model, extraClassName } = this.props;
1659
+ let { model, className } = this.props;
1664
1660
  let forceLtr = false;
1665
1661
  let startContent;
1666
1662
  let endContent;
@@ -1680,12 +1676,7 @@ class Toolbar extends BaseComponent {
1680
1676
  else {
1681
1677
  endContent = sectionWidgets.end;
1682
1678
  }
1683
- let classNames = [
1684
- extraClassName || '',
1685
- 'fc-toolbar',
1686
- forceLtr ? 'fc-toolbar-ltr' : '',
1687
- ];
1688
- return (createElement("div", { className: classNames.join(' ') },
1679
+ return (createElement("div", { className: joinClassNames(className, 'fc-toolbar', forceLtr && 'fc-toolbar-ltr') },
1689
1680
  this.renderSection('start', startContent || []),
1690
1681
  this.renderSection('center', centerContent || []),
1691
1682
  this.renderSection('end', endContent || [])));
@@ -1705,22 +1696,15 @@ class EventClicking extends Interaction {
1705
1696
  this.handleSegClick = (ev, segEl) => {
1706
1697
  let { component } = this;
1707
1698
  let { context } = component;
1708
- let seg = getElSeg(segEl);
1709
- if (seg && // might be the <div> surrounding the more link
1699
+ let eventRange = getElEventRange(segEl);
1700
+ if (eventRange && // might be the <div> surrounding the more link
1710
1701
  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
1702
  context.emitter.trigger('eventClick', {
1716
1703
  el: segEl,
1717
- event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),
1704
+ event: new EventImpl(component.context, eventRange.def, eventRange.instance),
1718
1705
  jsEvent: ev,
1719
1706
  view: context.viewApi,
1720
1707
  });
1721
- if (url && !ev.defaultPrevented) {
1722
- window.location.href = url;
1723
- }
1724
1708
  }
1725
1709
  };
1726
1710
  this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events
@@ -1742,7 +1726,7 @@ class EventHovering extends Interaction {
1742
1726
  }
1743
1727
  };
1744
1728
  this.handleSegEnter = (ev, segEl) => {
1745
- if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper
1729
+ if (getElEventRange(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper
1746
1730
  this.currentSegEl = segEl;
1747
1731
  this.triggerEvent('eventMouseEnter', ev, segEl);
1748
1732
  }
@@ -1762,11 +1746,11 @@ class EventHovering extends Interaction {
1762
1746
  triggerEvent(publicEvName, ev, segEl) {
1763
1747
  let { component } = this;
1764
1748
  let { context } = component;
1765
- let seg = getElSeg(segEl);
1749
+ let eventRange = getElEventRange(segEl);
1766
1750
  if (!ev || component.isValidSegDownEl(ev.target)) {
1767
1751
  context.emitter.trigger(publicEvName, {
1768
1752
  el: segEl,
1769
- event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),
1753
+ event: new EventImpl(context, eventRange.def, eventRange.instance),
1770
1754
  jsEvent: ev,
1771
1755
  view: context.viewApi,
1772
1756
  });
@@ -1777,16 +1761,12 @@ class EventHovering extends Interaction {
1777
1761
  class ViewHarness extends Component {
1778
1762
  render() {
1779
1763
  const { props } = this;
1780
- return (createElement("div", { className: [
1781
- 'fc-view-harness',
1782
- props.height != null
1783
- ? 'fc-view-harness-fixedheight'
1784
- : props.heightLiquid
1785
- ? 'fc-view-harness-liquid'
1786
- : props.aspectRatio != null
1787
- ? 'fc-view-harness-aspectratio'
1788
- : ''
1789
- ].join(' '), style: {
1764
+ return (createElement("div", { className: joinClassNames('fc-view-outer', props.height != null
1765
+ ? 'fc-view-outer-static'
1766
+ : props.heightLiquid
1767
+ ? 'fc-view-outer-liquid'
1768
+ : props.aspectRatio != null
1769
+ && 'fc-view-outer-aspect-ratio'), style: {
1790
1770
  height: props.height,
1791
1771
  paddingBottom: props.aspectRatio != null
1792
1772
  ? `${(1 / props.aspectRatio) * 100}%`
@@ -1810,7 +1790,10 @@ class CalendarContent extends PureComponent {
1810
1790
  EventClicking,
1811
1791
  EventHovering,
1812
1792
  ];
1813
- let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);
1793
+ let interactionClasses = DEFAULT_INTERACTIONS;
1794
+ if (!settingsInput.disableHits) {
1795
+ interactionClasses = interactionClasses.concat(this.props.pluginHooks.componentInteractions);
1796
+ }
1814
1797
  let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));
1815
1798
  this.interactionsStore[component.uid] = interactions;
1816
1799
  interactionSettingsStore[component.uid] = settings;
@@ -1849,11 +1832,11 @@ class CalendarContent extends PureComponent {
1849
1832
  }
1850
1833
  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
1834
  return (createElement(ViewContextType.Provider, { value: viewContext },
1852
- toolbarConfig.header && (createElement(Toolbar, Object.assign({ extraClassName: "fc-header-toolbar", model: toolbarConfig.header }, toolbarProps))),
1835
+ toolbarConfig.header && (createElement(Toolbar, Object.assign({ className: "fc-header-toolbar", model: toolbarConfig.header }, toolbarProps))),
1853
1836
  createElement(ViewHarness, { height: viewHeight, heightLiquid: viewHeightLiquid, aspectRatio: viewAspectRatio },
1854
1837
  this.renderView(props),
1855
1838
  this.buildAppendContent()),
1856
- toolbarConfig.footer && (createElement(Toolbar, Object.assign({ extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer }, toolbarProps)))));
1839
+ toolbarConfig.footer && (createElement(Toolbar, Object.assign({ className: "fc-footer-toolbar", model: toolbarConfig.footer }, toolbarProps)))));
1857
1840
  }
1858
1841
  componentDidMount() {
1859
1842
  let { props } = this;
@@ -2074,6 +2057,6 @@ function sliceEvents(props, allDay) {
2074
2057
  return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
2075
2058
  }
2076
2059
 
2077
- const version = '7.0.0-beta.0';
2060
+ const version = '7.0.0-beta.3';
2078
2061
 
2079
2062
  export { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };