@syncfusion/ej2-schedule 27.2.5 → 28.1.33

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 (143) hide show
  1. package/README.md +2 -2
  2. package/dist/ej2-schedule.min.js +3 -3
  3. package/dist/ej2-schedule.umd.min.js +3 -3
  4. package/dist/ej2-schedule.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es2015.js +425 -46
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +454 -48
  8. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  9. package/dist/global/ej2-schedule.min.js +3 -3
  10. package/dist/global/ej2-schedule.min.js.map +1 -1
  11. package/dist/global/index.d.ts +2 -2
  12. package/package.json +16 -16
  13. package/src/schedule/actions/action-base.js +4 -3
  14. package/src/schedule/actions/drag.js +2 -2
  15. package/src/schedule/actions/keyboard.d.ts +16 -0
  16. package/src/schedule/actions/keyboard.js +254 -8
  17. package/src/schedule/actions/touch.js +7 -2
  18. package/src/schedule/base/constant.d.ts +4 -0
  19. package/src/schedule/base/constant.js +4 -0
  20. package/src/schedule/base/css-constant.d.ts +2 -0
  21. package/src/schedule/base/css-constant.js +2 -0
  22. package/src/schedule/base/interface.d.ts +14 -4
  23. package/src/schedule/base/schedule-model.d.ts +17 -1
  24. package/src/schedule/base/schedule.d.ts +67 -1
  25. package/src/schedule/base/schedule.js +131 -1
  26. package/src/schedule/base/type.d.ts +8 -0
  27. package/src/schedule/popups/event-tooltip.js +4 -0
  28. package/src/schedule/renderer/agenda.d.ts +2 -1
  29. package/src/schedule/renderer/agenda.js +1 -1
  30. package/src/schedule/renderer/header-renderer.js +4 -2
  31. package/src/schedule/renderer/month-agenda.d.ts +2 -1
  32. package/src/schedule/renderer/month-agenda.js +2 -2
  33. package/src/schedule/renderer/month.d.ts +4 -3
  34. package/src/schedule/renderer/month.js +16 -9
  35. package/src/schedule/renderer/view-base.d.ts +5 -4
  36. package/src/schedule/renderer/view-base.js +13 -10
  37. package/src/schedule/renderer/year.d.ts +3 -2
  38. package/src/schedule/renderer/year.js +10 -7
  39. package/styles/bds-lite.css +4400 -0
  40. package/styles/bds-lite.scss +18 -0
  41. package/styles/bds.css +5161 -0
  42. package/styles/bds.scss +20 -0
  43. package/styles/bootstrap-dark-lite.css +19 -6
  44. package/styles/bootstrap-dark.css +23 -10
  45. package/styles/bootstrap-lite.css +18 -5
  46. package/styles/bootstrap.css +22 -9
  47. package/styles/bootstrap4-lite.css +18 -5
  48. package/styles/bootstrap4.css +22 -9
  49. package/styles/bootstrap5-dark-lite.css +18 -5
  50. package/styles/bootstrap5-dark.css +23 -10
  51. package/styles/bootstrap5-lite.css +18 -5
  52. package/styles/bootstrap5.3-lite.css +18 -5
  53. package/styles/bootstrap5.3.css +23 -10
  54. package/styles/bootstrap5.css +23 -10
  55. package/styles/fabric-dark-lite.css +18 -5
  56. package/styles/fabric-dark.css +22 -9
  57. package/styles/fabric-lite.css +18 -5
  58. package/styles/fabric.css +22 -9
  59. package/styles/fluent-dark-lite.css +18 -5
  60. package/styles/fluent-dark.css +22 -9
  61. package/styles/fluent-lite.css +18 -5
  62. package/styles/fluent.css +22 -9
  63. package/styles/fluent2-lite.css +43 -6
  64. package/styles/fluent2.css +50 -13
  65. package/styles/highcontrast-light-lite.css +18 -5
  66. package/styles/highcontrast-light.css +22 -9
  67. package/styles/highcontrast-lite.css +19 -6
  68. package/styles/highcontrast.css +23 -10
  69. package/styles/material-dark-lite.css +18 -5
  70. package/styles/material-dark.css +22 -9
  71. package/styles/material-lite.css +18 -5
  72. package/styles/material.css +22 -9
  73. package/styles/material3-dark-lite.css +18 -5
  74. package/styles/material3-dark.css +23 -10
  75. package/styles/material3-lite.css +18 -5
  76. package/styles/material3.css +23 -10
  77. package/styles/recurrence-editor/_bigger.scss +2 -3
  78. package/styles/recurrence-editor/_fluent2-definition.scss +1 -1
  79. package/styles/recurrence-editor/_tailwind3-definition.scss +14 -0
  80. package/styles/recurrence-editor/bds.css +533 -0
  81. package/styles/recurrence-editor/bds.scss +9 -0
  82. package/styles/recurrence-editor/bootstrap-dark.css +2 -3
  83. package/styles/recurrence-editor/bootstrap.css +2 -3
  84. package/styles/recurrence-editor/bootstrap4.css +2 -3
  85. package/styles/recurrence-editor/bootstrap5-dark.css +2 -3
  86. package/styles/recurrence-editor/bootstrap5.3.css +2 -3
  87. package/styles/recurrence-editor/bootstrap5.css +2 -3
  88. package/styles/recurrence-editor/fabric-dark.css +2 -3
  89. package/styles/recurrence-editor/fabric.css +2 -3
  90. package/styles/recurrence-editor/fluent-dark.css +2 -3
  91. package/styles/recurrence-editor/fluent.css +2 -3
  92. package/styles/recurrence-editor/fluent2.css +3 -4
  93. package/styles/recurrence-editor/highcontrast-light.css +2 -3
  94. package/styles/recurrence-editor/highcontrast.css +3 -4
  95. package/styles/recurrence-editor/material-dark.css +2 -3
  96. package/styles/recurrence-editor/material.css +2 -3
  97. package/styles/recurrence-editor/material3-dark.css +2 -3
  98. package/styles/recurrence-editor/material3.css +2 -3
  99. package/styles/recurrence-editor/tailwind-dark.css +2 -3
  100. package/styles/recurrence-editor/tailwind.css +2 -3
  101. package/styles/recurrence-editor/tailwind3.css +500 -0
  102. package/styles/recurrence-editor/tailwind3.scss +9 -0
  103. package/styles/schedule/_bigger.scss +2 -1
  104. package/styles/schedule/_bootstrap5-definition.scss +1 -1
  105. package/styles/schedule/_bootstrap5.3-definition.scss +1 -1
  106. package/styles/schedule/_fluent2-definition.scss +3 -3
  107. package/styles/schedule/_layout.scss +43 -2
  108. package/styles/schedule/_material3-definition.scss +1 -1
  109. package/styles/schedule/_tailwind-definition.scss +1 -1
  110. package/styles/schedule/_tailwind3-definition.scss +276 -0
  111. package/styles/schedule/_theme.scss +0 -4
  112. package/styles/schedule/bds.css +4760 -0
  113. package/styles/schedule/bds.scss +17 -0
  114. package/styles/schedule/bootstrap-dark.css +21 -7
  115. package/styles/schedule/bootstrap.css +20 -6
  116. package/styles/schedule/bootstrap4.css +20 -6
  117. package/styles/schedule/bootstrap5-dark.css +21 -7
  118. package/styles/schedule/bootstrap5.3.css +21 -7
  119. package/styles/schedule/bootstrap5.css +21 -7
  120. package/styles/schedule/fabric-dark.css +20 -6
  121. package/styles/schedule/fabric.css +20 -6
  122. package/styles/schedule/fluent-dark.css +20 -6
  123. package/styles/schedule/fluent.css +20 -6
  124. package/styles/schedule/fluent2.css +47 -9
  125. package/styles/schedule/highcontrast-light.css +20 -6
  126. package/styles/schedule/highcontrast.css +21 -7
  127. package/styles/schedule/icons/_tailwind3.scss +220 -0
  128. package/styles/schedule/material-dark.css +20 -6
  129. package/styles/schedule/material.css +20 -6
  130. package/styles/schedule/material3-dark.css +21 -7
  131. package/styles/schedule/material3.css +21 -7
  132. package/styles/schedule/tailwind-dark.css +21 -7
  133. package/styles/schedule/tailwind.css +21 -7
  134. package/styles/schedule/tailwind3.css +4599 -0
  135. package/styles/schedule/tailwind3.scss +17 -0
  136. package/styles/tailwind-dark-lite.css +18 -5
  137. package/styles/tailwind-dark.css +23 -10
  138. package/styles/tailwind-lite.css +18 -5
  139. package/styles/tailwind.css +23 -10
  140. package/styles/tailwind3-lite.css +4239 -0
  141. package/styles/tailwind3-lite.scss +18 -0
  142. package/styles/tailwind3.css +5000 -0
  143. package/styles/tailwind3.scss +20 -0
