@syncfusion/ej2-schedule 26.1.39 → 26.1.41-16103

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 (298) hide show
  1. package/.eslintrc.json +243 -260
  2. package/README.md +82 -82
  3. package/dist/ej2-schedule.umd.min.js +1 -10
  4. package/dist/ej2-schedule.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es2015.js +605 -249
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +1072 -709
  8. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  9. package/helpers/e2e/index.js +3 -3
  10. package/helpers/e2e/recurrence-editor.js +13 -13
  11. package/helpers/e2e/schedule.js +13 -13
  12. package/license +9 -9
  13. package/package.json +79 -79
  14. package/src/recurrence-editor/date-generator.js +3 -0
  15. package/src/recurrence-editor/recurrence-editor-model.d.ts +65 -65
  16. package/src/recurrence-editor/recurrence-editor.js +19 -19
  17. package/src/schedule/actions/crud.js +22 -6
  18. package/src/schedule/actions/drag.d.ts +4 -0
  19. package/src/schedule/actions/drag.js +73 -34
  20. package/src/schedule/actions/keyboard.d.ts +1 -0
  21. package/src/schedule/actions/keyboard.js +45 -3
  22. package/src/schedule/actions/resize.js +34 -32
  23. package/src/schedule/actions/touch.js +4 -0
  24. package/src/schedule/actions/virtual-scroll.d.ts +6 -0
  25. package/src/schedule/actions/virtual-scroll.js +119 -34
  26. package/src/schedule/base/interface.d.ts +6 -2
  27. package/src/schedule/base/resource.js +5 -0
  28. package/src/schedule/base/schedule-model.d.ts +805 -805
  29. package/src/schedule/base/schedule.d.ts +26 -0
  30. package/src/schedule/base/schedule.js +63 -21
  31. package/src/schedule/base/util.d.ts +10 -5
  32. package/src/schedule/base/util.js +15 -10
  33. package/src/schedule/event-renderer/agenda-base.js +15 -14
  34. package/src/schedule/event-renderer/event-base.js +18 -3
  35. package/src/schedule/event-renderer/inline-edit.js +13 -5
  36. package/src/schedule/event-renderer/month.js +20 -17
  37. package/src/schedule/event-renderer/timeline-view.js +21 -18
  38. package/src/schedule/event-renderer/vertical-view.d.ts +2 -1
  39. package/src/schedule/event-renderer/vertical-view.js +66 -34
  40. package/src/schedule/event-renderer/year.js +20 -20
  41. package/src/schedule/exports/print.js +1 -0
  42. package/src/schedule/models/event-settings-model.d.ts +155 -155
  43. package/src/schedule/models/event-settings.js +19 -19
  44. package/src/schedule/models/field-options-model.d.ts +22 -22
  45. package/src/schedule/models/field-options.js +19 -19
  46. package/src/schedule/models/fields-model.d.ts +92 -92
  47. package/src/schedule/models/fields.js +19 -19
  48. package/src/schedule/models/group-model.d.ts +48 -48
  49. package/src/schedule/models/group.js +19 -19
  50. package/src/schedule/models/header-rows-model.d.ts +22 -22
  51. package/src/schedule/models/header-rows.js +19 -19
  52. package/src/schedule/models/quick-info-templates-model.d.ts +37 -37
  53. package/src/schedule/models/quick-info-templates.js +19 -19
  54. package/src/schedule/models/resources-model.d.ts +85 -85
  55. package/src/schedule/models/resources.js +19 -19
  56. package/src/schedule/models/time-scale-model.d.ts +40 -40
  57. package/src/schedule/models/time-scale.js +19 -19
  58. package/src/schedule/models/toolbar-model.d.ts +187 -187
  59. package/src/schedule/models/toolbar.js +19 -19
  60. package/src/schedule/models/views-model.d.ts +329 -329
  61. package/src/schedule/models/views.js +19 -19
  62. package/src/schedule/models/work-hours-model.d.ts +16 -16
  63. package/src/schedule/models/work-hours.js +19 -19
  64. package/src/schedule/popups/event-tooltip.js +2 -1
  65. package/src/schedule/popups/event-window.d.ts +1 -0
  66. package/src/schedule/popups/event-window.js +25 -15
  67. package/src/schedule/renderer/agenda.js +13 -13
  68. package/src/schedule/renderer/day.js +13 -13
  69. package/src/schedule/renderer/header-renderer.d.ts +1 -0
  70. package/src/schedule/renderer/header-renderer.js +20 -12
  71. package/src/schedule/renderer/month-agenda.js +13 -13
  72. package/src/schedule/renderer/month.js +19 -13
  73. package/src/schedule/renderer/timeline-header-row.js +1 -1
  74. package/src/schedule/renderer/timeline-month.js +13 -13
  75. package/src/schedule/renderer/timeline-view.js +22 -17
  76. package/src/schedule/renderer/timeline-year.js +19 -15
  77. package/src/schedule/renderer/vertical-view.js +33 -23
  78. package/src/schedule/renderer/view-base.d.ts +1 -0
  79. package/src/schedule/renderer/view-base.js +14 -1
  80. package/src/schedule/renderer/week.js +13 -13
  81. package/src/schedule/renderer/work-week.js +13 -13
  82. package/src/schedule/renderer/year.js +17 -17
  83. package/styles/bootstrap-dark-lite.css +4174 -0
  84. package/styles/bootstrap-dark-lite.scss +18 -0
  85. package/styles/bootstrap-dark.css +823 -595
  86. package/styles/bootstrap-dark.scss +3 -2
  87. package/styles/bootstrap-lite.css +4169 -0
  88. package/styles/bootstrap-lite.scss +18 -0
  89. package/styles/bootstrap.css +823 -595
  90. package/styles/bootstrap.scss +3 -2
  91. package/styles/bootstrap4-lite.css +4216 -0
  92. package/styles/bootstrap4-lite.scss +18 -0
  93. package/styles/bootstrap4.css +809 -636
  94. package/styles/bootstrap4.scss +3 -2
  95. package/styles/bootstrap5-dark-lite.css +4215 -0
  96. package/styles/bootstrap5-dark-lite.scss +18 -0
  97. package/styles/bootstrap5-dark.css +824 -596
  98. package/styles/bootstrap5-dark.scss +3 -2
  99. package/styles/bootstrap5-lite.css +4215 -0
  100. package/styles/bootstrap5-lite.scss +18 -0
  101. package/styles/bootstrap5.3-lite.css +4261 -0
  102. package/styles/bootstrap5.3-lite.scss +18 -0
  103. package/styles/bootstrap5.3.css +5023 -0
  104. package/styles/bootstrap5.3.scss +20 -0
  105. package/styles/bootstrap5.css +824 -596
  106. package/styles/bootstrap5.scss +3 -2
  107. package/styles/fabric-dark-lite.css +4144 -0
  108. package/styles/fabric-dark-lite.scss +18 -0
  109. package/styles/fabric-dark.css +830 -594
  110. package/styles/fabric-dark.scss +3 -2
  111. package/styles/fabric-lite.css +4141 -0
  112. package/styles/fabric-lite.scss +18 -0
  113. package/styles/fabric.css +830 -587
  114. package/styles/fabric.scss +3 -2
  115. package/styles/fluent-dark-lite.css +4207 -0
  116. package/styles/fluent-dark-lite.scss +18 -0
  117. package/styles/fluent-dark.css +828 -592
  118. package/styles/fluent-dark.scss +3 -2
  119. package/styles/fluent-lite.css +4207 -0
  120. package/styles/fluent-lite.scss +18 -0
  121. package/styles/fluent.css +828 -592
  122. package/styles/fluent.scss +3 -2
  123. package/styles/fluent2-lite.css +4427 -0
  124. package/styles/fluent2-lite.scss +18 -0
  125. package/styles/fluent2.css +863 -1627
  126. package/styles/fluent2.scss +3 -2
  127. package/styles/highcontrast-light-lite.css +4233 -0
  128. package/styles/highcontrast-light-lite.scss +18 -0
  129. package/styles/highcontrast-light.css +833 -583
  130. package/styles/highcontrast-light.scss +3 -2
  131. package/styles/highcontrast-lite.css +4242 -0
  132. package/styles/highcontrast-lite.scss +18 -0
  133. package/styles/highcontrast.css +834 -584
  134. package/styles/highcontrast.scss +3 -2
  135. package/styles/material-dark-lite.css +4221 -0
  136. package/styles/material-dark-lite.scss +18 -0
  137. package/styles/material-dark.css +839 -581
  138. package/styles/material-dark.scss +3 -2
  139. package/styles/material-lite.css +4247 -0
  140. package/styles/material-lite.scss +18 -0
  141. package/styles/material.css +836 -599
  142. package/styles/material.scss +3 -2
  143. package/styles/material3-dark-lite.css +4238 -0
  144. package/styles/material3-dark-lite.scss +18 -0
  145. package/styles/material3-dark.css +832 -656
  146. package/styles/material3-dark.scss +4 -3
  147. package/styles/material3-lite.css +4240 -0
  148. package/styles/material3-lite.scss +18 -0
  149. package/styles/material3.css +831 -709
  150. package/styles/material3.scss +4 -3
  151. package/styles/recurrence-editor/_all.scss +2 -2
  152. package/styles/recurrence-editor/_bds-definition.scss +14 -14
  153. package/styles/recurrence-editor/_bigger.scss +134 -0
  154. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +14 -14
  155. package/styles/recurrence-editor/_bootstrap-definition.scss +14 -14
  156. package/styles/recurrence-editor/_bootstrap4-definition.scss +14 -14
  157. package/styles/recurrence-editor/_bootstrap5-definition.scss +14 -14
  158. package/styles/recurrence-editor/_bootstrap5.3-definition.scss +14 -14
  159. package/styles/recurrence-editor/_fabric-dark-definition.scss +14 -14
  160. package/styles/recurrence-editor/_fabric-definition.scss +14 -14
  161. package/styles/recurrence-editor/_fluent-definition.scss +14 -14
  162. package/styles/recurrence-editor/_fluent2-definition.scss +14 -14
  163. package/styles/recurrence-editor/_fusionnew-definition.scss +14 -14
  164. package/styles/recurrence-editor/_highcontrast-definition.scss +14 -14
  165. package/styles/recurrence-editor/_highcontrast-light-definition.scss +14 -14
  166. package/styles/recurrence-editor/_layout.scss +415 -525
  167. package/styles/recurrence-editor/_material-dark-definition.scss +14 -14
  168. package/styles/recurrence-editor/_material-definition.scss +14 -14
  169. package/styles/recurrence-editor/_material3-definition.scss +14 -14
  170. package/styles/recurrence-editor/_tailwind-definition.scss +14 -14
  171. package/styles/recurrence-editor/_theme.scss +1 -1
  172. package/styles/recurrence-editor/bootstrap-dark.css +87 -131
  173. package/styles/recurrence-editor/bootstrap-dark.scss +1 -0
  174. package/styles/recurrence-editor/bootstrap.css +87 -131
  175. package/styles/recurrence-editor/bootstrap.scss +1 -0
  176. package/styles/recurrence-editor/bootstrap4.css +87 -149
  177. package/styles/recurrence-editor/bootstrap4.scss +1 -0
  178. package/styles/recurrence-editor/bootstrap5-dark.css +87 -135
  179. package/styles/recurrence-editor/bootstrap5-dark.scss +1 -0
  180. package/styles/recurrence-editor/bootstrap5.3.css +501 -0
  181. package/styles/recurrence-editor/bootstrap5.3.scss +9 -0
  182. package/styles/recurrence-editor/bootstrap5.css +87 -135
  183. package/styles/recurrence-editor/bootstrap5.scss +1 -0
  184. package/styles/recurrence-editor/fabric-dark.css +87 -130
  185. package/styles/recurrence-editor/fabric-dark.scss +1 -0
  186. package/styles/recurrence-editor/fabric.css +87 -123
  187. package/styles/recurrence-editor/fabric.scss +1 -0
  188. package/styles/recurrence-editor/fluent-dark.css +87 -122
  189. package/styles/recurrence-editor/fluent-dark.scss +1 -0
  190. package/styles/recurrence-editor/fluent.css +87 -122
  191. package/styles/recurrence-editor/fluent.scss +1 -0
  192. package/styles/recurrence-editor/fluent2.css +94 -1148
  193. package/styles/recurrence-editor/fluent2.scss +1 -0
  194. package/styles/recurrence-editor/highcontrast-light.css +87 -118
  195. package/styles/recurrence-editor/highcontrast-light.scss +1 -0
  196. package/styles/recurrence-editor/highcontrast.css +87 -118
  197. package/styles/recurrence-editor/highcontrast.scss +1 -0
  198. package/styles/recurrence-editor/material-dark.css +87 -115
  199. package/styles/recurrence-editor/material-dark.scss +1 -0
  200. package/styles/recurrence-editor/material.css +87 -136
  201. package/styles/recurrence-editor/material.scss +1 -0
  202. package/styles/recurrence-editor/material3-dark.css +88 -194
  203. package/styles/recurrence-editor/material3-dark.scss +2 -1
  204. package/styles/recurrence-editor/material3.css +89 -249
  205. package/styles/recurrence-editor/material3.scss +2 -1
  206. package/styles/recurrence-editor/tailwind-dark.css +87 -116
  207. package/styles/recurrence-editor/tailwind-dark.scss +1 -0
  208. package/styles/recurrence-editor/tailwind.css +87 -116
  209. package/styles/recurrence-editor/tailwind.scss +1 -0
  210. package/styles/schedule/_all.scss +2 -2
  211. package/styles/schedule/_bds-definition.scss +272 -272
  212. package/styles/schedule/_bigger.scss +810 -0
  213. package/styles/schedule/_bootstrap-dark-definition.scss +270 -270
  214. package/styles/schedule/_bootstrap-definition.scss +270 -270
  215. package/styles/schedule/_bootstrap4-definition.scss +273 -273
  216. package/styles/schedule/_bootstrap5-definition.scss +274 -274
  217. package/styles/schedule/_bootstrap5.3-definition.scss +276 -273
  218. package/styles/schedule/_fabric-dark-definition.scss +271 -271
  219. package/styles/schedule/_fabric-definition.scss +270 -270
  220. package/styles/schedule/_fluent-definition.scss +276 -276
  221. package/styles/schedule/_fluent2-definition.scss +273 -273
  222. package/styles/schedule/_fusionnew-definition.scss +273 -273
  223. package/styles/schedule/_highcontrast-definition.scss +271 -271
  224. package/styles/schedule/_highcontrast-light-definition.scss +271 -271
  225. package/styles/schedule/_layout.scss +3787 -4218
  226. package/styles/schedule/_material-dark-definition.scss +270 -270
  227. package/styles/schedule/_material-definition.scss +270 -270
  228. package/styles/schedule/_material3-definition.scss +275 -275
  229. package/styles/schedule/_tailwind-definition.scss +271 -271
  230. package/styles/schedule/_theme.scss +589 -567
  231. package/styles/schedule/bootstrap-dark.css +706 -484
  232. package/styles/schedule/bootstrap-dark.scss +1 -0
  233. package/styles/schedule/bootstrap.css +706 -484
  234. package/styles/schedule/bootstrap.scss +1 -0
  235. package/styles/schedule/bootstrap4.css +699 -532
  236. package/styles/schedule/bootstrap4.scss +1 -0
  237. package/styles/schedule/bootstrap5-dark.css +714 -492
  238. package/styles/schedule/bootstrap5-dark.scss +1 -0
  239. package/styles/schedule/bootstrap5.3.css +4621 -0
  240. package/styles/schedule/bootstrap5.3.scss +17 -0
  241. package/styles/schedule/bootstrap5.css +714 -492
  242. package/styles/schedule/bootstrap5.scss +1 -0
  243. package/styles/schedule/fabric-dark.css +713 -483
  244. package/styles/schedule/fabric-dark.scss +1 -0
  245. package/styles/schedule/fabric.css +713 -476
  246. package/styles/schedule/fabric.scss +1 -0
  247. package/styles/schedule/fluent-dark.css +723 -493
  248. package/styles/schedule/fluent-dark.scss +1 -0
  249. package/styles/schedule/fluent.css +723 -493
  250. package/styles/schedule/fluent.scss +1 -0
  251. package/styles/schedule/fluent2.css +752 -1525
  252. package/styles/schedule/fluent2.scss +1 -0
  253. package/styles/schedule/highcontrast-light.css +721 -477
  254. package/styles/schedule/highcontrast-light.scss +1 -0
  255. package/styles/schedule/highcontrast.css +721 -477
  256. package/styles/schedule/highcontrast.scss +1 -0
  257. package/styles/schedule/icons/_bds.scss +220 -220
  258. package/styles/schedule/icons/_bootstrap-dark.scss +223 -223
  259. package/styles/schedule/icons/_bootstrap.scss +223 -223
  260. package/styles/schedule/icons/_bootstrap4.scss +217 -217
  261. package/styles/schedule/icons/_bootstrap5.3.scss +220 -220
  262. package/styles/schedule/icons/_bootstrap5.scss +220 -220
  263. package/styles/schedule/icons/_fabric-dark.scss +223 -223
  264. package/styles/schedule/icons/_fabric.scss +223 -223
  265. package/styles/schedule/icons/_fluent.scss +220 -220
  266. package/styles/schedule/icons/_fluent2.scss +220 -220
  267. package/styles/schedule/icons/_fusionnew.scss +220 -220
  268. package/styles/schedule/icons/_highcontrast-light.scss +223 -223
  269. package/styles/schedule/icons/_highcontrast.scss +223 -223
  270. package/styles/schedule/icons/_material-dark.scss +223 -223
  271. package/styles/schedule/icons/_material.scss +223 -223
  272. package/styles/schedule/icons/_material3.scss +220 -220
  273. package/styles/schedule/icons/_tailwind.scss +220 -220
  274. package/styles/schedule/material-dark.css +732 -480
  275. package/styles/schedule/material-dark.scss +1 -0
  276. package/styles/schedule/material.css +729 -498
  277. package/styles/schedule/material.scss +1 -0
  278. package/styles/schedule/material3-dark.css +713 -543
  279. package/styles/schedule/material3-dark.scss +2 -1
  280. package/styles/schedule/material3.css +714 -598
  281. package/styles/schedule/material3.scss +2 -1
  282. package/styles/schedule/tailwind-dark.css +725 -484
  283. package/styles/schedule/tailwind-dark.scss +1 -0
  284. package/styles/schedule/tailwind.css +725 -484
  285. package/styles/schedule/tailwind.scss +1 -0
  286. package/styles/tailwind-dark-lite.css +4184 -0
  287. package/styles/tailwind-dark-lite.scss +18 -0
  288. package/styles/tailwind-dark.css +832 -585
  289. package/styles/tailwind-dark.scss +3 -2
  290. package/styles/tailwind-lite.css +4184 -0
  291. package/styles/tailwind-lite.scss +18 -0
  292. package/styles/tailwind.css +832 -585
  293. package/styles/tailwind.scss +3 -2
  294. package/dist/ej2-schedule.min.js +0 -10
  295. package/dist/global/ej2-schedule.min.js +0 -11
  296. package/dist/global/ej2-schedule.min.js.map +0 -1
  297. package/dist/global/index.d.ts +0 -14
  298. package/tslint.json +0 -111
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement, prepend } from '@syncfusion/ej2-base';
2
+ import { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement, prepend, removeClass } from '@syncfusion/ej2-base';
3
3
  import * as events from '../base/constant';
