@syncfusion/ej2-schedule 26.2.12 → 27.1.48

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 (200) hide show
  1. package/dist/ej2-schedule.umd.min.js +2 -2
  2. package/dist/ej2-schedule.umd.min.js.map +1 -1
  3. package/dist/es6/ej2-schedule.es2015.js +173 -34
  4. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es5.js +173 -34
  6. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  7. package/dist/global/ej2-schedule.min.js +2 -2
  8. package/dist/global/ej2-schedule.min.js.map +1 -1
  9. package/dist/global/index.d.ts +1 -1
  10. package/package.json +18 -17
  11. package/src/schedule/actions/crud.js +22 -6
  12. package/src/schedule/actions/keyboard.d.ts +1 -0
  13. package/src/schedule/actions/keyboard.js +45 -3
  14. package/src/schedule/actions/resize.js +1 -0
  15. package/src/schedule/actions/virtual-scroll.d.ts +1 -0
  16. package/src/schedule/actions/virtual-scroll.js +35 -4
  17. package/src/schedule/base/interface.d.ts +1 -0
  18. package/src/schedule/base/resource.js +5 -0
  19. package/src/schedule/base/schedule.js +2 -1
  20. package/src/schedule/event-renderer/inline-edit.js +9 -1
  21. package/src/schedule/event-renderer/month.js +4 -1
  22. package/src/schedule/event-renderer/timeline-view.js +4 -1
  23. package/src/schedule/event-renderer/year.js +2 -2
  24. package/src/schedule/popups/event-tooltip.js +2 -1
  25. package/src/schedule/renderer/header-renderer.d.ts +1 -0
  26. package/src/schedule/renderer/header-renderer.js +9 -1
  27. package/src/schedule/renderer/month.js +6 -0
  28. package/src/schedule/renderer/timeline-header-row.js +1 -1
  29. package/src/schedule/renderer/timeline-view.js +5 -0
  30. package/src/schedule/renderer/timeline-year.js +6 -2
  31. package/src/schedule/renderer/vertical-view.js +2 -6
  32. package/src/schedule/renderer/view-base.d.ts +1 -0
  33. package/src/schedule/renderer/view-base.js +9 -0
  34. package/src/schedule/renderer/year.js +4 -4
  35. package/styles/bootstrap-dark-lite.css +4169 -0
  36. package/styles/bootstrap-dark-lite.scss +18 -0
  37. package/styles/bootstrap-dark.css +818 -596
  38. package/styles/bootstrap-dark.scss +3 -2
  39. package/styles/bootstrap-lite.css +4164 -0
  40. package/styles/bootstrap-lite.scss +18 -0
  41. package/styles/bootstrap.css +818 -596
  42. package/styles/bootstrap.scss +3 -2
  43. package/styles/bootstrap4-lite.css +4211 -0
  44. package/styles/bootstrap4-lite.scss +18 -0
  45. package/styles/bootstrap4.css +803 -636
  46. package/styles/bootstrap4.scss +3 -2
  47. package/styles/bootstrap5-dark-lite.css +4210 -0
  48. package/styles/bootstrap5-dark-lite.scss +18 -0
  49. package/styles/bootstrap5-dark.css +819 -597
  50. package/styles/bootstrap5-dark.scss +3 -2
  51. package/styles/bootstrap5-lite.css +4210 -0
  52. package/styles/bootstrap5-lite.scss +18 -0
  53. package/styles/bootstrap5.3-lite.css +4256 -0
  54. package/styles/bootstrap5.3-lite.scss +18 -0
  55. package/styles/bootstrap5.3.css +5017 -0
  56. package/styles/bootstrap5.3.scss +20 -0
  57. package/styles/bootstrap5.css +819 -597
  58. package/styles/bootstrap5.scss +3 -2
  59. package/styles/fabric-dark-lite.css +4139 -0
  60. package/styles/fabric-dark-lite.scss +18 -0
  61. package/styles/fabric-dark.css +825 -595
  62. package/styles/fabric-dark.scss +3 -2
  63. package/styles/fabric-lite.css +4136 -0
  64. package/styles/fabric-lite.scss +18 -0
  65. package/styles/fabric.css +825 -588
  66. package/styles/fabric.scss +3 -2
  67. package/styles/fluent-dark-lite.css +4202 -0
  68. package/styles/fluent-dark-lite.scss +18 -0
  69. package/styles/fluent-dark.css +823 -593
  70. package/styles/fluent-dark.scss +3 -2
  71. package/styles/fluent-lite.css +4202 -0
  72. package/styles/fluent-lite.scss +18 -0
  73. package/styles/fluent.css +823 -593
  74. package/styles/fluent.scss +3 -2
  75. package/styles/fluent2-lite.css +4422 -0
  76. package/styles/fluent2-lite.scss +18 -0
  77. package/styles/fluent2.css +860 -602
  78. package/styles/fluent2.scss +3 -2
  79. package/styles/highcontrast-light-lite.css +4228 -0
  80. package/styles/highcontrast-light-lite.scss +18 -0
  81. package/styles/highcontrast-light.css +828 -584
  82. package/styles/highcontrast-light.scss +3 -2
  83. package/styles/highcontrast-lite.css +4237 -0
  84. package/styles/highcontrast-lite.scss +18 -0
  85. package/styles/highcontrast.css +829 -585
  86. package/styles/highcontrast.scss +3 -2
  87. package/styles/material-dark-lite.css +4216 -0
  88. package/styles/material-dark-lite.scss +18 -0
  89. package/styles/material-dark.css +834 -582
  90. package/styles/material-dark.scss +3 -2
  91. package/styles/material-lite.css +4242 -0
  92. package/styles/material-lite.scss +18 -0
  93. package/styles/material.css +831 -600
  94. package/styles/material.scss +3 -2
  95. package/styles/material3-dark-lite.css +4233 -0
  96. package/styles/material3-dark-lite.scss +18 -0
  97. package/styles/material3-dark.css +825 -602
  98. package/styles/material3-dark.scss +3 -2
  99. package/styles/material3-lite.css +4235 -0
  100. package/styles/material3-lite.scss +18 -0
  101. package/styles/material3.css +825 -602
  102. package/styles/material3.scss +3 -2
  103. package/styles/recurrence-editor/_bigger.scss +134 -0
  104. package/styles/recurrence-editor/_layout.scss +0 -110
  105. package/styles/recurrence-editor/bootstrap-dark.css +87 -131
  106. package/styles/recurrence-editor/bootstrap-dark.scss +1 -0
  107. package/styles/recurrence-editor/bootstrap.css +87 -131
  108. package/styles/recurrence-editor/bootstrap.scss +1 -0
  109. package/styles/recurrence-editor/bootstrap4.css +87 -149
  110. package/styles/recurrence-editor/bootstrap4.scss +1 -0
  111. package/styles/recurrence-editor/bootstrap5-dark.css +87 -135
  112. package/styles/recurrence-editor/bootstrap5-dark.scss +1 -0
  113. package/styles/recurrence-editor/bootstrap5.3.css +501 -0
  114. package/styles/recurrence-editor/bootstrap5.3.scss +9 -0
  115. package/styles/recurrence-editor/bootstrap5.css +87 -135
  116. package/styles/recurrence-editor/bootstrap5.scss +1 -0
  117. package/styles/recurrence-editor/fabric-dark.css +87 -130
  118. package/styles/recurrence-editor/fabric-dark.scss +1 -0
  119. package/styles/recurrence-editor/fabric.css +87 -123
  120. package/styles/recurrence-editor/fabric.scss +1 -0
  121. package/styles/recurrence-editor/fluent-dark.css +87 -122
  122. package/styles/recurrence-editor/fluent-dark.scss +1 -0
  123. package/styles/recurrence-editor/fluent.css +87 -122
  124. package/styles/recurrence-editor/fluent.scss +1 -0
  125. package/styles/recurrence-editor/fluent2.css +91 -117
  126. package/styles/recurrence-editor/fluent2.scss +1 -0
  127. package/styles/recurrence-editor/highcontrast-light.css +87 -118
  128. package/styles/recurrence-editor/highcontrast-light.scss +1 -0
  129. package/styles/recurrence-editor/highcontrast.css +87 -118
  130. package/styles/recurrence-editor/highcontrast.scss +1 -0
  131. package/styles/recurrence-editor/material-dark.css +87 -115
  132. package/styles/recurrence-editor/material-dark.scss +1 -0
  133. package/styles/recurrence-editor/material.css +87 -136
  134. package/styles/recurrence-editor/material.scss +1 -0
  135. package/styles/recurrence-editor/material3-dark.css +87 -140
  136. package/styles/recurrence-editor/material3-dark.scss +1 -0
  137. package/styles/recurrence-editor/material3.css +87 -140
  138. package/styles/recurrence-editor/material3.scss +1 -0
  139. package/styles/recurrence-editor/tailwind-dark.css +87 -116
  140. package/styles/recurrence-editor/tailwind-dark.scss +1 -0
  141. package/styles/recurrence-editor/tailwind.css +87 -116
  142. package/styles/recurrence-editor/tailwind.scss +1 -0
  143. package/styles/schedule/_bds-definition.scss +1 -1
  144. package/styles/schedule/_bigger.scss +809 -0
  145. package/styles/schedule/_bootstrap4-definition.scss +1 -1
  146. package/styles/schedule/_bootstrap5-definition.scss +1 -1
  147. package/styles/schedule/_bootstrap5.3-definition.scss +9 -6
  148. package/styles/schedule/_fluent-definition.scss +1 -1
  149. package/styles/schedule/_fluent2-definition.scss +6 -6
  150. package/styles/schedule/_fusionnew-definition.scss +1 -1
  151. package/styles/schedule/_layout.scss +5 -442
  152. package/styles/schedule/_tailwind-definition.scss +1 -1
  153. package/styles/schedule/_theme.scss +23 -1
  154. package/styles/schedule/bootstrap-dark.css +699 -483
  155. package/styles/schedule/bootstrap-dark.scss +1 -0
  156. package/styles/schedule/bootstrap.css +699 -483
  157. package/styles/schedule/bootstrap.scss +1 -0
  158. package/styles/schedule/bootstrap4.css +684 -523
  159. package/styles/schedule/bootstrap4.scss +1 -0
  160. package/styles/schedule/bootstrap5-dark.css +707 -491
  161. package/styles/schedule/bootstrap5-dark.scss +1 -0
  162. package/styles/schedule/bootstrap5.3.css +4615 -0
  163. package/styles/schedule/bootstrap5.3.scss +17 -0
  164. package/styles/schedule/bootstrap5.css +707 -491
  165. package/styles/schedule/bootstrap5.scss +1 -0
  166. package/styles/schedule/fabric-dark.css +706 -482
  167. package/styles/schedule/fabric-dark.scss +1 -0
  168. package/styles/schedule/fabric.css +706 -475
  169. package/styles/schedule/fabric.scss +1 -0
  170. package/styles/schedule/fluent-dark.css +716 -492
  171. package/styles/schedule/fluent-dark.scss +1 -0
  172. package/styles/schedule/fluent.css +716 -492
  173. package/styles/schedule/fluent.scss +1 -0
  174. package/styles/schedule/fluent2.css +746 -497
  175. package/styles/schedule/fluent2.scss +1 -0
  176. package/styles/schedule/highcontrast-light.css +714 -476
  177. package/styles/schedule/highcontrast-light.scss +1 -0
  178. package/styles/schedule/highcontrast.css +714 -476
  179. package/styles/schedule/highcontrast.scss +1 -0
  180. package/styles/schedule/material-dark.css +725 -479
  181. package/styles/schedule/material-dark.scss +1 -0
  182. package/styles/schedule/material.css +722 -497
  183. package/styles/schedule/material.scss +1 -0
  184. package/styles/schedule/material3-dark.css +714 -497
  185. package/styles/schedule/material3-dark.scss +1 -0
  186. package/styles/schedule/material3.css +714 -497
  187. package/styles/schedule/material3.scss +1 -0
  188. package/styles/schedule/tailwind-dark.css +718 -483
  189. package/styles/schedule/tailwind-dark.scss +1 -0
  190. package/styles/schedule/tailwind.css +718 -483
  191. package/styles/schedule/tailwind.scss +1 -0
  192. package/styles/tailwind-dark-lite.css +4179 -0
  193. package/styles/tailwind-dark-lite.scss +18 -0
  194. package/styles/tailwind-dark.css +827 -586
  195. package/styles/tailwind-dark.scss +3 -2
  196. package/styles/tailwind-lite.css +4179 -0
  197. package/styles/tailwind-lite.scss +18 -0
  198. package/styles/tailwind.css +827 -586
  199. package/styles/tailwind.scss +3 -2
  200. package/dist/ej2-schedule.min.js +0 -10
