@syncfusion/ej2-schedule 26.2.14 → 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 (199) 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 +151 -29
  4. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es5.js +151 -29
  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 +2 -2
  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/renderer/header-renderer.d.ts +1 -0
  25. package/src/schedule/renderer/header-renderer.js +9 -1
  26. package/src/schedule/renderer/month.js +6 -0
  27. package/src/schedule/renderer/timeline-header-row.js +1 -1
  28. package/src/schedule/renderer/timeline-view.js +5 -0
  29. package/src/schedule/renderer/timeline-year.js +6 -2
  30. package/src/schedule/renderer/vertical-view.js +2 -6
  31. package/src/schedule/renderer/view-base.d.ts +1 -0
  32. package/src/schedule/renderer/view-base.js +9 -0
  33. package/src/schedule/renderer/year.js +4 -4
  34. package/styles/bootstrap-dark-lite.css +4169 -0
  35. package/styles/bootstrap-dark-lite.scss +18 -0
  36. package/styles/bootstrap-dark.css +818 -596
  37. package/styles/bootstrap-dark.scss +3 -2
  38. package/styles/bootstrap-lite.css +4164 -0
  39. package/styles/bootstrap-lite.scss +18 -0
  40. package/styles/bootstrap.css +818 -596
  41. package/styles/bootstrap.scss +3 -2
  42. package/styles/bootstrap4-lite.css +4211 -0
  43. package/styles/bootstrap4-lite.scss +18 -0
  44. package/styles/bootstrap4.css +803 -636
  45. package/styles/bootstrap4.scss +3 -2
  46. package/styles/bootstrap5-dark-lite.css +4210 -0
  47. package/styles/bootstrap5-dark-lite.scss +18 -0
  48. package/styles/bootstrap5-dark.css +819 -597
  49. package/styles/bootstrap5-dark.scss +3 -2
  50. package/styles/bootstrap5-lite.css +4210 -0
  51. package/styles/bootstrap5-lite.scss +18 -0
  52. package/styles/bootstrap5.3-lite.css +4256 -0
  53. package/styles/bootstrap5.3-lite.scss +18 -0
  54. package/styles/bootstrap5.3.css +5017 -0
  55. package/styles/bootstrap5.3.scss +20 -0
  56. package/styles/bootstrap5.css +819 -597
  57. package/styles/bootstrap5.scss +3 -2
  58. package/styles/fabric-dark-lite.css +4139 -0
  59. package/styles/fabric-dark-lite.scss +18 -0
  60. package/styles/fabric-dark.css +825 -595
  61. package/styles/fabric-dark.scss +3 -2
  62. package/styles/fabric-lite.css +4136 -0
  63. package/styles/fabric-lite.scss +18 -0
  64. package/styles/fabric.css +825 -588
  65. package/styles/fabric.scss +3 -2
  66. package/styles/fluent-dark-lite.css +4202 -0
  67. package/styles/fluent-dark-lite.scss +18 -0
  68. package/styles/fluent-dark.css +823 -593
  69. package/styles/fluent-dark.scss +3 -2
  70. package/styles/fluent-lite.css +4202 -0
  71. package/styles/fluent-lite.scss +18 -0
  72. package/styles/fluent.css +823 -593
  73. package/styles/fluent.scss +3 -2
  74. package/styles/fluent2-lite.css +4422 -0
  75. package/styles/fluent2-lite.scss +18 -0
  76. package/styles/fluent2.css +860 -602
  77. package/styles/fluent2.scss +3 -2
  78. package/styles/highcontrast-light-lite.css +4228 -0
  79. package/styles/highcontrast-light-lite.scss +18 -0
  80. package/styles/highcontrast-light.css +828 -584
  81. package/styles/highcontrast-light.scss +3 -2
  82. package/styles/highcontrast-lite.css +4237 -0
  83. package/styles/highcontrast-lite.scss +18 -0
  84. package/styles/highcontrast.css +829 -585
  85. package/styles/highcontrast.scss +3 -2
  86. package/styles/material-dark-lite.css +4216 -0
  87. package/styles/material-dark-lite.scss +18 -0
  88. package/styles/material-dark.css +828 -581
  89. package/styles/material-dark.scss +3 -2
  90. package/styles/material-lite.css +4242 -0
  91. package/styles/material-lite.scss +18 -0
  92. package/styles/material.css +826 -600
  93. package/styles/material.scss +3 -2
  94. package/styles/material3-dark-lite.css +4233 -0
  95. package/styles/material3-dark-lite.scss +18 -0
  96. package/styles/material3-dark.css +825 -602
  97. package/styles/material3-dark.scss +3 -2
  98. package/styles/material3-lite.css +4235 -0
  99. package/styles/material3-lite.scss +18 -0
  100. package/styles/material3.css +825 -602
  101. package/styles/material3.scss +3 -2
  102. package/styles/recurrence-editor/_bigger.scss +134 -0
  103. package/styles/recurrence-editor/_layout.scss +0 -110
  104. package/styles/recurrence-editor/bootstrap-dark.css +87 -131
  105. package/styles/recurrence-editor/bootstrap-dark.scss +1 -0
  106. package/styles/recurrence-editor/bootstrap.css +87 -131
  107. package/styles/recurrence-editor/bootstrap.scss +1 -0
  108. package/styles/recurrence-editor/bootstrap4.css +87 -149
  109. package/styles/recurrence-editor/bootstrap4.scss +1 -0
  110. package/styles/recurrence-editor/bootstrap5-dark.css +87 -135
  111. package/styles/recurrence-editor/bootstrap5-dark.scss +1 -0
  112. package/styles/recurrence-editor/bootstrap5.3.css +501 -0
  113. package/styles/recurrence-editor/bootstrap5.3.scss +9 -0
  114. package/styles/recurrence-editor/bootstrap5.css +87 -135
  115. package/styles/recurrence-editor/bootstrap5.scss +1 -0
  116. package/styles/recurrence-editor/fabric-dark.css +87 -130
  117. package/styles/recurrence-editor/fabric-dark.scss +1 -0
  118. package/styles/recurrence-editor/fabric.css +87 -123
  119. package/styles/recurrence-editor/fabric.scss +1 -0
  120. package/styles/recurrence-editor/fluent-dark.css +87 -122
  121. package/styles/recurrence-editor/fluent-dark.scss +1 -0
  122. package/styles/recurrence-editor/fluent.css +87 -122
  123. package/styles/recurrence-editor/fluent.scss +1 -0
  124. package/styles/recurrence-editor/fluent2.css +91 -117
  125. package/styles/recurrence-editor/fluent2.scss +1 -0
  126. package/styles/recurrence-editor/highcontrast-light.css +87 -118
  127. package/styles/recurrence-editor/highcontrast-light.scss +1 -0
  128. package/styles/recurrence-editor/highcontrast.css +87 -118
  129. package/styles/recurrence-editor/highcontrast.scss +1 -0
  130. package/styles/recurrence-editor/material-dark.css +87 -115
  131. package/styles/recurrence-editor/material-dark.scss +1 -0
  132. package/styles/recurrence-editor/material.css +87 -136
  133. package/styles/recurrence-editor/material.scss +1 -0
  134. package/styles/recurrence-editor/material3-dark.css +87 -140
  135. package/styles/recurrence-editor/material3-dark.scss +1 -0
  136. package/styles/recurrence-editor/material3.css +87 -140
  137. package/styles/recurrence-editor/material3.scss +1 -0
  138. package/styles/recurrence-editor/tailwind-dark.css +87 -116
  139. package/styles/recurrence-editor/tailwind-dark.scss +1 -0
  140. package/styles/recurrence-editor/tailwind.css +87 -116
  141. package/styles/recurrence-editor/tailwind.scss +1 -0
  142. package/styles/schedule/_bds-definition.scss +1 -1
  143. package/styles/schedule/_bigger.scss +809 -0
  144. package/styles/schedule/_bootstrap4-definition.scss +1 -1
  145. package/styles/schedule/_bootstrap5-definition.scss +1 -1
  146. package/styles/schedule/_bootstrap5.3-definition.scss +9 -6
  147. package/styles/schedule/_fluent-definition.scss +1 -1
  148. package/styles/schedule/_fluent2-definition.scss +6 -6
  149. package/styles/schedule/_fusionnew-definition.scss +1 -1
  150. package/styles/schedule/_layout.scss +5 -442
  151. package/styles/schedule/_tailwind-definition.scss +1 -1
  152. package/styles/schedule/_theme.scss +23 -1
  153. package/styles/schedule/bootstrap-dark.css +699 -483
  154. package/styles/schedule/bootstrap-dark.scss +1 -0
  155. package/styles/schedule/bootstrap.css +699 -483
  156. package/styles/schedule/bootstrap.scss +1 -0
  157. package/styles/schedule/bootstrap4.css +684 -523
  158. package/styles/schedule/bootstrap4.scss +1 -0
  159. package/styles/schedule/bootstrap5-dark.css +707 -491
  160. package/styles/schedule/bootstrap5-dark.scss +1 -0
  161. package/styles/schedule/bootstrap5.3.css +4615 -0
  162. package/styles/schedule/bootstrap5.3.scss +17 -0
  163. package/styles/schedule/bootstrap5.css +707 -491
  164. package/styles/schedule/bootstrap5.scss +1 -0
  165. package/styles/schedule/fabric-dark.css +706 -482
  166. package/styles/schedule/fabric-dark.scss +1 -0
  167. package/styles/schedule/fabric.css +706 -475
  168. package/styles/schedule/fabric.scss +1 -0
  169. package/styles/schedule/fluent-dark.css +716 -492
  170. package/styles/schedule/fluent-dark.scss +1 -0
  171. package/styles/schedule/fluent.css +716 -492
  172. package/styles/schedule/fluent.scss +1 -0
  173. package/styles/schedule/fluent2.css +746 -497
  174. package/styles/schedule/fluent2.scss +1 -0
  175. package/styles/schedule/highcontrast-light.css +714 -476
  176. package/styles/schedule/highcontrast-light.scss +1 -0
  177. package/styles/schedule/highcontrast.css +714 -476
  178. package/styles/schedule/highcontrast.scss +1 -0
  179. package/styles/schedule/material-dark.css +724 -483
  180. package/styles/schedule/material-dark.scss +1 -0
  181. package/styles/schedule/material.css +720 -500
  182. package/styles/schedule/material.scss +1 -0
  183. package/styles/schedule/material3-dark.css +714 -497
  184. package/styles/schedule/material3-dark.scss +1 -0
  185. package/styles/schedule/material3.css +714 -497
  186. package/styles/schedule/material3.scss +1 -0
  187. package/styles/schedule/tailwind-dark.css +718 -483
  188. package/styles/schedule/tailwind-dark.scss +1 -0
  189. package/styles/schedule/tailwind.css +718 -483
  190. package/styles/schedule/tailwind.scss +1 -0
  191. package/styles/tailwind-dark-lite.css +4179 -0
  192. package/styles/tailwind-dark-lite.scss +18 -0
  193. package/styles/tailwind-dark.css +827 -586
  194. package/styles/tailwind-dark.scss +3 -2
  195. package/styles/tailwind-lite.css +4179 -0
  196. package/styles/tailwind-lite.scss +18 -0
  197. package/styles/tailwind.css +827 -586
  198. package/styles/tailwind.scss +3 -2
  199. package/dist/ej2-schedule.min.js +0 -10
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 26.2.14
3
+ * version : 27.1.48
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-schedule@*",
3
- "_id": "@syncfusion/ej2-schedule@26.2.12",
3
+ "_id": "@syncfusion/ej2-schedule@22.9.0",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-mUILDakcc3sCVN0/q/N/vHLnFZjxmMf70dncdtrY/dPTE05kW6GNUfbKZMCflT09r86jZxo0BQM+WZ12d8eJ/A==",
5
+ "_integrity": "sha512-Yx10Mr73Q/MHXczw1ajsFp73hPuU9ctfajujSBEo9+AnheTBVieAn/O/Lo1yHu/cFxPcQ2yvXB/JTrnbbkj8Fw==",
6
6
  "_location": "/@syncfusion/ej2-schedule",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,10 +23,10 @@