@@ -74,6 +74,8 @@ var agendaCells = 'agendaCells';
74
74
  var resourceHeader = 'resourceHeader';
75
75
  /** @private */
76
76
  var dateHeader = 'dateHeader';
77
+ /** @private */
78
+ var beforePaste = 'beforePaste';
77
79
  /**
78
80
  * Specifies schedule internal events
79
81
  */
@@ -100,6 +102,8 @@ var uiUpdate = 'ui-update';
100
102
  /** @private */
101
103
  var documentClick = 'document-click';
102
104
  /** @private */
105
+ var documentPaste = 'document-paste';
106
+ /** @private */
103
107
  var cellMouseDown = 'cell-mouse-down';
104
108
 
105
109
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -1028,6 +1032,8 @@ var SCROLL_HIDDEN = 'e-scroll-hidden';
1028
1032
  var ALLDAY_APPOINTMENT_SCROLL = 'e-all-day-scroll';
1029
1033
  /** @private */
1030
1034
  var ALLDAY_APPOINTMENT_AUTO = 'e-all-day-auto';
1035
+ /** @private */
1036
+ var CLIPBOARD_CLASS = 'e-clipboard';
1031
1037
 
1032
1038
  var __assign = (undefined && undefined.__assign) || function () {
1033
1039
  __assign = Object.assign || function(t) {
@@ -1504,6 +1510,8 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1504
1510
  targetType: 'relative',
1505
1511
  relateTo: this.getPopUpRelativeElement(),
1506
1512
  position: { X: 'left', Y: 'bottom' },
1513
+ collision: { X: 'fit' },
1514
+ viewPortElement: this.element,
1507
1515
  enableRtl: this.parent.enableRtl
1508
1516
  });
1509
1517
  var calendarView = this.getCalendarView();
@@ -1615,10 +1623,10 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1615
1623
  }
1616
1624
  break;
1617
1625
  case 'e-prev':
1618
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), args.originalEvent);
1626
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Previous'), args.originalEvent);
1619
1627
  break;
1620
1628
  case 'e-next':
1621
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), args.originalEvent);
1629
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Next'), args.originalEvent);
1622
1630
  break;
1623
1631
  case 'e-add':
1624
1632
  isSameTime = this.parent.activeCellsData.startTime.getTime() === this.parent.activeCellsData.endTime.getTime();
@@ -1845,6 +1853,9 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
1845
1853
  this.touchRightDirection = this.parent.enableRtl ? 'Left' : 'Right';
1846
1854
  }
1847
1855
  ScheduleTouch.prototype.scrollHandler = function (e) {
1856
+ if (!isNullOrUndefined(this.parent.eventTooltip)) {
1857
+ this.parent.eventTooltip.close();
1858
+ }
1848
1859
  var blockSwipe = !this.parent.isAdaptive && e.originalEvent && e.originalEvent.target &&
1849
1860
  !isNullOrUndefined(closest(e.originalEvent.target, '.' + APPOINTMENT_CLASS));
1850
1861
  this.parent.uiStateValues.isTouchScroll = blockSwipe && e.originalEvent.type === 'touchmove' && !this.parent.uiStateValues.action;
@@ -1852,6 +1863,7 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
1852
1863
  this.parent.uiStateValues.isTapHold) {
1853
1864
  return;
1854
1865
  }
1866
+ this.parent.uiStateValues.isSwipeScroll = true;
1855
1867
  if (!this.timeStampStart) {
1856
1868
  this.timeStampStart = Date.now();
1857
1869
  }
@@ -1876,7 +1888,7 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
1876
1888
  }
1877
1889
  if (e.scrollDirection === this.touchLeftDirection) {
1878
1890
  if (!this.nextPanel) {
1879
- this.renderPanel(NEXT_PANEL_CLASS, 'next');
1891
+ this.renderPanel(NEXT_PANEL_CLASS, 'Next');
1880
1892
  this.nextPanel = {
1881
1893
  element: this.parent.activeView.getPanel(),
1882
1894
  selectedDate: new Date(this.parent.selectedDate.getTime()),
@@ -1891,7 +1903,7 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
1891
1903
  else if (e.scrollDirection === this.touchRightDirection) {
1892
1904
  var prevWidth = 0;
1893
1905
  if (!this.previousPanel) {
1894
- this.renderPanel(PREVIOUS_PANEL_CLASS, 'previous');
1906
+ this.renderPanel(PREVIOUS_PANEL_CLASS, 'Previous');
1895
1907
  this.previousPanel = {
1896
1908
  element: this.parent.activeView.getPanel(),
1897
1909
  selectedDate: new Date(this.parent.selectedDate.getTime()),
@@ -2039,6 +2051,7 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
2039
2051
  if (!isNullOrUndefined(this.element) && !this.element.classList.contains(TRANSLATE_CLASS)) {
2040
2052
  return;
2041
2053
  }
2054
+ this.parent.uiStateValues.isSwipeScroll = false;
2042
2055
  removeClass([this.element], TRANSLATE_CLASS);
2043
2056
  this.element.style.transitionDuration = '';
2044
2057
  this.element.style.transform = '';
@@ -2085,13 +2098,25 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
2085
2098
  return ScheduleTouch;
2086
2099
  }());
2087
2100
 
2088
- /* eslint-disable @typescript-eslint/no-explicit-any */
2101
+ var __assign$1 = (undefined && undefined.__assign) || function () {
2102
+ __assign$1 = Object.assign || function(t) {
2103
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2104
+ s = arguments[i];
2105
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
2106
+ t[p] = s[p];
2107
+ }
2108
+ return t;
2109
+ };
2110
+ return __assign$1.apply(this, arguments);
2111
+ };
2089
2112
  /**
2090
2113
  * Keyboard interaction
2091
2114
  */
2092
2115
  var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2093
2116
  function KeyboardInteraction(parent) {
2094
2117
  this.selectedCells = [];
2118
+ this.isCutContentPasted = false;
2119
+ this.isCutAction = false;
2095
2120
  this.keyConfigs = {
2096
2121
  downArrow: 'downarrow',
2097
2122
  upArrow: 'uparrow',
@@ -2126,7 +2151,11 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2126
2151
  ctrlShiftLeftArrow: 'ctrl+shift+leftarrow',
2127
2152
  ctrlShiftRightArrow: 'ctrl+shift+rightarrow',
2128
2153
  shiftAltY: 'shift+alt+y',
2129
- shiftAltN: 'shift+alt+n'
2154
+ shiftAltN: 'shift+alt+n',
2155
+ cut: 'ctrl+x',
2156
+ copy: 'ctrl+c',
2157
+ cmdCut: 'cmd+x',
2158
+ cmdCopy: 'cmd+c'
2130
2159
  };
2131
2160
  this.parent = parent;
2132
2161
  this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;
@@ -2136,6 +2165,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2136
2165
  eventName: 'keydown'
2137
2166
  });
2138
2167
  this.addEventListener();
2168
+ this.createClipboardElement();
2139
2169
  }
2140
2170
  KeyboardInteraction.prototype.keyActionHandler = function (e) {
2141
2171
  switch (e.action) {
@@ -2156,13 +2186,13 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2156
2186
  this.processRight(e, e.shiftKey);
2157
2187
  break;
2158
2188
  case 'ctrlLeftArrow':
2159
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);
2189
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Previous'), e);
2160
2190
  if (this.parent.headerModule) {
2161
2191
  this.parent.headerModule.element.querySelector('.e-prev button').focus();
2162
2192
  }
2163
2193
  break;
2164
2194
  case 'ctrlRightArrow':
2165
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);
2195
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Next'), e);
2166
2196
  if (this.parent.headerModule) {
2167
2197
  this.parent.headerModule.element.querySelector('.e-next button').focus();
2168
2198
  }
@@ -2217,6 +2247,14 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2217
2247
  }
