@syncfusion/ej2-schedule 30.2.4 → 31.1.17

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 (308) hide show
  1. package/dist/ej2-schedule.min.js +2 -2
  2. package/dist/ej2-schedule.umd.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-schedule.es2015.js +132 -43
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +132 -43
  7. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  8. package/dist/global/ej2-schedule.min.js +2 -2
  9. package/dist/global/ej2-schedule.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/dist/ts/common/calendar-util.d.ts +92 -0
  12. package/dist/ts/common/calendar-util.ts +261 -0
  13. package/dist/ts/common/index.d.ts +4 -0
  14. package/dist/ts/common/index.ts +4 -0
  15. package/dist/ts/components.d.ts +5 -0
  16. package/dist/ts/components.ts +5 -0
  17. package/dist/ts/index.d.ts +6 -0
  18. package/dist/ts/index.ts +7 -0
  19. package/dist/ts/recurrence-editor/date-generator.d.ts +76 -0
  20. package/dist/ts/recurrence-editor/date-generator.ts +1699 -0
  21. package/dist/ts/recurrence-editor/index.d.ts +6 -0
  22. package/dist/ts/recurrence-editor/index.ts +6 -0
  23. package/dist/ts/recurrence-editor/recurrence-editor-model.d.ts +112 -0
  24. package/dist/ts/recurrence-editor/recurrence-editor.d.ts +245 -0
  25. package/dist/ts/recurrence-editor/recurrence-editor.ts +1257 -0
  26. package/dist/ts/schedule/actions/action-base.d.ts +44 -0
  27. package/dist/ts/schedule/actions/action-base.ts +493 -0
  28. package/dist/ts/schedule/actions/crud.d.ts +41 -0
  29. package/dist/ts/schedule/actions/crud.ts +784 -0
  30. package/dist/ts/schedule/actions/data.d.ts +63 -0
  31. package/dist/ts/schedule/actions/data.ts +128 -0
  32. package/dist/ts/schedule/actions/drag.d.ts +75 -0
  33. package/dist/ts/schedule/actions/drag.ts +1401 -0
  34. package/dist/ts/schedule/actions/keyboard.d.ts +100 -0
  35. package/dist/ts/schedule/actions/keyboard.ts +1435 -0
  36. package/dist/ts/schedule/actions/resize.d.ts +27 -0
  37. package/dist/ts/schedule/actions/resize.ts +602 -0
  38. package/dist/ts/schedule/actions/scroll.d.ts +69 -0
  39. package/dist/ts/schedule/actions/scroll.ts +105 -0
  40. package/dist/ts/schedule/actions/touch.d.ts +32 -0
  41. package/dist/ts/schedule/actions/touch.ts +314 -0
  42. package/dist/ts/schedule/actions/virtual-scroll.d.ts +55 -0
  43. package/dist/ts/schedule/actions/virtual-scroll.ts +596 -0
  44. package/dist/ts/schedule/actions/work-cells.d.ts +14 -0
  45. package/dist/ts/schedule/actions/work-cells.ts +151 -0
  46. package/dist/ts/schedule/base/constant.d.ts +102 -0
  47. package/dist/ts/schedule/base/constant.ts +103 -0
  48. package/dist/ts/schedule/base/css-constant.d.ts +475 -0
  49. package/dist/ts/schedule/base/css-constant.ts +475 -0
  50. package/dist/ts/schedule/base/interface.d.ts +673 -0
  51. package/dist/ts/schedule/base/interface.ts +738 -0
  52. package/dist/ts/schedule/base/resource.d.ts +59 -0
  53. package/dist/ts/schedule/base/resource.ts +1091 -0
  54. package/dist/ts/schedule/base/schedule-model.d.ts +930 -0
  55. package/dist/ts/schedule/base/schedule.d.ts +1967 -0
  56. package/dist/ts/schedule/base/schedule.ts +4221 -0
  57. package/dist/ts/schedule/base/type.d.ts +134 -0
  58. package/dist/ts/schedule/base/type.ts +142 -0
  59. package/dist/ts/schedule/base/util.d.ts +266 -0
  60. package/dist/ts/schedule/base/util.ts +492 -0
  61. package/dist/ts/schedule/event-renderer/agenda-base.d.ts +15 -0
  62. package/dist/ts/schedule/event-renderer/agenda-base.ts +423 -0
  63. package/dist/ts/schedule/event-renderer/event-base.d.ts +101 -0
  64. package/dist/ts/schedule/event-renderer/event-base.ts +1501 -0
  65. package/dist/ts/schedule/event-renderer/inline-edit.d.ts +23 -0
  66. package/dist/ts/schedule/event-renderer/inline-edit.ts +287 -0
  67. package/dist/ts/schedule/event-renderer/month.d.ts +60 -0
  68. package/dist/ts/schedule/event-renderer/month.ts +760 -0
  69. package/dist/ts/schedule/event-renderer/timeline-view.d.ts +51 -0
  70. package/dist/ts/schedule/event-renderer/timeline-view.ts +606 -0
  71. package/dist/ts/schedule/event-renderer/vertical-view.d.ts +57 -0
  72. package/dist/ts/schedule/event-renderer/vertical-view.ts +898 -0
  73. package/dist/ts/schedule/event-renderer/year.d.ts +27 -0
  74. package/dist/ts/schedule/event-renderer/year.ts +623 -0
  75. package/dist/ts/schedule/exports/calendar-export.d.ts +16 -0
  76. package/dist/ts/schedule/exports/calendar-export.ts +160 -0
  77. package/dist/ts/schedule/exports/calendar-import.d.ts +18 -0
  78. package/dist/ts/schedule/exports/calendar-import.ts +277 -0
  79. package/dist/ts/schedule/exports/excel-export.d.ts +14 -0
  80. package/dist/ts/schedule/exports/excel-export.ts +89 -0
  81. package/dist/ts/schedule/exports/index.d.ts +7 -0
  82. package/dist/ts/schedule/exports/index.ts +7 -0
  83. package/dist/ts/schedule/exports/print.d.ts +20 -0
  84. package/dist/ts/schedule/exports/print.ts +233 -0
  85. package/dist/ts/schedule/index.d.ts +26 -0
  86. package/dist/ts/schedule/index.ts +26 -0
  87. package/dist/ts/schedule/models/event-settings-model.d.ts +165 -0
  88. package/dist/ts/schedule/models/event-settings.d.ts +149 -0
  89. package/dist/ts/schedule/models/event-settings.ts +187 -0
  90. package/dist/ts/schedule/models/field-options-model.d.ts +37 -0
  91. package/dist/ts/schedule/models/field-options.d.ts +31 -0
  92. package/dist/ts/schedule/models/field-options.ts +41 -0
  93. package/dist/ts/schedule/models/fields-model.d.ts +129 -0
  94. package/dist/ts/schedule/models/fields.d.ts +117 -0
  95. package/dist/ts/schedule/models/fields.ts +149 -0
  96. package/dist/ts/schedule/models/group-model.d.ts +69 -0
  97. package/dist/ts/schedule/models/group.d.ts +60 -0
  98. package/dist/ts/schedule/models/group.ts +75 -0
  99. package/dist/ts/schedule/models/header-rows-model.d.ts +33 -0
  100. package/dist/ts/schedule/models/header-rows.d.ts +30 -0
  101. package/dist/ts/schedule/models/header-rows.ts +35 -0
  102. package/dist/ts/schedule/models/models.d.ts +14 -0
  103. package/dist/ts/schedule/models/models.ts +15 -0
  104. package/dist/ts/schedule/models/quick-info-templates-model.d.ts +52 -0
  105. package/dist/ts/schedule/models/quick-info-templates.d.ts +47 -0
  106. package/dist/ts/schedule/models/quick-info-templates.ts +56 -0
  107. package/dist/ts/schedule/models/resources-model.d.ts +122 -0
  108. package/dist/ts/schedule/models/resources.d.ts +106 -0
  109. package/dist/ts/schedule/models/resources.ts +138 -0
  110. package/dist/ts/schedule/models/time-scale-model.d.ts +57 -0
  111. package/dist/ts/schedule/models/time-scale.d.ts +50 -0
  112. package/dist/ts/schedule/models/time-scale.ts +61 -0
  113. package/dist/ts/schedule/models/toolbar-model.d.ts +196 -0
  114. package/dist/ts/schedule/models/toolbar.d.ts +176 -0
  115. package/dist/ts/schedule/models/toolbar.ts +196 -0
  116. package/dist/ts/schedule/models/views-model.d.ts +370 -0
  117. package/dist/ts/schedule/models/views.d.ts +335 -0
  118. package/dist/ts/schedule/models/views.ts +408 -0
  119. package/dist/ts/schedule/models/work-hours-model.d.ts +29 -0
  120. package/dist/ts/schedule/models/work-hours.d.ts +24 -0
  121. package/dist/ts/schedule/models/work-hours.ts +31 -0
  122. package/dist/ts/schedule/popups/event-tooltip.d.ts +16 -0
  123. package/dist/ts/schedule/popups/event-tooltip.ts +203 -0
  124. package/dist/ts/schedule/popups/event-window.d.ts +118 -0
  125. package/dist/ts/schedule/popups/event-window.ts +2055 -0
  126. package/dist/ts/schedule/popups/form-validator.d.ts +16 -0
  127. package/dist/ts/schedule/popups/form-validator.ts +110 -0
  128. package/dist/ts/schedule/popups/quick-popups.d.ts +78 -0
  129. package/dist/ts/schedule/popups/quick-popups.ts +1470 -0
  130. package/dist/ts/schedule/renderer/agenda.d.ts +45 -0
  131. package/dist/ts/schedule/renderer/agenda.ts +497 -0
  132. package/dist/ts/schedule/renderer/day.d.ts +20 -0
  133. package/dist/ts/schedule/renderer/day.ts +28 -0
  134. package/dist/ts/schedule/renderer/header-renderer.d.ts +48 -0
  135. package/dist/ts/schedule/renderer/header-renderer.ts +736 -0
  136. package/dist/ts/schedule/renderer/month-agenda.d.ts +29 -0
  137. package/dist/ts/schedule/renderer/month-agenda.ts +184 -0
  138. package/dist/ts/schedule/renderer/month.d.ts +61 -0
  139. package/dist/ts/schedule/renderer/month.ts +766 -0
  140. package/dist/ts/schedule/renderer/renderer.d.ts +13 -0
  141. package/dist/ts/schedule/renderer/renderer.ts +165 -0
  142. package/dist/ts/schedule/renderer/timeline-header-row.d.ts +15 -0
  143. package/dist/ts/schedule/renderer/timeline-header-row.ts +132 -0
  144. package/dist/ts/schedule/renderer/timeline-month.d.ts +29 -0
  145. package/dist/ts/schedule/renderer/timeline-month.ts +184 -0
  146. package/dist/ts/schedule/renderer/timeline-view.d.ts +31 -0
  147. package/dist/ts/schedule/renderer/timeline-view.ts +308 -0
  148. package/dist/ts/schedule/renderer/timeline-year.d.ts +22 -0
  149. package/dist/ts/schedule/renderer/timeline-year.ts +450 -0
  150. package/dist/ts/schedule/renderer/vertical-view.d.ts +63 -0
  151. package/dist/ts/schedule/renderer/vertical-view.ts +911 -0
  152. package/dist/ts/schedule/renderer/view-base.d.ts +83 -0
  153. package/dist/ts/schedule/renderer/view-base.ts +709 -0
  154. package/dist/ts/schedule/renderer/week.d.ts +22 -0
  155. package/dist/ts/schedule/renderer/week.ts +35 -0
  156. package/dist/ts/schedule/renderer/work-week.d.ts +22 -0
  157. package/dist/ts/schedule/renderer/work-week.ts +36 -0
  158. package/dist/ts/schedule/renderer/year.d.ts +46 -0
  159. package/dist/ts/schedule/renderer/year.ts +470 -0
  160. package/dist/ts/schedule/timezone/timezone.d.ts +16 -0
  161. package/dist/ts/schedule/timezone/timezone.ts +313 -0
  162. package/package.json +56 -21
  163. package/src/schedule/actions/action-base.js +3 -0
  164. package/src/schedule/actions/drag.js +11 -4
  165. package/src/schedule/actions/keyboard.js +1 -1
  166. package/src/schedule/actions/resize.js +9 -5
  167. package/src/schedule/actions/virtual-scroll.js +3 -0
  168. package/src/schedule/base/css-constant.d.ts +2 -0
  169. package/src/schedule/base/css-constant.js +2 -0
  170. package/src/schedule/base/schedule.js +15 -1
  171. package/src/schedule/event-renderer/agenda-base.d.ts +1 -1
  172. package/src/schedule/event-renderer/agenda-base.js +5 -4
  173. package/src/schedule/event-renderer/inline-edit.js +11 -6
  174. package/src/schedule/event-renderer/month.js +5 -3
  175. package/src/schedule/event-renderer/vertical-view.js +3 -0
  176. package/src/schedule/event-renderer/year.d.ts +2 -0
  177. package/src/schedule/event-renderer/year.js +28 -4
  178. package/src/schedule/popups/event-tooltip.js +4 -0
  179. package/src/schedule/popups/event-window.js +2 -2
  180. package/src/schedule/popups/quick-popups.js +5 -1
  181. package/src/schedule/renderer/agenda.js +3 -2
  182. package/src/schedule/renderer/month.js +9 -7
  183. package/src/schedule/renderer/vertical-view.js +1 -1
  184. package/src/schedule/renderer/view-base.d.ts +2 -0
  185. package/src/schedule/renderer/view-base.js +9 -0
  186. package/src/schedule/renderer/year.js +3 -2
  187. package/styles/bds-lite.css +11 -8
  188. package/styles/bds.css +11 -8
  189. package/styles/bootstrap-dark-lite.css +12 -9
  190. package/styles/bootstrap-dark.css +12 -9
  191. package/styles/bootstrap-lite.css +12 -9
  192. package/styles/bootstrap.css +12 -9
  193. package/styles/bootstrap4-lite.css +11 -8
  194. package/styles/bootstrap4.css +11 -8
  195. package/styles/bootstrap5-dark-lite.css +11 -8
  196. package/styles/bootstrap5-dark.css +11 -8
  197. package/styles/bootstrap5-lite.css +11 -8
  198. package/styles/bootstrap5.3-lite.css +11 -8
  199. package/styles/bootstrap5.3.css +11 -8
  200. package/styles/bootstrap5.css +11 -8
  201. package/styles/fabric-dark-lite.css +12 -9
  202. package/styles/fabric-dark.css +12 -9
  203. package/styles/fabric-lite.css +12 -9
  204. package/styles/fabric.css +12 -9
  205. package/styles/fluent-dark-lite.css +13 -10
  206. package/styles/fluent-dark.css +13 -10
  207. package/styles/fluent-lite.css +13 -10
  208. package/styles/fluent.css +13 -10
  209. package/styles/fluent2-lite.css +11 -8
  210. package/styles/fluent2.css +11 -8
  211. package/styles/highcontrast-light-lite.css +12 -9
  212. package/styles/highcontrast-light.css +12 -9
  213. package/styles/highcontrast-lite.css +12 -9
  214. package/styles/highcontrast.css +12 -9
  215. package/styles/material-dark-lite.css +12 -9
  216. package/styles/material-dark.css +12 -9
  217. package/styles/material-lite.css +12 -9
  218. package/styles/material.css +12 -9
  219. package/styles/material3-dark-lite.css +11 -8
  220. package/styles/material3-dark.css +11 -8
  221. package/styles/material3-lite.css +11 -8
  222. package/styles/material3.css +11 -8
  223. package/styles/recurrence-editor/_bds-definition.scss +1 -0
  224. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +1 -0
  225. package/styles/recurrence-editor/_bootstrap-definition.scss +1 -0
  226. package/styles/recurrence-editor/_bootstrap4-definition.scss +1 -0
  227. package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -0
  228. package/styles/recurrence-editor/_bootstrap5.3-definition.scss +1 -0
  229. package/styles/recurrence-editor/_fabric-dark-definition.scss +1 -0
  230. package/styles/recurrence-editor/_fabric-definition.scss +1 -0
  231. package/styles/recurrence-editor/_fluent-definition.scss +1 -0
  232. package/styles/recurrence-editor/_fluent2-definition.scss +1 -0
  233. package/styles/recurrence-editor/_fusionnew-definition.scss +1 -0
  234. package/styles/recurrence-editor/_highcontrast-definition.scss +1 -0
  235. package/styles/recurrence-editor/_highcontrast-light-definition.scss +1 -0
  236. package/styles/recurrence-editor/_layout.scss +5 -1
  237. package/styles/recurrence-editor/_material-dark-definition.scss +1 -0
  238. package/styles/recurrence-editor/_material-definition.scss +1 -0
  239. package/styles/recurrence-editor/_material3-definition.scss +1 -0
  240. package/styles/recurrence-editor/_tailwind-definition.scss +1 -0
  241. package/styles/recurrence-editor/_tailwind3-definition.scss +1 -0
  242. package/styles/recurrence-editor/bds.css +3 -0
  243. package/styles/recurrence-editor/bootstrap-dark.css +4 -1
  244. package/styles/recurrence-editor/bootstrap.css +4 -1
  245. package/styles/recurrence-editor/bootstrap4.css +3 -0
  246. package/styles/recurrence-editor/bootstrap5-dark.css +3 -0
  247. package/styles/recurrence-editor/bootstrap5.3.css +3 -0
  248. package/styles/recurrence-editor/bootstrap5.css +3 -0
  249. package/styles/recurrence-editor/fabric-dark.css +4 -1
  250. package/styles/recurrence-editor/fabric.css +4 -1
  251. package/styles/recurrence-editor/fluent-dark.css +4 -1
  252. package/styles/recurrence-editor/fluent.css +4 -1
  253. package/styles/recurrence-editor/fluent2.css +3 -0
  254. package/styles/recurrence-editor/highcontrast-light.css +4 -1
  255. package/styles/recurrence-editor/highcontrast.css +4 -1
  256. package/styles/recurrence-editor/material-dark.css +4 -1
  257. package/styles/recurrence-editor/material.css +4 -1
  258. package/styles/recurrence-editor/material3-dark.css +3 -0
  259. package/styles/recurrence-editor/material3.css +3 -0
  260. package/styles/recurrence-editor/tailwind-dark.css +3 -0
  261. package/styles/recurrence-editor/tailwind.css +3 -0
  262. package/styles/recurrence-editor/tailwind3.css +3 -0
  263. package/styles/schedule/_bds-definition.scss +2 -0
  264. package/styles/schedule/_bootstrap-dark-definition.scss +2 -0
  265. package/styles/schedule/_bootstrap-definition.scss +2 -0
  266. package/styles/schedule/_bootstrap4-definition.scss +2 -0
  267. package/styles/schedule/_bootstrap5-definition.scss +2 -0
  268. package/styles/schedule/_bootstrap5.3-definition.scss +2 -0
  269. package/styles/schedule/_fabric-dark-definition.scss +2 -0
  270. package/styles/schedule/_fabric-definition.scss +2 -0
  271. package/styles/schedule/_fluent-definition.scss +3 -1
  272. package/styles/schedule/_fluent2-definition.scss +2 -0
  273. package/styles/schedule/_fusionnew-definition.scss +2 -0
  274. package/styles/schedule/_highcontrast-definition.scss +2 -0
  275. package/styles/schedule/_highcontrast-light-definition.scss +2 -0
  276. package/styles/schedule/_layout.scss +12 -11
  277. package/styles/schedule/_material-dark-definition.scss +2 -0
  278. package/styles/schedule/_material-definition.scss +2 -0
  279. package/styles/schedule/_material3-definition.scss +2 -0
  280. package/styles/schedule/_tailwind-definition.scss +2 -0
  281. package/styles/schedule/_tailwind3-definition.scss +2 -0
  282. package/styles/schedule/bds.css +8 -8
  283. package/styles/schedule/bootstrap-dark.css +8 -8
  284. package/styles/schedule/bootstrap.css +8 -8
  285. package/styles/schedule/bootstrap4.css +8 -8
  286. package/styles/schedule/bootstrap5-dark.css +8 -8
  287. package/styles/schedule/bootstrap5.3.css +8 -8
  288. package/styles/schedule/bootstrap5.css +8 -8
  289. package/styles/schedule/fabric-dark.css +8 -8
  290. package/styles/schedule/fabric.css +8 -8
  291. package/styles/schedule/fluent-dark.css +9 -9
  292. package/styles/schedule/fluent.css +9 -9
  293. package/styles/schedule/fluent2.css +8 -8
  294. package/styles/schedule/highcontrast-light.css +8 -8
  295. package/styles/schedule/highcontrast.css +8 -8
  296. package/styles/schedule/material-dark.css +8 -8
  297. package/styles/schedule/material.css +8 -8
  298. package/styles/schedule/material3-dark.css +8 -8
  299. package/styles/schedule/material3.css +8 -8
  300. package/styles/schedule/tailwind-dark.css +8 -8
  301. package/styles/schedule/tailwind.css +8 -8
  302. package/styles/schedule/tailwind3.css +8 -8
  303. package/styles/tailwind-dark-lite.css +11 -8
  304. package/styles/tailwind-dark.css +11 -8
  305. package/styles/tailwind-lite.css +11 -8
  306. package/styles/tailwind.css +11 -8
  307. package/styles/tailwind3-lite.css +11 -8
  308. package/styles/tailwind3.css +11 -8