23
23
  "/@syncfusion/ej2-react-schedule",
24
24
  "/@syncfusion/ej2-vue-schedule"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-26.2.12.tgz",
27
- "_shasum": "fd72425ccf4ccd964d292e1ab6111c0f3a09dc70",
26
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-release/@syncfusion/ej2-schedule/-/ej2-schedule-22.9.0.tgz",
27
+ "_shasum": "e609ba2cc5f15ab56c1cd148c5fc4622a1cd3053",
28
28
  "_spec": "@syncfusion/ej2-schedule@*",
29
- "_where": "/jenkins/workspace/elease-automation_release_26.1.1/packages/included",
29
+ "_where": "/jenkins/workspace/elease-automation_release_27.1.1/packages/included",
30
30
  "author": {
31
31
  "name": "Syncfusion Inc."
32
32
  },
@@ -35,17 +35,18 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~26.2.10",
39
- "@syncfusion/ej2-buttons": "~26.2.10",
40
- "@syncfusion/ej2-calendars": "~26.2.12",
41
- "@syncfusion/ej2-data": "~26.2.14",
42
- "@syncfusion/ej2-dropdowns": "~26.2.13",
43
- "@syncfusion/ej2-excel-export": "~26.2.11",
44
- "@syncfusion/ej2-inputs": "~26.2.14",
45
- "@syncfusion/ej2-lists": "~26.2.14",
46
- "@syncfusion/ej2-navigations": "~26.2.12",
47
- "@syncfusion/ej2-popups": "~26.2.11",
48
- "@types/requirejs": "^2.1.37"
38
+ "@syncfusion/ej2-base": "~27.1.48",
39
+ "@syncfusion/ej2-buttons": "~27.1.48",
40
+ "@syncfusion/ej2-calendars": "~27.1.48",
41
+ "@syncfusion/ej2-data": "~27.1.48",
42
+ "@syncfusion/ej2-dropdowns": "~27.1.48",
43
+ "@syncfusion/ej2-excel-export": "~27.1.48",
44
+ "@syncfusion/ej2-inputs": "~27.1.48",
45
+ "@syncfusion/ej2-lists": "~27.1.48",
46
+ "@syncfusion/ej2-navigations": "~27.1.48",
47
+ "@syncfusion/ej2-popups": "~27.1.48",
48
+ "@types/requirejs": "^2.1.37",
49
+ "markdown-spellcheck": "^1.3.1"
49
50
  },