@@ -1096,10 +1096,12 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1096
1096
  items: args.items,
1097
1097
  overflowMode: 'Popup',
1098
1098
  clicked: _this.toolbarClickHandler.bind(_this),
1099
+ created: _this.toolbarCreateHandler.bind(_this),
1099
1100
  enableRtl: _this.parent.enableRtl,
1100
1101
  enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,
1101
1102
  locale: _this.parent.locale
1102
1103
  });
1104
+ _this.toolbarObj.isStringTemplate = true;
1103
1105
  _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;
1104
1106
  _this.toolbarObj.appendTo(_this.parent.element.querySelector('.' + HEADER_TOOLBAR));
1105
1107
  _this.toolbarObj.element.setAttribute('aria-label', 'Scheduler');
@@ -1532,6 +1534,12 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1532
1534
  var views = [].slice.call(this.element.querySelectorAll('.e-views'));
1533
1535
  return views.indexOf(target);
1534
1536
  };
1537
+ HeaderRenderer.prototype.toolbarCreateHandler = function () {
1538
+ if (this.parent && this.parent.portals && this.toolbarObj && this.toolbarObj.portals) {
1539
+ this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);
1540
+ this.parent['renderReactTemplates']();
1541
+ }
1542
+ };
1535
1543
  HeaderRenderer.prototype.toolbarClickHandler = function (args) {
1536
1544
  if (!args.item) {
1537
1545
  return;
@@ -1675,7 +1683,7 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1675
1683
  var firstDate = new Date(dates[0].getTime());
1676
1684
  var lastDate = new Date(dates[dates.length - 1].getTime());
1677
1685
  if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {
1678
- firstDate = getWeekFirstDate(resetTime(this.parent.selectedDate), this.parent.firstDayOfWeek);
1686
+ firstDate = getWeekFirstDate(resetTime(this.parent.selectedDate), this.parent.activeViewOptions.firstDayOfWeek);
1679
1687
  lastDate = addDays(firstDate, 7 * this.parent.activeViewOptions.interval);
1680
1688
  }
1681
1689
  else if (this.parent.currentView === 'Month') {
@@ -2105,7 +2113,9 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2105
2113
  ctrlShiftUpArrow: 'ctrl+shift+uparrow',
2106
2114
  ctrlShiftDownArrow: 'ctrl+shift+downarrow',
2107
2115
  ctrlShiftLeftArrow: 'ctrl+shift+leftarrow',
2108
- ctrlShiftRightArrow: 'ctrl+shift+rightarrow'
2116
+ ctrlShiftRightArrow: 'ctrl+shift+rightarrow',
2117
+ shiftAltY: 'shift+alt+y',
2118
+ shiftAltN: 'shift+alt+n'
2109
2119
  };
2110
2120
  this.parent = parent;
2111
2121
  this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;
@@ -2186,6 +2196,43 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2186
2196
  this.processFTwelve(e);
2187
2197
  }
2188
2198
  break;
2199
+ case 'shiftAltY':
2200
+ this.parent.changeDate(new Date(), e);
2201
+ break;
2202
+ case 'shiftAltN':
2203
+ if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda' ||
2204
+ this.parent.currentView === 'Year') {
2205
+ return;
2206
+ }
2207
+ this.processShiftAltN(e);
2208
+ break;
2209
+ }
2210
+ };
2211
+ KeyboardInteraction.prototype.processShiftAltN = function (e) {
2212
+ var selectedCells = this.parent.getSelectedCells();
2213
+ var target = e.target;
2214
+ var cellData = extend({}, null, true);
2215
+ if (selectedCells.length > 0 && (closest(target, '.' + WORK_CELLS_CLASS)
2216
+ || closest(target, '.' + ALLDAY_CELLS_CLASS) || closest(target, '.' + HEADER_CELLS_CLASS))) {
2217
+ cellData = this.getSelectedElements(target);
2218
+ }
2219
+ else if (closest(target, '.' + APPOINTMENT_CLASS) && !isNullOrUndefined(this.parent.activeEventData.event)) {
2220
+ var event_1 = this.parent.activeEventData.event;
2221
+ cellData.startTime = event_1.StartTime;
2222
+ cellData.endTime = event_1.EndTime;
2223
+ cellData.isAllDay = event_1.IsAllDay;
2224
+ }
2225
+ else {
2226
+ var workHour = this.parent.getStartEndTime(this.parent.workHours.start);
2227
+ var slotInterval = this.parent.activeViewOptions.timeScale.interval /
2228
+ this.parent.activeViewOptions.timeScale.slotCount;
2229
+ cellData.startTime = new Date(this.parent.selectedDate);
2230
+ cellData.startTime.setHours(workHour.getHours(), workHour.getMinutes(), 0, 0);
2231
+ cellData.endTime = new Date(cellData.startTime.getTime() + slotInterval * 60000);
2232
+ }
2233
+ var args = extend(cellData, { cancel: false, event: e });
2234
+ if (args != null) {
2235
+ this.parent.eventWindow.openEditor(args, 'Add');
2189
2236
  }
2190
2237
  };