2218
2248
  this.processShiftAltN(e);
2219
2249
  break;
2250
+ case 'cut':
2251
+ case 'cmdCut':
2252
+ this.processClipboardAction(true, undefined, e);
2253
+ break;
2254
+ case 'copy':
2255
+ case 'cmdCopy':
2256
+ this.processClipboardAction(false, undefined, e);
2257
+ break;
2220
2258
  }
2221
2259
  };
2222
2260
  KeyboardInteraction.prototype.processShiftAltN = function (e) {
@@ -2264,9 +2302,13 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2264
2302
  };
2265
2303
  KeyboardInteraction.prototype.addEventListener = function () {
2266
2304
  this.parent.on(cellMouseDown, this.onCellMouseDown, this);
2305
+ if (this.parent.allowClipboard) {
2306
+ this.parent.on(documentPaste, this.pasteHandler, this);
2307
+ }
2267
2308
  };
2268
2309
  KeyboardInteraction.prototype.removeEventListener = function () {
2269
2310
  this.parent.off(cellMouseDown, this.onCellMouseDown);
2311
+ this.parent.off(documentPaste, this.pasteHandler);
2270
2312
  };
2271
2313
  KeyboardInteraction.prototype.onCellMouseDown = function (e) {
2272
2314
  if (e.event.shiftKey) {
@@ -2906,7 +2948,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2906
2948
  return;
2907
2949
  }
2908
2950
  var rowIndex = this.isInverseTableSelect() ? key.rowIndex : 0;
2909
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);
2951
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Next'), e);
2910
2952
  var tableEle = this.parent.getContentTable();
2911
2953
  var cell = isMonthEnd ? tableEle.rows[parseInt(rowIndex.toString(), 10)].querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')')
2912
2954
  : tableEle.rows[parseInt(rowIndex.toString(), 10)].cells[0];
@@ -2922,7 +2964,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2922
2964
  this.selectCells(isMultiple, allDayRow.cells[curColIndex + 1]);
2923
2965
  }
2924
2966
  else if (curColIndex === maxColIndex - 1 && !isMultiple) {
2925
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);
2967
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Next'), e);
2926
2968
  var allDayRow_1 = this.parent.getAllDayRow();
2927
2969
  this.selectCells(false, allDayRow_1.cells[0]);
2928
2970
  }
@@ -2976,7 +3018,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2976
3018
  this.selectCells(isMultiple, this.parent.element.querySelector('[data-date="' + (targetDate.getTime() - MS_PER_DAY) + '"]'));
2977
3019
  return;
2978
3020
  }
2979
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);
3021
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Previous'), e);
2980
3022
  var tableEle = this.parent.getContentTable();
2981
3023
  var rowIndex = this.isInverseTableSelect() ? key.rowIndex : tableEle.rows.length - 1;
2982
3024
  var cell = tableEle.rows[parseInt(rowIndex.toString(), 10)].cells[key.maxIndex - 1];
@@ -2996,7 +3038,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2996
3038
  this.selectCells(isMultiple, allDayRow.cells[curColIndex - 1]);
2997
3039
  }
2998
3040
  else if (curColIndex === 0 && !isMultiple) {
2999
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);
3041
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate('Previous'), e);
3000
3042
  var allDayRow_2 = this.parent.getAllDayRow();
3001
3043
  this.selectCells(false, allDayRow_2.cells[maxColIndex - 1]);
3002
3044
  }
@@ -3262,6 +3304,221 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
3262
3304
  this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS).scrollTop = workCell.offsetTop;
3263
3305
  }
3264
3306
  };
