@syncfusion/ej2-schedule 20.2.45 → 20.3.47

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 (125) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/ej2-schedule.min.js +10 -0
  3. package/dist/ej2-schedule.umd.min.js +2 -2
  4. package/dist/ej2-schedule.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es2015.js +603 -218
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +621 -230
  8. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  9. package/dist/global/ej2-schedule.min.js +2 -2
  10. package/dist/global/ej2-schedule.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +16 -16
  13. package/src/recurrence-editor/recurrence-editor-model.d.ts +1 -1
  14. package/src/recurrence-editor/recurrence-editor.d.ts +1 -0
  15. package/src/recurrence-editor/recurrence-editor.js +37 -10
  16. package/src/schedule/actions/action-base.js +5 -3
  17. package/src/schedule/actions/crud.js +1 -2
  18. package/src/schedule/actions/drag.js +17 -14
  19. package/src/schedule/actions/resize.js +1 -3
  20. package/src/schedule/actions/touch.js +2 -2
  21. package/src/schedule/actions/virtual-scroll.d.ts +12 -3
  22. package/src/schedule/actions/virtual-scroll.js +206 -54
  23. package/src/schedule/base/interface.d.ts +2 -1
  24. package/src/schedule/base/schedule-model.d.ts +7 -0
  25. package/src/schedule/base/schedule.d.ts +13 -0
  26. package/src/schedule/base/schedule.js +13 -4
  27. package/src/schedule/base/util.d.ts +15 -0
  28. package/src/schedule/base/util.js +29 -3
  29. package/src/schedule/event-renderer/agenda-base.js +3 -5
  30. package/src/schedule/event-renderer/event-base.d.ts +2 -1
  31. package/src/schedule/event-renderer/event-base.js +30 -3
  32. package/src/schedule/event-renderer/month.d.ts +1 -0
  33. package/src/schedule/event-renderer/month.js +8 -6
  34. package/src/schedule/event-renderer/vertical-view.d.ts +3 -0
  35. package/src/schedule/event-renderer/vertical-view.js +32 -12
  36. package/src/schedule/event-renderer/year.js +1 -1
  37. package/src/schedule/popups/event-window.d.ts +1 -0
  38. package/src/schedule/popups/event-window.js +35 -7
  39. package/src/schedule/popups/quick-popups.js +18 -5
  40. package/src/schedule/renderer/agenda.js +1 -0
  41. package/src/schedule/renderer/header-renderer.js +3 -3
  42. package/src/schedule/renderer/month.js +25 -6
  43. package/src/schedule/renderer/renderer.js +8 -2
  44. package/src/schedule/renderer/timeline-view.js +2 -2
  45. package/src/schedule/renderer/timeline-year.d.ts +1 -0
  46. package/src/schedule/renderer/timeline-year.js +20 -12
  47. package/src/schedule/renderer/vertical-view.d.ts +1 -1
  48. package/src/schedule/renderer/vertical-view.js +48 -44
  49. package/src/schedule/renderer/view-base.d.ts +2 -0
  50. package/src/schedule/renderer/view-base.js +31 -1
  51. package/src/schedule/renderer/year.d.ts +1 -1
  52. package/src/schedule/renderer/year.js +49 -30
  53. package/styles/bootstrap-dark.css +50 -33
  54. package/styles/bootstrap.css +50 -33
  55. package/styles/bootstrap4.css +50 -33
  56. package/styles/bootstrap5-dark.css +51 -38
  57. package/styles/bootstrap5.css +51 -38
  58. package/styles/fabric-dark.css +50 -33
  59. package/styles/fabric.css +50 -33
  60. package/styles/fluent-dark.css +52 -39
  61. package/styles/fluent.css +52 -39
  62. package/styles/highcontrast-light.css +50 -33
  63. package/styles/highcontrast.css +50 -33
  64. package/styles/material-dark.css +50 -33
  65. package/styles/material.css +50 -33
  66. package/styles/recurrence-editor/_all.scss +1 -1
  67. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +1 -3
  68. package/styles/recurrence-editor/_bootstrap-definition.scss +1 -3
  69. package/styles/recurrence-editor/_bootstrap4-definition.scss +1 -3
  70. package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -3
  71. package/styles/recurrence-editor/_fabric-dark-definition.scss +1 -4
  72. package/styles/recurrence-editor/_fabric-definition.scss +1 -3
  73. package/styles/recurrence-editor/_fluent-definition.scss +1 -3
  74. package/styles/recurrence-editor/_fusionnew-definition.scss +1 -3
  75. package/styles/recurrence-editor/_highcontrast-definition.scss +1 -3
  76. package/styles/recurrence-editor/_highcontrast-light-definition.scss +1 -3
  77. package/styles/recurrence-editor/_layout.scss +28 -38
  78. package/styles/recurrence-editor/_material-dark-definition.scss +1 -3
  79. package/styles/recurrence-editor/_material-definition.scss +1 -3
  80. package/styles/recurrence-editor/_material3-definition.scss +1 -3
  81. package/styles/recurrence-editor/_tailwind-definition.scss +1 -3
  82. package/styles/recurrence-editor/bootstrap-dark.css +21 -27
  83. package/styles/recurrence-editor/bootstrap.css +21 -27
  84. package/styles/recurrence-editor/bootstrap4.css +21 -27
  85. package/styles/recurrence-editor/bootstrap5-dark.css +21 -27
  86. package/styles/recurrence-editor/bootstrap5.css +21 -27
  87. package/styles/recurrence-editor/fabric-dark.css +21 -27
  88. package/styles/recurrence-editor/fabric.css +21 -27
  89. package/styles/recurrence-editor/fluent-dark.css +21 -27
  90. package/styles/recurrence-editor/fluent.css +21 -27
  91. package/styles/recurrence-editor/highcontrast-light.css +21 -27
  92. package/styles/recurrence-editor/highcontrast.css +21 -27
  93. package/styles/recurrence-editor/material-dark.css +21 -27
  94. package/styles/recurrence-editor/material.css +21 -27
  95. package/styles/recurrence-editor/tailwind-dark.css +21 -27
  96. package/styles/recurrence-editor/tailwind.css +21 -27
  97. package/styles/schedule/_all.scss +1 -1
  98. package/styles/schedule/_bootstrap4-definition.scss +0 -1
  99. package/styles/schedule/_bootstrap5-definition.scss +1 -1
  100. package/styles/schedule/_fusionnew-definition.scss +1 -1
  101. package/styles/schedule/_layout.scss +57 -32
  102. package/styles/schedule/_material3-definition.scss +1 -1
  103. package/styles/schedule/_theme.scss +12 -10
  104. package/styles/schedule/bootstrap-dark.css +29 -6
  105. package/styles/schedule/bootstrap.css +29 -6
  106. package/styles/schedule/bootstrap4.css +29 -6
  107. package/styles/schedule/bootstrap5-dark.css +30 -11
  108. package/styles/schedule/bootstrap5.css +30 -11
  109. package/styles/schedule/fabric-dark.css +29 -6
  110. package/styles/schedule/fabric.css +29 -6
  111. package/styles/schedule/fluent-dark.css +31 -12
  112. package/styles/schedule/fluent.css +31 -12
  113. package/styles/schedule/highcontrast-light.css +29 -6
  114. package/styles/schedule/highcontrast.css +29 -6
  115. package/styles/schedule/icons/_bootstrap5.scss +0 -1
  116. package/styles/schedule/icons/_fluent.scss +0 -1
  117. package/styles/schedule/icons/_fusionnew.scss +0 -1
  118. package/styles/schedule/icons/_material3.scss +0 -1
  119. package/styles/schedule/icons/_tailwind.scss +0 -1
  120. package/styles/schedule/material-dark.css +29 -6
  121. package/styles/schedule/material.css +29 -6
  122. package/styles/schedule/tailwind-dark.css +29 -6
  123. package/styles/schedule/tailwind.css +29 -6
  124. package/styles/tailwind-dark.css +50 -33
  125. package/styles/tailwind.css +50 -33
@@ -1,4 +1,4 @@
1
- import { Animation, Browser, ChildProperty, Collection, Complex, Component, Draggable, Event, EventHandler, HijriParser, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, classList, cldrData, closest, compile, createElement, extend, formatUnit, getDefaultDateObject, getElement, getValue, isNullOrUndefined, prepend, print, remove, removeClass, setStyleAttribute } from '@syncfusion/ej2-base';
1
+ import { Animation, Browser, ChildProperty, Collection, Complex, Component, Draggable, Event, EventHandler, HijriParser, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, classList, cldrData, closest, compile, createElement, detach, extend, formatUnit, getDefaultDateObject, getElement, getValue, isNullOrUndefined, prepend, print, remove, removeClass, setStyleAttribute } from '@syncfusion/ej2-base';
2
2
  import { Dialog, Popup, Tooltip, createSpinner, hideSpinner, isCollide, showSpinner } from '@syncfusion/ej2-popups';
3
3
  import { Toolbar, TreeView } from '@syncfusion/ej2-navigations';