50
51
  "deprecated": false,
51
52
  "description": "Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.",
@@ -74,6 +75,6 @@
74
75
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
75
76
  },
76
77
  "typings": "index.d.ts",
77
- "version": "26.2.14",
78
+ "version": "27.1.48",
78
79
  "sideEffects": false
79
80
  }
@@ -112,10 +112,10 @@ var Crud = /** @class */ (function () {
112
112
  addedRecords: args.editParams.addedRecords, changedRecords: args.editParams.changedRecords,
113
113
  deletedRecords: args.editParams.deletedRecords
114
114
  };
115
- if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj && this.parent.dragAndDropModule.actionObj.element) {
115
+ if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj && this.parent.dragAndDropModule.actionObj.element && this.parent.dragAndDropModule.actionObj.action) {
116
116
  this.parent.dragAndDropModule.actionObj.element.style.display = 'none';
117
117
  }
118
- if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element) {
118
+ if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element && this.parent.resizeModule.actionObj.action) {
119
119
  this.parent.resizeModule.actionObj.element.style.display = 'none';
120
120
  }
121
121
  if (this.parent.isSpecificResourceEvents()) {
@@ -13,6 +13,7 @@ export declare class KeyboardInteraction {
13
13
  private keyboardModule;
14
14
  constructor(parent: Schedule);
15
15
  private keyActionHandler;
16
+ private processShiftAltN;
16
17
  private processFTwelve;
17
18
  private addEventListener;
18
19
  private removeEventListener;
@@ -43,7 +43,9 @@ var KeyboardInteraction = /** @class */ (function () {
43
43
  ctrlShiftUpArrow: 'ctrl+shift+uparrow',
44
44
  ctrlShiftDownArrow: 'ctrl+shift+downarrow',
45
45
  ctrlShiftLeftArrow: 'ctrl+shift+leftarrow',
46
- ctrlShiftRightArrow: 'ctrl+shift+rightarrow'
46
+ ctrlShiftRightArrow: 'ctrl+shift+rightarrow',
47
+ shiftAltY: 'shift+alt+y',
48
+ shiftAltN: 'shift+alt+n'
47
49
  };
48
50
  this.parent = parent;
49
51
  this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;
@@ -124,6 +126,43 @@ var KeyboardInteraction = /** @class */ (function () {
124
126
  this.processFTwelve(e);
125
127
  }
126
128
  break;
129
+ case 'shiftAltY':
130
+ this.parent.changeDate(new Date(), e);
131
+ break;
132
+ case 'shiftAltN':
133
+ if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda' ||
134
+ this.parent.currentView === 'Year') {
135
+ return;
136
+ }
137
+ this.processShiftAltN(e);
138
+ break;
139
+ }
140
+ };
141
+ KeyboardInteraction.prototype.processShiftAltN = function (e) {
142
+ var selectedCells = this.parent.getSelectedCells();
143
+ var target = e.target;
144
+ var cellData = extend({}, null, true);
145
+ if (selectedCells.length > 0 && (closest(target, '.' + cls.WORK_CELLS_CLASS)
146
+ || closest(target, '.' + cls.ALLDAY_CELLS_CLASS) || closest(target, '.' + cls.HEADER_CELLS_CLASS))) {
147
+ cellData = this.getSelectedElements(target);
148
+ }
149
+ else if (closest(target, '.' + cls.APPOINTMENT_CLASS) && !isNullOrUndefined(this.parent.activeEventData.event)) {
150
+ var event_1 = this.parent.activeEventData.event;
151
+ cellData.startTime = event_1.StartTime;
152
+ cellData.endTime = event_1.EndTime;
153
+ cellData.isAllDay = event_1.IsAllDay;
154
+ }
155
+ else {
156
+ var workHour = this.parent.getStartEndTime(this.parent.workHours.start);
157
+ var slotInterval = this.parent.activeViewOptions.timeScale.interval /
158
+ this.parent.activeViewOptions.timeScale.slotCount;
159
+ cellData.startTime = new Date(this.parent.selectedDate);
160
+ cellData.startTime.setHours(workHour.getHours(), workHour.getMinutes(), 0, 0);
161
+ cellData.endTime = new Date(cellData.startTime.getTime() + slotInterval * 60000);
162
+ }
163
+ var args = extend(cellData, { cancel: false, event: e });
164
+ if (args != null) {
165
+ this.parent.eventWindow.openEditor(args, 'Add');
127
166
  }
128
167
  };
129
168
  KeyboardInteraction.prototype.processFTwelve = function (e) {
@@ -549,8 +588,11 @@ var KeyboardInteraction = /** @class */ (function () {
549
588
  return this.parent.eventBase.selectWorkCellByTime([selectedObject]);
550
589
  };
551
590
  KeyboardInteraction.prototype.processViewNavigation = function (e) {
552
- var index = parseInt(e.key, 10) - 1;
553
- if (!isNullOrUndefined(this.parent.views) && index < this.parent.views.length) {
591
+ if (isNullOrUndefined(e.code)) {
592
+ return;
593
+ }
594
+ var index = parseInt(e.code.slice(e.code.length - 1), 10) - 1;
595
+ if (!isNaN(index) && !isNullOrUndefined(this.parent.views) && index < this.parent.views.length) {
554
596
  var view = this.parent.viewCollections[parseInt(index.toString(), 10)].option;
555
597
  this.parent.changeView(view, e, undefined, index);
556
598
  if (this.parent.headerModule) {
@@ -321,6 +321,7 @@ var Resize = /** @class */ (function (_super) {
321
321
  EventHandler.remove(document, Browser.touchEndEvent, this.resizeStop);
322
322
  clearInterval(this.actionObj.scrollInterval);
323
323
  this.actionObj.scrollInterval = null;
324
+ this.actionObj.action = null;
324
325
  this.removeCloneElementClasses();
325
326
  this.removeCloneElement();
326
327
  this.actionClass('removeClass');
@@ -41,6 +41,7 @@ export declare class VirtualScroll {
41
41
  private getByIdCollection;
42
42
  private setStartEndIndex;
43
43
  updateContent(resWrap: HTMLElement, conWrap: HTMLElement, eventWrap: HTMLElement, resCollection: TdData[]): void;
44
+ private removeObsoleteRows;
44
45
  private updateHorizontalContent;
45
46
  private updateMonthViewContent;
46
47
  private updateOtherViewContent;
@@ -114,6 +114,7 @@ var VirtualScroll = /** @class */ (function () {
114
114
  firstTDIndex = (endIndex > this.parent.resourceBase.expandedResources.length) ?
115
115
  (this.parent.resourceBase.expandedResources.length - this.renderedLength) : firstTDIndex;
116
116
  firstTDIndex = firstTDIndex < 0 ? 0 : firstTDIndex;
117
+ this.existingDataCollection = this.parent.resourceBase.renderedResources;
117
118
  this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.slice(firstTDIndex, endIndex);
118
119
  if (this.parent.resourceBase.renderedResources.length > 0) {
119
120
  this.updateContent(resWrap, conWrap, eventWrap, this.parent.resourceBase.renderedResources);
@@ -163,6 +164,7 @@ var VirtualScroll = /** @class */ (function () {
163
164
  var scrollHeight = this.parent.rowAutoHeight ?
164
165
  (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;
165
166
  var resCollection = [];
167
+ this.existingDataCollection = this.parent.resourceBase.renderedResources;
166
168
  if ((conWrap.scrollTop) - this.translateY < 0) {
167
169
  resCollection = this.upScroll(conWrap, firstTDIndex);
168
170
  }
@@ -366,18 +368,47 @@ var VirtualScroll = /** @class */ (function () {
366
368
  this.parent.element.focus();
367
369
  }
368
370
  for (var i = 0; i < renderedLength; i++) {
369
- remove(resWrap.querySelector('tbody tr'));
370
- remove(conWrap.querySelector('tbody tr'));
371
371
  remove(eventWrap.querySelector('div'));
372
372
  }
373
373
  this.parent.resourceBase.renderedResources = resCollection;
374
+ var currentGroupIndices = this.parent.activeView.getGroupIndices(resCollection);
375
+ var previousGroupIndices = this.parent.activeView.getGroupIndices(this.existingDataCollection);
376
+ var newGroupIndices = currentGroupIndices.filter(function (index) { return previousGroupIndices.indexOf(index) < 0; });
377
+ var resWrapRows = Array.from(resWrap.querySelectorAll('tbody tr'));
378
+ var conWrapRows = Array.from(conWrap.querySelectorAll('tbody tr'));
379
+ var resWrapBody = resWrap.querySelector('tbody');
380
+ var conWrapBody = conWrap.querySelector('tbody');
381
+ this.removeObsoleteRows(resWrapRows, currentGroupIndices);
382
+ this.removeObsoleteRows(conWrapRows, currentGroupIndices);
374
383
  var resourceRows = this.parent.resourceBase.getContentRows(resCollection, true);
375
384
  var contentRows = this.parent.activeView.getContentRows();
376
385
  var eventRows = this.parent.activeView.getEventRows(resCollection.length);
377
- append(resourceRows, resWrap.querySelector('tbody'));
378
- append(contentRows, conWrap.querySelector('tbody'));
386
+ for (var i = 0; i < newGroupIndices.length; i++) {
387
+ var index = currentGroupIndices.indexOf(newGroupIndices[parseInt(i.toString(), 10)]);
388
+ if (index === 0) {
389
+ prepend([resourceRows[parseInt(i.toString(), 10)]], resWrapBody);
390
+ prepend([contentRows[parseInt(i.toString(), 10)]], conWrapBody);
391
+ }
392
+ else if (resWrapBody && conWrapBody && resWrapBody.children[parseInt(index.toString(), 10)] &&
393
+ conWrapBody.children[parseInt(index.toString(), 10)]) {
394
+ resWrapBody.insertBefore(resourceRows[parseInt(i.toString(), 10)], resWrapBody.children[parseInt(index.toString(), 10)]);
395
+ conWrapBody.insertBefore(contentRows[parseInt(i.toString(), 10)], conWrapBody.children[parseInt(index.toString(), 10)]);
396
+ }
397
+ else {
398
+ append([resourceRows[parseInt(i.toString(), 10)]], resWrapBody);
399
+ append([contentRows[parseInt(i.toString(), 10)]], conWrapBody);
400
+ }
401
+ }
379
402
  append(eventRows, eventWrap);
380
403
  };
404
+ VirtualScroll.prototype.removeObsoleteRows = function (elements, currentGroupIndices) {
405
+ elements.forEach(function (element) {
406
+ var groupIndex = parseInt(element.firstElementChild.getAttribute('data-group-index'), 10);
407
+ if (currentGroupIndices.indexOf(groupIndex) < 0) {
408
+ remove(element);
409
+ }
410
+ });
411
+ };
381
412
  VirtualScroll.prototype.updateHorizontalContent = function (conWrap, resCollection) {
382
413
  this.existingDataCollection = this.parent.resourceBase.expandedResources;
383
414
  this.parent.resourceBase.expandedResources = resCollection;
@@ -449,6 +449,7 @@ export interface IRenderer {
449
449
  getAdjustedDate?(date: Date): Date;
450
450
  viewIndex: number;
451
451
  colLevels: TdData[][];
452
+ getGroupIndices(dataCollection?: TdData[]): number[];
452
453
  }
453
454
  /** @private */
454
455
  export interface EJ2Instance extends HTMLElement {
@@ -96,7 +96,11 @@ var ResourceBase = /** @class */ (function () {
96
96
  var resColl = this.resourceCollection;
97
97
  var tr = createElement('tr');
98
98
  var td = createElement('td', { attrs: { tabindex: isVirtualScroll ? '-1' : '0' } });
99
+ var existingGroupIndices = this.parent.activeView.getGroupIndices();
99
100
  for (var i = 0; i < resData.length; i++) {
101
+ if (existingGroupIndices.length > 0 && existingGroupIndices.indexOf(resData[parseInt(i.toString(), 10)].groupIndex) > -1) {
102
+ continue;
103
+ }
100
104
  var ntd = td.cloneNode();
101
105
  rIndex = util.findIndexInData(resColl, 'name', resData[parseInt(i.toString(), 10)].resource.name);
102
106
  if (rIndex === resColl.length - 1) {
@@ -277,6 +281,7 @@ var ResourceBase = /** @class */ (function () {
277
281
  this.setExpandedResources();
278
282
  var resourceCount = this.parent.virtualScrollModule.getRenderedCount();
279
283
  var startIndex = this.expandedResources.indexOf(this.renderedResources[0]);
284
+ this.parent.virtualScrollModule.existingDataCollection = this.renderedResources;
280
285
  this.renderedResources = this.expandedResources.slice(startIndex, startIndex + resourceCount);
281
286
  if (this.renderedResources.length < resourceCount) {
282
287
  var sIndex = this.expandedResources.length - resourceCount;
@@ -1257,7 +1257,8 @@ var Schedule = /** @class */ (function (_super) {
1257
1257
  };
1258
1258
  Schedule.prototype.onScheduleResize = function () {
1259
1259
  if (isNullOrUndefined(this.activeView) || ((this.isAdaptive || util.isMobile()) && document.activeElement
1260
- && document.activeElement.classList.contains(cls.SUBJECT_CLASS)) || this.uiStateValues.isTapHold) {
1260
+ && (document.activeElement.classList.contains(cls.SUBJECT_CLASS) ||
1261
+ document.activeElement.classList.contains(cls.INLINE_SUBJECT_CLASS))) || this.uiStateValues.isTapHold) {
1261
1262
  return;
1262
1263
  }
1263
1264
  if (this.virtualScrollModule && this.activeView.isTimelineView()) {
@@ -90,7 +90,15 @@ var InlineEdit = /** @class */ (function () {
90
90
  subjectWrap.insertBefore(inlineSubject, subjectWrap.firstChild);
91
91
  }
92
92
  else {
93
- args.element.querySelector('.e-appointment-details').prepend(inlineSubject);
93
+ var elementSelector = ['TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth'].indexOf(this.parent.currentView) > -1 ?
94
+ '.e-inner-wrap' : '.e-appointment-details';
95
+ var innerWrapElement = args.element.querySelector(elementSelector);
96
+ if (isNullOrUndefined(innerWrapElement)) {
97
+ args.element.querySelector('.e-appointment-details').prepend(inlineSubject);
98
+ }
99
+ else {
100
+ innerWrapElement.prepend(inlineSubject);
101
+ }
94
102
  }
95
103
  inlineSubject.focus();
96
104
  }
@@ -347,7 +347,10 @@ var MonthEvent = /** @class */ (function (_super) {
347
347
  if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {
348
348
  for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {
349
349
  var sourceRes = this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)];
350
- this.renderEventsHandler(sourceRes.renderDates, sourceRes.workDays, sourceRes);
350
+ if (!this.parent.uiStateValues.isGroupAdaptive ||
351
+ (this.parent.uiStateValues.groupIndex === sourceRes.groupIndex && this.parent.uiStateValues.isGroupAdaptive)) {
352
+ this.renderEventsHandler(sourceRes.renderDates, sourceRes.workDays, sourceRes);
353
+ }
351
354
  if (this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==
352
355
  this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {
353
356
  var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];
@@ -133,7 +133,10 @@ var TimelineEvent = /** @class */ (function (_super) {
133
133
  for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {
134
134
  var source = this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)];
135
135
  this.rowIndex = source.groupIndex;
136
- this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);
136
+ if (!this.parent.uiStateValues.isGroupAdaptive ||
137
+ (this.parent.uiStateValues.groupIndex === source.groupIndex && this.parent.uiStateValues.isGroupAdaptive)) {
138
+ this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);
139
+ }
137
140
  if (this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)] && this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==
138
141
  this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {
139
142
  var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];
@@ -67,8 +67,8 @@ var YearEvent = /** @class */ (function (_super) {
67
67
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), month, 1);
68
68
  var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
69
69
  var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));
70
- var startDate = util.getWeekFirstDate(monthStart, this.parent.firstDayOfWeek);
71
- var endDate = util.addDays(util.getWeekLastDate(monthEnd, this.parent.firstDayOfWeek), 1);
70
+ var startDate = util.getWeekFirstDate(monthStart, this.parent.activeViewOptions.firstDayOfWeek);
71
+ var endDate = util.addDays(util.getWeekLastDate(monthEnd, this.parent.activeViewOptions.firstDayOfWeek), 1);
72
72
  for (var index = 0; startDate.getTime() < endDate.getTime(); index++) {
73
73
  var start = util.resetTime(new Date(startDate.getTime()));
74
74
  var end = util.addDays(new Date(start.getTime()), 1);
@@ -37,6 +37,7 @@ export declare class HeaderRenderer {
37
37
  private calendarChange;
38
38
  setCalendarTimezone(): void;
39
39
  private calculateViewIndex;
40
+ private toolbarCreateHandler;
40
41
  private toolbarClickHandler;
41
42
  private hasSelectedDate;
42
43
  getHeaderElement(): HTMLElement;
@@ -81,10 +81,12 @@ var HeaderRenderer = /** @class */ (function () {
81
81
  items: args.items,
82
82
  overflowMode: 'Popup',
83
83
  clicked: _this.toolbarClickHandler.bind(_this),
84
+ created: _this.toolbarCreateHandler.bind(_this),
84
85
  enableRtl: _this.parent.enableRtl,
85
86
  enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,
86
87
  locale: _this.parent.locale
87
88
  });
89
+ _this.toolbarObj.isStringTemplate = true;
88
90
  _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;
89
91
  _this.toolbarObj.appendTo(_this.parent.element.querySelector('.' + cls.HEADER_TOOLBAR));
90
92
  _this.toolbarObj.element.setAttribute('aria-label', 'Scheduler');
@@ -517,6 +519,12 @@ var HeaderRenderer = /** @class */ (function () {
517
519
  var views = [].slice.call(this.element.querySelectorAll('.e-views'));
518
520
  return views.indexOf(target);
519
521
  };
522
+ HeaderRenderer.prototype.toolbarCreateHandler = function () {
523
+ if (this.parent && this.parent.portals && this.toolbarObj && this.toolbarObj.portals) {
524
+ this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);
525
+ this.parent['renderReactTemplates']();
526
+ }
527
+ };
520
528
  HeaderRenderer.prototype.toolbarClickHandler = function (args) {
521
529
  if (!args.item) {
522
530
  return;
@@ -660,7 +668,7 @@ var HeaderRenderer = /** @class */ (function () {
660
668
  var firstDate = new Date(dates[0].getTime());
661
669
  var lastDate = new Date(dates[dates.length - 1].getTime());
662
670
  if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {
663
- firstDate = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.firstDayOfWeek);
671
+ firstDate = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.activeViewOptions.firstDayOfWeek);
664
672
  lastDate = util.addDays(firstDate, 7 * this.parent.activeViewOptions.interval);
665
673
  }
666
674
  else if (this.parent.currentView === 'Month') {
@@ -483,7 +483,13 @@ var Month = /** @class */ (function (_super) {
483
483
  var tr = createElement('tr');
484
484
  var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
485
485
  var slotDatas = this.getContentSlots();
486
+ var isTimeline = this.parent.currentView === 'TimelineMonth';
487
+ var existingGroupIndices = isTimeline ? this.getGroupIndices() : [];
486
488
  for (var row = 0; row < slotDatas.length; row++) {
489
+ if (existingGroupIndices.length > 0 &&
490
+ existingGroupIndices.indexOf(slotDatas[parseInt(row.toString(), 10)][0].groupIndex) > -1) {
491
+ continue;
492
+ }
487
493
  var ntr = tr.cloneNode();
488
494
  for (var col = 0; col < slotDatas[parseInt(row.toString(), 10)].length; col++) {
489
495
  var ntd = this.createContentTd(slotDatas[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)], td);
@@ -35,7 +35,7 @@ var TimelineHeaderRow = /** @class */ (function () {
35
35
  var jsDate = +new Date(1970, 0, 1);
36
36
  var tzOffsetDiff = d.getTimezoneOffset() - new Date(1970, 0, 1).getTimezoneOffset();
37
37
  var key = Math.ceil(((((+d - jsDate) - (tzOffsetDiff * 60 * 1000)) / MS_PER_DAY) + new Date(jsDate).getDay() + 1) / 7);
38
- if (this.parent.firstDayOfWeek && this.parent.firstDayOfWeek > new Date(+d).getDay()) {
38
+ if (this.parent.activeViewOptions.firstDayOfWeek && this.parent.activeViewOptions.firstDayOfWeek > new Date(+d).getDay()) {
39
39
  key = key - 1;
40
40
  }
41
41
  result[parseInt(key.toString(), 10)] = result[parseInt(key.toString(), 10)] || [];
@@ -237,7 +237,12 @@ var TimelineViews = /** @class */ (function (_super) {
237
237
  var tr = createElement('tr');
238
238
  var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
239
239
  var trCount = this.getRowCount();
240
+ var existingGroupIndices = this.getGroupIndices();
240
241
  for (var i = 0; i < trCount; i++) {
242
+ if (existingGroupIndices.length > 0 &&
243
+ existingGroupIndices.indexOf(this.parent.resourceBase.renderedResources[parseInt(i.toString(), 10)].groupIndex) > -1) {
244
+ continue;
245
+ }
241
246
  var ntr = tr.cloneNode();
242
247
  for (var _i = 0, _a = this.colLevels[this.colLevels.length - 1]; _i < _a.length; _i++) {
243
248
  var tdData = _a[_i];
@@ -301,13 +301,17 @@ var TimelineYear = /** @class */ (function (_super) {
301
301
  TimelineYear.prototype.getContentRows = function () {
302
302
  var tRow = [];
303
303
  var monthCells = this.getMonths();
304
+ var existingGroupIndices = this.getGroupIndices();
304
305
  for (var row = 0; row < this.parent.resourceBase.renderedResources.length; row++) {
305
- var tr = createElement('tr');
306
- tRow.push(tr);
307
306
  var resData = void 0;
308
307
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
309
308
  resData = this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)];
309
+ if (existingGroupIndices.length > 0 && existingGroupIndices.indexOf(resData.groupIndex) > -1) {
310
+ continue;
311
+ }
310
312
  }
313
+ var tr = createElement('tr');
314
+ tRow.push(tr);
311
315
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[parseInt(row.toString(), 10)], 1);
312
316
  var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
313
317
  for (var month = 0; month < this.columnCount; month++) {
@@ -678,18 +678,14 @@ var VerticalView = /** @class */ (function (_super) {
678
678
  var rows = [];
679
679
  var tr = createElement('tr');
680
680
  var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
681
- var existingGroupIndices = new Set();
682
- if (this.parent.virtualScrollModule && this.parent.activeViewOptions.group.resources.length > 0 &&
683
- this.parent.virtualScrollModule.existingDataCollection.length > 0) {
684
- existingGroupIndices = new Set(this.parent.virtualScrollModule.existingDataCollection.map(function (data) { return data.groupIndex; }));
685
- }
681
+ var existingGroupIndices = this.getGroupIndices();
686
682
  var handler = function (r) {
687
683
  var ntr = tr.cloneNode();
688
684
  for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {
689
685
  var tdData = _a[_i];
690
686
  var isAllowTdCreation = true;
691
687
  if (_this.parent.virtualScrollModule && _this.parent.activeViewOptions.group.resources.length > 0) {
692
- if (existingGroupIndices.has(tdData.groupIndex)) {
688
+ if (existingGroupIndices.indexOf(tdData.groupIndex) > -1) {
693
689
  isAllowTdCreation = false;
694
690
  }
695
691
  }
@@ -75,5 +75,6 @@ export declare class ViewBase {
75
75
  getViewEndDate(): Date;
76
76
  getAdjustedDate(startTime: Date): Date;
77
77
  resetColLevels(): void;
78
+ getGroupIndices(dataCollection?: TdData[]): number[];
78
79
  destroy(): void;
79
80
  }
@@ -625,6 +625,15 @@ var ViewBase = /** @class */ (function () {
625
625
  this.parent.resourceBase.expandedResources = this.colLevels[this.colLevels.length - 1];
626
626
  }
627
627
  };
628
+ ViewBase.prototype.getGroupIndices = function (dataCollection) {
629
+ var groupIndices = [];
630
+ if (this.parent.virtualScrollModule && this.parent.activeViewOptions.group.resources.length > 0 && (dataCollection ||
631
+ this.parent.virtualScrollModule.existingDataCollection.length > 0) && !this.parent.uiStateValues.isGroupAdaptive) {
632
+ dataCollection = isNullOrUndefined(dataCollection) ? this.parent.virtualScrollModule.existingDataCollection : dataCollection;
633
+ groupIndices = dataCollection.map(function (data) { return data.groupIndex; });
634
+ }
635
+ return groupIndices;
636
+ };
628
637
  ViewBase.prototype.destroy = function () {
629
638
  if (this.element && this.element.parentNode) {
630
639
  remove(this.element);
@@ -113,7 +113,7 @@ var Year = /** @class */ (function (_super) {
113
113
  this.setAriaAttributes(contentTable);
114
114
  var thead = createElement('thead', { className: 'e-week-header' });
115
115
  var tr = createElement('tr');
116
- var currentWeek = util.getWeekFirstDate(util.firstDateOfMonth(currentDate), this.parent.firstDayOfWeek);
116
+ var currentWeek = util.getWeekFirstDate(util.firstDateOfMonth(currentDate), this.parent.activeViewOptions.firstDayOfWeek);
117
117
  if (this.parent.activeViewOptions.showWeekNumber) {
118
118
  tr.appendChild(createElement('th'));
119
119
  }
@@ -242,7 +242,7 @@ var Year = /** @class */ (function (_super) {
242
242
  return dateCol;
243
243
  };
244
244
  Year.prototype.getMonthDates = function (date) {
245
- var startDate = util.getWeekFirstDate(util.firstDateOfMonth(date), this.parent.firstDayOfWeek);
245
+ var startDate = util.getWeekFirstDate(util.firstDateOfMonth(date), this.parent.activeViewOptions.firstDayOfWeek);
246
246
  var endDate = util.addDays(new Date(+startDate), (6 * util.WEEK_LENGTH));
247
247
  var dateCollection = [];
248
248
  for (var start = startDate; start.getTime() < endDate.getTime(); start = util.addDays(start, 1)) {
@@ -378,10 +378,10 @@ var Year = /** @class */ (function (_super) {
378
378
  return util.addDays(util.addMonths(this.getStartDate(), this.parent.monthsCount), -1);
379
379
  };
380
380
  Year.prototype.startDate = function () {
381
- return this.parent.currentView === 'Year' ? util.getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek) : this.getStartDate();
381
+ return this.parent.currentView === 'Year' ? util.getWeekFirstDate(this.getStartDate(), this.parent.activeViewOptions.firstDayOfWeek) : this.getStartDate();
382
382
  };
383
383
  Year.prototype.endDate = function () {
384
- return this.parent.currentView === 'Year' ? util.addDays(util.getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) :
384
+ return this.parent.currentView === 'Year' ? util.addDays(util.getWeekLastDate(this.getEndDate(), this.parent.activeViewOptions.firstDayOfWeek), 1) :
385
385
  util.addDays(this.getEndDate(), 1);
386
386
  };
387
387
  Year.prototype.getEndDateFromStartDate = function (start) {