3307
+ KeyboardInteraction.prototype.createClipboardElement = function () {
3308
+ if (!this.parent.allowClipboard) {
3309
+ return;
3310
+ }
3311
+ this.clipBoardTextArea = this.parent.createElement('textarea', {
3312
+ className: CLIPBOARD_CLASS,
3313
+ attrs: {
3314
+ tabindex: '-1'
3315
+ }
3316
+ });
3317
+ this.parent.element.appendChild(this.clipBoardTextArea);
3318
+ };
3319
+ KeyboardInteraction.prototype.setCopy = function (copiedEventData, e) {
3320
+ var _this = this;
3321
+ if (window.getSelection().toString() !== '') {
3322
+ return;
3323
+ }
3324
+ this.clipBoardTextArea.value = '';
3325
+ var eventDetails = { elements: [], eventDatas: [] };
3326
+ if (copiedEventData) {
3327
+ var filteredContent = this.filterReadOnlyEvent(copiedEventData);
3328
+ eventDetails.eventDatas = filteredContent;
3329
+ }
3330
+ else {
3331
+ if (!this.parent || !this.parent.eventBase) {
3332
+ return;
3333
+ }
3334
+ var selectedEvents = this.parent.eventBase.getSelectedEvents();
3335
+ selectedEvents.event = selectedEvents && selectedEvents.event ? Array.isArray(selectedEvents.event)
3336
+ ? this.filterReadOnlyEvent(selectedEvents.event) :
3337
+ this.filterReadOnlyEvent([selectedEvents.event]) : undefined;
3338
+ if (selectedEvents.element && selectedEvents.event) {
3339
+ eventDetails = {
3340
+ elements: selectedEvents.element,
3341
+ eventDatas: selectedEvents.event
3342
+ };
3343
+ }
3344
+ else {
3345
+ eventDetails.element = [e.target];
3346
+ eventDetails.eventDatas = [this.parent.getEventDetails(e.target)];
3347
+ }
3348
+ }
3349
+ this.clipBoardTextArea.value = JSON.stringify(eventDetails.eventDatas, undefined, 2);
3350
+ if (!/ipad|ipod|iphone/i.test(Browser.userAgent)) {
3351
+ this.clipBoardTextArea.select();
3352
+ }
3353
+ else {
3354
+ this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);
3355
+ }
3356
+ if (!isNullOrUndefined(navigator.clipboard)) {
3357
+ navigator.clipboard.writeText(this.clipBoardTextArea.value)
3358
+ .then(function () {
3359
+ _this.clipBoardTextArea.blur();
3360
+ window.getSelection().removeAllRanges();
3361
+ if (e) {
3362
+ var closestAppointment = e.target.closest('.' + APPOINTMENT_CLASS);
3363
+ if (closestAppointment) {
3364
+ closestAppointment.focus();
3365
+ }
3366
+ }
3367
+ })
3368
+ .catch(function (err) {
3369
+ throw err;
3370
+ });
3371
+ }
3372
+ };
3373
+ KeyboardInteraction.prototype.filterReadOnlyEvent = function (args) {
3374
+ var _this = this;
3375
+ return args.filter(function (event) { return !event[_this.parent.eventFields.isReadonly]; });
3376
+ };
3377
+ KeyboardInteraction.prototype.processClipboardAction = function (isCut, copiedEventData, e) {
3378
+ if (!this.parent.allowClipboard) {
3379
+ return;
3380
+ }
3381
+ this.isCutAction = isCut;
3382
+ this.isCutContentPasted = false;
3383
+ this.parent.closeQuickInfoPopup();
3384
+ this.setCopy(copiedEventData ? copiedEventData : undefined, e);
3385
+ };
3386
+ KeyboardInteraction.prototype.pasteHandler = function (clipboardEvent, targetElement) {
3387
+ var _this = this;
3388
+ if (!this.parent.allowClipboard || this.isCutContentPasted) {
3389
+ return;
3390
+ }
3391
+ var target = this.parent.getSelectedCells().length > 0
3392
+ ? this.parent.getSelectedCells()
3393
+ : (targetElement ? [targetElement] : []);
3394
+ if (target.length === 0 || this.parent.eventWindow.dialogObject.visible ||
3395
+ this.parent.quickPopup.quickPopup.element.classList.contains(POPUP_OPEN)) {
3396
+ return;
3397
+ }
3398
+ var clipboardData = clipboardEvent.clipboardData || clipboardEvent.event.clipboardData
3399
+ || window.clipboardData;
3400
+ var pastedData = clipboardData.getData('text');
3401
+ if (pastedData === '[]' || pastedData === '') {
3402
+ return;
3403
+ }
3404
+ var parsedData;
3405
+ try {
3406
+ parsedData = JSON.parse(pastedData);
3407
+ }
3408
+ catch (_a) {
3409
+ parsedData = pastedData;
3410
+ }
3411
+ var args = { cancel: false, data: parsedData, element: target };
3412
+ this.parent.trigger(beforePaste, args, function (pasteEventArgs) {
3413
+ if (!pasteEventArgs.cancel) {
3414
+ if (!Array.isArray(pasteEventArgs.data) || !pasteEventArgs.data.every(function (item) { return typeof item === 'object'; })) {
3415
+ _this.clipBoardTextArea.value = '';
3416
+ return;
3417
+ }
3418
+ _this.processPaste(pasteEventArgs.data, targetElement);
3419
+ if (_this.isCutAction) {
3420
+ _this.isCutContentPasted = true;
3421
+ }
3422
+ }
3423
+ else {
3424
+ _this.parent.closeQuickInfoPopup();
3425
+ return;
3426
+ }
3427
+ });
3428
+ };
3429
+ KeyboardInteraction.prototype.processPaste = function (data, targetElement) {
3430
+ if (!this.parent || !this.parent.eventWindow || !this.parent.eventBase || !data || !data.length) {
3431
+ return;
3432
+ }
3433
+ var target = this.getTargetElements(targetElement);
3434
+ var cellDetails = this.parent.getCellDetails(target);
3435
+ var eventDetails = {};
3436
+ this.parent.eventWindow.convertToEventData(cellDetails, eventDetails);
3437
+ var isAllDay = this.isAllDayEvent(target);
3438
+ var resources = this.parent.getResourcesByIndex(cellDetails.groupIndex);
3439
+ var processedData = this.processEventData(data, isAllDay, cellDetails, resources);
3440
+ var selectedEventData = this.parent.eventBase.sortByDateTime(processedData);
3441
+ var saveData = this.prepareEventData(selectedEventData, eventDetails);
3442
+ removeClass(target, SELECTED_CELL_CLASS);
3443
+ if (saveData.length > 0) {
3444
+ if (this.isCutAction) {
3445
+ this.parent.saveEvent(saveData);
3446
+ }
3447
+ else {
3448
+ this.parent.addEvent(saveData);
3449
+ }
3450
+ }
3451
+ };
3452
+ KeyboardInteraction.prototype.getTargetElements = function (targetElement) {
3453
+ return this.parent.getSelectedCells().length > 0
3454
+ ? this.parent.getSelectedCells()
3455
+ : (targetElement ? [targetElement] : []);
3456
+ };
3457
+ KeyboardInteraction.prototype.isAllDayEvent = function (target) {
3458
+ return !target.some(function (cell) { return cell.classList.contains(WORK_CELLS_CLASS); });
3459
+ };
3460
+ KeyboardInteraction.prototype.processEventData = function (data, isAllDay, cellDetails, resources) {
3461
+ var _this = this;
3462
+ return data.map(function (item) {
3463
+ var _a;
3464
+ var processedItem = __assign$1({}, item, (_a = {}, _a[_this.parent.eventFields.startTime] = new Date(item[_this.parent.eventFields.startTime]), _a[_this.parent.eventFields.endTime] = new Date(item[_this.parent.eventFields.endTime]), _a[_this.parent.eventFields.recurrenceID] = null, _a[_this.parent.eventFields.isAllDay] = isAllDay, _a));
3465
+ _this.adjustEventTime(processedItem, isAllDay, item.IsAllDay, cellDetails);
3466
+ if (resources && resources.groupData) {
3467
+ Object.assign(processedItem, resources.groupData);
3468
+ }
3469
+ return processedItem;
3470
+ });
3471
+ };
3472
+ KeyboardInteraction.prototype.adjustEventTime = function (processedItem, isAllDay, itemIsAllDay, cellDetails) {
3473
+ var isTimeScaleEnabled = this.parent.activeViewOptions.timeScale.enable;
3474
+ if ((['Day', 'Week', 'WorkWeek'].indexOf(this.parent.currentView) !== -1) && isTimeScaleEnabled) {
3475
+ if (isAllDay) {
3476
+ processedItem[this.parent.eventFields.endTime] = new Date(processedItem[this.parent.eventFields.startTime]);
3477
+ processedItem[this.parent.eventFields.endTime].setDate(processedItem[this.parent.eventFields.startTime].getDate() + 1);
3478
+ }
3479
+ else if (itemIsAllDay) {
3480
+ processedItem[this.parent.eventFields.startTime] = new Date(processedItem[this.parent.eventFields.startTime]
3481
+ .setHours(0, 0, 0, 0));
3482
+ processedItem[this.parent.eventFields.endTime] = new Date(processedItem[this.parent.eventFields.startTime].getTime() + (cellDetails.endTime.getTime() - cellDetails.startTime.getTime()));
3483
+ }
3484
+ }
3485
+ else if (itemIsAllDay) {
3486
+ processedItem[this.parent.eventFields.isAllDay] = true;
3487
+ processedItem[this.parent.eventFields.startTime] = new Date(processedItem[this.parent.eventFields.startTime]
3488
+ .setHours(0, 0, 0, 0));
3489
+ processedItem[this.parent.eventFields.endTime] = new Date(processedItem[this.parent.eventFields.startTime].getTime() +
3490
+ (processedItem[this.parent.eventFields.endTime].getTime() - processedItem[this.parent.eventFields.startTime].getTime()));
3491
+ }
3492
+ };
3493
+ KeyboardInteraction.prototype.prepareEventData = function (selectedEventData, eventDetails) {
3494
+ var _this = this;
3495
+ var initialEventTime = new Date(selectedEventData[0][this.parent.eventFields.startTime]);
3496
+ var uniqueId = this.parent.getEventMaxID();
3497
+ return selectedEventData.map(function (events) {
3498
+ var totalDuration = _this.calculateTotalDuration(events, eventDetails, initialEventTime);
3499
+ var cloneDetails = _this.isCutAction ? events : __assign$1({}, events);
3500
+ if (!events[_this.parent.eventFields.recurrenceRule]) {
3501
+ cloneDetails[_this.parent.eventFields.startTime] =
3502
+ new Date(new Date(cloneDetails[_this.parent.eventFields.startTime]).setMilliseconds(totalDuration));
3503
+ cloneDetails[_this.parent.eventFields.endTime] =
3504
+ new Date(new Date(cloneDetails[_this.parent.eventFields.endTime]).setMilliseconds(totalDuration));
3505
+ }
3506
+ if (!_this.isCutAction) {
3507
+ cloneDetails[_this.parent.eventFields.id] = uniqueId++;
3508
+ }
3509
+ return cloneDetails;
3510
+ });
3511
+ };
3512
+ KeyboardInteraction.prototype.calculateTotalDuration = function (events, eventDetails, initialEventTime) {
3513
+ if ((['Month', 'TimelineMonth', 'TimelineYear'].indexOf(this.parent.currentView) !== -1) || !this.parent.activeViewOptions.timeScale.enable) {
3514
+ var eventStartTime = new Date(events[this.parent.eventFields.startTime]);
3515
+ return eventDetails[this.parent.eventFields.startTime].getTime() - initialEventTime.getTime() +
3516
+ (eventStartTime.getHours() * 3600000 + eventStartTime.getMinutes() * 60000 + eventStartTime.getSeconds() * 1000);
3517
+ }
3518
+ else {
3519
+ return eventDetails[this.parent.eventFields.startTime].getTime() - initialEventTime.getTime();
3520
+ }
3521
+ };
3265
3522
  /**
3266
3523
  * Get module name.
3267
3524
  *
@@ -3279,6 +3536,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
3279
3536
  KeyboardInteraction.prototype.destroy = function () {
3280
3537
  this.removeEventListener();
3281
3538
  this.selectedCells = [];
3539
+ this.clipBoardTextArea = null;
3282
3540
  this.keyboardModule.destroy();
3283
3541
  };
3284
3542
  return KeyboardInteraction;
@@ -11020,6 +11278,10 @@ var EventTooltip = /** @__PURE__ @class */ (function () {
11020
11278
  return targets.join(',');
11021
11279
  };
11022
11280
  EventTooltip.prototype.onBeforeRender = function (args) {
11281
+ if (this.parent.uiStateValues.isSwipeScroll) {
11282
+ args.cancel = true;
11283
+ return;
11284
+ }
11023
11285
  if (!isNullOrUndefined(args.target.getAttribute('data-tooltip-id'))) {
11024
11286
  return;
11025
11287
  }
@@ -18435,6 +18697,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18435
18697
  EventHandler.add(window, 'resize', this.onScheduleResize, this);
18436
18698
  EventHandler.add(window, 'orientationchange', this.onScheduleResize, this);
18437
18699
  EventHandler.add(document, Browser.touchStartEvent, this.onDocumentClick, this);
18700
+ if (this.allowClipboard) {
18701
+ EventHandler.add(document, 'paste', this.onDocumentPaste, this);
18702
+ }
18438
18703
  };
18439
18704
  /**
18440
18705
  * Method to remove selected class
@@ -18810,6 +19075,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18810
19075
  Schedule.prototype.onDocumentClick = function (args) {
18811
19076
  this.notify(documentClick, { event: args });
18812
19077
  };
19078
+ Schedule.prototype.onDocumentPaste = function (args) {
19079
+ this.notify(documentPaste, { event: args });
19080
+ };
18813
19081
  Schedule.prototype.onScheduleResize = function () {
18814
19082
  if (isNullOrUndefined(this.activeView) || ((this.isAdaptive || isMobile()) && document.activeElement
18815
19083
  && (document.activeElement.classList.contains(SUBJECT_CLASS) ||
@@ -19007,6 +19275,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19007
19275
  EventHandler.remove(window, 'resize', this.onScheduleResize);
19008
19276
  EventHandler.remove(window, 'orientationchange', this.onScheduleResize);
19009
19277
  EventHandler.remove(document, Browser.touchStartEvent, this.onDocumentClick);
19278
+ EventHandler.remove(document, 'paste', this.onDocumentPaste);
19010
19279
  };
19011
19280
  /**
19012
19281
  * Core method to return the component name.
@@ -19242,11 +19511,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19242
19511
  this.onEventSettingsPropertyChanged(newProp.eventSettings, oldProp.eventSettings, state);
19243
19512
  break;
19244
19513
  case 'allowKeyboardInteraction':
19514
+ case 'allowClipboard':
19245
19515
  if (this.keyboardInteractionModule) {
19246
19516
  this.keyboardInteractionModule.destroy();
19247
19517
  this.keyboardInteractionModule = null;
19248
19518
  }
19249
- if (newProp.allowKeyboardInteraction) {
19519
+ if (newProp.allowKeyboardInteraction || newProp.allowClipboard) {
19250
19520
  this.keyboardInteractionModule = new KeyboardInteraction(this);
19251
19521
  }
19252
19522
  break;
@@ -20173,6 +20443,76 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
20173
20443
  }
20174
20444
  return (eventCollection.length > 0) ? false : true;
20175
20445
  };
20446
+ /**
20447
+ * Method to copy events from an HTMLElement or an array of HTMLElements.
20448
+ *
20449
+ * @param { HTMLElement[] } elements Accepts an array of HTMLElement
20450
+ * @returns {void} This method does not return a value.
20451
+ */
20452
+ Schedule.prototype.copy = function (elements) {
20453
+ this.processCutCopyActions(elements, false);
20454
+ };
20455
+ /**
20456
+ * Method to cut events from an HTMLElement or an array of HTMLElements.
20457
+ *
20458
+ * @param { HTMLElement[] } elements Accepts an array of HTMLElement
20459
+ * @returns {void} This method does not return a value.
20460
+ */
20461
+ Schedule.prototype.cut = function (elements) {
20462
+ this.processCutCopyActions(elements, true);
20463
+ };
20464
+ /**
20465
+ * Method to create a paste event with clipboard data
20466
+ *
20467
+ * @param { HTMLElement } targetElement Accepts HTMLElement
20468
+ * @returns {void}
20469
+ */
20470
+ Schedule.prototype.paste = function (targetElement) {
20471
+ var _this = this;
20472
+ if (!this.allowClipboard || !this.allowKeyboardInteraction) {
20473
+ return;
20474
+ }
20475
+ if (!targetElement.classList.contains('e-work-cells') && !targetElement.classList.contains('e-all-day-cells')) {
20476
+ return;
20477
+ }
20478
+ var clipboardData = new DataTransfer();
20479
+ if (!isNullOrUndefined(navigator.clipboard)) {
20480
+ navigator.clipboard.readText()
20481
+ .then(function (text) {
20482
+ clipboardData.setData('text/plain', text);
20483
+ var pasteEvent = new ClipboardEvent('paste', {
20484
+ bubbles: true,
20485
+ cancelable: true
20486
+ });
20487
+ Object.defineProperty(pasteEvent, 'clipboardData', {
20488
+ value: clipboardData
20489
+ });
20490
+ _this.keyboardInteractionModule.pasteHandler(pasteEvent, targetElement);
20491
+ })
20492
+ .catch(function (err) {
20493
+ throw err;
20494
+ });
20495
+ }
20496
+ };
20497
+ Schedule.prototype.processCutCopyActions = function (elements, isCut) {
20498
+ var _this = this;
20499
+ if (!elements || !this.allowClipboard || !this.allowKeyboardInteraction) {
20500
+ return;
20501
+ }
20502
+ var elementArray = elements;
20503
+ var eventDetailsArray = [];
20504
+ elementArray.forEach(function (element) {
20505
+ if (element.classList.contains(APPOINTMENT_CLASS)) {
20506
+ var eventDetail = _this.getEventDetails(element);
20507
+ if (eventDetail) {
20508
+ eventDetailsArray.push(eventDetail);
20509
+ }
20510
+ }
20511
+ });
20512
+ if (eventDetailsArray.length > 0) {
20513
+ this.keyboardInteractionModule.processClipboardAction(isCut, eventDetailsArray);
20514
+ }
20515
+ };
20176
20516
  /**
20177
20517
  * To manually open the event editor on specific time or on certain events.
20178
20518
  *
@@ -20305,6 +20645,52 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
20305
20645
  this.eventTooltip.close();
20306
20646
  }
20307
20647
  };
20648
+ /**
20649
+ * Retrieves a formatted string representing the date range of the given date collection.
20650
+ *
20651
+ * @param {Date[]} dates - An array of Date objects representing the date range.
20652
+ * @returns {string} A formatted string describing the date range.
20653
+ * If the dates is empty, returns an empty string.
20654
+ * Otherwise, delegates to the active view to generate the appropriate date range text.
20655
+ *
20656
+ * @example
20657
+ * // Assuming dates contains dates from May 1, 2023 to May 7, 2023
20658
+ * const rangeText = schedule.getDateRangeText(schedule.getViewDates());
20659
+ * // rangeText might be "May 1 - 7, 2023" (actual format depends on the active view)
20660
+ *
20661
+ * @remarks
20662
+ * The actual format of the returned string depends on the implementation
20663
+ * of the getDateRangeText method in the active view.
20664
+ */
20665
+ Schedule.prototype.getDateRangeText = function (dates) {
20666
+ if ((isNullOrUndefined(dates) && dates.length === 0) || !this.activeView) {
20667
+ return '';
20668
+ }
20669
+ return this.activeView.getDateRangeText(dates[0], dates);
20670
+ };
20671
+ /**
20672
+ * Retrieves an array of dates based on the specified date collection direction.
20673
+ *
20674
+ * @param {NavigationDirection} type - The direction for date collection. Options are:
20675
+ * - 'Previous': Returns the previous date range collection from the current rendered date.
20676
+ * - 'Next': Returns the next date range collection from the current rendered date.
20677
+ * - 'Current': Returns the current rendered date collection.
20678
+ *
20679
+ * @returns {Date[]} An array of Date objects representing the view dates.
20680
+ */
20681
+ Schedule.prototype.getViewDates = function (type) {
20682
+ if (type === void 0) { type = 'Current'; }
20683
+ if (!this.activeView) {
20684
+ return [];
20685
+ }
20686
+ switch (type) {
20687
+ case 'Previous':
20688
+ case 'Next':
20689
+ return this.activeView.getRenderDates(undefined, this.activeView.getNextPreviousDate(type));
20690
+ case 'Current':
20691
+ return this.getCurrentViewDates();
20692
+ }
20693
+ };
20308
20694
  /**
20309
20695
  * Select the resource based on group index in mobile mode.
20310
20696
  *
@@ -20609,6 +20995,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
20609
20995
  __decorate$b([
20610
20996
  Property()
20611
20997
  ], Schedule.prototype, "cssClass", void 0);
20998
+ __decorate$b([
20999
+ Property(false)
21000
+ ], Schedule.prototype, "allowClipboard", void 0);
20612
21001
  __decorate$b([
20613
21002
  Property()
20614
21003
  ], Schedule.prototype, "eventDragArea", void 0);
@@ -20693,6 +21082,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
20693
21082
  __decorate$b([
20694
21083
  Event()
20695
21084
  ], Schedule.prototype, "dataBound", void 0);
21085
+ __decorate$b([
21086
+ Event()
21087
+ ], Schedule.prototype, "beforePaste", void 0);
20696
21088
  Schedule = __decorate$b([
20697
21089
  NotifyPropertyChanges
20698
21090
  ], Schedule);
@@ -20784,9 +21176,10 @@ var ActionBase = /** @__PURE__ @class */ (function () {
20784
21176
  }
20785
21177
  };
20786
21178
  ActionBase.prototype.calculateIntervalTime = function (date) {
20787
- var intervalTime = new Date(+date);
20788
- intervalTime.setMinutes(Math.floor(intervalTime.getMinutes() / this.actionObj.interval) * this.actionObj.interval);
20789
- return intervalTime;
21179
+ var dateInMS = resetTime(date).getTime();
21180
+ var intervalInMS = MS_PER_MINUTE * this.actionObj.interval;
21181
+ dateInMS = dateInMS + Math.floor((date.getTime() - dateInMS) / intervalInMS) * intervalInMS;
21182
+ return new Date(dateInMS);
20790
21183
  };
20791
21184
  ActionBase.prototype.getContentAreaDimension = function () {
20792
21185
  var viewElement = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
@@ -22922,12 +23315,12 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
22922
23315
  if ((dragArea.scrollLeft === 0) &&
22923
23316
  (Math.round(this.actionObj.X) <=
22924
23317
  Math.round(dragArea.getBoundingClientRect().left + this.actionObj.cellWidth + window.pageXOffset))) {
22925
- navigationType = this.parent.enableRtl ? 'next' : 'previous';
23318
+ navigationType = this.parent.enableRtl ? 'Next' : 'Previous';
22926
23319
  }
22927
23320
  else if ((Math.round(dragArea.scrollLeft) + dragArea.clientWidth === dragArea.scrollWidth) &&
22928
23321
  (Math.round(this.actionObj.X) >=
22929
23322
  Math.round(dragArea.getBoundingClientRect().right - this.actionObj.cellWidth + window.pageXOffset))) {
22930
- navigationType = this.parent.enableRtl ? 'previous' : 'next';
23323
+ navigationType = this.parent.enableRtl ? 'Previous' : 'Next';
22931
23324
  }
22932
23325
  if (navigationType) {
22933
23326
  this.parent.changeDate(this.parent.activeView.getNextPreviousDate(navigationType));
@@ -23789,7 +24182,7 @@ var ViewBase = /** @__PURE__ @class */ (function () {
23789
24182
  * @param {Schedule} parent Accepts the schedule instance
23790
24183
  */
23791
24184
  function ViewBase(parent) {
23792
- this.previousNextAction = 'next';
24185
+ this.previousNextAction = 'Next';
23793
24186
  this.parent = parent;
23794
24187
  }
23795
24188
  ViewBase.prototype.isTimelineView = function () {
@@ -24048,11 +24441,12 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24048
24441
  return !(getDateInMs(date) < getDateInMs(startHour) || getDateInMs(date) >= getDateInMs(endHour) ||
24049
24442
  !this.isWorkDay(date, workDays));
24050
24443
  };
24051
- ViewBase.prototype.getRenderDates = function (workDays) {
24444
+ ViewBase.prototype.getRenderDates = function (workDays, date) {
24445
+ if (date === void 0) { date = this.parent.selectedDate; }
24052
24446
  var renderDates = [];
24053
24447
  // Due to same code for vertical and time line, week & work week views, if condition has used
24054
24448
  if (this.parent.currentView === 'Week' || this.parent.currentView === 'TimelineWeek') {
24055
- var selectedDate = resetTime(this.parent.selectedDate);
24449
+ var selectedDate = resetTime(date);
24056
24450
  var start = getWeekFirstDate(selectedDate, this.parent.activeViewOptions.firstDayOfWeek);
24057
24451
  for (var i = 0, length_1 = WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_1; i++) {
24058
24452
  if (this.parent.activeViewOptions.showWeekend) {
@@ -24067,7 +24461,7 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24067
24461
  }
24068
24462
  }
24069
24463
  else if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {
24070
- var start = getWeekFirstDate(resetTime(this.parent.selectedDate), this.parent.activeViewOptions.firstDayOfWeek);
24464
+ var start = getWeekFirstDate(resetTime(date), this.parent.activeViewOptions.firstDayOfWeek);
24071
24465
  for (var i = 0, length_2 = WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_2; i++) {
24072
24466
  if (this.isWorkDay(start, workDays)) {
24073
24467
  renderDates.push(start);
@@ -24078,7 +24472,7 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24078
24472
  else {
24079
24473
  var dayCount = this.parent.currentView === 'Agenda' ? this.parent.agendaDaysCount :
24080
24474
  this.parent.activeViewOptions.interval;
24081
- var start = resetTime(this.parent.selectedDate);
24475
+ var start = resetTime(date);
24082
24476
  do {
24083
24477
  if (this.parent.activeViewOptions.showWeekend) {
24084
24478
  renderDates.push(start);
@@ -24104,11 +24498,11 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24104
24498
  if (this.parent.currentView === 'Day' || this.parent.currentView === 'TimelineDay') {
24105
24499
  if (this.parent.activeViewOptions.showWeekend) {
24106
24500
  var daysCount = this.parent.activeViewOptions.interval;
24107
- return addDays(this.parent.selectedDate, type === 'next' ? daysCount : -daysCount);
24501
+ return addDays(this.parent.selectedDate, type === 'Next' ? daysCount : -daysCount);
24108
24502
  }
24109
24503
  else {
24110
24504
  var date = void 0;
24111
- if (type === 'next') {
24505
+ if (type === 'Next') {
24112
24506
  date = addDays(this.renderDates.slice(-1)[0], 1);
24113
24507
  while (!this.isWorkDay(date)) {
24114
24508
  date = addDays(date, 1);
@@ -24129,7 +24523,7 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24129
24523
  return date;
24130
24524
  }
24131
24525
  }
24132
- var weekLength = type === 'next' ? WEEK_LENGTH : -WEEK_LENGTH;
24526
+ var weekLength = type === 'Next' ? WEEK_LENGTH : -WEEK_LENGTH;
24133
24527
  return addDays(this.parent.selectedDate, weekLength * this.parent.activeViewOptions.interval);
24134
24528
  };
24135
24529
  ViewBase.prototype.formatViewLabel = function (view, startDate, endDate) {
@@ -24156,12 +24550,14 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24156
24550
  }
24157
24551
  }
24158
24552
  };
24159
- ViewBase.prototype.getDateRangeText = function () {
24553
+ ViewBase.prototype.getDateRangeText = function (date, dateCollection) {
24554
+ if (date === void 0) { date = this.renderDates[0]; }
24555
+ if (dateCollection === void 0) { dateCollection = this.renderDates; }
24160
24556
  if (this.parent.isAdaptive) {
24161
24557
  var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';
24162
24558
  return capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'single');
24163
24559
  }
24164
- return this.formatDateRange(this.renderDates[0], this.renderDates[this.renderDates.length - 1]);
24560
+ return this.formatDateRange(date, dateCollection[dateCollection.length - 1]);
24165
24561
  };
24166
24562
  ViewBase.prototype.formatDateRange = function (startDate, endDate) {
24167
24563
  var globalize = this.parent.globalize;
@@ -26021,9 +26417,10 @@ var Month = /** @__PURE__ @class */ (function (_super) {
26021
26417
  }
26022
26418
  return false;
26023
26419
  };
26024
- Month.prototype.getRenderDates = function (workDays) {
26420
+ Month.prototype.getRenderDates = function (workDays, selectedDate) {
26421
+ if (selectedDate === void 0) { selectedDate = this.parent.selectedDate; }
26025
26422
  var renderDates = [];
26026
- var currentDate = resetTime(this.parent.selectedDate);
26423
+ var currentDate = resetTime(selectedDate);
26027
26424
  var start = this.getMonthStart(currentDate);
26028
26425
  var monthEnd = this.getMonthEnd(currentDate);
26029
26426
  do {
@@ -26051,13 +26448,13 @@ var Month = /** @__PURE__ @class */ (function (_super) {
26051
26448
  Month.prototype.getNextPreviousDate = function (type) {
26052
26449
  if (this.isCustomMonth()) {
26053
26450
  var dates = this.parent.getCurrentViewDates();
26054
- var date = getWeekFirstDate(type === 'next' ? dates[dates.length - 1]
26451
+ var date = getWeekFirstDate(type === 'Next' ? dates[dates.length - 1]
26055
26452
  : dates[0], this.parent.activeViewOptions.firstDayOfWeek);
26056
- return addDays(date, type === 'next' ? WEEK_LENGTH : -(this.parent.activeViewOptions.numberOfWeeks > 0 ?
26453
+ return addDays(date, type === 'Next' ? WEEK_LENGTH : -(this.parent.activeViewOptions.numberOfWeeks > 0 ?
26057
26454
  this.parent.activeViewOptions.numberOfWeeks : DEFAULT_WEEKS) * WEEK_LENGTH);
26058
26455
  }
26059
26456
  else {
26060
- return addMonths(this.parent.selectedDate, ((type === 'next' ? 1 : -1) * this.parent.activeViewOptions.interval));
26457
+ return addMonths(this.parent.selectedDate, ((type === 'Next' ? 1 : -1) * this.parent.activeViewOptions.interval));
26061
26458
  }
26062
26459
  };
26063
26460
  Month.prototype.getStartDate = function () {
@@ -26069,13 +26466,18 @@ var Month = /** @__PURE__ @class */ (function (_super) {
26069
26466
  Month.prototype.getEndDateFromStartDate = function (start) {
26070
26467
  return addDays(new Date(start.getTime()), 1);
26071
26468
  };
26072
- Month.prototype.getDateRangeText = function () {
26469
+ Month.prototype.getDateRangeText = function (startDate, dateCollection) {
26470
+ if (startDate === void 0) { startDate = this.parent.selectedDate; }
26471
+ if (dateCollection === void 0) { dateCollection = null; }
26073
26472
  if (this.parent.isAdaptive || isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {
26074
- var startDate = this.parent.selectedDate;
26473
+ var maxNumberOfDaysPerWeek = 7;
26474
+ startDate = !isNullOrUndefined(dateCollection) && dateCollection.length > maxNumberOfDaysPerWeek - 1
26475
+ ? dateCollection[maxNumberOfDaysPerWeek - 1] : startDate;
26075
26476
  var endDate = void 0;
26076
26477
  var updateCustomRange = false;
26077
26478
  if (this.isCustomMonth()) {
26078
- var dates = this.parent.getCurrentViewDates();
26479
+ var dates = !isNullOrUndefined(dateCollection) && dateCollection.length > 0 ? dateCollection :
26480
+ this.parent.getCurrentViewDates();
26079
26481
  updateCustomRange = dates[0].getMonth() !== dates[dates.length - 1].getMonth() ||
26080
26482
  dates[0].getFullYear() !== dates[dates.length - 1].getFullYear();
26081
26483
  if (updateCustomRange) {
@@ -26101,7 +26503,8 @@ var Month = /** @__PURE__ @class */ (function (_super) {
26101
26503
  var format = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';
26102
26504
  return capitalizeFirstWord(this.parent.globalize.formatDate(startDate, { format: format, calendar: this.parent.getCalendarMode() }), 'single');
26103
26505
  }
26104
- return this.formatDateRange(this.parent.selectedDate);
26506
+ return this.formatDateRange(!isNullOrUndefined(dateCollection) && dateCollection.length > 0 ? dateCollection[0] :
26507
+ this.parent.selectedDate);
26105
26508
  };
26106
26509
  Month.prototype.getLabelText = function (view) {
26107
26510
  var viewStr = view.charAt(0).toLowerCase() + view.substring(1);
@@ -26438,7 +26841,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
26438
26841
  this.parent.activeCellsData = this.parent.getCellDetails(target);
26439
26842
  var isPrevious = startDate.getTime() < this.getStartDate().getTime();
26440
26843
  if (isPrevious || startDate.getTime() > this.getEndDate().getTime()) {
26441
- this.parent.changeDate(this.parent.activeView.getNextPreviousDate(isPrevious ? 'previous' : 'next'), e);
26844
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate(isPrevious ? 'Previous' : 'Next'), e);
26442
26845
  var activeDate = this.parent.activeCellsData.startTime.getTime();
26443
26846
  var inRange = activeDate >= this.getStartDate().getTime() && activeDate <= this.getEndDate().getTime();
26444
26847
  var dateAttr = inRange ? activeDate : (isPrevious ? this.getEndDate() : this.getStartDate()).getTime();
@@ -26541,16 +26944,19 @@ var Year = /** @__PURE__ @class */ (function (_super) {
26541
26944
  return addDays(new Date(date.getTime()), 1);
26542
26945
  };
26543
26946
  Year.prototype.getNextPreviousDate = function (type) {
26544
- return addYears(this.parent.selectedDate, ((type === 'next') ? 1 : -1));
26545
- };
26546
- Year.prototype.getDateRangeText = function () {
26547
- var startDate = this.getStartDate();
26548
- var endDate = this.getEndDate();
26947
+ return addYears(this.parent.selectedDate, ((type === 'Next') ? 1 : -1));
26948
+ };
26949
+ Year.prototype.getDateRangeText = function (date, dateCollection) {
26950
+ if (date === void 0) { date = this.parent.selectedDate; }
26951
+ if (dateCollection === void 0) { dateCollection = null; }
26952
+ var isDateColAvail = !isNullOrUndefined(dateCollection) && dateCollection.length > 0;
26953
+ var startDate = isDateColAvail ? dateCollection[0] : this.getStartDate();
26954
+ var endDate = isDateColAvail ? dateCollection[dateCollection.length - 1] : this.getEndDate();
26549
26955
  if (startDate.getFullYear() !== endDate.getFullYear()) {
26550
26956
  return this.parent.globalize.formatDate(startDate, { skeleton: 'yMMM' }) + ' - ' + this.parent.globalize.formatDate(endDate, { skeleton: 'yMMM' });
26551
26957
  }
26552
26958
  else {
26553
- return this.parent.globalize.formatDate(this.parent.selectedDate, { skeleton: 'y' });
26959
+ return this.parent.globalize.formatDate(isDateColAvail ? dateCollection[0] : date, { skeleton: 'y' });
26554
26960
  }
26555
26961
  };
26556
26962
  Year.prototype.addEventListener = function () {
@@ -27419,7 +27825,7 @@ var Agenda = /** @__PURE__ @class */ (function (_super) {
27419
27825
  return resetTime(addDays(filterDate, 1));
27420
27826
  };
27421
27827
  Agenda.prototype.getNextPreviousDate = function (type) {
27422
- var noOfDays = (type === 'next') ? 1 : -1;
27828
+ var noOfDays = (type === 'Next') ? 1 : -1;
27423
27829
  return addDays(this.parent.selectedDate, noOfDays);
27424
27830
  };
27425
27831
  Agenda.prototype.startDate = function () {
@@ -27676,9 +28082,9 @@ var MonthAgenda = /** @__PURE__ @class */ (function (_super) {
27676
28082
  };
27677
28083
  MonthAgenda.prototype.getNextPreviousDate = function (type) {
27678
28084
  var selectedDate = this.parent.selectedDate;
27679
- var interval = (type === 'next') ? this.parent.activeViewOptions.interval : -this.parent.activeViewOptions.interval;
28085
+ var interval = (type === 'Next') ? this.parent.activeViewOptions.interval : -this.parent.activeViewOptions.interval;
27680
28086
  var navigateDate = addMonths(this.parent.selectedDate, interval);
27681
- var month = (type === 'next') ? 2 : 0;
28087
+ var month = (type === 'Next') ? 2 : 0;
27682
28088
  var lastDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth() + month, 0).getDate();
27683
28089
  var date = (lastDate >= this.monthAgendaDate.getDate()) ? this.monthAgendaDate.getDate() : lastDate;
27684
28090
  this.monthAgendaDate = new Date(navigateDate.getFullYear(), navigateDate.getMonth(), date);
@@ -29424,5 +29830,5 @@ var Print = /** @__PURE__ @class */ (function () {
29424
29830
  return Print;
29425
29831
  }());
29426
29832
 
29427
- export { Agenda, DEFAULT_WEEKS, Day, DragAndDrop, ExcelExport, Gregorian, HeaderRenderer, ICalendarExport, ICalendarImport, Islamic, MS_PER_DAY, MS_PER_MINUTE, Month, MonthAgenda, Print, RecurrenceEditor, Resize, Schedule, TimelineMonth, TimelineViews, TimelineYear, Timezone, ViewBase, WEEK_LENGTH, Week, WorkWeek, Year, actionBegin, actionComplete, actionFailure, addDays, addMonths, addYears, agendaCells, capitalizeFirstWord, cellClick, cellDoubleClick, cellMouseDown, cellSelect, contentReady, dataBinding, dataBound, dataReady, dateHeader, documentClick, drag, dragStart, dragStop, eventClick, eventDoubleClick, eventRendered, eventsLoaded, extractObjectFromRule, findIndexInData, firstDateOfMonth, generate, generateSummary, getCalendarUtil, getDateCount, getDateFromRecurrenceDateString, getDateFromString, getDateInMs, getDaysCount, getElementHeight, getElementHeightFromClass, getElementTop, getElementWidth, getElementWidthFromClass, getMaxDays, getOuterHeight, getRecurrenceStringFromDate, getScrollBarWidth, getStartEndHours, getTranslateX, getTranslateY, getUniversalTime, getWeekFirstDate, getWeekLastDate, getWeekMiddleDate, getWeekNumber, hover, initialEnd, initialLoad, inlineClick, isDaylightSavingTime, isIPadDevice, isMobile, lastDateOfMonth, moreEventsClick, navigating, noEvents, popupClose, popupOpen, print, removeChildren, renderCell, resetScrollbarWidth, resetTime, resizeStart, resizeStop, resizing, resourceHeader, scroll, scrollUiUpdate, select, setTime, timezoneData, uiUpdate, virtualScroll, virtualScrollStart, virtualScrollStop };
29833
+ export { Agenda, DEFAULT_WEEKS, Day, DragAndDrop, ExcelExport, Gregorian, HeaderRenderer, ICalendarExport, ICalendarImport, Islamic, MS_PER_DAY, MS_PER_MINUTE, Month, MonthAgenda, Print, RecurrenceEditor, Resize, Schedule, TimelineMonth, TimelineViews, TimelineYear, Timezone, ViewBase, WEEK_LENGTH, Week, WorkWeek, Year, actionBegin, actionComplete, actionFailure, addDays, addMonths, addYears, agendaCells, beforePaste, capitalizeFirstWord, cellClick, cellDoubleClick, cellMouseDown, cellSelect, contentReady, dataBinding, dataBound, dataReady, dateHeader, documentClick, documentPaste, drag, dragStart, dragStop, eventClick, eventDoubleClick, eventRendered, eventsLoaded, extractObjectFromRule, findIndexInData, firstDateOfMonth, generate, generateSummary, getCalendarUtil, getDateCount, getDateFromRecurrenceDateString, getDateFromString, getDateInMs, getDaysCount, getElementHeight, getElementHeightFromClass, getElementTop, getElementWidth, getElementWidthFromClass, getMaxDays, getOuterHeight, getRecurrenceStringFromDate, getScrollBarWidth, getStartEndHours, getTranslateX, getTranslateY, getUniversalTime, getWeekFirstDate, getWeekLastDate, getWeekMiddleDate, getWeekNumber, hover, initialEnd, initialLoad, inlineClick, isDaylightSavingTime, isIPadDevice, isMobile, lastDateOfMonth, moreEventsClick, navigating, noEvents, popupClose, popupOpen, print, removeChildren, renderCell, resetScrollbarWidth, resetTime, resizeStart, resizeStop, resizing, resourceHeader, scroll, scrollUiUpdate, select, setTime, timezoneData, uiUpdate, virtualScroll, virtualScrollStart, virtualScrollStop };
29428
29834
  //# sourceMappingURL=ej2-schedule.es5.js.map