4
4
  import * as cls from '../base/css-constant';
5
5
  import * as util from '../base/util';
@@ -14,6 +14,8 @@ var VirtualScroll = /** @class */ (function () {
14
14
  this.renderedLength = 0;
15
15
  this.averageRowHeight = 0;
16
16
  this.startIndex = 0;
17
+ this.existingDataCollection = [];
18
+ this.enableTransition = true;
17
19
  this.parent = parent;
18
20
  this.addEventListener();
19
21
  }
@@ -86,10 +88,10 @@ var VirtualScroll = /** @class */ (function () {
86
88
  };
87
89
  VirtualScroll.prototype.setItemSize = function () {
88
90
  if (this.isHorizontalScroll) {
89
- this.itemSize = util.getElementWidthFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;
91
+ this.itemSize = util.getElementWidthFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS, this.parent.uiStateValues.isTransformed) || this.itemSize;
90
92
  }
91
93
  else {
92
- this.itemSize = util.getElementHeightFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;
94
+ this.itemSize = this.parent.getElementHeightFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;
93
95
  }
94
96
  };
95
97
  VirtualScroll.prototype.refreshLayout = function () {
@@ -103,11 +105,16 @@ var VirtualScroll = /** @class */ (function () {
103
105
  var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);
104
106
  var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
105
107
  var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
108
+ if (!this.parent.rowAutoHeight) {
109
+ this.enableTransition = false;
110
+ removeClass([conWrap, resWrap], 'e-transition');
111
+ }
106
112
  var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
107
113
  var endIndex = (firstTDIndex + this.renderedLength);
108
114
  firstTDIndex = (endIndex > this.parent.resourceBase.expandedResources.length) ?
109
115
  (this.parent.resourceBase.expandedResources.length - this.renderedLength) : firstTDIndex;
110
116
  firstTDIndex = firstTDIndex < 0 ? 0 : firstTDIndex;
117
+ this.existingDataCollection = this.parent.resourceBase.renderedResources;
111
118
  this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.slice(firstTDIndex, endIndex);
112
119
  if (this.parent.resourceBase.renderedResources.length > 0) {
113
120
  this.updateContent(resWrap, conWrap, eventWrap, this.parent.resourceBase.renderedResources);
@@ -157,6 +164,7 @@ var VirtualScroll = /** @class */ (function () {
157
164
  var scrollHeight = this.parent.rowAutoHeight ?
158
165
  (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;
159
166
  var resCollection = [];
167
+ this.existingDataCollection = this.parent.resourceBase.renderedResources;
160
168
  if ((conWrap.scrollTop) - this.translateY < 0) {
161
169
  resCollection = this.upScroll(conWrap, firstTDIndex);
162
170
  }
@@ -360,56 +368,133 @@ var VirtualScroll = /** @class */ (function () {
360
368
  this.parent.element.focus();
361
369
  }
362
370
  for (var i = 0; i < renderedLength; i++) {
363
- remove(resWrap.querySelector('tbody tr'));
364
- remove(conWrap.querySelector('tbody tr'));
365
371
  remove(eventWrap.querySelector('div'));
366
372
  }
367
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);
368
383
  var resourceRows = this.parent.resourceBase.getContentRows(resCollection, true);
369
384
  var contentRows = this.parent.activeView.getContentRows();
370
385
  var eventRows = this.parent.activeView.getEventRows(resCollection.length);
371
- append(resourceRows, resWrap.querySelector('tbody'));
372
- 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
+ }
373
402
  append(eventRows, eventWrap);
374
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
+ };
375
412
  VirtualScroll.prototype.updateHorizontalContent = function (conWrap, resCollection) {
413
+ this.existingDataCollection = this.parent.resourceBase.expandedResources;
376
414
  this.parent.resourceBase.expandedResources = resCollection;
377
415
  var selectedEle = this.parent.getSelectedCells();
378
416
  this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
379
- var renderedLength = conWrap.querySelectorAll('tbody tr').length;
417
+ var tbody = conWrap.querySelector('tbody');
418
+ var renderedRows = Array.from(tbody.querySelectorAll('tr'));
419
+ if (this.parent.currentView === 'Month') {
420
+ this.updateMonthViewContent(conWrap, resCollection);
421
+ }
422
+ else {
423
+ this.updateOtherViewContent(conWrap, resCollection, renderedRows);
424
+ }
425
+ };
426
+ VirtualScroll.prototype.updateMonthViewContent = function (conWrap, resCollection) {
427
+ var renderedLength = conWrap.querySelectorAll(' tr').length;
380
428
  for (var i = 0; i < renderedLength; i++) {
381
429
  remove(conWrap.querySelector('tbody tr'));
382
430
  }
383
- if (this.parent.currentView === 'Month') {
384
- if (this.parent.activeViewOptions.group.byDate) {
385
- this.parent.activeView.colLevels[0] = resCollection;
386
- }
387
- else {
388
- this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 2] = resCollection;
389
- }
390
- var contentRows = this.parent.activeView.getContentRows();
391
- append(contentRows, conWrap.querySelector('tbody'));
431
+ if (this.parent.activeViewOptions.group.byDate) {
432
+ this.parent.activeView.colLevels[0] = resCollection;
392
433
  }
393
434
  else {
394
- var col = [].slice.call(conWrap.querySelector('colgroup').children);
395
- for (var i = 0; i < col.length; i++) {
396
- remove(col[parseInt(i.toString(), 10)]);
397
- }
398
- this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1] = resCollection;
399
- var contentRows = this.parent.activeView.getContentRows();
400
- var table = conWrap.querySelector('table');
401
- var thead = conWrap.querySelector('thead');
402
- var colGroupEle_1 = conWrap.querySelector('colgroup');
403
- resCollection.forEach(function () {
404
- colGroupEle_1.appendChild(createElement('col'));
435
+ this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 2] = resCollection;
436
+ }
437
+ var contentRows = this.parent.activeView.getContentRows();
438
+ append(contentRows, conWrap.querySelector('tbody'));
439
+ };
440
+ VirtualScroll.prototype.updateOtherViewContent = function (conWrap, resCollection, renderedRows) {
441
+ var tbody = conWrap.querySelector('tbody');
442
+ var colGroup = conWrap.querySelector('colgroup');
443
+ var thead = conWrap.querySelector('thead');
444
+ var table = conWrap.querySelector('table');
445
+ this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1] = resCollection;
446
+ var newGroupIndices = new Set(resCollection.map(function (data) { return data.groupIndex; }));
447
+ renderedRows.forEach(function (row) {
448
+ var tdElements = row.querySelectorAll('td');
449
+ tdElements.forEach(function (td) {
450
+ var groupIndex = parseInt(td.getAttribute('data-group-index'), 10);
451
+ if (!newGroupIndices.has(groupIndex)) {
452
+ td.remove();
453
+ }
405
454
  });
406
- thead.appendChild(this.parent.eventBase.createEventWrapper('', this.startIndex > 0 ? this.startIndex : 0));
407
- if (this.parent.activeViewOptions.timeScale.enable) {
408
- thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));
409
- }
410
- prepend([thead], table);
411
- append(contentRows, conWrap.querySelector('tbody'));
455
+ });
456
+ var col = [].slice.call(conWrap.querySelector('colgroup').children);
457
+ for (var i = 0; i < col.length; i++) {
458
+ remove(col[parseInt(i.toString(), 10)]);
459
+ }
460
+ resCollection.forEach(function () { return colGroup.appendChild(createElement('col')); });
461
+ var tHead = [].slice.call(conWrap.querySelector('thead').children);
462
+ for (var i = 0; i < tHead.length; i++) {
463
+ remove(tHead[parseInt(i.toString(), 10)]);
464
+ }
465
+ thead.appendChild(this.parent.eventBase.createEventWrapper('', this.startIndex > 0 ? this.startIndex : 0));
466
+ if (this.parent.activeViewOptions.timeScale.enable) {
467
+ thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));
412
468
  }
469
+ prepend([thead], table);
470
+ var contentRows = this.parent.activeView.getContentRows();
471
+ this.mergeNewTdData(tbody, contentRows);
472
+ };
473
+ VirtualScroll.prototype.mergeNewTdData = function (tbody, contentRows) {
474
+ var existingRows = Array.from(tbody.querySelectorAll('tr'));
475
+ existingRows.forEach(function (existingRow, rowIndex) {
476
+ if (rowIndex < contentRows.length) {
477
+ var newRow = contentRows[parseInt(rowIndex.toString(), 10)];
478
+ var existingTds_1 = Array.from(existingRow.querySelectorAll('td'));
479
+ var newTds = Array.from(newRow.querySelectorAll('td'));
480
+ newTds.forEach(function (newTd) {
481
+ var newGroupIndex = parseInt(newTd.getAttribute('data-group-index').toString(), 10);
482
+ var inserted = false;
483
+ for (var _i = 0, existingTds_2 = existingTds_1; _i < existingTds_2.length; _i++) {
484
+ var existingTd = existingTds_2[_i];
485
+ var existingGroupIndex = parseInt(existingTd.getAttribute('data-group-index').toString(), 10);
486
+ if (newGroupIndex < existingGroupIndex) {
487
+ existingRow.insertBefore(newTd, existingTd);
488
+ inserted = true;
489
+ break;
490
+ }
491
+ }
492
+ if (!inserted) {
493
+ existingRow.appendChild(newTd);
494
+ }
495
+ });
496
+ }
497
+ });
413
498
  };