@@ -1033,6 +1033,8 @@ const MONTH_HEADER_WRAPPER = 'e-month-header-wrapper';
1033
1033
  const INLINE_SUBJECT_CLASS = 'e-inline-subject';
1034
1034
  /** @private */
1035
1035
  const INLINE_APPOINTMENT_CLASS = 'e-inline-appointment';
1036
+ /** @private */
1037
+ const INLINE_EDIT_CLASS = 'e-inline-edit';
1036
1038
  /** @hidden */
1037
1039
  const SCROLL_HIDDEN = 'e-scroll-hidden';
1038
1040
  /** @private */
@@ -3228,7 +3230,7 @@ class KeyboardInteraction {
3228
3230
  }
3229
3231
  processDelete(e) {
3230
3232
  let activeEle = document.activeElement;
3231
- if (this.parent.currentView === 'MonthAgenda') {
3233
+ if (this.parent.currentView === 'MonthAgenda' || (!isNullOrUndefined(activeEle) && closest(activeEle, '.' + POPUP_WRAPPER_CLASS))) {
3232
3234
  const selectedEle = this.parent.eventBase.getSelectedEvents().element;
3233
3235
  activeEle = ((selectedEle && isNullOrUndefined(selectedEle.length)) ? selectedEle : selectedEle[0]);
3234
3236
  }
@@ -7703,6 +7705,9 @@ class VerticalEvent extends EventBase {
7703
7705
  const record = this.splitEvent(eventObj, currentDates)[0];
7704
7706
  const eStart = new Date(record[this.parent.eventFields.startTime].getTime());
7705
7707
  const eEnd = new Date(record[this.parent.eventFields.endTime].getTime());
7708
+ if (eStart.getTime() < this.parent.minDate.getTime() || eEnd.getTime() > this.parent.maxDate.getTime()) {
7709
+ return;
7710
+ }
7706
7711
  let appWidth = 0;
7707
7712
  let topValue = 1;
7708
7713
  const isDateRange = currentDates[0].getTime() <= eStart.getTime() &&
@@ -8215,13 +8220,15 @@ class MonthEvent extends EventBase {
8215
8220
  this.parent.notify(scrollUiUpdate, data);
8216
8221
  if (this.parent.currentView === 'Month' && this.parent.showWeekNumber) {
8217
8222
  const totalCells = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));
8218
- const weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('.' + WEEK_NUMBER_CLASS));
8223
+ const weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('td' + '.' + WEEK_NUMBER_CLASS));
8219
8224
  weekNumberCells.forEach((cell, i) => {
8220
8225
  const height = totalCells[parseInt(i.toString(), 10)].offsetHeight;
8221
8226
  setStyleAttribute(cell, { 'height': height + 'px' });
8222
8227
  });
8223
- this.parent.element.querySelector('.' + WEEK_NUMBER_WRAPPER_CLASS).scrollTop =
8224
- this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS).scrollTop;
8228
+ const weekNumberWrapper = this.parent.element.querySelector('.' + WEEK_NUMBER_WRAPPER_CLASS);
8229
+ if (!isNullOrUndefined(weekNumberWrapper)) {
8230
+ weekNumberWrapper.scrollTop = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS).scrollTop;
8231
+ }
8225
8232
  }