4
4
  import { Calendar, DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';
@@ -111,6 +111,23 @@ function getElementHeightFromClass(container, elementClass) {
111
111
  remove(el);
112
112
  return height;
113
113
  }
114
+ /**
115
+ * Method to get width from element
116
+ *
117
+ * @param {Element} container Accepts the DOM element
118
+ * @param {string} elementClass Accepts the element class
119
+ * @returns {number} Returns the width of the element
120
+ */
121
+ function getElementWidthFromClass(container, elementClass) {
122
+ var width = 0;
123
+ var el = createElement('div', { className: elementClass }).cloneNode();
124
+ el.style.visibility = 'hidden';
125
+ el.style.position = 'absolute';
126
+ container.appendChild(el);
127
+ width = el.getBoundingClientRect().width;
128
+ remove(el);
129
+ return width;
130
+ }
114
131
  /**
115
132
  * Method to get translateY value
116
133
  *
@@ -122,6 +139,17 @@ function getTranslateY(element) {
122
139
  return window.WebKitCSSMatrix ?
123
140
  new WebKitCSSMatrix(style.webkitTransform).m42 : 0;
124
141
  }
142
+ /**
143
+ * Method to get translateX value
144
+ *
145
+ * @param {HTMLElement | Element} element Accepts the DOM element
146
+ * @returns {number} Returns the translateX value of given element
147
+ */
148
+ function getTranslateX(element) {
149
+ var style = getComputedStyle(element);
150
+ return window.WebKitCSSMatrix ?
151
+ new WebKitCSSMatrix(style.webkitTransform).m41 : 0;
152
+ }
125
153
  /**
126
154
  * Method to get week first date
127
155
  *
@@ -399,9 +427,7 @@ function removeChildren(element) {
399
427
  var elementChildren = [].slice.call(element.children);
400
428
  for (var _i = 0, elementChildren_1 = elementChildren; _i < elementChildren_1.length; _i++) {
401
429
  var elementChild = elementChildren_1[_i];
402
- if (!elementChild.classList.contains('blazor-template')) {
403
- element.removeChild(elementChild);
404
- }
430
+ element.removeChild(elementChild);
405
431
  }
406
432
  }
407
433
  /**
@@ -1435,7 +1461,7 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1435
1461
  firstDate = getWeekFirstDate(resetTime(this.parent.selectedDate), this.parent.firstDayOfWeek);
1436
1462
  lastDate = addDays(firstDate, 7 * this.parent.activeViewOptions.interval);
1437
1463
  }
1438
- if (this.parent.currentView === 'Month') {
1464
+ else if (this.parent.currentView === 'Month') {
1439
1465
  var isCustomMonth = !isNullOrUndefined(this.parent.activeViewOptions.displayDate) ||
1440
1466
  this.parent.activeViewOptions.numberOfWeeks > 0;
1441
1467
  firstDate = isCustomMonth ? this.parent.activeView.getStartDate() : firstDateOfMonth(this.parent.selectedDate);
@@ -1443,10 +1469,10 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1443
1469
  lastDateOfMonth(addMonths(firstDate, this.parent.activeViewOptions.interval - 1));
1444
1470
  }
1445
1471
  if (!isNullOrUndefined(prevNavEle)) {
1446
- this.toolbarObj.enableItems(prevNavEle, firstDate > this.parent.minDate);
1472
+ this.toolbarObj.enableItems(prevNavEle, firstDate > resetTime(this.parent.minDate));
1447
1473
  }
1448
1474
  if (!isNullOrUndefined(nextNavEle)) {
1449
- this.toolbarObj.enableItems(nextNavEle, lastDate < this.parent.maxDate);
1475
+ this.toolbarObj.enableItems(nextNavEle, lastDate < resetTime(this.parent.maxDate));
1450
1476
  }
1451
1477
  this.setCalendarMinMaxDate();
1452
1478
  };
@@ -1586,7 +1612,7 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
1586
1612
  this.touchRightDirection = this.parent.enableRtl ? 'Left' : 'Right';
1587
1613
  }
1588
1614
  ScheduleTouch.prototype.scrollHandler = function (e) {
1589
- if (this.parent.currentView === 'Agenda' || this.parent.uiStateValues.action ||
1615
+ if (this.parent.currentView === 'Agenda' || this.parent.uiStateValues.action || !this.parent.allowSwiping ||
1590
1616
  (e.originalEvent && (e.originalEvent.target.classList.contains(APPOINTMENT_CLASS) ||
1591
1617
  closest(e.originalEvent.target, '.' + APPOINTMENT_CLASS)))) {
1592
1618
  return;
@@ -1641,7 +1667,7 @@ var ScheduleTouch = /** @__PURE__ @class */ (function () {
1641
1667
  }
1642
1668
  };
1643
1669
  ScheduleTouch.prototype.swipeHandler = function (e) {
1644
- if (!this.isScrollTriggered || this.parent.uiStateValues.action) {
1670
+ if (!this.isScrollTriggered || this.parent.uiStateValues.action || !this.parent.allowSwiping) {
1645
1671
  return;
1646
1672
  }
1647
1673
  this.isScrollTriggered = false;
@@ -6019,7 +6045,8 @@ var EventBase = /** @__PURE__ @class */ (function () {
6019
6045
  var startDate = event[this.parent.eventFields.startTime];
6020
6046
  var endDate = event[this.parent.eventFields.endTime];
6021
6047
  var eventRule = event[this.parent.eventFields.recurrenceRule];
6022
- var duration = endDate.getTime() - startDate.getTime();
6048
+ var timeZoneDiff = endDate.getTimezoneOffset() - startDate.getTimezoneOffset();
6049
+ var duration = (endDate.getTime() - startDate.getTime()) - (timeZoneDiff * 60000);
6023
6050
  viewDate = new Date((viewDate || this.parent.activeView.startDate()).getTime() - duration);
6024
6051
  var exception = event[this.parent.eventFields.recurrenceException];
6025
6052
  var maxCount;
@@ -6233,7 +6260,7 @@ var EventBase = /** @__PURE__ @class */ (function () {
6233
6260
  element.style[type] = !isNullOrUndefined(alpha) ? alphaColor(color, alpha) : color;
6234
6261
  }
6235
6262
  };
6236
- EventBase.prototype.createBlockAppointmentElement = function (record, resIndex) {
6263
+ EventBase.prototype.createBlockAppointmentElement = function (record, resIndex, isResourceEventTemplate) {
6237
6264
  var eventSubject = (record[this.parent.eventFields.subject] || this.parent.eventSettings.fields.subject.default);
6238
6265
  var appointmentWrapper = createElement('div', {
6239
6266
  className: BLOCK_APPOINTMENT_CLASS,
@@ -6247,7 +6274,7 @@ var EventBase = /** @__PURE__ @class */ (function () {
6247
6274
  var scheduleId = this.parent.element.id + '_';
6248
6275
  var viewName = this.parent.activeViewOptions.eventTemplateName;
6249
6276
  var templateId = scheduleId + viewName + 'eventTemplate';
6250
- var templateName = 'eventTemplate' + (this.parent.activeViewOptions.group.resources.length > 0 &&
6277
+ var templateName = 'eventTemplate' + (isResourceEventTemplate &&
6251
6278
  this.parent.currentView.indexOf('Year') === -1 ? '_' + resIndex : '');
6252
6279
  templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
6253
6280
  }
@@ -6403,6 +6430,32 @@ var EventBase = /** @__PURE__ @class */ (function () {
6403
6430
  }
6404
6431
  return { startDate: startTime, endDate: endTime };
6405
6432
  };
6433
+ EventBase.prototype.createEventWrapper = function (type, index) {
6434
+ if (type === void 0) { type = ''; }
6435
+ if (index === void 0) { index = 0; }
6436
+ var tr = createElement('tr');
6437
+ var levels = this.parent.activeView.colLevels.slice(-1)[0];
6438
+ for (var i = 0, len = levels.length; i < len; i++) {
6439
+ var col = levels[i];
6440
+ var appointmentWrap = createElement('td', {
6441
+ className: (type === 'allDay') ? ALLDAY_APPOINTMENT_WRAPPER_CLASS : (type === 'timeIndicator') ?
6442
+ TIMELINE_WRAPPER_CLASS : DAY_WRAPPER_CLASS, attrs: { 'data-date': col.date.getTime().toString() }
6443
+ });
6444
+ if (!isNullOrUndefined(col.groupIndex)) {
6445
+ appointmentWrap.setAttribute('data-group-index', col.groupIndex.toString());
6446
+ }
6447
+ if (type === '') {
6448
+ var innerWrapper = createElement('div', {
6449
+ id: APPOINTMENT_WRAPPER_CLASS + '-' + index.toString(),
6450
+ className: APPOINTMENT_WRAPPER_CLASS
6451
+ });
6452
+ appointmentWrap.appendChild(innerWrapper);
6453
+ }
6454
+ tr.appendChild(appointmentWrap);
6455
+ index = index + 1;
6456
+ }
6457
+ return tr;
6458
+ };
6406
6459
  EventBase.prototype.unWireEvents = function () {
6407
6460
  var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + APPOINTMENT_CLASS));
6408
6461
  for (var _i = 0, appElements_1 = appElements; _i < appElements_1.length; _i++) {
@@ -6463,6 +6516,7 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6463
6516
  if (this.parent.dragAndDropModule) {
6464
6517
  this.parent.dragAndDropModule.setDragArea();
6465
6518
  }
6519
+ this.isResourceEventTemplate = this.parent.isSpecificResourceEvents();
6466
6520
  var wrapperElements = [].slice.call(this.parent.element.querySelectorAll('.' + BLOCK_APPOINTMENT_CLASS +
6467
6521
  ',.' + APPOINTMENT_CLASS + ',.' + ROW_COUNT_WRAPPER_CLASS));
6468
6522
  var isDragging = (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) ? true : false;
@@ -6485,6 +6539,9 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6485
6539
  if (!this.element.querySelector('.' + WORK_CELLS_CLASS)) {
6486
6540
  return;
6487
6541
  }
6542
+ if (this.parent.virtualScrollModule) {
6543
+ this.parent.virtualScrollModule.updateFocusedWorkCell();
6544
+ }
6488
6545
  this.allDayElement = [].slice.call(this.element.querySelectorAll('.' + ALLDAY_CELLS_CLASS));
6489
6546
  this.setAllDayRowHeight(0);
6490
6547
  if (this.parent.eventsProcessed.length === 0 && this.parent.blockProcessed.length === 0) {
@@ -6517,6 +6574,9 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6517
6574
  this.resources = (this.parent.activeViewOptions.group.resources.length > 0) ? this.parent.uiStateValues.isGroupAdaptive ?
6518
6575
  [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :
6519
6576
  this.parent.resourceBase.lastResourceLevel : [];
6577
+ if (this.resources.length > 0 && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.virtualScrollModule) {
6578
+ this.resources = this.parent.resourceBase.renderedResources;
6579
+ }
6520
6580
  this.cellHeight =
6521
6581
  parseFloat(this.parent.element.querySelector('.e-content-wrap tbody tr').getBoundingClientRect().height.toFixed(2));
6522
6582
  this.dateRender[0] = this.parent.activeView.renderDates;
@@ -6533,7 +6593,7 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6533
6593
  return appHeight;
6534
6594
  };
6535
6595
  VerticalEvent.prototype.appendEvent = function (eventObj, appointmentElement, index, appLeft) {
6536
- var appointmentWrap = [].slice.call(this.element.querySelectorAll('.' + APPOINTMENT_WRAPPER_CLASS));
6596
+ var appointmentWrap = this.element.querySelector('.' + APPOINTMENT_WRAPPER_CLASS + '[id="' + APPOINTMENT_WRAPPER_CLASS + '-' + index + '"]');
6537
6597
  if (this.parent.enableRtl) {
6538
6598
  setStyleAttribute(appointmentElement, { 'right': appLeft });
6539
6599
  }
@@ -6547,13 +6607,13 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6547
6607
  };
6548
6608
  this.parent.trigger(eventRendered, args, function (eventArgs) {
6549
6609
  if (!eventArgs.cancel) {
6550
- appointmentWrap[index].appendChild(appointmentElement);
6610
+ appointmentWrap.appendChild(appointmentElement);
6551
6611
  }
6552
6612
  });
6553
6613
  };
6554
6614
  VerticalEvent.prototype.processBlockEvents = function () {
6555
6615
  var resources = this.getResourceList();
6556
- var dateCount = 0;
6616
+ var dateCount = this.getStartCount();
6557
6617
  for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {
6558
6618
  var resource = resources_1[_i];
6559
6619
  var renderDates = this.dateRender[resource];
@@ -6592,9 +6652,11 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6592
6652
  blockHeight = formatUnit(this.getHeight(eStart, eEnd));
6593
6653
  blockTop = formatUnit(this.getTopValue(eStart, dayIndex, resource));
6594
6654
  }
6595
- var appointmentElement = this.createBlockAppointmentElement(eventObj, resource);
6655
+ var appointmentElement = this.createBlockAppointmentElement(eventObj, resource, this.isResourceEventTemplate);
6596
6656
  setStyleAttribute(appointmentElement, { 'width': '100%', 'height': blockHeight, 'top': blockTop });
6597
- var index = this.parent.activeViewOptions.group.byDate ? (this.resources.length * dayIndex) + resource : dayCount;
6657
+ var renderedIndex = this.getDayIndex(dayIndex, resource);
6658
+ var index = this.parent.activeViewOptions.group.byDate ?
6659
+ (this.resources.length * renderedIndex) + resource : dayCount;
6598
6660
  this.appendEvent(eventObj, appointmentElement, index, '0px');
6599
6661
  }
6600
6662
  };
@@ -6602,7 +6664,7 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6602
6664
  removeClass(this.allDayElement, ALLDAY_ROW_ANIMATE_CLASS);
6603
6665
  var eventCollection = (eventType === 'allDayEvents') ? this.sortByDateTime(this.allDayEvents) : undefined;
6604
6666
  var resources = this.getResourceList();
6605
- var dateCount = 0;
6667
+ var dateCount = this.getStartCount();
6606
6668
  var isRender;
6607
6669
  var _loop_1 = function (resource) {
6608
6670
  isRender = true;
@@ -6666,6 +6728,15 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6666
6728
  _loop_1(resource);
6667
6729
  }
6668
6730
  };
6731
+ VerticalEvent.prototype.getStartCount = function () {
6732
+ return this.parent.virtualScrollModule && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.timeScale.enable ?
6733
+ parseInt(this.element.querySelector('.' + APPOINTMENT_WRAPPER_CLASS).getAttribute('id').split('-').slice(-1)[0], 10) : 0;
6734
+ };
6735
+ VerticalEvent.prototype.getDayIndex = function (dayIndex, resource) {
6736
+ return this.parent.activeViewOptions.group.byDate ?
6737
+ this.parent.resourceBase.lastResourceLevel[0].renderDates.indexOf(this.dateRender[resource][dayIndex]) :
6738
+ dayIndex;
6739
+ };
6669
6740
  VerticalEvent.prototype.setValues = function (event, resourceIndex) {
6670
6741
  if (this.parent.activeViewOptions.group.resources.length > 0) {
6671
6742
  this.cssClass = this.resources[resourceIndex].cssClass;
@@ -6697,7 +6768,6 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6697
6768
  'tabindex': '0',
6698
6769
  'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record),
6699
6770
  'aria-pressed': 'false',
6700
- 'aria-grabbed': 'true',
6701
6771
  'aria-label': this.parent.getAnnouncementString(record)
6702
6772
  }
6703
6773
  });
@@ -6717,7 +6787,7 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6717
6787
  var viewName = this.parent.activeViewOptions.eventTemplateName;
6718
6788
  var templateId = elementId + viewName + 'eventTemplate';
6719
6789
  var resIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;
6720
- var templateName = 'eventTemplate' + (this.parent.activeViewOptions.group.resources.length > 0 ? '_' + resIndex : '');
6790
+ var templateName = 'eventTemplate' + (this.isResourceEventTemplate ? '_' + resIndex : '');
6721
6791
  templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
6722
6792
  }
6723
6793
  else {
@@ -6894,10 +6964,11 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6894
6964
  if (isNullOrUndefined(this.renderedAllDayEvents[resource])) {
6895
6965
  this.renderedAllDayEvents[resource] = [];
6896
6966
  }
6967
+ var renderedIndex = this.getDayIndex(dayIndex, resource);
6897
6968
  this.renderedAllDayEvents[resource].push(extend({}, record, null, true));
6898
6969
  var allDayRow_1 = [].slice.call(this.element.querySelector('.' + ALLDAY_ROW_CLASS).children);
6899
6970
  var wIndex_1 = this.parent.activeViewOptions.group.byDate ?
6900
- (this.resources.length * dayIndex) + resource : dayCount;
6971
+ (this.resources.length * renderedIndex) + resource : dayCount;
6901
6972
  var eventWrapper_1 = this.element.querySelector('.' + ALLDAY_APPOINTMENT_WRAPPER_CLASS +
6902
6973
  ':nth-child(' + (wIndex_1 + 1) + ')');
6903
6974
  var appointmentElement_1;
@@ -6966,9 +7037,10 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6966
7037
  this.overlapEvents.push([record]);
6967
7038
  }
6968
7039
  appWidth = this.getEventWidth();
7040
+ var renderedIndex = this.getDayIndex(dayIndex, resource);
6969
7041
  var argsData = {
6970
7042
  index: appIndex, left: appLeft, width: appWidth,
6971
- day: dayIndex, dayIndex: dayCount, record: record, resource: resource
7043
+ day: renderedIndex, dayIndex: dayCount, record: record, resource: resource
6972
7044
  };
6973
7045
  var tempData = this.adjustOverlapElements(argsData);
6974
7046
  appWidth = (tempData.appWidth);
@@ -6993,7 +7065,8 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6993
7065
  if (!this.parent.isAdaptive && subjectElement) {
6994
7066
  subjectElement.style.maxHeight = formatUnit(maxHeight);
6995
7067
  }
6996
- var index = this.parent.activeViewOptions.group.byDate ? (this.resources.length * dayIndex) + resource : dayCount;
7068
+ var index = this.parent.activeViewOptions.group.byDate ?
7069
+ (this.resources.length * renderedIndex) + resource : dayCount;
6997
7070
  var eventData = {};
6998
7071
  eventData[this.fields.startTime] = eventObj[this.fields.startTime];
6999
7072
  eventData[this.fields.endTime] = eventObj[this.fields.endTime];
@@ -7117,7 +7190,7 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
7117
7190
  var dayCount = this.parent.activeViewOptions.group.byDate ?
7118
7191
  (this.resources.length * args.day) + args.resource : args.dayIndex;
7119
7192
  var element = this.element.querySelector('#e-appointment-wrapper-' + dayCount);
7120
- if (element.childElementCount > 0) {
7193
+ if (element && element.childElementCount > 0) {
7121
7194
  var eleGuid = this.overlapEvents[i][j].Guid;
7122
7195
  if (element.querySelectorAll('div[data-guid="' + eleGuid + '"]').length > 0 && eleGuid !== args.record.Guid) {
7123
7196
  var apps = element.querySelector('div[data-guid="' + eleGuid + '"]');
@@ -7309,6 +7382,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7309
7382
  if (this.parent.dragAndDropModule) {
7310
7383
  this.parent.dragAndDropModule.setDragArea();
7311
7384
  }
7385
+ this.isResourceEventTemplate = this.parent.isSpecificResourceEvents();
7312
7386
  var conWrap = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
7313
7387
  if (this.parent.rowAutoHeight) {
7314
7388
  this.parent.uiStateValues.top = conWrap.scrollTop;
@@ -7347,7 +7421,8 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7347
7421
  }
7348
7422
  this.eventHeight = getElementHeightFromClass(this.element, APPOINTMENT_CLASS);
7349
7423
  var scrollTop = conWrap.scrollTop;
7350
- if (this.parent.rowAutoHeight && this.parent.virtualScrollModule && !isNullOrUndefined(this.parent.currentAction)) {
7424
+ if (this.parent.rowAutoHeight && this.parent.virtualScrollModule && !this.parent.virtualScrollModule.isHorizontalScroll
7425
+ && !isNullOrUndefined(this.parent.currentAction)) {
7351
7426
  conWrap.scrollTop = conWrap.scrollTop - 1;
7352
7427
  }
7353
7428
  if (this.parent.activeViewOptions.group.resources.length > 0) {
@@ -7367,7 +7442,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7367
7442
  isPreventScrollUpdate: true,
7368
7443
  scrollPosition: { left: this.parent.uiStateValues.left, top: this.parent.uiStateValues.top }
7369
7444
  };
7370
- if (this.parent.virtualScrollModule) {
7445
+ if (this.parent.virtualScrollModule && !this.parent.virtualScrollModule.isHorizontalScroll) {
7371
7446
  if (this.parent.currentAction) {
7372
7447
  conWrap.scrollTop = scrollTop;
7373
7448
  this.parent.currentAction = null;
@@ -7519,7 +7594,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7519
7594
  var appRight = (this.parent.enableRtl) ? position : 0;
7520
7595
  var appHeight = this.cellHeight - this.monthHeaderHeight;
7521
7596
  var appTop = this.getRowTop(resIndex);
7522
- var blockElement = this.createBlockAppointmentElement(event, resIndex);
7597
+ var blockElement = this.createBlockAppointmentElement(event, resIndex, this.isResourceEventTemplate);
7523
7598
  setStyleAttribute(blockElement, {
7524
7599
  'width': appWidth + 'px', 'height': appHeight + 'px', 'left': appLeft + 'px',
7525
7600
  'right': appRight + 'px', 'top': appTop + 'px'
@@ -7590,7 +7665,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7590
7665
  MonthEvent.prototype.renderResourceEvents = function () {
7591
7666
  var resources = this.parent.uiStateValues.isGroupAdaptive ?
7592
7667
  [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :
7593
- this.parent.resourceBase.lastResourceLevel;
7668
+ this.parent.resourceBase.renderedResources;
7594
7669
  if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {
7595
7670
  for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {
7596
7671
  var sourceRes = this.parent.crudModule.crudObj.sourceEvent[i];
@@ -7626,7 +7701,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7626
7701
  var attrs = {
7627
7702
  'data-id': 'Appointment_' + record[this.fields.id],
7628
7703
  'role': 'button', 'tabindex': '0',
7629
- 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false', 'aria-grabbed': 'true',
7704
+ 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false',
7630
7705
  'aria-label': this.parent.getAnnouncementString(newRecord, eventSubject)
7631
7706
  };
7632
7707
  if (!isCloneElement) {
@@ -7651,7 +7726,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7651
7726
  var scheduleId = this.parent.element.id + '_';
7652
7727
  var viewName = this.parent.activeViewOptions.eventTemplateName;
7653
7728
  var templateId = scheduleId + viewName + 'eventTemplate';
7654
- var eventTemplate = 'eventTemplate' + (this.parent.activeViewOptions.group.resources.length > 0 ? '_' + resIndex : '');
7729
+ var eventTemplate = 'eventTemplate' + (this.isResourceEventTemplate ? '_' + resIndex : '');
7655
7730
  templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, eventTemplate, templateId, false);
7656
7731
  }
7657
7732
  else {
@@ -9121,7 +9196,7 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9121
9196
  'data-id': '' + eventData[fields.id],
9122
9197
  'data-guid': eventData.Guid, 'role': 'button', 'tabindex': '0',
9123
9198
  'aria-disabled': this_1.parent.eventBase.getReadonlyAttribute(eventData),
9124
- 'aria-pressed': 'false', 'aria-grabbed': 'true', 'aria-label': this_1.parent.getAnnouncementString(eventData)
9199
+ 'aria-pressed': 'false', 'aria-label': this_1.parent.getAnnouncementString(eventData)
9125
9200
  }
9126
9201
  });
9127
9202
  var templateElement = void 0;
@@ -9246,6 +9321,9 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9246
9321
  }
9247
9322
  return;
9248
9323
  }
9324
+ else if (this.quickPopup.element) {
9325
+ this.destroyPopupButtons('quickPopup');
9326
+ }
9249
9327
  var temp = {};
9250
9328
  temp[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;
9251
9329
  temp[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;
@@ -9317,6 +9395,9 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9317
9395
  if (isSameTarget) {
9318
9396
  return;
9319
9397
  }
9398
+ else if (this.quickPopup.element) {
9399
+ this.destroyPopupButtons('quickPopup');
9400
+ }
9320
9401
  var eventData = events.event;
9321
9402
  var quickEventPopup = createElement('div', { className: EVENT_POPUP_CLASS });
9322
9403
  quickEventPopup.appendChild(this.getPopupHeader('Event', eventData));
@@ -9861,7 +9942,10 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9861
9942
  _this.quickPopup.element.style.height = formatUnit((popupType === 'EditEventInfo') ? 65 : window.innerHeight);
9862
9943
  }
9863
9944
  else {
9864
- _this.quickPopup.offsetX = 10;
9945
+ var isVirtualScroll = _this.parent.virtualScrollModule && _this.parent.virtualScrollModule.isHorizontalScroll
9946
+ && !isNullOrUndefined(closest(target, '.' + CONTENT_TABLE_CLASS));
9947
+ var conTable = _this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS + ' table');
9948
+ _this.quickPopup.offsetX = isVirtualScroll && !_this.parent.enableRtl ? (getTranslateX(conTable) + 10) : 10;
9865
9949
  _this.quickPopup.collision = { X: _this.parent.enableRtl ? 'flip' : 'none', Y: 'fit' };
9866
9950
  _this.quickPopup.position = { X: _this.parent.enableRtl ? 'left' : 'right', Y: _this.parent.enableRtl ? 'bottom' : 'top' };
9867
9951
  _this.quickPopup.dataBind();
@@ -9869,7 +9953,11 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9869
9953
  var collide = isCollide(_this.quickPopup.element, _this.parent.element);
9870
9954
  if (collide.indexOf(_this.parent.enableRtl ? 'left' : 'right') > -1) {
9871
9955
  _this.quickPopup.offsetX = -target.offsetWidth - 10 - _this.quickPopup.element.offsetWidth;
9956
+ if (isVirtualScroll && !_this.parent.enableRtl) {
9957
+ _this.quickPopup.offsetX = getTranslateX(conTable) + _this.quickPopup.offsetX;
9958
+ }
9872
9959
  _this.quickPopup.dataBind();
9960
+ _this.quickPopup.refreshPosition(null, true);
9873
9961
  var leftCollide = isCollide(_this.quickPopup.element, _this.parent.element);
9874
9962
  if (leftCollide.indexOf('left') > -1) {
9875
9963
  _this.quickPopup.position = { X: 'center', Y: 'center' };
@@ -9878,9 +9966,8 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9878
9966
  _this.quickPopup.dataBind();
9879
9967
  }
9880
9968
  }
9881
- if (_this.parent.virtualScrollModule && (collide.indexOf('top') > -1 || collide.indexOf('bottom') > -1)) {
9882
- var element = _this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS + ' table');
9883
- var translateY = getTranslateY(element);
9969
+ if (_this.parent.virtualScrollModule && !_this.parent.virtualScrollModule.isHorizontalScroll && (collide.indexOf('top') > -1 || collide.indexOf('bottom') > -1)) {
9970
+ var translateY = getTranslateY(conTable);
9884
9971
  _this.quickPopup.offsetY = translateY;
9885
9972
  _this.quickPopup.dataBind();
9886
9973
  }
@@ -10135,6 +10222,7 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
10135
10222
  this.destroyQuickPopup();
10136
10223
  this.destroyMorePopup();
10137
10224
  this.destroyQuickDialog();
10225
+ this.dialogEvent = null;
10138
10226
  this.parent = null;
10139
10227
  this.l10n = null;
10140
10228
  this.isCrudAction = null;
@@ -11149,30 +11237,47 @@ var RecurrenceEditor = /** @__PURE__ @class */ (function (_super) {
11149
11237
  RecurrenceEditor.prototype.destroyComponents = function () {
11150
11238
  if (!this.recurrenceCount.isDestroyed) {
11151
11239
  this.recurrenceCount.destroy();
11240
+ this.recurrenceCount = null;
11152
11241
  }
11153
11242
  if (!this.monthDate.isDestroyed) {
11154
11243
  this.monthDate.destroy();
11244
+ this.monthDate = null;
11155
11245
  }
11156
11246
  if (!this.repeatInterval.isDestroyed) {
11157
11247
  this.repeatInterval.destroy();
11248
+ this.repeatInterval = null;
11158
11249
  }
11159
11250
  if (!this.untilDateObj.isDestroyed) {
11160
11251
  this.untilDateObj.destroy();
11252
+ this.untilDateObj = null;
11161
11253
  }
11162
11254
  if (!this.repeatType.isDestroyed) {
11163
11255
  this.repeatType.destroy();
11256
+ this.repeatType = null;
11164
11257
  }
11165
11258
  if (!this.endType.isDestroyed) {
11166
11259
  this.endType.destroy();
11260
+ this.endType = null;
11167
11261
  }
11168
11262
  if (!this.monthWeekPos.isDestroyed) {
11169
11263
  this.monthWeekPos.destroy();
11264
+ this.monthWeekPos = null;
11170
11265
  }
11171
11266
  if (!this.monthWeekDays.isDestroyed) {
11172
11267
  this.monthWeekDays.destroy();
11268
+ this.monthWeekDays = null;
11173
11269
  }
11174
11270
  if (!this.monthValue.isDestroyed) {
11175
11271
  this.monthValue.destroy();
11272
+ this.monthValue = null;
11273
+ }
11274
+ if (!this.onMonthDay.isDestroyed) {
11275
+ this.onMonthDay.destroy();
11276
+ this.onMonthDay = null;
11277
+ }
11278
+ if (!this.onWeekDay.isDestroyed) {
11279
+ this.onWeekDay.destroy();
11280
+ this.onWeekDay = null;
11176
11281
  }
11177
11282
  this.dayButtons.forEach(function (element) {
11178
11283
  if (!element.isDestroyed) {
@@ -11268,21 +11373,31 @@ var RecurrenceEditor = /** @__PURE__ @class */ (function (_super) {
11268
11373
  this.renderStatus = true;
11269
11374
  this.triggerChangeEvent();
11270
11375
  };
11376
+ RecurrenceEditor.prototype.detachInputs = function () {
11377
+ var inputElements = [].slice.call(this.element.querySelectorAll('input'));
11378
+ for (var _i = 0, inputElements_1 = inputElements; _i < inputElements_1.length; _i++) {
11379
+ var element = inputElements_1[_i];
11380
+ detach(element);
11381
+ }
11382
+ };
11271
11383
  /**
11272
11384
  * Destroys the widget.
11273
11385
  *
11274
11386
  * @returns {void}
11275
11387
  */
11276
11388
  RecurrenceEditor.prototype.destroy = function () {
11277
- this.destroyComponents();
11278
- _super.prototype.destroy.call(this);
11279
- var removeClasses = ['e-' + this.getModuleName()];
11280
- if (this.cssClass) {
11281
- removeClasses = removeClasses.concat(this.cssClass.split(' '));
11282
- }
11283
- removeClass([this.element], removeClasses);
11284
- while (this.element.firstElementChild) {
11285
- this.element.removeChild(this.element.firstElementChild);
11389
+ if (!this.isDestroyed) {
11390
+ this.destroyComponents();
11391
+ _super.prototype.destroy.call(this);
11392
+ var removeClasses = ['e-' + this.getModuleName()];
11393
+ if (this.cssClass) {
11394
+ removeClasses = removeClasses.concat(this.cssClass.split(' '));
11395
+ }
11396
+ removeClass([this.element], removeClasses);
11397
+ this.detachInputs();
11398
+ while (this.element.firstElementChild) {
11399
+ this.element.removeChild(this.element.firstElementChild);
11400
+ }
11286
11401
  }
11287
11402
  };
11288
11403
  /**
@@ -11660,6 +11775,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11660
11775
  var tempEle = [].slice.call(this.parent.getEditorTemplate()(args || {}, this.parent, 'editorTemplate', templateId, false));
11661
11776
  append(tempEle, form);
11662
11777
  this.parent.renderTemplates();
11778
+ this.applyFormValidation();
11663
11779
  }
11664
11780
  else {
11665
11781
  form.appendChild(this.getDefaultEventWindowContent());
@@ -12213,12 +12329,26 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12213
12329
  };
12214
12330
  var form = this.element.querySelector('.' + FORM_CLASS);
12215
12331
  var rules = {};
12216
- rules[this.parent.eventSettings.fields.subject.name] = getValidationRule(this.parent.eventSettings.fields.subject.validation);
12217
- rules[this.parent.eventSettings.fields.location.name] = getValidationRule(this.parent.eventSettings.fields.location.validation);
12218
- rules[this.parent.eventSettings.fields.startTime.name] = getValidationRule(this.parent.eventSettings.fields.startTime.validation);
12219
- rules[this.parent.eventSettings.fields.endTime.name] = getValidationRule(this.parent.eventSettings.fields.endTime.validation);
12220
- rules[this.parent.eventSettings.fields.description.name] =
12221
- getValidationRule(this.parent.eventSettings.fields.description.validation);
12332
+ var subjectRule = getValidationRule(this.parent.eventSettings.fields.subject.validation);
12333
+ if (!isNullOrUndefined(subjectRule)) {
12334
+ rules[this.parent.eventSettings.fields.subject.name] = subjectRule;
12335
+ }
12336
+ var locationRule = getValidationRule(this.parent.eventSettings.fields.location.validation);
12337
+ if (!isNullOrUndefined(locationRule)) {
12338
+ rules[this.parent.eventSettings.fields.location.name] = locationRule;
12339
+ }
12340
+ var startTimeRule = getValidationRule(this.parent.eventSettings.fields.startTime.validation);
12341
+ if (!isNullOrUndefined(startTimeRule)) {
12342
+ rules[this.parent.eventSettings.fields.startTime.name] = startTimeRule;
12343
+ }
12344
+ var endTimeRule = getValidationRule(this.parent.eventSettings.fields.endTime.validation);
12345
+ if (!isNullOrUndefined(endTimeRule)) {
12346
+ rules[this.parent.eventSettings.fields.endTime.name] = endTimeRule;
12347
+ }
12348
+ var descriptionRule = getValidationRule(this.parent.eventSettings.fields.description.validation);
12349
+ if (!isNullOrUndefined(descriptionRule)) {
12350
+ rules[this.parent.eventSettings.fields.description.name] = descriptionRule;
12351
+ }
12222
12352
  this.fieldValidator = new FieldValidator();
12223
12353
  this.fieldValidator.renderFormValidator(form, rules, this.element, this.parent.locale);
12224
12354
  };
@@ -13166,6 +13296,13 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13166
13296
  this.buttonObj.destroy();
13167
13297
  }
13168
13298
  };
13299
+ EventWindow.prototype.detachComponents = function () {
13300
+ var formElements = this.getFormElements(EVENT_WINDOW_DIALOG_CLASS);
13301
+ for (var _i = 0, formElements_4 = formElements; _i < formElements_4.length; _i++) {
13302
+ var element = formElements_4[_i];
13303
+ detach(element);
13304
+ }
13305
+ };
13169
13306
  EventWindow.prototype.destroy = function (isIgnore) {
13170
13307
  if (this.parent && !this.parent.isDestroyed) {
13171
13308
  this.parent.resetTemplates(['editorTemplate']);
@@ -13173,6 +13310,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13173
13310
  this.destroyComponents();
13174
13311
  if (this.recurrenceEditor) {
13175
13312
  this.recurrenceEditor.destroy();
13313
+ detach(this.recurrenceEditor.element);
13176
13314
  this.recurrenceEditor = null;
13177
13315
  }
13178
13316
  if (this.fieldValidator) {
@@ -13183,8 +13321,12 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13183
13321
  this.repeatDialogObject.destroy();
13184
13322
  this.repeatDialogObject = null;
13185
13323
  }
13324
+ this.detachComponents();
13186
13325
  if (this.dialogObject) {
13187
13326
  if (this.dialogObject.element) {
13327
+ var form = this.dialogObject.element.querySelector('form');
13328
+ removeChildren(form);
13329
+ detach(form);
13188
13330
  EventHandler.remove(this.dialogObject.element, 'keydown', this.preventEventSave);
13189
13331
  }
13190
13332
  this.dialogObject.destroy();
@@ -13201,6 +13343,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13201
13343
  this.buttonObj = null;
13202
13344
  this.repeatStatus = null;
13203
13345
  this.eventWindowTime = null;
13346
+ this.dialogEvent = null;
13204
13347
  }
13205
13348
  };
13206
13349
  return EventWindow;
@@ -13216,7 +13359,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13216
13359
  this.bufferCount = 3;
13217
13360
  this.renderedLength = 0;
13218
13361
  this.averageRowHeight = 0;
13219
- this.isScrollHeightNull = true;
13362
+ this.startIndex = 0;
13220
13363
  this.parent = parent;
13221
13364
  this.addEventListener();
13222
13365
  }
@@ -13234,39 +13377,19 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13234
13377
  };
13235
13378
  VirtualScroll.prototype.getRenderedCount = function () {
13236
13379
  this.setItemSize();
13237
- return Math.ceil(this.parent.element.clientHeight / this.itemSize) + this.bufferCount;
13238
- };
13239
- VirtualScroll.prototype.setTranslateValue = function () {
13240
- var resWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
13241
- var conWrap = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
13242
- var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
13243
- var timeIndicator = this.parent.element.querySelector('.' + CURRENT_TIMELINE_CLASS);
13244
- this.renderVirtualTrackHeight(conWrap, resWrap);
13245
- this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);
13246
- };
13247
- VirtualScroll.prototype.renderVirtualTrackHeight = function (contentWrap, resourceWrap) {
13248
- this.parent.resourceBase.setExpandedResources();
13249
- if (this.isScrollHeightNull) {
13250
- var wrap = createElement('div', { className: VIRTUAL_TRACK_CLASS });
13251
- var resWrap = [].slice.call((resourceWrap).querySelectorAll('table td'));
13252
- var startIndex_1 = parseInt(resWrap[0].getAttribute('data-group-index'), 10);
13253
- var endIndex_1 = parseInt(resWrap[resWrap.length - 1].getAttribute('data-group-index'), 10);
13254
- this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.filter(function (resource) {
13255
- return (resource.groupIndex >= startIndex_1 && resource.groupIndex <= endIndex_1);
13256
- });
13257
- this.setItemSize();
13258
- wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';
13259
- this.isScrollHeightNull = false;
13260
- var virtual = this.parent.element.querySelector('.' + VIRTUAL_TRACK_CLASS);
13261
- if (!isNullOrUndefined(virtual)) {
13262
- remove(virtual);
13263
- }
13264
- contentWrap.appendChild(wrap);
13265
- }
13380
+ var containerSize = this.isHorizontalScroll ? this.parent.element.clientWidth : this.parent.element.clientHeight;
13381
+ this.renderedLength = Math.ceil(containerSize / this.itemSize) + this.bufferCount;
13382
+ return this.renderedLength;
13266
13383
  };
13267
13384
  VirtualScroll.prototype.renderVirtualTrack = function (contentWrap) {
13268
13385
  var wrap = createElement('div', { className: VIRTUAL_TRACK_CLASS });
13269
- wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';
13386
+ if (this.isHorizontalScroll) {
13387
+ var colCount = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1].length;
13388
+ wrap.style.width = (colCount * this.itemSize) + 'px';
13389
+ }
13390
+ else {
13391
+ wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';
13392
+ }
13270
13393
  contentWrap.appendChild(wrap);
13271
13394
  };
13272
13395
  VirtualScroll.prototype.updateVirtualScrollHeight = function () {
@@ -13304,12 +13427,19 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13304
13427
  }
13305
13428
  };
13306
13429
  VirtualScroll.prototype.setItemSize = function () {
13307
- this.itemSize = getElementHeightFromClass(this.parent.activeView.element, WORK_CELLS_CLASS) || this.itemSize;
13430
+ if (this.isHorizontalScroll) {
13431
+ this.itemSize = getElementWidthFromClass(this.parent.activeView.element, WORK_CELLS_CLASS) || this.itemSize;
13432
+ }
13433
+ else {
13434
+ this.itemSize = getElementHeightFromClass(this.parent.activeView.element, WORK_CELLS_CLASS) || this.itemSize;
13435
+ }
13308
13436
  };
13309
13437
  VirtualScroll.prototype.renderEvents = function () {
13310
13438
  this.setTabIndex();
13311
13439
  this.parent.refreshEvents(false);
13312
- this.parent.notify(contentReady, {});
13440
+ if (this.parent.currentView !== 'Month') {
13441
+ this.parent.notify(contentReady, {});
13442
+ }
13313
13443
  this.parent.hideSpinner();
13314
13444
  };
13315
13445
  VirtualScroll.prototype.virtualScrolling = function () {
@@ -13318,31 +13448,64 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13318
13448
  this.parent.quickPopup.quickPopupHide();
13319
13449
  this.parent.quickPopup.morePopup.hide();
13320
13450
  }
13321
- var resWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
13322
13451
  var conWrap = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
13323
- var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
13324
- var timeIndicator = this.parent.element.querySelector('.' + CURRENT_TIMELINE_CLASS);
13325
- var conTable = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS);
13326
- this.renderedLength = resWrap.querySelector('tbody').children.length;
13327
- var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
13328
- var scrollHeight = this.parent.rowAutoHeight ?
13329
- (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;
13330
- addClass([conWrap], 'e-transition');
13452
+ if (this.isHorizontalScroll) {
13453
+ this.horizontalScrolling(conWrap);
13454
+ }
13455
+ else {
13456
+ var resWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
13457
+ var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
13458
+ var timeIndicator = this.parent.element.querySelector('.' + CURRENT_TIMELINE_CLASS);
13459
+ var conTable = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS);
13460
+ addClass([conWrap], 'e-transition');
13461
+ this.renderedLength = resWrap.querySelector('tbody').children.length;
13462
+ var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
13463
+ var scrollHeight = this.parent.rowAutoHeight ?
13464
+ (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;
13465
+ var resCollection = [];
13466
+ if ((conWrap.scrollTop) - this.translateY < 0) {
13467
+ resCollection = this.upScroll(conWrap, firstTDIndex);
13468
+ }
13469
+ else if (conWrap.scrollTop - this.translateY > scrollHeight) {
13470
+ resCollection = this.downScroll(conWrap, firstTDIndex);
13471
+ }
13472
+ if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
13473
+ this.parent.showSpinner();
13474
+ var selectedEle = this.parent.getSelectedElements();
13475
+ this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
13476
+ this.updateContent(resWrap, conWrap, eventWrap, resCollection);
13477
+ this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);
13478
+ if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {
13479
+ this.parent.dragAndDropModule.navigationWrapper();
13480
+ }
13481
+ window.clearTimeout(this.timeValue);
13482
+ this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
13483
+ }
13484
+ }
13485
+ };
13486
+ VirtualScroll.prototype.horizontalScrolling = function (conWrap) {
13487
+ var _this = this;
13331
13488
  var resCollection = [];
13332
- if ((conWrap.scrollTop) - this.translateY < 0) {
13333
- resCollection = this.upScroll(conWrap, firstTDIndex);
13489
+ var scrollWidth = this.bufferCount * this.itemSize;
13490
+ if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) < 0) {
13491
+ resCollection = this.leftScroll(conWrap);
13334
13492
  }
13335
- else if (conWrap.scrollTop - this.translateY > scrollHeight) {
13336
- resCollection = this.downScroll(conWrap, firstTDIndex);
13493
+ else if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) > scrollWidth) {
13494
+ resCollection = this.rightScroll(conWrap);
13337
13495
  }
13338
13496
  if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
13339
- this.parent.showSpinner();
13340
- var selectedEle = this.parent.getSelectedElements();
13341
- this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
13342
- this.updateContent(resWrap, conWrap, eventWrap, resCollection);
13343
- this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);
13344
- if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {
13345
- this.parent.dragAndDropModule.navigationWrapper();
13497
+ if (this.parent.resourceBase.expandedResources.length !== resCollection.length ||
13498
+ this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||
13499
+ this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==
13500
+ resCollection[resCollection.length - 1]) {
13501
+ this.parent.showSpinner();
13502
+ var colLevels = this.parent.activeView.colLevels.slice(0);
13503
+ this.updateHorizontalContent(conWrap, resCollection);
13504
+ setStyleAttribute(conWrap.querySelector('table'), { transform: "translateX(" + this.translateY + "px)" });
13505
+ this.parent.activeView.colLevels = colLevels;
13506
+ if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {
13507
+ this.parent.dragAndDropModule.navigationWrapper();
13508
+ }
13346
13509
  }
13347
13510
  window.clearTimeout(this.timeValue);
13348
13511
  this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
@@ -13388,6 +13551,87 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13388
13551
  this.translateY = conWrap.scrollTop;
13389
13552
  return nextSetCollection;
13390
13553
  };
13554
+ VirtualScroll.prototype.leftScroll = function (conWrap) {
13555
+ var index = 0;
13556
+ index = (~~(Math.abs(conWrap.scrollLeft) / this.itemSize) + Math.ceil(conWrap.clientWidth / this.itemSize)) - this.renderedLength;
13557
+ index = (index > 0) ? index : 0;
13558
+ return this.getCollection(index, index + this.renderedLength);
13559
+ };
13560
+ VirtualScroll.prototype.rightScroll = function (conWrap) {
13561
+ var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];
13562
+ var nextSetIndex = 0;
13563
+ nextSetIndex = ~~(Math.abs(conWrap.scrollLeft) / this.itemSize);
13564
+ var lastIndex = nextSetIndex + this.renderedLength;
13565
+ lastIndex = (lastIndex > lastLevel.length - 1) ? lastLevel.length - 1 : lastIndex;
13566
+ return this.getCollection(lastIndex - this.renderedLength, lastIndex);
13567
+ };
13568
+ VirtualScroll.prototype.getCollection = function (startIndex, endIndex) {
13569
+ this.translateY = startIndex * this.itemSize;
13570
+ var lastLevel = this.getResCollection(startIndex, endIndex);
13571
+ if (this.parent.enableRtl) {
13572
+ this.translateY = -this.translateY;
13573
+ }
13574
+ return lastLevel;
13575
+ };
13576
+ VirtualScroll.prototype.getResCollection = function (startIndex, endIndex) {
13577
+ var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];
13578
+ var resCollection = [];
13579
+ var index = { startIndex: 0, endIndex: 0 };
13580
+ if (this.parent.activeViewOptions.group.byDate) {
13581
+ if (lastLevel[startIndex].date.getTime() === this.parent.resourceBase.expandedResources[0].date.getTime() &&
13582
+ lastLevel[endIndex].date.getTime() ===
13583
+ this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].date.getTime()) {
13584
+ return this.parent.resourceBase.expandedResources;
13585
+ }
13586
+ resCollection = this.getByDateCollection(lastLevel[startIndex], lastLevel[endIndex], index);
13587
+ this.setRenderedDates(resCollection);
13588
+ }
13589
+ else {
13590
+ if (lastLevel[startIndex].groupIndex === this.parent.resourceBase.expandedResources[0].groupIndex &&
13591
+ lastLevel[endIndex].groupIndex ===
13592
+ this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex) {
13593
+ return this.parent.resourceBase.expandedResources;
13594
+ }
13595
+ resCollection = this.getByIdCollection(lastLevel[startIndex], lastLevel[endIndex], index);
13596
+ }
13597
+ if (this.parent.currentView !== 'Month') {
13598
+ this.startIndex = index.startIndex;
13599
+ resCollection = lastLevel.slice(index.startIndex, index.endIndex);
13600
+ }
13601
+ this.translateY = index.startIndex * this.itemSize;
13602
+ return resCollection;
13603
+ };
13604
+ VirtualScroll.prototype.getByDateCollection = function (firstItem, lastItem, index) {
13605
+ var resCollection = this.parent.activeView.colLevels[0].filter(function (data) {
13606
+ return firstItem.date.getTime() <= data.date.getTime() &&
13607
+ data.date.getTime() <= lastItem.date.getTime();
13608
+ });
13609
+ this.setStartEndIndex(this.parent.activeView.colLevels[0], resCollection[0], resCollection[resCollection.length - 1], index);
13610
+ return resCollection;
13611
+ };
13612
+ VirtualScroll.prototype.getByIdCollection = function (firstItem, lastItem, index) {
13613
+ var resCollection = this.parent.resourceBase.lastResourceLevel.filter(function (data) {
13614
+ return firstItem.groupIndex <= data.groupIndex && data.groupIndex <= lastItem.groupIndex;
13615
+ });
13616
+ this.parent.resourceBase.renderedResources = resCollection;
13617
+ this.setStartEndIndex(this.parent.resourceBase.lastResourceLevel, resCollection[0], resCollection[resCollection.length - 1], index);
13618
+ return resCollection;
13619
+ };
13620
+ VirtualScroll.prototype.setStartEndIndex = function (data, firstItem, lastItem, colIndex) {
13621
+ var index = 0;
13622
+ data.filter(function (data) {
13623
+ if (firstItem === data) {
13624
+ colIndex.startIndex = index;
13625
+ }
13626
+ else if (lastItem === data) {
13627
+ colIndex.endIndex = index + data.colSpan;
13628
+ }
13629
+ index += data.colSpan;
13630
+ });
13631
+ if (firstItem === lastItem) {
13632
+ colIndex.endIndex = colIndex.startIndex + lastItem.colSpan;
13633
+ }
13634
+ };
13391
13635
  VirtualScroll.prototype.updateContent = function (resWrap, conWrap, eventWrap, resCollection) {
13392
13636
  var renderedLength = resWrap.querySelector('tbody').children.length;
13393
13637
  if (document.activeElement && document.activeElement.classList.contains(RESOURCE_CELLS_CLASS)) {
@@ -13407,6 +13651,45 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13407
13651
  append(contentRows, conWrap.querySelector('tbody'));
13408
13652
  append(eventRows, eventWrap);
13409
13653
  };
13654
+ VirtualScroll.prototype.updateHorizontalContent = function (conWrap, resCollection) {
13655
+ this.parent.resourceBase.expandedResources = resCollection;
13656
+ var selectedEle = this.parent.getSelectedElements();
13657
+ this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
13658
+ var renderedLength = conWrap.querySelectorAll('tbody tr').length;
13659
+ for (var i = 0; i < renderedLength; i++) {
13660
+ remove(conWrap.querySelector('tbody tr'));
13661
+ }
13662
+ if (this.parent.currentView === 'Month') {
13663
+ if (this.parent.activeViewOptions.group.byDate) {
13664
+ this.parent.activeView.colLevels[0] = resCollection;
13665
+ }
13666
+ else {
13667
+ this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 2] = resCollection;
13668
+ }
13669
+ var contentRows = this.parent.activeView.getContentRows();
13670
+ append(contentRows, conWrap.querySelector('tbody'));
13671
+ }
13672
+ else {
13673
+ var col = [].slice.call(conWrap.querySelector('colgroup').children);
13674
+ for (var i = 0; i < col.length; i++) {
13675
+ remove(col[i]);
13676
+ }
13677
+ this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1] = resCollection;
13678
+ var contentRows = this.parent.activeView.getContentRows();
13679
+ var table = conWrap.querySelector('table');
13680
+ var thead = conWrap.querySelector('thead');
13681
+ var colGroupEle_1 = conWrap.querySelector('colgroup');
13682
+ resCollection.forEach(function () {
13683
+ colGroupEle_1.appendChild(createElement('col'));
13684
+ });
13685
+ thead.appendChild(this.parent.eventBase.createEventWrapper('', this.startIndex > 0 ? this.startIndex : 0));
13686
+ if (this.parent.activeViewOptions.timeScale.enable) {
13687
+ thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));
13688
+ }
13689
+ prepend([thead], table);
13690
+ append(contentRows, conWrap.querySelector('tbody'));
13691
+ }
13692
+ };
13410
13693
  VirtualScroll.prototype.getBufferCollection = function (startIndex, endIndex) {
13411
13694
  return this.parent.resourceBase.expandedResources.slice(startIndex, endIndex);
13412
13695
  };
@@ -13429,6 +13712,17 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13429
13712
  this.focusedEle = null;
13430
13713
  }
13431
13714
  };
13715
+ VirtualScroll.prototype.setRenderedDates = function (resCollection) {
13716
+ if (this.parent.currentView !== 'Month') {
13717
+ var dateCol_1 = resCollection.map(function (x) { return x.date; });
13718
+ this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = dateCol_1; });
13719
+ }
13720
+ else {
13721
+ var dateCol_2 = resCollection.map(function (x) { return x.date.getDay(); });
13722
+ var renderDates_1 = this.parent.activeView.renderDates.filter(function (x) { return dateCol_2.indexOf(x.getDay()) >= 0; });
13723
+ this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = renderDates_1; });
13724
+ }
13725
+ };
13432
13726
  VirtualScroll.prototype.setTabIndex = function () {
13433
13727
  var resColWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
13434
13728
  var resCells = [].slice.call(this.parent.element.querySelectorAll('.' + RESOURCE_CELLS_CLASS));
@@ -13447,6 +13741,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13447
13741
  };
13448
13742
  VirtualScroll.prototype.destroy = function () {
13449
13743
  this.removeEventListener();
13744
+ this.focusedEle = null;
13450
13745
  };
13451
13746
  return VirtualScroll;
13452
13747
  }());
@@ -13540,12 +13835,18 @@ var Render = /** @__PURE__ @class */ (function () {
13540
13835
  this.parent.virtualScrollModule.destroy();
13541
13836
  this.parent.virtualScrollModule = null;
13542
13837
  }
13543
- if (this.parent.currentView.indexOf('Timeline') !== -1 && (this.parent.currentView.indexOf('Year') === -1 ||
13838
+ if ((['Agenda', 'Year'].indexOf(this.parent.currentView) === -1 ||
13544
13839
  (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical'))
13545
13840
  && this.parent.activeViewOptions.allowVirtualScrolling
13546
13841
  && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
13547
13842
  this.parent.virtualScrollModule = new VirtualScroll(this.parent);
13548
- this.parent.uiStateValues.top = 0;
13843
+ if (this.parent.activeView.isTimelineView()) {
13844
+ this.parent.uiStateValues.top = 0;
13845
+ }
13846
+ else {
13847
+ this.parent.virtualScrollModule.isHorizontalScroll = true;
13848
+ this.parent.uiStateValues.left = 0;
13849
+ }
13549
13850
  }
13550
13851
  this.updateHeader();
13551
13852
  this.parent.activeView.renderLayout(CURRENT_PANEL_CLASS);
@@ -13840,8 +14141,7 @@ var Crud = /** @__PURE__ @class */ (function () {
13840
14141
  if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element) {
13841
14142
  this.parent.resizeModule.actionObj.element.style.display = 'none';
13842
14143
  }
13843
- if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.activeViewOptions.group.allowGroupEdit
13844
- && !this.parent.rowAutoHeight && !this.parent.virtualScrollModule && this.parent.activeViewOptions.group.byGroupID) {
14144
+ if (this.parent.isSpecificResourceEvents()) {
13845
14145
  if (args.requestType === 'eventCreated' || args.requestType === 'eventRemoved') {
13846
14146
  this.crudObj.isCrudAction = true;
13847
14147
  this.crudObj.sourceEvent = [];
@@ -17138,6 +17438,16 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17138
17438
  append(indentTemplate, td);
17139
17439
  }
17140
17440
  };
17441
+ /**
17442
+ * Method to check for refreshing the targeted resource row events.
17443
+ *
17444
+ * @returns {boolean} Returns the boolean value
17445
+ * @private
17446
+ */
17447
+ Schedule.prototype.isSpecificResourceEvents = function () {
17448
+ return this.activeViewOptions.group.resources.length > 0 && !this.activeViewOptions.group.allowGroupEdit &&
17449
+ !this.rowAutoHeight && !this.virtualScrollModule && this.activeViewOptions.group.byGroupID;
17450
+ };
17141
17451
  Schedule.prototype.unWireEvents = function () {
17142
17452
  EventHandler.remove(window, 'resize', this.onScheduleResize);
17143
17453
  EventHandler.remove(window, 'orientationchange', this.onScheduleResize);
@@ -18411,10 +18721,6 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18411
18721
  this.hideSpinner();
18412
18722
  this.unWireEvents();
18413
18723
  this.destroyHeaderModule();
18414
- if (this.eventTooltip) {
18415
- this.eventTooltip.destroy();
18416
- this.eventTooltip = null;
18417
- }
18418
18724
  if (this.eventBase) {
18419
18725
  this.eventBase.destroy();
18420
18726
  this.eventBase = null;
@@ -18488,6 +18794,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18488
18794
  __decorate([
18489
18795
  Property(true)
18490
18796
  ], Schedule.prototype, "showTimeIndicator", void 0);
18797
+ __decorate([
18798
+ Property(true)
18799
+ ], Schedule.prototype, "allowSwiping", void 0);
18491
18800
  __decorate([
18492
18801
  Property('Week')
18493
18802
  ], Schedule.prototype, "currentView", void 0);
@@ -18814,7 +19123,7 @@ var ActionBase = /** @__PURE__ @class */ (function () {
18814
19123
  var viewElement = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
18815
19124
  var trElement = [].slice.call(viewElement.querySelector('tr').children);
18816
19125
  if (!this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0 &&
18817
- !this.parent.isAdaptive && !this.parent.enableAdaptiveUI) {
19126
+ !this.parent.isAdaptive && !this.parent.enableAdaptiveUI && !this.parent.virtualScrollModule) {
18818
19127
  trElement = this.getResourceElements(trElement);
18819
19128
  }
18820
19129
  var leftOffset = trElement[0].getBoundingClientRect();
@@ -18910,7 +19219,7 @@ var ActionBase = /** @__PURE__ @class */ (function () {
18910
19219
  var originalElement;
18911
19220
  var guid = element.getAttribute('data-guid');
18912
19221
  var isMorePopup = element.offsetParent && element.offsetParent.classList.contains(MORE_EVENT_POPUP_CLASS);
18913
- if (isMorePopup || this.parent.activeView.isTimelineView()) {
19222
+ if (isMorePopup || this.parent.activeView.isTimelineView() || (this.actionObj.action !== 'resize' && this.parent.virtualScrollModule)) {
18914
19223
  originalElement = [].slice.call(this.parent.element.querySelectorAll('[data-guid="' + guid + '"]'));
18915
19224
  }
18916
19225
  else {
@@ -19129,7 +19438,9 @@ var ActionBase = /** @__PURE__ @class */ (function () {
19129
19438
  var workDays = this.parent.activeViewOptions.workDays;
19130
19439
  var groupOrder;
19131
19440
  if (this.parent.activeViewOptions.group.resources.length > 0) {
19132
- var resources = this.parent.resourceBase.lastResourceLevel.
19441
+ var renderedResource = this.parent.virtualScrollModule && this.parent.virtualScrollModule.isHorizontalScroll ?
19442
+ this.parent.resourceBase.renderedResources : this.parent.resourceBase.lastResourceLevel;
19443
+ var resources = renderedResource.
19133
19444
  filter(function (res) { return res.groupIndex === _this.actionObj.groupIndex; });
19134
19445
  dateRender = resources[0].renderDates;
19135
19446
  var elementSelector = "." + WORK_CELLS_CLASS + "[data-group-index=\"" + this.actionObj.groupIndex + "\"]";
@@ -19481,9 +19792,7 @@ var Resize = /** @__PURE__ @class */ (function (_super) {
19481
19792
  if (resizeEventArgs.cancel) {
19482
19793
  return;
19483
19794
  }
19484
- if (_this.parent.activeViewOptions.group.resources.length > 0 && !_this.parent.rowAutoHeight
19485
- && !_this.parent.activeViewOptions.group.allowGroupEdit && !_this.parent.virtualScrollModule
19486
- && _this.parent.activeViewOptions.group.byGroupID) {
19795
+ if (_this.parent.isSpecificResourceEvents()) {
19487
19796
  _this.parent.crudModule.crudObj.sourceEvent =
19488
19797
  [_this.parent.resourceBase.lastResourceLevel[parseInt(resizeEventArgs.element.getAttribute('data-group-index'), 10)]];
19489
19798
  _this.parent.crudModule.crudObj.targetEvent = _this.parent.crudModule.crudObj.sourceEvent;
@@ -20121,7 +20430,7 @@ var YearEvent = /** @__PURE__ @class */ (function (_super) {
20121
20430
  'data-id': 'Appointment_' + record[this.fields.id],
20122
20431
  'data-guid': record.Guid,
20123
20432
  'role': 'button', 'tabindex': '0',
20124
- 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false', 'aria-grabbed': 'true',
20433
+ 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false',
20125
20434
  'aria-label': this.parent.getAnnouncementString(record)
20126
20435
  }
20127
20436
  });
@@ -20644,7 +20953,6 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20644
20953
  this.actionObj.scrollInterval = null;
20645
20954
  this.actionClass('removeClass');
20646
20955
  this.parent.uiStateValues.action = false;
20647
- this.actionObj.action = null;
20648
20956
  if (this.isAllowDrop(e)) {
20649
20957
  return;
20650
20958
  }
@@ -20654,12 +20962,12 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20654
20962
  cancel: false, data: this.getChangedData(this.updatedData), selectedData: this.updatedData,
20655
20963
  event: e, element: this.actionObj.element, target: target
20656
20964
  };
20965
+ this.actionObj.action = null;
20657
20966
  this.parent.trigger(dragStop, dragArgs, function (dragEventArgs) {
20658
20967
  if (dragEventArgs.cancel) {
20659
20968
  return;
20660
20969
  }
20661
- if (_this.parent.activeViewOptions.group.resources.length > 0 && !_this.parent.activeViewOptions.group.allowGroupEdit
20662
- && !_this.parent.rowAutoHeight && !_this.parent.virtualScrollModule && _this.parent.activeViewOptions.group.byGroupID) {
20970
+ if (_this.parent.isSpecificResourceEvents()) {
20663
20971
  _this.parent.crudModule.crudObj.isCrudAction = true;
20664
20972
  _this.parent.crudModule.crudObj.sourceEvent =
20665
20973
  [_this.parent.resourceBase.lastResourceLevel[parseInt(dragArgs.element.getAttribute('data-group-index'), 10)]];
@@ -20899,7 +21207,9 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20899
21207
  this.actionObj.clone.classList.contains(ALLDAY_APPOINTMENT_CLASS)) {
20900
21208
  dragEnd = addDays(resetTime(dragEnd), 1);
20901
21209
  }
20902
- this.updateAllDayEvents(dragStart$$1, dragEnd, this.parent.activeViewOptions.group.byDate ? colIndex : undefined);
21210
+ var index_1 = this.parent.activeViewOptions.group.byDate || (this.parent.virtualScrollModule &&
21211
+ !this.parent.activeViewOptions.timeScale.enable) ? colIndex : undefined;
21212
+ this.updateAllDayEvents(dragStart$$1, dragEnd, index_1);
20903
21213
  }
20904
21214
  this.actionObj.start = new Date(+dragStart$$1);
20905
21215
  this.actionObj.end = new Date(+dragEnd);
@@ -20933,17 +21243,17 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20933
21243
  this.startTime = eventObj_1[this.parent.eventFields.startTime].getTime();
20934
21244
  }
20935
21245
  var startTimeDiff = event[this.parent.eventFields.startTime].getTime() - this.startTime;
20936
- for (var index_1 = 0; index_1 < this.multiData.length; index_1++) {
20937
- this.updatedData[index_1] = this.updateMultipleData(this.multiData[index_1], startTimeDiff);
20938
- var dayIndex = this.getDayIndex(this.updatedData[index_1]);
21246
+ for (var index_2 = 0; index_2 < this.multiData.length; index_2++) {
21247
+ this.updatedData[index_2] = this.updateMultipleData(this.multiData[index_2], startTimeDiff);
21248
+ var dayIndex = this.getDayIndex(this.updatedData[index_2]);
20939
21249
  if (dayIndex >= 0) {
20940
- var wrapper = this.getEventWrapper(dayIndex, this.updatedData[index_1][this.parent.eventFields.isAllDay]);
20941
- this.appendCloneElement(wrapper, this.actionObj.cloneElement[index_1]);
20942
- this.updateEventHeight(this.updatedData[index_1], index_1, dayIndex);
21250
+ var wrapper = this.getEventWrapper(dayIndex, this.updatedData[index_2][this.parent.eventFields.isAllDay]);
21251
+ this.appendCloneElement(wrapper, this.actionObj.cloneElement[index_2]);
21252
+ this.updateEventHeight(this.updatedData[index_2], index_2, dayIndex);
20943
21253
  }
20944
21254
  else {
20945
- if (!isNullOrUndefined(this.actionObj.cloneElement[index_1].parentNode)) {
20946
- remove(this.actionObj.cloneElement[index_1]);
21255
+ if (!isNullOrUndefined(this.actionObj.cloneElement[index_2].parentNode)) {
21256
+ remove(this.actionObj.cloneElement[index_2]);
20947
21257
  }
20948
21258
  }
20949
21259
  }
@@ -21025,10 +21335,12 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
21025
21335
  };
21026
21336
  DragAndDrop.prototype.updateEventHeight = function (event, index, colIndex) {
21027
21337
  this.verticalEvent.initializeValues();
21028
- var datesCount = 0;
21338
+ var datesCount = this.verticalEvent.getStartCount();
21029
21339
  if (!this.parent.uiStateValues.isGroupAdaptive) {
21030
21340
  for (var i = 0; i < this.actionObj.groupIndex; i++) {
21031
- datesCount = datesCount + this.verticalEvent.dateRender[i].length;
21341
+ if (this.verticalEvent.dateRender[i]) {
21342
+ datesCount = datesCount + this.verticalEvent.dateRender[i].length;
21343
+ }
21032
21344
  }
21033
21345
  }
21034
21346
  var indexGroup = this.parent.uiStateValues.isGroupAdaptive ? datesCount : this.actionObj.groupIndex;
@@ -21648,11 +21960,15 @@ var ViewBase = /** @__PURE__ @class */ (function () {
21648
21960
  };
21649
21961
  ViewBase.prototype.createTableLayout = function (className) {
21650
21962
  var clsName = className || '';
21651
- var table = createElement('table', { className: SCHEDULE_TABLE_CLASS + ' ' + clsName, attrs: { role: 'table' } });
21963
+ var table = createElement('table', { className: SCHEDULE_TABLE_CLASS + ' ' + clsName });
21652
21964
  var tbody = createElement('tbody');
21653
21965
  table.appendChild(tbody);
21654
21966
  return table;
21655
21967
  };
21968
+ ViewBase.prototype.setAriaAttributes = function (table) {
21969
+ table.setAttribute('role', 'grid');
21970
+ table.setAttribute('aria-label', this.getLabelText(this.parent.currentView));
21971
+ };
21656
21972
  ViewBase.prototype.createColGroup = function (table, lastRow) {
21657
21973
  var length = lastRow.length;
21658
21974
  if (lastRow[0] && lastRow[0].colSpan) {
@@ -22117,6 +22433,32 @@ var ViewBase = /** @__PURE__ @class */ (function () {
22117
22433
  }
22118
22434
  return null;
22119
22435
  };
22436
+ ViewBase.prototype.resetColLevels = function () {
22437
+ this.parent.resourceBase.expandedResources = [];
22438
+ var renderedCount = this.parent.virtualScrollModule.getRenderedCount();
22439
+ var lastLevel = this.parent.activeViewOptions.group.byDate ? this.colLevels[0] :
22440
+ this.parent.resourceBase.renderedResources;
22441
+ var index = 0;
22442
+ for (var i = 0; i < lastLevel.length; i++) {
22443
+ if (index >= renderedCount) {
22444
+ break;
22445
+ }
22446
+ index += lastLevel[i].colSpan;
22447
+ this.parent.resourceBase.expandedResources.push(lastLevel[i]);
22448
+ }
22449
+ if (this.parent.activeViewOptions.group.byDate) {
22450
+ this.colLevels[0] = this.parent.resourceBase.expandedResources;
22451
+ this.parent.virtualScrollModule.setRenderedDates(this.parent.resourceBase.expandedResources);
22452
+ }
22453
+ else {
22454
+ this.colLevels[this.colLevels.length - 2] = this.parent.resourceBase.expandedResources;
22455
+ this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources;
22456
+ }
22457
+ if (this.parent.currentView !== 'Month') {
22458
+ this.colLevels[this.colLevels.length - 1] = this.colLevels[this.colLevels.length - 1].slice(0, index);
22459
+ this.parent.resourceBase.expandedResources = this.colLevels[this.colLevels.length - 1];
22460
+ }
22461
+ };
22120
22462
  ViewBase.prototype.destroy = function () {
22121
22463
  if (this.element && this.element.parentNode) {
22122
22464
  remove(this.element);
@@ -22381,15 +22723,27 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22381
22723
  if (!isNullOrUndefined(this.parent.resourceBase) && (this.parent.activeViewOptions.group.resources.length > 0) &&
22382
22724
  !this.parent.uiStateValues.isGroupAdaptive) {
22383
22725
  var count = 0;
22384
- for (var _i = 0, _a = this.parent.resourceBase.lastResourceLevel; _i < _a.length; _i++) {
22385
- var resource = _a[_i];
22386
- var index = this.parent.getIndexOfDate(resource.renderDates, resetTime(this.parent.getCurrentTime()));
22387
- if (index >= 0) {
22388
- var resIndex = this.parent.activeViewOptions.group.byDate ?
22389
- (this.parent.resourceBase.lastResourceLevel.length * index) + count : count + index;
22390
- currentDateIndex.push(resIndex);
22726
+ if (this.parent.virtualScrollModule && this.parent.activeViewOptions.allowVirtualScrolling &&
22727
+ this.parent.activeViewOptions.group.byDate) {
22728
+ for (var _i = 0, _a = this.parent.resourceBase.expandedResources; _i < _a.length; _i++) {
22729
+ var resource = _a[_i];
22730
+ if (resetTime(resource.date).getTime() === resetTime(this.parent.getCurrentTime()).getTime()) {
22731
+ currentDateIndex.push(count);
22732
+ }
22733
+ count += 1;
22734
+ }
22735
+ }
22736
+ else {
22737
+ for (var _b = 0, _c = this.parent.resourceBase.renderedResources; _b < _c.length; _b++) {
22738
+ var resource = _c[_b];
22739
+ var index = this.parent.getIndexOfDate(resource.renderDates, resetTime(this.parent.getCurrentTime()));
22740
+ if (index >= 0) {
22741
+ var resIndex = this.parent.activeViewOptions.group.byDate ?
22742
+ (this.parent.resourceBase.lastResourceLevel.length * index) + count : count + index;
22743
+ currentDateIndex.push(resIndex);
22744
+ }
22745
+ count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;
22391
22746
  }
22392
- count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;
22393
22747
  }
22394
22748
  }
22395
22749
  else {
@@ -22535,7 +22889,7 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22535
22889
  if (!this.parent.activeViewOptions.timeScale.enable) {
22536
22890
  addClass([this.element], [TIMESCALE_DISABLE, this.viewClass]);
22537
22891
  }
22538
- if (this.parent.activeViewOptions.allowVirtualScrolling) {
22892
+ if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {
22539
22893
  clsList.push(VIRTUAL_SCROLL_CLASS);
22540
22894
  }
22541
22895
  if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {
@@ -22566,6 +22920,9 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22566
22920
  prepend([tr], this.element.querySelector('tbody'));
22567
22921
  };
22568
22922
  VerticalView.prototype.renderContent = function () {
22923
+ if (this.parent.activeViewOptions.group.resources.length > 0) {
22924
+ this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);
22925
+ }
22569
22926
  var tr = createElement('tr');
22570
22927
  var workTd = createElement('td');
22571
22928
  if (this.parent.isAdaptive) {
@@ -22581,13 +22938,22 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22581
22938
  tr.appendChild(workTd);
22582
22939
  }
22583
22940
  else {
22584
- workTd.appendChild(this.renderContentArea());
22941
+ var levels = this.colLevels.slice(0);
22942
+ if (this.parent.virtualScrollModule) {
22943
+ this.resetColLevels();
22944
+ }
22945
+ var wrap = this.renderContentArea();
22946
+ workTd.appendChild(wrap);
22585
22947
  if (this.parent.activeViewOptions.timeScale.enable) {
22586
22948
  var timesTd = createElement('td');
22587
22949
  timesTd.appendChild(this.renderTimeCells());
22588
22950
  tr.appendChild(timesTd);
22589
22951
  }
22590
22952
  tr.appendChild(workTd);
22953
+ if (this.parent.virtualScrollModule) {
22954
+ this.colLevels = levels;
22955
+ this.parent.virtualScrollModule.renderVirtualTrack(wrap);
22956
+ }
22591
22957
  }
22592
22958
  this.element.querySelector('tbody').appendChild(tr);
22593
22959
  };
@@ -22659,7 +23025,6 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22659
23025
  td.className = [ALLDAY_CELLS_CLASS];
22660
23026
  td.type = 'alldayCells';
22661
23027
  var ntd = this.createTd(td);
22662
- ntd.setAttribute('role', 'gridcell');
22663
23028
  ntd.setAttribute('data-date', td.date.getTime().toString());
22664
23029
  if (!isNullOrUndefined(td.groupIndex)) {
22665
23030
  ntd.setAttribute('data-group-index', '' + td.groupIndex);
@@ -22672,7 +23037,7 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22672
23037
  }
22673
23038
  table.querySelector('tbody').appendChild(ntr);
22674
23039
  var thead = createElement('thead');
22675
- thead.appendChild(this.createEventWrapper('allDay'));
23040
+ thead.appendChild(this.parent.eventBase.createEventWrapper('allDay'));
22676
23041
  prepend([thead], table);
22677
23042
  };
22678
23043
  VerticalView.prototype.createTd = function (td) {
@@ -22692,7 +23057,6 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22692
23057
  }
22693
23058
  if (td.type === 'dateHeader' && td.className.indexOf(HEADER_CELLS_CLASS) >= 0) {
22694
23059
  tdEle.setAttribute('data-date', td.date.getTime().toString());
22695
- tdEle.setAttribute('role', 'gridcell');
22696
23060
  if (!isNullOrUndefined(td.groupIndex)) {
22697
23061
  tdEle.setAttribute('data-group-index', '' + td.groupIndex);
22698
23062
  }
@@ -22733,6 +23097,7 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22733
23097
  VerticalView.prototype.renderContentArea = function () {
22734
23098
  var wrap = createElement('div', { className: CONTENT_WRAP_CLASS });
22735
23099
  var tbl = this.createTableLayout(CONTENT_TABLE_CLASS);
23100
+ this.setAriaAttributes(tbl);
22736
23101
  this.addAutoHeightClass(tbl);
22737
23102
  this.renderContentTable(tbl);
22738
23103
  this.createColGroup(tbl, this.colLevels.slice(-1)[0]);
@@ -22743,10 +23108,15 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22743
23108
  return wrap;
22744
23109
  };
22745
23110
  VerticalView.prototype.renderContentTable = function (table) {
23111
+ var tBody = table.querySelector('tbody');
23112
+ append(this.getContentRows(), tBody);
23113
+ this.renderContentTableHeader(table);
23114
+ };
23115
+ VerticalView.prototype.getContentRows = function () {
22746
23116
  var _this = this;
22747
- var tr = createElement('tr', { attrs: { role: 'row' } });
22748
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
22749
- var tbody = table.querySelector('tbody');
23117
+ var rows = [];
23118
+ var tr = createElement('tr');
23119
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
22750
23120
  var handler = function (r) {
22751
23121
  var ntr = tr.cloneNode();
22752
23122
  for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {
@@ -22754,11 +23124,11 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22754
23124
  var ntd = _this.createContentTd(tdData, r, td);
22755
23125
  ntr.appendChild(ntd);
22756
23126
  }
22757
- tbody.appendChild(ntr);
23127
+ rows.push(ntr);
22758
23128
  return r;
22759
23129
  };
22760
23130
  this.getTimeSlotRows(handler);
22761
- this.renderContentTableHeader(table);
23131
+ return rows;
22762
23132
  };
22763
23133
  VerticalView.prototype.createContentTd = function (tdData, r, td) {
22764
23134
  var ntd = td.cloneNode();
@@ -22805,36 +23175,12 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22805
23175
  };
22806
23176
  VerticalView.prototype.renderContentTableHeader = function (table) {
22807
23177
  var thead = createElement('thead');
22808
- thead.appendChild(this.createEventWrapper());
23178
+ thead.appendChild(this.parent.eventBase.createEventWrapper());
22809
23179
  if (this.parent.activeViewOptions.timeScale.enable) {
22810
- thead.appendChild(this.createEventWrapper('timeIndicator'));
23180
+ thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));
22811
23181
  }
22812
23182
  prepend([thead], table);
22813
23183
  };
22814
- VerticalView.prototype.createEventWrapper = function (type) {
22815
- if (type === void 0) { type = ''; }
22816
- var tr = createElement('tr');
22817
- var levels = this.colLevels.slice(-1)[0];
22818
- for (var i = 0, len = levels.length; i < len; i++) {
22819
- var col = levels[i];
22820
- var appointmentWrap = createElement('td', {
22821
- className: (type === 'allDay') ? ALLDAY_APPOINTMENT_WRAPPER_CLASS : (type === 'timeIndicator') ?
22822
- TIMELINE_WRAPPER_CLASS : DAY_WRAPPER_CLASS, attrs: { 'data-date': col.date.getTime().toString() }
22823
- });
22824
- if (!isNullOrUndefined(col.groupIndex)) {
22825
- appointmentWrap.setAttribute('data-group-index', col.groupIndex.toString());
22826
- }
22827
- if (type === '') {
22828
- var innerWrapper = createElement('div', {
22829
- id: APPOINTMENT_WRAPPER_CLASS + '-' + i.toString(),
22830
- className: APPOINTMENT_WRAPPER_CLASS
22831
- });
22832
- appointmentWrap.appendChild(innerWrapper);
22833
- }
22834
- tr.appendChild(appointmentWrap);
22835
- }
22836
- return tr;
22837
- };
22838
23184
  VerticalView.prototype.getScrollableElement = function () {
22839
23185
  if (this.parent.isAdaptive && !this.isTimelineView()) {
22840
23186
  return this.element.querySelector('.' + SCROLL_CONTAINER_CLASS);
@@ -23250,7 +23596,7 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23250
23596
  if (this.parent.activeViewOptions.group.byDate) {
23251
23597
  clsList.push('e-by-date');
23252
23598
  }
23253
- if (this.parent.activeViewOptions.allowVirtualScrolling) {
23599
+ if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {
23254
23600
  clsList.push(VIRTUAL_SCROLL_CLASS);
23255
23601
  }
23256
23602
  if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {
@@ -23298,11 +23644,18 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23298
23644
  }
23299
23645
  };
23300
23646
  Month.prototype.renderContent = function () {
23647
+ if (this.parent.activeViewOptions.group.resources.length > 0) {
23648
+ this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);
23649
+ }
23301
23650
  var tr = createElement('tr');
23302
23651
  if (this.parent.activeViewOptions.showWeekNumber) {
23303
23652
  tr.appendChild(this.renderWeekNumberContent());
23304
23653
  }
23305
23654
  var workTd = createElement('td');
23655
+ var levels = this.colLevels.slice(0);
23656
+ if (this.parent.virtualScrollModule) {
23657
+ this.resetColLevels();
23658
+ }
23306
23659
  var wrap = createElement('div', { className: CONTENT_WRAP_CLASS });
23307
23660
  var contentArea = this.renderContentArea();
23308
23661
  if (this.parent.currentView === 'Month') {
@@ -23316,6 +23669,10 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23316
23669
  EventHandler.add(wrap, 'scroll', this.onContentScroll, this);
23317
23670
  workTd.appendChild(wrap);
23318
23671
  tr.appendChild(workTd);
23672
+ if (this.parent.virtualScrollModule) {
23673
+ this.colLevels = levels;
23674
+ this.parent.virtualScrollModule.renderVirtualTrack(wrap);
23675
+ }
23319
23676
  this.element.querySelector('tbody').appendChild(tr);
23320
23677
  this.renderAppointmentContainer();
23321
23678
  };
@@ -23343,6 +23700,11 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23343
23700
  var wrap = createElement('div', { className: DATE_HEADER_WRAP_CLASS });
23344
23701
  container.appendChild(wrap);
23345
23702
  var table = this.createTableLayout();
23703
+ if (this.parent.currentView === 'Month') {
23704
+ var thead = createElement('thead');
23705
+ thead.appendChild(createElement('tr'));
23706
+ prepend([thead], table);
23707
+ }
23346
23708
  this.createColGroup(table, this.colLevels[this.colLevels.length - 1]);
23347
23709
  var trEle = createElement('tr');
23348
23710
  for (var i = 0; i < this.colLevels.length; i++) {
@@ -23432,10 +23794,12 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23432
23794
  var dates = this.renderDates.map(function (date) { return new Date(+date); });
23433
23795
  var count = this.parent.activeViewOptions.showWeekend ? WEEK_LENGTH :
23434
23796
  this.parent.activeViewOptions.workDays.length;
23797
+ var level = this.colLevels.slice(0, 1)[0];
23798
+ var startIndex = this.renderDates.map(Number).indexOf(+level[0].date);
23435
23799
  for (var i = 0; i < (this.renderDates.length / count); i++) {
23436
23800
  var colDates = dates.splice(0, count);
23437
- for (var _c = 0, colDates_2 = colDates; _c < colDates_2.length; _c++) {
23438
- var colDate = colDates_2[_c];
23801
+ for (var j = startIndex; j < (this.colLevels[0].length + startIndex) && j < colDates.length; j++) {
23802
+ var colDate = colDates[j];
23439
23803
  if (includeResource) {
23440
23804
  var lastRow = this.colLevels[(this.colLevels.length - 1)];
23441
23805
  var resourcesTd = lastRow.slice(0, lastRow.length / count);
@@ -23471,6 +23835,7 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23471
23835
  };
23472
23836
  Month.prototype.renderContentArea = function () {
23473
23837
  var tbl = this.createTableLayout(CONTENT_TABLE_CLASS);
23838
+ this.setAriaAttributes(tbl);
23474
23839
  this.addAutoHeightClass(tbl);
23475
23840
  if (this.parent.currentView === 'TimelineMonth') {
23476
23841
  this.createColGroup(tbl, this.colLevels[this.colLevels.length - 1]);
@@ -23487,8 +23852,8 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23487
23852
  };
23488
23853
  Month.prototype.getContentRows = function () {
23489
23854
  var trows = [];
23490
- var tr = createElement('tr', { attrs: { role: 'row' } });
23491
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
23855
+ var tr = createElement('tr');
23856
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
23492
23857
  var slotDatas = this.getContentSlots();
23493
23858
  for (var row = 0; row < slotDatas.length; row++) {
23494
23859
  var ntr = tr.cloneNode();
@@ -23778,7 +24143,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23778
24143
  this.generateColumnLevels();
23779
24144
  this.renderResourceMobileLayout();
23780
24145
  }
23781
- this.wireEvents(this.element.querySelector('.' + CONTENT_WRAP_CLASS), 'scroll');
24146
+ EventHandler.add(this.element.querySelector('.' + CONTENT_WRAP_CLASS), 'scroll', this.onContentScroll, this);
23782
24147
  this.parent.notify(contentReady, {});
23783
24148
  };
23784
24149
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -23814,7 +24179,14 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23814
24179
  };
23815
24180
  Year.prototype.renderCalendarHeader = function (currentDate) {
23816
24181
  var headerWrapper = createElement('div', { className: 'e-header e-month' });
23817
- var headerContent = createElement('div', { className: 'e-day e-title', innerHTML: this.getMonthName(currentDate) });
24182
+ var headerContent = createElement('div', { className: 'e-day e-title' });
24183
+ if (this.parent.monthHeaderTemplate) {
24184
+ var args = { date: currentDate, type: 'monthHeader' };
24185
+ this.renderTemplates(this.parent.getMonthHeaderTemplate(), args, 'monthHeaderTemplate', this.parent.activeViewOptions.monthHeaderTemplateName, headerContent);
24186
+ }
24187
+ else {
24188
+ headerContent.innerHTML = this.getMonthName(currentDate);
24189
+ }
23818
24190
  headerWrapper.appendChild(headerContent);
23819
24191
  this.parent.trigger(renderCell, { elementType: 'headerCells', element: headerContent, date: currentDate });
23820
24192
  return headerWrapper;
@@ -23824,6 +24196,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23824
24196
  var contentWrapper = createElement('div', { className: 'e-content e-month' });
23825
24197
  var contentTable = this.createTableLayout('e-calendar-table ' + CONTENT_TABLE_CLASS);
23826
24198
  contentWrapper.appendChild(contentTable);
24199
+ this.setAriaAttributes(contentTable);
23827
24200
  var thead = createElement('thead', { className: 'e-week-header' });
23828
24201
  var tr = createElement('tr');
23829
24202
  var currentWeek = getWeekFirstDate(firstDateOfMonth(currentDate), this.parent.firstDayOfWeek);
@@ -23831,7 +24204,15 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23831
24204
  tr.appendChild(createElement('th'));
23832
24205
  }
23833
24206
  for (var i = 0; i < WEEK_LENGTH; i++) {
23834
- tr.appendChild(createElement('th', { innerHTML: this.parent.getDayNames('narrow')[currentWeek.getDay()] }));
24207
+ if (this.parent.dayHeaderTemplate) {
24208
+ var th = createElement('th');
24209
+ var args = { date: currentWeek, type: 'dayHeader' };
24210
+ this.renderTemplates(this.parent.getDayHeaderTemplate(), args, 'dayHeaderTemplate', this.parent.activeViewOptions.dayHeaderTemplateName, th);
24211
+ tr.appendChild(th);
24212
+ }
24213
+ else {
24214
+ tr.appendChild(createElement('th', { innerHTML: this.parent.getDayNames('narrow')[currentWeek.getDay()] }));
24215
+ }
23835
24216
  currentWeek = new Date(currentWeek.getTime() + MS_PER_DAY);
23836
24217
  }
23837
24218
  thead.appendChild(tr);
@@ -23839,12 +24220,12 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23839
24220
  var tbody = contentTable.querySelector('tbody');
23840
24221
  while (dateCollection.length > 0) {
23841
24222
  var weekDates = dateCollection.splice(0, WEEK_LENGTH);
23842
- var tr_1 = createElement('tr', { attrs: { 'role': 'row' } });
24223
+ var tr_1 = createElement('tr');
23843
24224
  if (this.parent.activeViewOptions.showWeekNumber) {
23844
24225
  var weekNumber = this.parent.getWeekNumberContent(weekDates);
23845
24226
  var td = createElement('td', {
23846
24227
  className: 'e-week-number',
23847
- attrs: { 'role': 'gridcell', 'title': this.parent.localeObj.getConstant('week') + ' ' + weekNumber },
24228
+ attrs: { 'title': this.parent.localeObj.getConstant('week') + ' ' + weekNumber },
23848
24229
  innerHTML: weekNumber
23849
24230
  });
23850
24231
  tr_1.appendChild(td);
@@ -23854,13 +24235,23 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23854
24235
  var date = weekDates_1[_i];
23855
24236
  var td = createElement('td', {
23856
24237
  className: 'e-cell ' + WORK_CELLS_CLASS,
23857
- attrs: { 'role': 'gridcell', 'aria-selected': 'false', 'data-date': date.getTime().toString() }
24238
+ attrs: { 'aria-selected': 'false', 'data-date': date.getTime().toString() }
23858
24239
  });
23859
- var span = createElement('span', {
23860
- className: 'e-day', innerHTML: this.parent.globalize.formatDate(date, { skeleton: 'd', calendar: this.parent.getCalendarMode() }),
23861
- attrs: { title: this.parent.globalize.formatDate(date, { type: 'date', skeleton: 'full' }) }
23862
- });
23863
- td.appendChild(span);
24240
+ if (this.parent.activeViewOptions.cellHeaderTemplate) {
24241
+ var args = { date: date, type: 'monthCells' };
24242
+ this.renderTemplates(this.parent.getCellHeaderTemplate(), args, 'cellHeaderTemplate', this.parent.activeViewOptions.cellHeaderTemplateName, td);
24243
+ }
24244
+ else {
24245
+ var span = createElement('span', {
24246
+ className: 'e-day', innerHTML: this.parent.globalize.formatDate(date, { skeleton: 'd', calendar: this.parent.getCalendarMode() }),
24247
+ attrs: { title: this.parent.globalize.formatDate(date, { type: 'date', skeleton: 'full' }) }
24248
+ });
24249
+ td.appendChild(span);
24250
+ }
24251
+ if (this.parent.activeViewOptions.cellTemplate) {
24252
+ var args = { date: date, type: 'monthCells' };
24253
+ this.renderTemplates(this.parent.getCellTemplate(), args, 'cellTemplate', this.parent.activeViewOptions.cellTemplateName, td);
24254
+ }
23864
24255
  var classList$$1 = [];
23865
24256
  if (currentDate.getMonth() !== date.getMonth()) {
23866
24257
  classList$$1.push(OTHERMONTH_CLASS);
@@ -23872,7 +24263,10 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23872
24263
  addClass([td], classList$$1);
23873
24264
  }
23874
24265
  tr_1.appendChild(td);
23875
- this.wireEvents(td, 'cell');
24266
+ EventHandler.add(td, 'click', this.onCellClick, this);
24267
+ if (!this.parent.isAdaptive) {
24268
+ EventHandler.add(td, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
24269
+ }
23876
24270
  this.parent.trigger(renderCell, { elementType: 'workCells', element: td, date: date });
23877
24271
  }
23878
24272
  tbody.appendChild(tr_1);
@@ -23958,6 +24352,11 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23958
24352
  return _this.parent.firstMonthOfYear + index;
23959
24353
  });
23960
24354
  };
24355
+ Year.prototype.renderTemplates = function (fn, args, tName, vName, ele) {
24356
+ var templateId = this.parent.element.id + '_' + vName + tName;
24357
+ var template = [].slice.call(fn(args, this.parent, tName, templateId, false));
24358
+ append(template, ele);
24359
+ };
23961
24360
  Year.prototype.onCellClick = function (e) {
23962
24361
  var target = closest(e.target, '.' + WORK_CELLS_CLASS);
23963
24362
  var startDate = this.parent.getDateFromElement(target);
@@ -23980,6 +24379,8 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23980
24379
  target = this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + target.getAttribute('data-date') + '"]');
23981
24380
  }
23982
24381
  this.parent.activeCellsData = this.parent.getCellDetails(target);
24382
+ var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });
24383
+ this.parent.trigger(cellClick, args);
23983
24384
  this.parent.quickPopup.moreEventClick(moreEventArgs, endDate);
23984
24385
  }
23985
24386
  };
@@ -24091,23 +24492,6 @@ var Year = /** @__PURE__ @class */ (function (_super) {
24091
24492
  this.yearEventModule.renderAppointments();
24092
24493
  this.parent.notify(eventsLoaded, args);
24093
24494
  };
24094
- Year.prototype.wireEvents = function (element, type) {
24095
- if (type === 'cell') {
24096
- if (this.parent.currentView !== 'TimelineYear') {
24097
- EventHandler.add(element, 'click', this.onCellClick, this);
24098
- }
24099
- else {
24100
- EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);
24101
- EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);
24102
- if (!this.parent.isAdaptive) {
24103
- EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
24104
- }
24105
- }
24106
- }
24107
- else {
24108
- EventHandler.add(element, 'scroll', this.onContentScroll, this);
24109
- }
24110
- };
24111
24495
  Year.prototype.scrollToDate = function (scrollDate) {
24112
24496
  var date = +new Date(resetTime(scrollDate));
24113
24497
  var element = this.element.querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')[data-date="' + date + '"]');
@@ -24190,7 +24574,6 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
24190
24574
  'tabindex': '0',
24191
24575
  'aria-disabled': _this.parent.eventBase.getReadonlyAttribute(listData[li]),
24192
24576
  'aria-pressed': 'false',
24193
- 'aria-grabbed': 'true',
24194
24577
  'aria-label': _this.parent.getAnnouncementString(listData[li])
24195
24578
  }
24196
24579
  });
@@ -24397,9 +24780,9 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
24397
24780
  }
24398
24781
  };
24399
24782
  AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {
24400
- var tr = createElement('tr', { attrs: { role: 'row' } });
24783
+ var tr = createElement('tr');
24401
24784
  var ntr;
24402
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
24785
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
24403
24786
  var tempData;
24404
24787
  var rowSpan = 0;
24405
24788
  var level;
@@ -24494,11 +24877,10 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
24494
24877
  };
24495
24878
  AgendaBase.prototype.createTableRowElement = function (date, type) {
24496
24879
  var daysCount = getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
24497
- var tr = createElement('tr', { attrs: { 'role': 'row', 'data-row-index': daysCount.toString() } });
24880
+ var tr = createElement('tr', { attrs: { 'data-row-index': daysCount.toString() } });
24498
24881
  var td = createElement('td', {
24499
24882
  attrs: {
24500
24883
  'class': (type === 'monthHeader') ? MONTH_HEADER_CLASS : AGENDA_CELLS_CLASS,
24501
- 'role': 'gridcell',
24502
24884
  'aria-selected': 'false',
24503
24885
  'data-column-index': daysCount.toString(),
24504
24886
  'data-date': date.getTime().toString()
@@ -24562,6 +24944,7 @@ var Agenda = /** @__PURE__ @class */ (function (_super) {
24562
24944
  var wrap = createElement('div', { className: CONTENT_WRAP_CLASS });
24563
24945
  workTd.appendChild(wrap);
24564
24946
  var tbl = this.createTableLayout(CONTENT_TABLE_CLASS);
24947
+ this.setAriaAttributes(tbl);
24565
24948
  wrap.appendChild(tbl);
24566
24949
  var tBody = tbl.querySelector('tbody');
24567
24950
  var agendaDate = resetTime(this.parent.selectedDate);
@@ -25497,8 +25880,8 @@ var TimelineViews = /** @__PURE__ @class */ (function (_super) {
25497
25880
  };
25498
25881
  TimelineViews.prototype.getContentRows = function () {
25499
25882
  var rows = [];
25500
- var tr = createElement('tr', { attrs: { role: 'row' } });
25501
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
25883
+ var tr = createElement('tr');
25884
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
25502
25885
  var trCount = this.getRowCount();
25503
25886
  for (var i = 0; i < trCount; i++) {
25504
25887
  var ntr = tr.cloneNode();
@@ -25883,6 +26266,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25883
26266
  var content = createElement('div', { className: CONTENT_WRAP_CLASS });
25884
26267
  lastTd.appendChild(content);
25885
26268
  var contentTable = this.createTableLayout(CONTENT_TABLE_CLASS);
26269
+ this.setAriaAttributes(contentTable);
25886
26270
  content.appendChild(contentTable);
25887
26271
  var eventWrapper = createElement('div', { className: EVENT_TABLE_CLASS });
25888
26272
  content.appendChild(eventWrapper);
@@ -25916,12 +26300,12 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25916
26300
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);
25917
26301
  var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
25918
26302
  var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));
25919
- var tr = createElement('tr', { attrs: { 'role': 'row' } });
26303
+ var tr = createElement('tr');
25920
26304
  var monthTr = tr.cloneNode();
25921
26305
  monthBody.appendChild(monthTr);
25922
26306
  var contentTr = tr.cloneNode();
25923
26307
  contentBody.appendChild(contentTr);
25924
- var monthTd = createElement('td', { className: MONTH_HEADER_CLASS, attrs: { 'role': 'gridcell' } });
26308
+ var monthTd = createElement('td', { className: MONTH_HEADER_CLASS });
25925
26309
  if (this.parent.activeViewOptions.orientation === 'Horizontal') {
25926
26310
  if (this.parent.monthHeaderTemplate) {
25927
26311
  append(this.renderDayMonthHeaderTemplate(monthStart, month, 'monthHeaderTemplate'), monthTd);
@@ -25956,7 +26340,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25956
26340
  isDateAvail = column >= monthStart.getDay() && date.getTime() < monthEnd.getTime();
25957
26341
  }
25958
26342
  var td = createElement('td', {
25959
- className: WORK_CELLS_CLASS, attrs: { 'role': 'gridcell', 'aria-selected': 'false' }
26343
+ className: WORK_CELLS_CLASS, attrs: { 'aria-selected': 'false' }
25960
26344
  });
25961
26345
  contentTr.appendChild(td);
25962
26346
  var dateHeader = createElement('div', {
@@ -25997,7 +26381,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25997
26381
  td.appendChild(dateHeader);
25998
26382
  if (isDateAvail) {
25999
26383
  td.setAttribute('data-date', date.getTime().toString());
26000
- this.wireEvents(td, 'cell');
26384
+ this.wireEvents(td);
26001
26385
  }
26002
26386
  this.renderCellTemplate({ date: date, type: 'workCells' }, td);
26003
26387
  this.parent.trigger(renderCell, { elementType: 'workCells', element: td, date: date });
@@ -26013,7 +26397,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26013
26397
  var tRow = [];
26014
26398
  var monthCells = this.getMonths();
26015
26399
  for (var row = 0; row < this.parent.resourceBase.renderedResources.length; row++) {
26016
- var tr = createElement('tr', { attrs: { 'role': 'row' } });
26400
+ var tr = createElement('tr');
26017
26401
  tRow.push(tr);
26018
26402
  var resData = void 0;
26019
26403
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
@@ -26036,14 +26420,14 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26036
26420
  var tdELe = createElement('td', {
26037
26421
  className: WORK_CELLS_CLASS,
26038
26422
  attrs: {
26039
- 'role': 'gridcell', 'aria-selected': 'false',
26423
+ 'aria-selected': 'false',
26040
26424
  'data-date': date.getTime().toString()
26041
26425
  }
26042
26426
  });
26043
26427
  addClass([tdELe], classList$$1);
26044
26428
  tdELe.setAttribute('data-group-index', groupIndex.toString());
26045
26429
  this.renderCellTemplate({ date: date, type: 'resourceGroupCells', groupIndex: groupIndex }, tdELe);
26046
- this.wireEvents(tdELe, 'cell');
26430
+ this.wireEvents(tdELe);
26047
26431
  this.parent.trigger(renderCell, { elementType: 'resourceGroupCells', element: tdELe, date: date });
26048
26432
  tr.appendChild(tdELe);
26049
26433
  }
@@ -26054,7 +26438,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26054
26438
  var months = this.getMonths();
26055
26439
  for (var row = 0; row < this.rowCount; row++) {
26056
26440
  wrapper.appendChild(createElement('div', { className: APPOINTMENT_CONTAINER_CLASS }));
26057
- var tr = createElement('tr', { attrs: { 'role': 'row' } });
26441
+ var tr = createElement('tr');
26058
26442
  contentBody.appendChild(tr);
26059
26443
  var resData = void 0;
26060
26444
  if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
@@ -26067,7 +26451,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26067
26451
  monthBody.appendChild(monthTr);
26068
26452
  var monthTd = createElement('td', {
26069
26453
  className: MONTH_HEADER_CLASS,
26070
- attrs: { 'role': 'gridcell', 'data-date': date.getTime().toString() }
26454
+ attrs: { 'data-date': date.getTime().toString() }
26071
26455
  });
26072
26456
  if (this.parent.monthHeaderTemplate) {
26073
26457
  append(this.renderDayMonthHeaderTemplate(monthDate, row, 'monthHeaderTemplate'), monthTd);
@@ -26099,14 +26483,14 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26099
26483
  var td = createElement('td', {
26100
26484
  className: WORK_CELLS_CLASS,
26101
26485
  attrs: {
26102
- 'role': 'gridcell', 'aria-selected': 'false',
26486
+ 'aria-selected': 'false',
26103
26487
  'data-date': date.getTime().toString()
26104
26488
  }
26105
26489
  });
26106
26490
  addClass([td], classList$$1);
26107
26491
  td.setAttribute('data-group-index', groupIndex.toString());
26108
26492
  this.renderCellTemplate({ date: date, type: 'resourceGroupCells', groupIndex: groupIndex }, td);
26109
- this.wireEvents(td, 'cell');
26493
+ this.wireEvents(td);
26110
26494
  tr.appendChild(td);
26111
26495
  this.parent.trigger(renderCell, { elementType: 'resourceGroupCells', element: td, date: date });
26112
26496
  }
@@ -26171,6 +26555,13 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26171
26555
  return this.getContentAreaElement();
26172
26556
  }
26173
26557
  };
26558
+ TimelineYear.prototype.wireEvents = function (element) {
26559
+ EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);
26560
+ EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);
26561
+ if (!this.parent.isAdaptive) {
26562
+ EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
26563
+ }
26564
+ };
26174
26565
  return TimelineYear;
26175
26566
  }(Year));
26176
26567
 
@@ -26736,5 +27127,5 @@ var Print = /** @__PURE__ @class */ (function () {
26736
27127
  * Export Schedule components
26737
27128
  */
26738
27129
 
26739
- export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, initialLoad, initialEnd, print$1 as print, dataReady, eventsLoaded, contentReady, scroll, virtualScroll, scrollUiUpdate, uiUpdate, documentClick, cellMouseDown, WEEK_LENGTH, DEFAULT_WEEKS, MS_PER_DAY, MS_PER_MINUTE, getElementHeightFromClass, getTranslateY, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, findIndexInData, getOuterHeight, removeChildren, isDaylightSavingTime, getUniversalTime, isMobile, isIPadDevice, capitalizeFirstWord, Resize, DragAndDrop, HeaderRenderer, ViewBase, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, TimelineViews, TimelineMonth, TimelineYear, Timezone, timezoneData, ICalendarExport, ICalendarImport, ExcelExport, Print, RecurrenceEditor, generateSummary, generate, getDateFromRecurrenceDateString, extractObjectFromRule, getCalendarUtil, getRecurrenceStringFromDate, Gregorian, Islamic };
27130
+ export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, initialLoad, initialEnd, print$1 as print, dataReady, eventsLoaded, contentReady, scroll, virtualScroll, scrollUiUpdate, uiUpdate, documentClick, cellMouseDown, WEEK_LENGTH, DEFAULT_WEEKS, MS_PER_DAY, MS_PER_MINUTE, getElementHeightFromClass, getElementWidthFromClass, getTranslateY, getTranslateX, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, findIndexInData, getOuterHeight, removeChildren, isDaylightSavingTime, getUniversalTime, isMobile, isIPadDevice, capitalizeFirstWord, Resize, DragAndDrop, HeaderRenderer, ViewBase, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, TimelineViews, TimelineMonth, TimelineYear, Timezone, timezoneData, ICalendarExport, ICalendarImport, ExcelExport, Print, RecurrenceEditor, generateSummary, generate, getDateFromRecurrenceDateString, extractObjectFromRule, getCalendarUtil, getRecurrenceStringFromDate, Gregorian, Islamic };
26740
27131
  //# sourceMappingURL=ej2-schedule.es5.js.map