414
499
  VirtualScroll.prototype.getBufferCollection = function (startIndex, endIndex) {
415
500
  return this.parent.resourceBase.expandedResources.slice(startIndex, endIndex);
@@ -24,7 +24,7 @@ export interface ActionEventArgs extends ToolbarActionArgs {
24
24
  /** Returns the appropriate deleted data based on the action. */
25
25
  deletedRecords?: Record<string, any>[];
26
26
  }
27
- /** */
27
+ /** @deprecated */
28
28
  export interface ToolbarActionArgs extends BaseEventArgs {
29
29
  /** Returns the request type of the current action. */
30
30
  requestType: string;
@@ -247,6 +247,8 @@ export interface DragEventArgs extends BaseEventArgs {
247
247
  scroll?: ScrollOptions;
248
248
  /** Defines the date range navigation action while dragging. */
249
249
  navigation?: NavigateOptions;
250
+ /** Allows to drag the events outside the currently rendered date range */
251
+ dragWithinRange?: boolean;
250
252
  }
251
253
  /** An interface that holds options of virtual scroll action. */
252
254
  export interface ScrollEventArgs extends BaseEventArgs {
@@ -447,6 +449,7 @@ export interface IRenderer {
447
449
  getAdjustedDate?(date: Date): Date;
448
450
  viewIndex: number;
449
451
  colLevels: TdData[][];
452
+ getGroupIndices(dataCollection?: TdData[]): number[];
450
453
  }
451
454
  /** @private */
452
455
  export interface EJ2Instance extends HTMLElement {
@@ -525,10 +528,11 @@ export interface UIStateArgs {
525
528
  scheduleHeight?: number;
526
529
  isTapHold?: boolean;
527
530
  isTouchScroll?: boolean;
531
+ isTransformed?: boolean;
528
532
  }
529
533
  /**
530
534
  * @private
531
-
535
+ * @deprecated
532
536
  */
533
537
  export interface TreeViewArgs {
534
538
  resourceChild?: TreeViewArgs[];
@@ -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;