2191
2238
  KeyboardInteraction.prototype.processFTwelve = function (e) {
@@ -2611,8 +2658,11 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2611
2658
  return this.parent.eventBase.selectWorkCellByTime([selectedObject]);
2612
2659
  };
2613
2660
  KeyboardInteraction.prototype.processViewNavigation = function (e) {
2614
- var index = parseInt(e.key, 10) - 1;
2615
- if (!isNullOrUndefined(this.parent.views) && index < this.parent.views.length) {
2661
+ if (isNullOrUndefined(e.code)) {
2662
+ return;
2663
+ }
2664
+ var index = parseInt(e.code.slice(e.code.length - 1), 10) - 1;
2665
+ if (!isNaN(index) && !isNullOrUndefined(this.parent.views) && index < this.parent.views.length) {
2616
2666
  var view = this.parent.viewCollections[parseInt(index.toString(), 10)].option;
2617
2667
  this.parent.changeView(view, e, undefined, index);
2618
2668
  if (this.parent.headerModule) {
@@ -8096,7 +8146,10 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
8096
8146
  if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {
8097
8147
  for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {
8098
8148
  var sourceRes = this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)];
8099
- this.renderEventsHandler(sourceRes.renderDates, sourceRes.workDays, sourceRes);
8149
+ if (!this.parent.uiStateValues.isGroupAdaptive ||
8150
+ (this.parent.uiStateValues.groupIndex === sourceRes.groupIndex && this.parent.uiStateValues.isGroupAdaptive)) {
8151
+ this.renderEventsHandler(sourceRes.renderDates, sourceRes.workDays, sourceRes);
8152
+ }
8100
8153
  if (this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==
8101
8154
  this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {
8102
8155
  var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];
@@ -8591,7 +8644,10 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
8591
8644
  for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {
8592
8645
  var source = this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)];
8593
8646
  this.rowIndex = source.groupIndex;
8594
- this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);
8647
+ if (!this.parent.uiStateValues.isGroupAdaptive ||
8648
+ (this.parent.uiStateValues.groupIndex === source.groupIndex && this.parent.uiStateValues.isGroupAdaptive)) {
8649
+ this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);
8650
+ }
8595
8651
  if (this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)] && this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==
8596
8652
  this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {
8597
8653
  var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];
@@ -9148,7 +9204,15 @@ var InlineEdit = /** @__PURE__ @class */ (function () {
9148
9204
  subjectWrap.insertBefore(inlineSubject, subjectWrap.firstChild);
9149
9205
  }
9150
9206
  else {
9151
- args.element.querySelector('.e-appointment-details').prepend(inlineSubject);
9207
+ var elementSelector = ['TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth'].indexOf(this.parent.currentView) > -1 ?
9208
+ '.e-inner-wrap' : '.e-appointment-details';
9209
+ var innerWrapElement = args.element.querySelector(elementSelector);
9210
+ if (isNullOrUndefined(innerWrapElement)) {
9211
+ args.element.querySelector('.e-appointment-details').prepend(inlineSubject);
9212
+ }
9213
+ else {
9214
+ innerWrapElement.prepend(inlineSubject);
9215
+ }
9152
9216
  }
9153
9217
  inlineSubject.focus();
9154
9218
  }
@@ -10904,7 +10968,8 @@ var EventTooltip = /** @__PURE__ @class */ (function () {
10904
10968
  var fields = this.parent.eventFields;
10905
10969
  var eventStart = new Date('' + record[fields.startTime]);
10906
10970
  var eventEnd = new Date('' + record[fields.endTime]);
10907
- eventEnd = (eventEnd.getHours() === 0 && eventEnd.getMinutes() === 0) ? new Date(eventEnd.setMilliseconds(-1000)) : eventEnd;
10971
+ eventEnd = ((eventEnd.getTime() - eventStart.getTime() !== 0) && eventEnd.getHours() === 0 && eventEnd.getMinutes() === 0) ?
10972
+ new Date(eventEnd.setMilliseconds(-1000)) : eventEnd;
10908
10973
  var startDate = resetTime(new Date('' + eventStart));
10909
10974
  var endDate = resetTime(new Date('' + eventEnd));
10910
10975
  var tooltipSubject = (record[fields.subject] || this.parent.eventSettings.fields.subject.default
@@ -14226,6 +14291,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14226
14291
  firstTDIndex = (endIndex > this.parent.resourceBase.expandedResources.length) ?
14227
14292
  (this.parent.resourceBase.expandedResources.length - this.renderedLength) : firstTDIndex;
14228
14293
  firstTDIndex = firstTDIndex < 0 ? 0 : firstTDIndex;
14294
+ this.existingDataCollection = this.parent.resourceBase.renderedResources;
14229
14295
  this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.slice(firstTDIndex, endIndex);
14230
14296
  if (this.parent.resourceBase.renderedResources.length > 0) {
14231
14297
  this.updateContent(resWrap, conWrap, eventWrap, this.parent.resourceBase.renderedResources);
@@ -14275,6 +14341,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14275
14341
  var scrollHeight = this.parent.rowAutoHeight ?
14276
14342
  (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;
14277
14343
  var resCollection = [];
14344
+ this.existingDataCollection = this.parent.resourceBase.renderedResources;
14278
14345
  if ((conWrap.scrollTop) - this.translateY < 0) {
14279
14346
  resCollection = this.upScroll(conWrap, firstTDIndex);
14280
14347
  }
@@ -14478,18 +14545,47 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14478
14545
  this.parent.element.focus();
14479
14546
  }
14480
14547
  for (var i = 0; i < renderedLength; i++) {
14481
- remove(resWrap.querySelector('tbody tr'));
14482
- remove(conWrap.querySelector('tbody tr'));
14483
14548
  remove(eventWrap.querySelector('div'));
14484
14549
  }
14485
14550
  this.parent.resourceBase.renderedResources = resCollection;
14551
+ var currentGroupIndices = this.parent.activeView.getGroupIndices(resCollection);
14552
+ var previousGroupIndices = this.parent.activeView.getGroupIndices(this.existingDataCollection);
14553
+ var newGroupIndices = currentGroupIndices.filter(function (index) { return previousGroupIndices.indexOf(index) < 0; });
14554
+ var resWrapRows = Array.from(resWrap.querySelectorAll('tbody tr'));
14555
+ var conWrapRows = Array.from(conWrap.querySelectorAll('tbody tr'));
14556
+ var resWrapBody = resWrap.querySelector('tbody');
14557
+ var conWrapBody = conWrap.querySelector('tbody');
14558
+ this.removeObsoleteRows(resWrapRows, currentGroupIndices);
14559
+ this.removeObsoleteRows(conWrapRows, currentGroupIndices);
14486
14560
  var resourceRows = this.parent.resourceBase.getContentRows(resCollection, true);
14487
14561
  var contentRows = this.parent.activeView.getContentRows();
14488
14562
  var eventRows = this.parent.activeView.getEventRows(resCollection.length);
14489
- append(resourceRows, resWrap.querySelector('tbody'));
14490
- append(contentRows, conWrap.querySelector('tbody'));
14563
+ for (var i = 0; i < newGroupIndices.length; i++) {
14564
+ var index = currentGroupIndices.indexOf(newGroupIndices[parseInt(i.toString(), 10)]);
14565
+ if (index === 0) {
14566
+ prepend([resourceRows[parseInt(i.toString(), 10)]], resWrapBody);
14567
+ prepend([contentRows[parseInt(i.toString(), 10)]], conWrapBody);
14568
+ }
14569
+ else if (resWrapBody && conWrapBody && resWrapBody.children[parseInt(index.toString(), 10)] &&
14570
+ conWrapBody.children[parseInt(index.toString(), 10)]) {
14571
+ resWrapBody.insertBefore(resourceRows[parseInt(i.toString(), 10)], resWrapBody.children[parseInt(index.toString(), 10)]);
14572
+ conWrapBody.insertBefore(contentRows[parseInt(i.toString(), 10)], conWrapBody.children[parseInt(index.toString(), 10)]);
14573
+ }
14574
+ else {
14575
+ append([resourceRows[parseInt(i.toString(), 10)]], resWrapBody);
14576
+ append([contentRows[parseInt(i.toString(), 10)]], conWrapBody);
14577
+ }
14578
+ }
14491
14579
  append(eventRows, eventWrap);
14492
14580
  };
14581
+ VirtualScroll.prototype.removeObsoleteRows = function (elements, currentGroupIndices) {
14582
+ elements.forEach(function (element) {
14583
+ var groupIndex = parseInt(element.firstElementChild.getAttribute('data-group-index'), 10);
14584
+ if (currentGroupIndices.indexOf(groupIndex) < 0) {
14585
+ remove(element);
14586
+ }
14587
+ });
14588
+ };
14493
14589
  VirtualScroll.prototype.updateHorizontalContent = function (conWrap, resCollection) {
14494
14590
  this.existingDataCollection = this.parent.resourceBase.expandedResources;
14495
14591
  this.parent.resourceBase.expandedResources = resCollection;
@@ -15062,10 +15158,10 @@ var Crud = /** @__PURE__ @class */ (function () {
15062
15158
  addedRecords: args.editParams.addedRecords, changedRecords: args.editParams.changedRecords,
15063
15159
  deletedRecords: args.editParams.deletedRecords
15064
15160
  };
15065
- if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj && this.parent.dragAndDropModule.actionObj.element) {
15161
+ if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj && this.parent.dragAndDropModule.actionObj.element && this.parent.dragAndDropModule.actionObj.action) {
15066
15162
  this.parent.dragAndDropModule.actionObj.element.style.display = 'none';
15067
15163
  }
15068
- if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element) {
15164
+ if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element && this.parent.resizeModule.actionObj.action) {
15069
15165
  this.parent.resizeModule.actionObj.element.style.display = 'none';
15070
15166
  }
15071
15167
  if (this.parent.isSpecificResourceEvents()) {
@@ -15454,16 +15550,32 @@ var Crud = /** @__PURE__ @class */ (function () {
15454
15550
  var updateSeriesEvents = (eventData instanceof Array) ? eventData : [eventData];
15455
15551
  var args = {
15456
15552
  requestType: action === 'EditSeries' ? 'eventChange' : 'eventRemove', cancel: false,
15457
- addedRecords: [], changedRecords: updateSeriesEvents, deletedRecords: []
15553
+ addedRecords: [], changedRecords: [], deletedRecords: []
15458
15554
  };
15459
15555
  args.data = seriesData;
15556
+ if (action === 'EditSeries') {
15557
+ args.changedRecords = updateSeriesEvents;
15558
+ }
15559
+ else {
15560
+ args.deletedRecords = updateSeriesEvents;
15561
+ }
15562
+ if (action === 'EditSeries' && !this.parent.uiStateValues.isIgnoreOccurrence) {
15563
+ var seriesEvents = seriesData instanceof Array ? seriesData : [seriesData];
15564
+ for (var a = 0, count = args.changedRecords.length; a < count; a++) {
15565
+ var parentEvent = seriesEvents[parseInt(a.toString(), 10)];
15566
+ var eventCollections = this.parent.eventBase.getEventCollections(parentEvent);
15567
+ var deletedEvents = eventCollections.follow.concat(eventCollections.occurrence);
15568
+ args.deletedRecords = args.deletedRecords.concat(deletedEvents);
15569
+ }
15570
+ }
15460
15571
  this.parent.trigger(actionBegin, args, function (seriesArgs) {
15461
15572
  if (!seriesArgs.cancel) {
15462
15573
  var fields_2 = _this.parent.eventFields;
15463
15574
  var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };
15464
15575
  var seriesEvents = seriesData instanceof Array ? seriesData : [seriesData];
15576
+ var records = action === 'EditSeries' ? seriesArgs.changedRecords : seriesArgs.deletedRecords;
15465
15577
  var _loop_4 = function (a, count) {
15466
- var childEvent = seriesArgs.changedRecords[parseInt(a.toString(), 10)];
15578
+ var childEvent = records[parseInt(a.toString(), 10)];
15467
15579
  var parentEvent = seriesEvents[parseInt(a.toString(), 10)];
15468
15580
  var eventCollections = _this.parent.eventBase.getEventCollections(parentEvent);
15469
15581
  var deletedEvents = eventCollections.follow.concat(eventCollections.occurrence);
@@ -15493,11 +15605,11 @@ var Crud = /** @__PURE__ @class */ (function () {
15493
15605
  break;
15494
15606
  }
15495
15607
  };
15496
- for (var a = 0, count = seriesArgs.changedRecords.length; a < count; a++) {
15608
+ for (var a = 0, count = records.length; a < count; a++) {
15497
15609
  _loop_4(a, count);
15498
15610
  }
15499
15611
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_2.id, _this.getTable(), _this.getQuery());
15500
- var cloneEvent = extend({}, seriesArgs.changedRecords[seriesArgs.changedRecords.length - 1], null, true);
15612
+ var cloneEvent = extend({}, records[records.length - 1], null, true);
15501
15613
  _this.parent.eventBase.selectWorkCellByTime(action === 'EditSeries' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
15502
15614
  var crudArgs = {
15503
15615
  requestType: action === 'EditSeries' ? 'eventChanged' : 'eventRemoved',
@@ -16258,7 +16370,11 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
16258
16370
  var resColl = this.resourceCollection;
16259
16371
  var tr = createElement('tr');
16260
16372
  var td = createElement('td', { attrs: { tabindex: isVirtualScroll ? '-1' : '0' } });
16373
+ var existingGroupIndices = this.parent.activeView.getGroupIndices();
16261
16374
  for (var i = 0; i < resData.length; i++) {
16375
+ if (existingGroupIndices.length > 0 && existingGroupIndices.indexOf(resData[parseInt(i.toString(), 10)].groupIndex) > -1) {
16376
+ continue;
16377
+ }
16262
16378
  var ntd = td.cloneNode();
16263
16379
  rIndex = findIndexInData(resColl, 'name', resData[parseInt(i.toString(), 10)].resource.name);
16264
16380
  if (rIndex === resColl.length - 1) {
@@ -16439,6 +16555,7 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
16439
16555
  this.setExpandedResources();
16440
16556
  var resourceCount = this.parent.virtualScrollModule.getRenderedCount();
16441
16557
  var startIndex = this.expandedResources.indexOf(this.renderedResources[0]);
16558
+ this.parent.virtualScrollModule.existingDataCollection = this.renderedResources;
16442
16559
  this.renderedResources = this.expandedResources.slice(startIndex, startIndex + resourceCount);
16443
16560
  if (this.renderedResources.length < resourceCount) {
16444
16561
  var sIndex = this.expandedResources.length - resourceCount;
@@ -18582,7 +18699,8 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18582
18699
  };
18583
18700
  Schedule.prototype.onScheduleResize = function () {
18584
18701
  if (isNullOrUndefined(this.activeView) || ((this.isAdaptive || isMobile()) && document.activeElement
18585
- && document.activeElement.classList.contains(SUBJECT_CLASS)) || this.uiStateValues.isTapHold) {
18702
+ && (document.activeElement.classList.contains(SUBJECT_CLASS) ||
18703
+ document.activeElement.classList.contains(INLINE_SUBJECT_CLASS))) || this.uiStateValues.isTapHold) {
18586
18704
  return;
18587
18705
  }
18588
18706
  if (this.virtualScrollModule && this.activeView.isTimelineView()) {
@@ -21244,6 +21362,7 @@ var Resize = /** @__PURE__ @class */ (function (_super) {
21244
21362
  EventHandler.remove(document, Browser.touchEndEvent, this.resizeStop);
21245
21363
  clearInterval(this.actionObj.scrollInterval);
21246
21364
  this.actionObj.scrollInterval = null;
21365
+ this.actionObj.action = null;
21247
21366
  this.removeCloneElementClasses();
21248
21367
  this.removeCloneElement();
21249
21368
  this.actionClass('removeClass');
@@ -21608,8 +21727,8 @@ var YearEvent = /** @__PURE__ @class */ (function (_super) {
21608
21727
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), month, 1);
21609
21728
  var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
21610
21729
  var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));
21611
- var startDate = getWeekFirstDate(monthStart, this.parent.firstDayOfWeek);
21612
- var endDate = addDays(getWeekLastDate(monthEnd, this.parent.firstDayOfWeek), 1);
21730
+ var startDate = getWeekFirstDate(monthStart, this.parent.activeViewOptions.firstDayOfWeek);
21731
+ var endDate = addDays(getWeekLastDate(monthEnd, this.parent.activeViewOptions.firstDayOfWeek), 1);
21613
21732
  for (var index = 0; startDate.getTime() < endDate.getTime(); index++) {
21614
21733
  var start = resetTime(new Date(startDate.getTime()));
21615
21734
  var end = addDays(new Date(start.getTime()), 1);
@@ -24163,6 +24282,15 @@ var ViewBase = /** @__PURE__ @class */ (function () {
24163
24282
  this.parent.resourceBase.expandedResources = this.colLevels[this.colLevels.length - 1];
24164
24283
  }
24165
24284
  };
24285
+ ViewBase.prototype.getGroupIndices = function (dataCollection) {
24286
+ var groupIndices = [];
24287
+ if (this.parent.virtualScrollModule && this.parent.activeViewOptions.group.resources.length > 0 && (dataCollection ||
24288
+ this.parent.virtualScrollModule.existingDataCollection.length > 0) && !this.parent.uiStateValues.isGroupAdaptive) {
24289
+ dataCollection = isNullOrUndefined(dataCollection) ? this.parent.virtualScrollModule.existingDataCollection : dataCollection;
24290
+ groupIndices = dataCollection.map(function (data) { return data.groupIndex; });
24291
+ }
24292
+ return groupIndices;
24293
+ };
24166
24294
  ViewBase.prototype.destroy = function () {
24167
24295
  if (this.element && this.element.parentNode) {
24168
24296
  remove(this.element);
@@ -24846,18 +24974,14 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
24846
24974
  var rows = [];
24847
24975
  var tr = createElement('tr');
24848
24976
  var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
24849
- var existingGroupIndices = new Set();
24850
- if (this.parent.virtualScrollModule && this.parent.activeViewOptions.group.resources.length > 0 &&
24851
- this.parent.virtualScrollModule.existingDataCollection.length > 0) {
24852
- existingGroupIndices = new Set(this.parent.virtualScrollModule.existingDataCollection.map(function (data) { return data.groupIndex; }));
24853
- }
24977
+ var existingGroupIndices = this.getGroupIndices();
24854
24978
  var handler = function (r) {
24855
24979
  var ntr = tr.cloneNode();
24856
24980
  for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {
24857
24981
  var tdData = _a[_i];
24858
24982
  var isAllowTdCreation = true;
24859
24983
  if (_this.parent.virtualScrollModule && _this.parent.activeViewOptions.group.resources.length > 0) {
24860
- if (existingGroupIndices.has(tdData.groupIndex)) {
24984
+ if (existingGroupIndices.indexOf(tdData.groupIndex) > -1) {
24861
24985
  isAllowTdCreation = false;
24862
24986
  }
24863
24987
  }
@@ -25659,7 +25783,13 @@ var Month = /** @__PURE__ @class */ (function (_super) {
25659
25783
  var tr = createElement('tr');
25660
25784
  var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
25661
25785
  var slotDatas = this.getContentSlots();
25786
+ var isTimeline = this.parent.currentView === 'TimelineMonth';
25787
+ var existingGroupIndices = isTimeline ? this.getGroupIndices() : [];
25662
25788
  for (var row = 0; row < slotDatas.length; row++) {
25789
+ if (existingGroupIndices.length > 0 &&
25790
+ existingGroupIndices.indexOf(slotDatas[parseInt(row.toString(), 10)][0].groupIndex) > -1) {
25791
+ continue;
25792
+ }
25663
25793
  var ntr = tr.cloneNode();
25664
25794
  for (var col = 0; col < slotDatas[parseInt(row.toString(), 10)].length; col++) {
25665
25795
  var ntd = this.createContentTd(slotDatas[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)], td);
@@ -26004,7 +26134,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
26004
26134
  this.setAriaAttributes(contentTable);
26005
26135
  var thead = createElement('thead', { className: 'e-week-header' });
26006
26136
  var tr = createElement('tr');
26007
- var currentWeek = getWeekFirstDate(firstDateOfMonth(currentDate), this.parent.firstDayOfWeek);
26137
+ var currentWeek = getWeekFirstDate(firstDateOfMonth(currentDate), this.parent.activeViewOptions.firstDayOfWeek);
26008
26138
  if (this.parent.activeViewOptions.showWeekNumber) {
26009
26139
  tr.appendChild(createElement('th'));
26010
26140
  }
@@ -26133,7 +26263,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
26133
26263
  return dateCol;
26134
26264
  };
26135
26265
  Year.prototype.getMonthDates = function (date) {
26136
- var startDate = getWeekFirstDate(firstDateOfMonth(date), this.parent.firstDayOfWeek);
26266
+ var startDate = getWeekFirstDate(firstDateOfMonth(date), this.parent.activeViewOptions.firstDayOfWeek);
26137
26267
  var endDate = addDays(new Date(+startDate), (6 * WEEK_LENGTH));
26138
26268
  var dateCollection = [];
26139
26269
  for (var start = startDate; start.getTime() < endDate.getTime(); start = addDays(start, 1)) {
@@ -26269,10 +26399,10 @@ var Year = /** @__PURE__ @class */ (function (_super) {
26269
26399
  return addDays(addMonths(this.getStartDate(), this.parent.monthsCount), -1);
26270
26400
  };
26271
26401
  Year.prototype.startDate = function () {
26272
- return this.parent.currentView === 'Year' ? getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek) : this.getStartDate();
26402
+ return this.parent.currentView === 'Year' ? getWeekFirstDate(this.getStartDate(), this.parent.activeViewOptions.firstDayOfWeek) : this.getStartDate();
26273
26403
  };
26274
26404
  Year.prototype.endDate = function () {
26275
- return this.parent.currentView === 'Year' ? addDays(getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) :
26405
+ return this.parent.currentView === 'Year' ? addDays(getWeekLastDate(this.getEndDate(), this.parent.activeViewOptions.firstDayOfWeek), 1) :
26276
26406
  addDays(this.getEndDate(), 1);
26277
26407
  };
26278
26408
  Year.prototype.getEndDateFromStartDate = function (start) {
@@ -27455,7 +27585,7 @@ var TimelineHeaderRow = /** @__PURE__ @class */ (function () {
27455
27585
  var jsDate = +new Date(1970, 0, 1);
27456
27586
  var tzOffsetDiff = d.getTimezoneOffset() - new Date(1970, 0, 1).getTimezoneOffset();
27457
27587
  var key = Math.ceil(((((+d - jsDate) - (tzOffsetDiff * 60 * 1000)) / MS_PER_DAY) + new Date(jsDate).getDay() + 1) / 7);
27458
- if (this.parent.firstDayOfWeek && this.parent.firstDayOfWeek > new Date(+d).getDay()) {
27588
+ if (this.parent.activeViewOptions.firstDayOfWeek && this.parent.activeViewOptions.firstDayOfWeek > new Date(+d).getDay()) {
27459
27589
  key = key - 1;
27460
27590
  }
27461
27591
  result[parseInt(key.toString(), 10)] = result[parseInt(key.toString(), 10)] || [];
@@ -27778,7 +27908,12 @@ var TimelineViews = /** @__PURE__ @class */ (function (_super) {
27778
27908
  var tr = createElement('tr');
27779
27909
  var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
27780
27910
  var trCount = this.getRowCount();
27911
+ var existingGroupIndices = this.getGroupIndices();
27781
27912
  for (var i = 0; i < trCount; i++) {
27913
+ if (existingGroupIndices.length > 0 &&
27914
+ existingGroupIndices.indexOf(this.parent.resourceBase.renderedResources[parseInt(i.toString(), 10)].groupIndex) > -1) {
27915
+ continue;
27916
+ }
27782
27917
  var ntr = tr.cloneNode();
27783
27918
  for (var _i = 0, _a = this.colLevels[this.colLevels.length - 1]; _i < _a.length; _i++) {
27784
27919
  var tdData = _a[_i];
@@ -28298,13 +28433,17 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
28298
28433
  TimelineYear.prototype.getContentRows = function () {
28299
28434
  var tRow = [];
28300
28435
  var monthCells = this.getMonths();
28436
+ var existingGroupIndices = this.getGroupIndices();
28301
28437
  for (var row = 0; row < this.parent.resourceBase.renderedResources.length; row++) {
28302
- var tr = createElement('tr');
28303
- tRow.push(tr);
28304
28438
  var resData = void 0;
28305
28439
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
28306
28440
  resData = this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)];
28441
+ if (existingGroupIndices.length > 0 && existingGroupIndices.indexOf(resData.groupIndex) > -1) {
28442
+ continue;
28443
+ }
28307
28444
  }
28445
+ var tr = createElement('tr');
28446
+ tRow.push(tr);
28308
28447
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[parseInt(row.toString(), 10)], 1);
28309
28448
  var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
28310
28449
  for (var month = 0; month < this.columnCount; month++) {