8226
8233
  }
8227
8234
  this.parent.renderTemplates();
@@ -9452,6 +9459,7 @@ class InlineEdit {
9452
9459
  eventEdit(args) {
9453
9460
  let inlineSubject = args.element.querySelector('.' + INLINE_SUBJECT_CLASS);
9454
9461
  let subject;
9462
+ addClass([args.element], INLINE_EDIT_CLASS);
9455
9463
  if (inlineSubject) {
9456
9464
  subject = inlineSubject.value;
9457
9465
  }
@@ -9459,11 +9467,9 @@ class InlineEdit {
9459
9467
  const subEle = args.element.querySelector('.' + SUBJECT_CLASS);
9460
9468
  if (!isNullOrUndefined(subEle)) {
9461
9469
  addClass([subEle], DISABLE_CLASS);
9462
- subject = subEle.innerText;
9463
- }
9464
- else {
9465
- subject = args.data[this.parent.eventFields.subject];
9466
9470
  }
9471
+ subject = !isNullOrUndefined(args.data) && args.data[this.parent.eventFields.subject] ||
9472
+ this.parent.eventSettings.fields.subject.default || this.parent.localeObj.getConstant('addTitle');
9467
9473
  inlineSubject = this.inlineInputEle =
9468
9474
  createElement('input', { className: INLINE_SUBJECT_CLASS, attrs: { value: subject } });
9469
9475
  if (closest(args.element, '.' + MORE_POPUP_WRAPPER_CLASS)) {
@@ -9485,7 +9491,12 @@ class InlineEdit {
9485
9491
  args.element.querySelector('.e-appointment-details').prepend(inlineSubject);
9486
9492
  }
9487
9493
  else {
9488
- innerWrapElement.prepend(inlineSubject);
9494
+ if (subEle && this.parent.activeViewOptions && !this.parent.activeViewOptions.eventTemplate) {
9495
+ innerWrapElement.insertBefore(inlineSubject, subEle);
9496
+ }
9497
+ else {
9498
+ innerWrapElement.prepend(inlineSubject);
9499
+ }
9489
9500
  }
9490
9501
  }
9491
9502
  inlineSubject.focus();
@@ -9610,7 +9621,7 @@ class InlineEdit {
9610
9621
  }
9611
9622
  createInlineAppointmentElement(inlineData) {
9612
9623
  const inlineAppointmentElement = createElement('div', {
9613
- className: APPOINTMENT_CLASS + ' ' + INLINE_APPOINTMENT_CLASS
9624
+ className: APPOINTMENT_CLASS + ' ' + INLINE_APPOINTMENT_CLASS + ' ' + INLINE_EDIT_CLASS
9614
9625
  });
9615
9626
  const inlineDetails = createElement('div', { className: APPOINTMENT_DETAILS });
9616
9627
  inlineAppointmentElement.appendChild(inlineDetails);
@@ -9636,6 +9647,7 @@ class InlineEdit {
9636
9647
  const inlineSubject = this.getInlineElement();
9637
9648
  if (inlineSubject) {
9638
9649
  const appointmentSubject = closest(inlineSubject, '.' + APPOINTMENT_CLASS);
9650
+ removeClass([appointmentSubject], INLINE_EDIT_CLASS);
9639
9651
  const subject = appointmentSubject.querySelector('.' + SUBJECT_CLASS);
9640
9652
  if (!isNullOrUndefined(subject)) {
9641
9653
  removeClass([subject], DISABLE_CLASS);
@@ -11058,7 +11070,11 @@ class QuickPopups {
11058
11070
  if (closest(target, '.' + APPOINTMENT_CLASS + ',.' + HEADER_CELLS_CLASS)) {
11059
11071
  this.parent.removeNewEventElement();
11060
11072
  }
11061
- if (!closest(target, '.' + MORE_POPUP_WRAPPER_CLASS) && (target.classList &&
11073
+ const isQuickPopupClick = closest(target, '.' + POPUP_WRAPPER_CLASS) ||
11074
+ closest(target, '.' + QUICK_DIALOG_CLASS);
11075
+ const isEditButton = target.classList.contains(EDIT_EVENT_CLASS) ||
11076
+ target.classList.contains(EDIT_CLASS) || target.classList.contains(EDIT_ICON_CLASS);
11077
+ if (isEditButton || !isQuickPopupClick && !closest(target, '.' + MORE_POPUP_WRAPPER_CLASS) && (target.classList &&
11062
11078
  !target.classList.contains(MORE_INDICATOR_CLASS))
11063
11079
  && (!closest(target, '.' + MORE_POPUP_WRAPPER_CLASS + '.' + POPUP_OPEN))
11064
11080
  && !closest(target, '.' + WORK_CELLS_CLASS)) {
@@ -11204,6 +11220,10 @@ class EventTooltip {
11204
11220
  return;
11205
11221
  }
11206
11222
  if (args.target.classList.contains(RESOURCE_CELLS_CLASS) && this.parent.activeViewOptions.group.resources.length > 0) {
11223
+ if (args.target.closest('.' + LEFT_INDENT_WRAP_CLASS)) {
11224
+ args.cancel = true;
11225
+ return;
11226
+ }
11207
11227
  let resCollection;
11208
11228
  if (this.parent.activeView.isTimelineView()) {
11209
11229
  const index = parseInt(args.target.getAttribute('data-group-index'), 10);
@@ -13697,9 +13717,9 @@ class EventWindow {
13697
13717
  const startObj = startDate.ej2_instances[0];
13698
13718
  const endObj = endDate.ej2_instances[0];
13699
13719
  startObj.min = this.parent.minDate;
13700
- startObj.max = this.parent.maxDate;
13720
+ startObj.max = new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59));
13701
13721
  endObj.min = this.parent.minDate;
13702
- endObj.max = this.parent.maxDate;
13722
+ endObj.max = new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59));
13703
13723
  startObj.dataBind();
13704
13724
  endObj.dataBind();
13705
13725
  }
@@ -14849,6 +14869,9 @@ class VirtualScroll {
14849
14869
  this.removeObsoleteRows(resWrapRows, currentGroupIndices);
14850
14870
  this.removeObsoleteRows(conWrapRows, currentGroupIndices);
14851
14871
  const resourceRows = this.parent.resourceBase.getContentRows(resCollection, true);
14872
+ if (this.parent.isReact) {
14873
+ this.parent.renderTemplates();
14874
+ }
14852
14875
  const contentRows = this.parent.activeView.getContentRows();
14853
14876
  const eventRows = this.parent.activeView.getEventRows(resCollection.length);
14854
14877
  for (let i = 0; i < newGroupIndices.length; i++) {
@@ -19170,6 +19193,14 @@ let Schedule = class Schedule extends Component {
19170
19193
  if (newProp.allowKeyboardInteraction || newProp.allowClipboard) {
19171
19194
  this.keyboardInteractionModule = new KeyboardInteraction(this);
19172
19195
  }
19196
+ if (prop === 'allowClipboard') {
19197
+ if (newProp.allowClipboard) {
19198
+ EventHandler.add(document, 'paste', this.onDocumentPaste, this);
19199
+ }
19200
+ else {
19201
+ EventHandler.remove(document, 'paste', this.onDocumentPaste);
19202
+ }
19203
+ }
19173
19204
  break;
19174
19205
  case 'timezoneDataSource':
19175
19206
  if (this.eventWindow) {
@@ -20111,12 +20142,18 @@ let Schedule = class Schedule extends Component {
20111
20142
  * @returns {void}
20112
20143
  */
20113
20144
  paste(targetElement) {
20114
- if (!this.allowClipboard || !this.allowKeyboardInteraction) {
20145
+ if (!this.allowClipboard || !this.allowKeyboardInteraction || !targetElement) {
20115
20146
  return;
20116
20147
  }
20117
20148
  if (!targetElement.classList.contains('e-work-cells') && !targetElement.classList.contains('e-all-day-cells')) {
20118
20149
  return;
20119
20150
  }
20151
+ if (!this.activeCellsData) {
20152
+ const cellData = this.getCellDetails([targetElement]);
20153
+ if (cellData) {
20154
+ this.activeCellsData = cellData;
20155
+ }
20156
+ }
20120
20157
  const clipboardData = new DataTransfer();
20121
20158
  if (!isNullOrUndefined(navigator.clipboard)) {
20122
20159
  navigator.clipboard.readText()
@@ -21097,6 +21134,9 @@ class ActionBase {
21097
21134
  if (this.parent.activeViewOptions.group.resources.length > 0) {
21098
21135
  query = query.concat('[data-group-index = "' + cloneElement.getAttribute('data-group-index') + '"]');
21099
21136
  }
21137
+ if (cloneElement.hasAttribute('data-guid')) {
21138
+ query += '[data-guid="' + cloneElement.getAttribute('data-guid') + '"]';
21139
+ }
21100
21140
  const elements = [].slice.call(this.parent.element.querySelectorAll(query));
21101
21141
  addClass(elements, EVENT_ACTION_CLASS);
21102
21142
  const eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + CLONE_ELEMENT_CLASS));
@@ -21265,17 +21305,20 @@ class Resize extends ActionBase {
21265
21305
  }
21266
21306
  }
21267
21307
  resizeStart(e) {
21268
- if (e && e.type === 'touchstart' && (!this.parent.uiStateValues.isTapHold ||
21269
- !closest(e.target, '.' + APPOINTMENT_BORDER))) {
21308
+ if ((e && e.type === 'touchstart' && (!this.parent.uiStateValues.isTapHold ||
21309
+ !closest(e.target, '.' + APPOINTMENT_BORDER))) || closest(e.target, '.' + INLINE_EDIT_CLASS)) {
21310
+ return;
21311
+ }
21312
+ const resizeTarget = closest(e.target, '.' + EVENT_RESIZE_CLASS);
21313
+ this.actionObj.element = closest(resizeTarget, '.' + APPOINTMENT_CLASS);
21314
+ this.actionObj.event = this.parent.eventBase.getEventByGuid(this.actionObj.element.getAttribute('data-guid'));
21315
+ if (isNullOrUndefined(this.actionObj.event)) {
21270
21316
  return;
21271
21317
  }
21272
21318
  this.parent.eventBase.removeSelectedAppointmentClass();
21273
21319
  this.actionObj.action = 'resize';
21274
21320
  this.actionObj.slotInterval = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;
21275
21321
  this.actionObj.interval = this.actionObj.slotInterval;
21276
- const resizeTarget = closest(e.target, '.' + EVENT_RESIZE_CLASS);
21277
- this.actionObj.element = closest(resizeTarget, '.' + APPOINTMENT_CLASS);
21278
- this.actionObj.event = this.parent.eventBase.getEventByGuid(this.actionObj.element.getAttribute('data-guid'));
21279
21322
  const eventObj = extend({}, this.actionObj.event, null, true);
21280
21323
  const resizeArgs = {
21281
21324
  cancel: false,
@@ -21785,6 +21828,7 @@ class Resize extends ActionBase {
21785
21828
  (Math.ceil((targetWidth - cloneWidth) / this.actionObj.cellWidth) * this.actionObj.cellWidth) : offsetLeft);
21786
21829
  }
21787
21830
  }
21831
+ width = Math.floor(width);
21788
21832
  styles.width = formatUnit(width);
21789
21833
  return styles;
21790
21834
  }
@@ -21973,9 +22017,10 @@ class YearEvent extends TimelineEvent {
21973
22017
  continue;
21974
22018
  }
21975
22019
  }
21976
- const enableAppRender = this.maxOrIndicator || (overlapIndex < eventsPerRow) ||
21977
- (this.cellHeight > availedHeight);
21978
- if (this.parent.rowAutoHeight || enableAppRender || this.cellHeight > availedHeight) {
22020
+ if (this.maxHeight && this.parent.currentView.indexOf('Timeline') !== -1 && overlapIndex > 0) {
22021
+ continue;
22022
+ }
22023
+ if (this.parent.rowAutoHeight || this.shouldRenderAppointment(overlapIndex, availedHeight)) {
21979
22024
  this.renderEvent(eventWrapper, eventData, row, leftValue, rightValue, monthStart, dayIndex);
21980
22025
  if (this.parent.rowAutoHeight || this.cellHeight > availedHeight) {
21981
22026
  this.updateCellHeight(rowTd, availedHeight);
@@ -22105,6 +22150,19 @@ class YearEvent extends TimelineEvent {
22105
22150
  });
22106
22151
  }
22107
22152
  }
22153
+ shouldRenderAppointment(overlapIndex, availedHeight) {
22154
+ const eventsPerRow = this.parent.rowAutoHeight ? 1 : this.parent.activeViewOptions.maxEventsPerRow;
22155
+ if (this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight &&
22156
+ !this.parent.eventSettings.enableIndicator) {
22157
+ return overlapIndex < eventsPerRow;
22158
+ }
22159
+ else if (this.maxOrIndicator) {
22160
+ return overlapIndex < 1;
22161
+ }
22162
+ else {
22163
+ return this.cellHeight > availedHeight;
22164
+ }
22165
+ }
22108
22166
  renderResourceEvent(wrapper, resource, month, index, monthStart) {
22109
22167
  const eventWrapper = createElement('div', { className: APPOINTMENT_WRAPPER_CLASS });
22110
22168
  wrapper.appendChild(eventWrapper);
@@ -22141,7 +22199,10 @@ class YearEvent extends TimelineEvent {
22141
22199
  continue;
22142
22200
  }
22143
22201
  }
22144
- if (this.parent.rowAutoHeight || this.cellHeight > availedHeight) {
22202
+ if (this.maxHeight && this.parent.currentView.indexOf('Timeline') !== -1 && overlapIndex > 0) {
22203
+ continue;
22204
+ }
22205
+ if (this.parent.rowAutoHeight || this.shouldRenderAppointment(overlapIndex, availedHeight)) {
22145
22206
  this.renderEvent(eventWrapper, eventData, month, leftValue, leftValue, monthStart, index);
22146
22207
  this.updateCellHeight(td, availedHeight);
22147
22208
  isSpannedCollection.push(eventData);
@@ -22158,6 +22219,10 @@ class YearEvent extends TimelineEvent {
22158
22219
  }
22159
22220
  }
22160
22221
  }
22222
+ setMaxEventHeight(event, cell) {
22223
+ const height = (cell.offsetHeight - this.cellHeader) - (this.maxHeight ? 0 : this.moreIndicatorHeight);
22224
+ setStyleAttribute(event, { 'height': height + 'px', 'align-items': 'center' });
22225
+ }
22161
22226
  // eslint-disable-next-line max-len
22162
22227
  renderEvent(wrapper, eventData, row, left, right, monthDate, rowIndex) {
22163
22228
  const eventObj = this.isSpannedEvent(eventData, monthDate);
@@ -22187,6 +22252,9 @@ class YearEvent extends TimelineEvent {
22187
22252
  setStyleAttribute(wrap, {
22188
22253
  'width': width + 'px', 'height': this.eventHeight + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px'
22189
22254
  });
22255
+ if (this.maxOrIndicator && this.parent.currentView.indexOf('Timeline') !== -1) {
22256
+ this.setMaxEventHeight(wrap, rowTd);
22257
+ }
22190
22258
  if (!this.isResource && this.parent.rowAutoHeight && this.parent.activeViewOptions.orientation === 'Vertical') {
22191
22259
  wrap.setAttribute('data-index', eventObj.Index.toString());
22192
22260
  }
@@ -22437,7 +22505,7 @@ class DragAndDrop extends ActionBase {
22437
22505
  }
22438
22506
  wireDragEvent(element) {
22439
22507
  new Draggable(element, {
22440
- abort: '.' + EVENT_RESIZE_CLASS,
22508
+ abort: '.' + EVENT_RESIZE_CLASS + ', .' + INLINE_EDIT_CLASS,
22441
22509
  clone: true,
22442
22510
  isDragScroll: true,
22443
22511
  enableTailMode: this.parent.eventDragArea ? true : false,
@@ -22957,6 +23025,11 @@ class DragAndDrop extends ActionBase {
22957
23025
  this.actionObj.clone.style.top = formatUnit(td.offsetParent.offsetTop);
22958
23026
  this.actionObj.clone.style.left = formatUnit(td.offsetLeft);
22959
23027
  this.actionObj.clone.style.width = formatUnit(td.offsetWidth);
23028
+ if (this.actionObj.cloneElement.length > 1) {
23029
+ this.actionObj.cloneElement.forEach((element) => {
23030
+ element.style.width = formatUnit(td.offsetWidth);
23031
+ });
23032
+ }
22960
23033
  let eventContainer = td;
22961
23034
  let eventWrapper;
22962
23035
  if (this.parent.activeView.isTimelineView()) {
@@ -23244,6 +23317,10 @@ class DragAndDrop extends ActionBase {
23244
23317
  this.verticalEvent.getTopValue(eStart) : this.actionObj.element.offsetTop;
23245
23318
  if (isNullOrUndefined(index)) {
23246
23319
  if (i === 0) {
23320
+ if (this.actionObj.clone.classList.contains(ALLDAY_APPOINTMENT_CLASS)) {
23321
+ topValue = this.parent.element.querySelector('.' + ALLDAY_ROW_CLASS).offsetTop;
23322
+ appHeight = this.getAllDayEventHeight();
23323
+ }
23247
23324
  this.actionObj.clone.style.top = formatUnit(topValue);
23248
23325
  this.actionObj.clone.style.height = formatUnit(appHeight);
23249
23326
  }
@@ -23253,9 +23330,7 @@ class DragAndDrop extends ActionBase {
23253
23330
  }
23254
23331
  else {
23255
23332
  let appWidth = this.actionObj.cellWidth;
23256
- if (event[this.parent.eventFields.isAllDay]) {
23257
- topValue = this.parent.element.querySelector('.' + ALLDAY_ROW_CLASS).offsetTop;
23258
- appHeight = this.getAllDayEventHeight();
23333
+ if (event[this.parent.eventFields.isAllDay] && this.parent.activeViewOptions.timeScale.enable) {
23259
23334
  const timeDiff = event[this.parent.eventFields.endTime].getTime() -
23260
23335
  event[this.parent.eventFields.startTime].getTime();
23261
23336
  const allDayDifference = Math.ceil(timeDiff / (1000 * 3600 * 24));
@@ -23784,6 +23859,8 @@ class ViewBase {
23784
23859
  */
23785
23860
  constructor(parent) {
23786
23861
  this.previousNextAction = 'Next';
23862
+ this.skipPersistenceSave = false;
23863
+ this.isScrolledBottom = false;
23787
23864
  this.parent = parent;
23788
23865
  }
23789
23866
  isTimelineView() {
@@ -24329,6 +24406,12 @@ class ViewBase {
24329
24406
  setPersistence() {
24330
24407
  if (this.parent.enablePersistence) {
24331
24408
  const contentWrap = this.element.querySelector('.e-content-wrap');
24409
+ if (this.parent.virtualScrollModule && this.isScrolledBottom) {
24410
+ this.isScrolledBottom = false;
24411
+ this.skipPersistenceSave = true;
24412
+ contentWrap.scrollTop = this.parent.scrollTop;
24413
+ this.skipPersistenceSave = false;
24414
+ }
24332
24415
  if (!isNullOrUndefined(contentWrap)) {
24333
24416
  this.parent.scrollLeft = contentWrap.scrollLeft;
24334
24417
  this.parent.scrollTop = contentWrap.scrollTop;
@@ -24339,6 +24422,7 @@ class ViewBase {
24339
24422
  if (this.parent.enablePersistence) {
24340
24423
  const conWrap = this.parent.element.querySelector('.e-content-wrap');
24341
24424
  if (!isNullOrUndefined(conWrap) && !isNullOrUndefined(this.parent.scrollLeft) && !isNullOrUndefined(this.parent.scrollTop)) {
24425
+ this.isScrolledBottom = conWrap.scrollHeight - conWrap.clientHeight < this.parent.scrollTop;
24342
24426
  conWrap.scrollTop = this.parent.scrollTop;
24343
24427
  conWrap.scrollLeft = this.parent.scrollLeft;
24344
24428
  }
@@ -24782,7 +24866,7 @@ class VerticalView extends ViewBase {
24782
24866
  case 'dateHeader':
24783
24867
  if (this.parent.activeViewOptions.dateHeaderTemplate) {
24784
24868
  templateName = 'dateHeaderTemplate';
24785
- const args = { date: date, type: type };
24869
+ const args = { date: date, type: type, groupIndex: groupIndex };
24786
24870
  const viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
24787
24871
  cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false, undefined, undefined, this.parent.root));
24788
24872
  }
@@ -25388,13 +25472,15 @@ class Month extends ViewBase {
25388
25472
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
25389
25473
  onCellClick(event) { }
25390
25474
  onContentScroll(e) {
25391
- this.parent.removeNewEventElement();
25392
- this.parent.notify(virtualScroll, e);
25393
- this.scrollTopPanel(e.target);
25394
- this.scrollLeftPanel(e.target);
25395
- this.parent.uiStateValues.top = e.target.scrollTop;
25396
- this.parent.uiStateValues.left = e.target.scrollLeft;
25397
- this.setPersistence();
25475
+ if (!this.skipPersistenceSave) {
25476
+ this.parent.removeNewEventElement();
25477
+ this.parent.notify(virtualScroll, e);
25478
+ this.scrollTopPanel(e.target);
25479
+ this.scrollLeftPanel(e.target);
25480
+ this.parent.uiStateValues.top = e.target.scrollTop;
25481
+ this.parent.uiStateValues.left = e.target.scrollLeft;
25482
+ this.setPersistence();
25483
+ }
25398
25484
  }
25399
25485
  scrollLeftPanel(target) {
25400
25486
  const leftPanel = this.getLeftPanelElement();
@@ -26428,10 +26514,11 @@ class Year extends ViewBase {
26428
26514
  const startDate = isDateColAvail ? dateCollection[0] : this.getStartDate();
26429
26515
  const endDate = isDateColAvail ? dateCollection[dateCollection.length - 1] : this.getEndDate();
26430
26516
  if (startDate.getFullYear() !== endDate.getFullYear()) {
26431
- return this.parent.globalize.formatDate(startDate, { skeleton: 'yMMM' }) + ' - ' + this.parent.globalize.formatDate(endDate, { skeleton: 'yMMM' });
26517
+ return this.parent.globalize.formatDate(startDate, { format: 'MMM y', calendar: this.parent.getCalendarMode() })
26518
+ + ' - ' + this.parent.globalize.formatDate(endDate, { format: 'MMM y', calendar: this.parent.getCalendarMode() });
26432
26519
  }
26433
26520
  else {
26434
- return this.parent.globalize.formatDate(isDateColAvail ? dateCollection[0] : date, { skeleton: 'y' });
26521
+ return this.parent.globalize.formatDate(isDateColAvail ? dateCollection[0] : date, { skeleton: 'y', calendar: this.parent.getCalendarMode() });
26435
26522
  }
26436
26523
  }
26437
26524
  addEventListener() {
@@ -26685,7 +26772,8 @@ class AgendaBase extends ViewBase {
26685
26772
  rowSpan: 1, type: 'dateColumn', resource: resColl[parseInt((resColl.length - 1).toString(), 10)],
26686
26773
  groupOrder: resData[parseInt(res.toString(), 10)].groupOrder,
26687
26774
  resourceData: resData[parseInt(res.toString(), 10)].resourceData,
26688
- date: agendaDate
26775
+ date: agendaDate,
26776
+ groupIndex: resData[parseInt(res.toString(), 10)].groupIndex
26689
26777
  };
26690
26778
  if (!lastLevelInfo[parseInt(tempIndex.toString(), 10)]) {
26691
26779
  lastLevelInfo[parseInt(tempIndex.toString(), 10)] = [];
@@ -26778,7 +26866,7 @@ class AgendaBase extends ViewBase {
26778
26866
  continue;
26779
26867
  }
26780
26868
  ntd.setAttribute('data-date', data.date.getTime().toString());
26781
- ntd.appendChild(this.createDateHeaderElement(data.date));
26869
+ ntd.appendChild(this.createDateHeaderElement(data.date, data.groupIndex));
26782
26870
  const className = [AGENDA_CELLS_CLASS, AGENDA_DATE_CLASS];
26783
26871
  if (data.cssClass) {
26784
26872
  className.push(data.cssClass);
@@ -26833,11 +26921,11 @@ class AgendaBase extends ViewBase {
26833
26921
  tBody.appendChild(ntr);
26834
26922
  }
26835
26923
  }
26836
- createDateHeaderElement(date) {
26924
+ createDateHeaderElement(date, groupIndex) {
26837
26925
  let dateHeader;
26838
26926
  if (this.parent.activeViewOptions.dateHeaderTemplate) {
26839
26927
  dateHeader = createElement('div', { className: AGENDA_HEADER_CLASS });
26840
- const args = { date: date, type: 'dateHeader' };
26928
+ const args = { date: date, type: 'dateHeader', groupIndex: groupIndex };
26841
26929
  const scheduleId = this.parent.element.id + '_';
26842
26930
  const viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
26843
26931
  const templateId = scheduleId + viewName + 'dateHeaderTemplate';
@@ -26944,11 +27032,12 @@ class Agenda extends AgendaBase {
26944
27032
  this.parent.eventsProcessed = this.processAgendaEvents(eventCollection);
26945
27033
  const agendaDate = resetTime(this.parent.selectedDate);
26946
27034
  const tBody = this.element.querySelector('.' + CONTENT_TABLE_CLASS + ' tbody');
27035
+ const contentArea = closest(tBody, '.' + CONTENT_WRAP_CLASS);
27036
+ const scrollTop = contentArea.scrollTop;
26947
27037
  removeChildren(tBody);
26948
27038
  this.renderInitialContent(tBody, agendaDate);
26949
27039
  this.wireEventActions();
26950
- const contentArea = closest(tBody, '.' + CONTENT_WRAP_CLASS);
26951
- contentArea.scrollTop = 1;
27040
+ contentArea.scrollTop = scrollTop;
26952
27041
  this.parent.notify(eventsLoaded, {});
26953
27042
  if (!this.parent.activeViewOptions.allowVirtualScrolling) {
26954
27043
  this.retainScrollPosition();