@syncfusion/ej2-schedule 20.2.50 → 20.3.49

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 (127) 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 +617 -217
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +636 -229
  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 +18 -15
  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/resource.d.ts +1 -0
  25. package/src/schedule/base/resource.js +12 -1
  26. package/src/schedule/base/schedule-model.d.ts +7 -0
  27. package/src/schedule/base/schedule.d.ts +13 -0
  28. package/src/schedule/base/schedule.js +13 -4
  29. package/src/schedule/base/util.d.ts +15 -0
  30. package/src/schedule/base/util.js +29 -3
  31. package/src/schedule/event-renderer/agenda-base.js +3 -5
  32. package/src/schedule/event-renderer/event-base.d.ts +2 -1
  33. package/src/schedule/event-renderer/event-base.js +30 -3
  34. package/src/schedule/event-renderer/month.d.ts +1 -0
  35. package/src/schedule/event-renderer/month.js +8 -6
  36. package/src/schedule/event-renderer/vertical-view.d.ts +3 -0
  37. package/src/schedule/event-renderer/vertical-view.js +32 -12
  38. package/src/schedule/event-renderer/year.js +1 -1
  39. package/src/schedule/exports/calendar-import.js +5 -0
  40. package/src/schedule/popups/event-window.d.ts +1 -0
  41. package/src/schedule/popups/event-window.js +35 -7
  42. package/src/schedule/popups/quick-popups.js +18 -5
  43. package/src/schedule/renderer/agenda.js +1 -0
  44. package/src/schedule/renderer/month.js +25 -6
  45. package/src/schedule/renderer/renderer.js +8 -2
  46. package/src/schedule/renderer/timeline-view.js +2 -2
  47. package/src/schedule/renderer/timeline-year.d.ts +1 -0
  48. package/src/schedule/renderer/timeline-year.js +20 -12
  49. package/src/schedule/renderer/vertical-view.d.ts +1 -1
  50. package/src/schedule/renderer/vertical-view.js +48 -44
  51. package/src/schedule/renderer/view-base.d.ts +2 -0
  52. package/src/schedule/renderer/view-base.js +31 -1
  53. package/src/schedule/renderer/year.d.ts +1 -1
  54. package/src/schedule/renderer/year.js +49 -30
  55. package/styles/bootstrap-dark.css +50 -33
  56. package/styles/bootstrap.css +50 -33
  57. package/styles/bootstrap4.css +50 -33
  58. package/styles/bootstrap5-dark.css +51 -38
  59. package/styles/bootstrap5.css +51 -38
  60. package/styles/fabric-dark.css +50 -33
  61. package/styles/fabric.css +50 -33
  62. package/styles/fluent-dark.css +52 -39
  63. package/styles/fluent.css +52 -39
  64. package/styles/highcontrast-light.css +50 -33
  65. package/styles/highcontrast.css +50 -33
  66. package/styles/material-dark.css +50 -33
  67. package/styles/material.css +50 -33
  68. package/styles/recurrence-editor/_all.scss +1 -1
  69. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +1 -3
  70. package/styles/recurrence-editor/_bootstrap-definition.scss +1 -3
  71. package/styles/recurrence-editor/_bootstrap4-definition.scss +1 -3
  72. package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -3
  73. package/styles/recurrence-editor/_fabric-dark-definition.scss +1 -4
  74. package/styles/recurrence-editor/_fabric-definition.scss +1 -3
  75. package/styles/recurrence-editor/_fluent-definition.scss +1 -3
  76. package/styles/recurrence-editor/_fusionnew-definition.scss +1 -3
  77. package/styles/recurrence-editor/_highcontrast-definition.scss +1 -3
  78. package/styles/recurrence-editor/_highcontrast-light-definition.scss +1 -3
  79. package/styles/recurrence-editor/_layout.scss +28 -38
  80. package/styles/recurrence-editor/_material-dark-definition.scss +1 -3
  81. package/styles/recurrence-editor/_material-definition.scss +1 -3
  82. package/styles/recurrence-editor/_material3-definition.scss +1 -3
  83. package/styles/recurrence-editor/_tailwind-definition.scss +1 -3
  84. package/styles/recurrence-editor/bootstrap-dark.css +21 -27
  85. package/styles/recurrence-editor/bootstrap.css +21 -27
  86. package/styles/recurrence-editor/bootstrap4.css +21 -27
  87. package/styles/recurrence-editor/bootstrap5-dark.css +21 -27
  88. package/styles/recurrence-editor/bootstrap5.css +21 -27
  89. package/styles/recurrence-editor/fabric-dark.css +21 -27
  90. package/styles/recurrence-editor/fabric.css +21 -27
  91. package/styles/recurrence-editor/fluent-dark.css +21 -27
  92. package/styles/recurrence-editor/fluent.css +21 -27
  93. package/styles/recurrence-editor/highcontrast-light.css +21 -27
  94. package/styles/recurrence-editor/highcontrast.css +21 -27
  95. package/styles/recurrence-editor/material-dark.css +21 -27
  96. package/styles/recurrence-editor/material.css +21 -27
  97. package/styles/recurrence-editor/tailwind-dark.css +21 -27
  98. package/styles/recurrence-editor/tailwind.css +21 -27
  99. package/styles/schedule/_all.scss +1 -1
  100. package/styles/schedule/_bootstrap4-definition.scss +0 -1
  101. package/styles/schedule/_bootstrap5-definition.scss +1 -1
  102. package/styles/schedule/_fusionnew-definition.scss +1 -1
  103. package/styles/schedule/_layout.scss +57 -32
  104. package/styles/schedule/_material3-definition.scss +1 -1
  105. package/styles/schedule/_theme.scss +12 -10
  106. package/styles/schedule/bootstrap-dark.css +29 -6
  107. package/styles/schedule/bootstrap.css +29 -6
  108. package/styles/schedule/bootstrap4.css +29 -6
  109. package/styles/schedule/bootstrap5-dark.css +30 -11
  110. package/styles/schedule/bootstrap5.css +30 -11
  111. package/styles/schedule/fabric-dark.css +29 -6
  112. package/styles/schedule/fabric.css +29 -6
  113. package/styles/schedule/fluent-dark.css +31 -12
  114. package/styles/schedule/fluent.css +31 -12
  115. package/styles/schedule/highcontrast-light.css +29 -6
  116. package/styles/schedule/highcontrast.css +29 -6
  117. package/styles/schedule/icons/_bootstrap5.scss +0 -1
  118. package/styles/schedule/icons/_fluent.scss +0 -1
  119. package/styles/schedule/icons/_fusionnew.scss +0 -1
  120. package/styles/schedule/icons/_material3.scss +0 -1
  121. package/styles/schedule/icons/_tailwind.scss +0 -1
  122. package/styles/schedule/material-dark.css +29 -6
  123. package/styles/schedule/material.css +29 -6
  124. package/styles/schedule/tailwind-dark.css +29 -6
  125. package/styles/schedule/tailwind.css +29 -6
  126. package/styles/tailwind-dark.css +50 -33
  127. 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
  /**
@@ -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 = [];
@@ -15240,7 +15540,8 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
15240
15540
  child: 'resourceChild'
15241
15541
  },
15242
15542
  nodeTemplate: this.parent.resourceHeaderTemplate,
15243
- nodeClicked: this.resourceClick.bind(this)
15543
+ nodeClicked: this.resourceClick.bind(this),
15544
+ created: this.resourceTreeCreated.bind(this)
15244
15545
  });
15245
15546
  this.treeViewObj.appendTo(resourceTree);
15246
15547
  this.treeViewObj.expandAll();
@@ -15257,6 +15558,12 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
15257
15558
  });
15258
15559
  this.parent.on(documentClick, this.documentClick, this);
15259
15560
  };
15561
+ ResourceBase.prototype.resourceTreeCreated = function () {
15562
+ if (this.parent.portals) {
15563
+ this.parent.portals = this.parent.portals.concat(this.treeViewObj.portals);
15564
+ this.parent.renderTemplates();
15565
+ }
15566
+ };
15260
15567
  ResourceBase.prototype.generateTreeData = function (isTimeLine) {
15261
15568
  var _this = this;
15262
15569
  var treeCollection = [];
@@ -15899,6 +16206,10 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
15899
16206
  ResourceBase.prototype.destroy = function () {
15900
16207
  this.parent.off(documentClick, this.documentClick);
15901
16208
  if (this.treeViewObj) {
16209
+ if (this.treeViewObj.portals && this.treeViewObj.portals.length > 0) {
16210
+ var treeViewTemplates = this.treeViewObj.portals.map(function (x) { return x.propName; });
16211
+ this.parent.resetTemplates(treeViewTemplates);
16212
+ }
15902
16213
  this.treeViewObj.destroy();
15903
16214
  this.treeViewObj = null;
15904
16215
  }
@@ -17138,6 +17449,16 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17138
17449
  append(indentTemplate, td);
17139
17450
  }
17140
17451
  };
17452
+ /**
17453
+ * Method to check for refreshing the targeted resource row events.
17454
+ *
17455
+ * @returns {boolean} Returns the boolean value
17456
+ * @private
17457
+ */
17458
+ Schedule.prototype.isSpecificResourceEvents = function () {
17459
+ return this.activeViewOptions.group.resources.length > 0 && !this.activeViewOptions.group.allowGroupEdit &&
17460
+ !this.rowAutoHeight && !this.virtualScrollModule && this.activeViewOptions.group.byGroupID;
17461
+ };
17141
17462
  Schedule.prototype.unWireEvents = function () {
17142
17463
  EventHandler.remove(window, 'resize', this.onScheduleResize);
17143
17464
  EventHandler.remove(window, 'orientationchange', this.onScheduleResize);
@@ -18411,10 +18732,6 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18411
18732
  this.hideSpinner();
18412
18733
  this.unWireEvents();
18413
18734
  this.destroyHeaderModule();
18414
- if (this.eventTooltip) {
18415
- this.eventTooltip.destroy();
18416
- this.eventTooltip = null;
18417
- }
18418
18735
  if (this.eventBase) {
18419
18736
  this.eventBase.destroy();
18420
18737
  this.eventBase = null;
@@ -18488,6 +18805,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18488
18805
  __decorate([
18489
18806
  Property(true)
18490
18807
  ], Schedule.prototype, "showTimeIndicator", void 0);
18808
+ __decorate([
18809
+ Property(true)
18810
+ ], Schedule.prototype, "allowSwiping", void 0);
18491
18811
  __decorate([
18492
18812
  Property('Week')
18493
18813
  ], Schedule.prototype, "currentView", void 0);
@@ -18814,7 +19134,7 @@ var ActionBase = /** @__PURE__ @class */ (function () {
18814
19134
  var viewElement = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
18815
19135
  var trElement = [].slice.call(viewElement.querySelector('tr').children);
18816
19136
  if (!this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0 &&
18817
- !this.parent.isAdaptive && !this.parent.enableAdaptiveUI) {
19137
+ !this.parent.isAdaptive && !this.parent.enableAdaptiveUI && !this.parent.virtualScrollModule) {
18818
19138
  trElement = this.getResourceElements(trElement);
18819
19139
  }
18820
19140
  var leftOffset = trElement[0].getBoundingClientRect();
@@ -18910,7 +19230,7 @@ var ActionBase = /** @__PURE__ @class */ (function () {
18910
19230
  var originalElement;
18911
19231
  var guid = element.getAttribute('data-guid');
18912
19232
  var isMorePopup = element.offsetParent && element.offsetParent.classList.contains(MORE_EVENT_POPUP_CLASS);
18913
- if (isMorePopup || this.parent.activeView.isTimelineView()) {
19233
+ if (isMorePopup || this.parent.activeView.isTimelineView() || (this.actionObj.action !== 'resize' && this.parent.virtualScrollModule)) {
18914
19234
  originalElement = [].slice.call(this.parent.element.querySelectorAll('[data-guid="' + guid + '"]'));
18915
19235
  }
18916
19236
  else {
@@ -19129,7 +19449,9 @@ var ActionBase = /** @__PURE__ @class */ (function () {
19129
19449
  var workDays = this.parent.activeViewOptions.workDays;
19130
19450
  var groupOrder;
19131
19451
  if (this.parent.activeViewOptions.group.resources.length > 0) {
19132
- var resources = this.parent.resourceBase.lastResourceLevel.
19452
+ var renderedResource = this.parent.virtualScrollModule && this.parent.virtualScrollModule.isHorizontalScroll ?
19453
+ this.parent.resourceBase.renderedResources : this.parent.resourceBase.lastResourceLevel;
19454
+ var resources = renderedResource.
19133
19455
  filter(function (res) { return res.groupIndex === _this.actionObj.groupIndex; });
19134
19456
  dateRender = resources[0].renderDates;
19135
19457
  var elementSelector = "." + WORK_CELLS_CLASS + "[data-group-index=\"" + this.actionObj.groupIndex + "\"]";
@@ -19481,9 +19803,7 @@ var Resize = /** @__PURE__ @class */ (function (_super) {
19481
19803
  if (resizeEventArgs.cancel) {
19482
19804
  return;
19483
19805
  }
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) {
19806
+ if (_this.parent.isSpecificResourceEvents()) {
19487
19807
  _this.parent.crudModule.crudObj.sourceEvent =
19488
19808
  [_this.parent.resourceBase.lastResourceLevel[parseInt(resizeEventArgs.element.getAttribute('data-group-index'), 10)]];
19489
19809
  _this.parent.crudModule.crudObj.targetEvent = _this.parent.crudModule.crudObj.sourceEvent;
@@ -20121,7 +20441,7 @@ var YearEvent = /** @__PURE__ @class */ (function (_super) {
20121
20441
  'data-id': 'Appointment_' + record[this.fields.id],
20122
20442
  'data-guid': record.Guid,
20123
20443
  'role': 'button', 'tabindex': '0',
20124
- 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false', 'aria-grabbed': 'true',
20444
+ 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false',
20125
20445
  'aria-label': this.parent.getAnnouncementString(record)
20126
20446
  }
20127
20447
  });
@@ -20644,7 +20964,6 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20644
20964
  this.actionObj.scrollInterval = null;
20645
20965
  this.actionClass('removeClass');
20646
20966
  this.parent.uiStateValues.action = false;
20647
- this.actionObj.action = null;
20648
20967
  if (this.isAllowDrop(e)) {
20649
20968
  return;
20650
20969
  }
@@ -20654,12 +20973,12 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20654
20973
  cancel: false, data: this.getChangedData(this.updatedData), selectedData: this.updatedData,
20655
20974
  event: e, element: this.actionObj.element, target: target
20656
20975
  };
20976
+ this.actionObj.action = null;
20657
20977
  this.parent.trigger(dragStop, dragArgs, function (dragEventArgs) {
20658
20978
  if (dragEventArgs.cancel) {
20659
20979
  return;
20660
20980
  }
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) {
20981
+ if (_this.parent.isSpecificResourceEvents()) {
20663
20982
  _this.parent.crudModule.crudObj.isCrudAction = true;
20664
20983
  _this.parent.crudModule.crudObj.sourceEvent =
20665
20984
  [_this.parent.resourceBase.lastResourceLevel[parseInt(dragArgs.element.getAttribute('data-group-index'), 10)]];
@@ -20796,7 +21115,7 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20796
21115
  var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -
20797
21116
  eventObj[this.parent.eventFields.startTime].getTime();
20798
21117
  var td = closest(e.target, 'td');
20799
- if (this.parent.currentView === 'TimelineYear' && !td.classList.contains('e-work-cells')) {
21118
+ if (this.parent.currentView === 'TimelineYear' && (!td.classList.contains(WORK_CELLS_CLASS) || td.classList.contains(OTHERMONTH_CLASS))) {
20800
21119
  return;
20801
21120
  }
20802
21121
  var dragStart$$1 = this.parent.getDateFromElement(td);
@@ -20899,7 +21218,9 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20899
21218
  this.actionObj.clone.classList.contains(ALLDAY_APPOINTMENT_CLASS)) {
20900
21219
  dragEnd = addDays(resetTime(dragEnd), 1);
20901
21220
  }
20902
- this.updateAllDayEvents(dragStart$$1, dragEnd, this.parent.activeViewOptions.group.byDate ? colIndex : undefined);
21221
+ var index_1 = this.parent.activeViewOptions.group.byDate || (this.parent.virtualScrollModule &&
21222
+ !this.parent.activeViewOptions.timeScale.enable) ? colIndex : undefined;
21223
+ this.updateAllDayEvents(dragStart$$1, dragEnd, index_1);
20903
21224
  }
20904
21225
  this.actionObj.start = new Date(+dragStart$$1);
20905
21226
  this.actionObj.end = new Date(+dragEnd);
@@ -20933,17 +21254,17 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20933
21254
  this.startTime = eventObj_1[this.parent.eventFields.startTime].getTime();
20934
21255
  }
20935
21256
  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]);
21257
+ for (var index_2 = 0; index_2 < this.multiData.length; index_2++) {
21258
+ this.updatedData[index_2] = this.updateMultipleData(this.multiData[index_2], startTimeDiff);
21259
+ var dayIndex = this.getDayIndex(this.updatedData[index_2]);
20939
21260
  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);
21261
+ var wrapper = this.getEventWrapper(dayIndex, this.updatedData[index_2][this.parent.eventFields.isAllDay]);
21262
+ this.appendCloneElement(wrapper, this.actionObj.cloneElement[index_2]);
21263
+ this.updateEventHeight(this.updatedData[index_2], index_2, dayIndex);
20943
21264
  }
20944
21265
  else {
20945
- if (!isNullOrUndefined(this.actionObj.cloneElement[index_1].parentNode)) {
20946
- remove(this.actionObj.cloneElement[index_1]);
21266
+ if (!isNullOrUndefined(this.actionObj.cloneElement[index_2].parentNode)) {
21267
+ remove(this.actionObj.cloneElement[index_2]);
20947
21268
  }
20948
21269
  }
20949
21270
  }
@@ -21025,10 +21346,12 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
21025
21346
  };
21026
21347
  DragAndDrop.prototype.updateEventHeight = function (event, index, colIndex) {
21027
21348
  this.verticalEvent.initializeValues();
21028
- var datesCount = 0;
21349
+ var datesCount = this.verticalEvent.getStartCount();
21029
21350
  if (!this.parent.uiStateValues.isGroupAdaptive) {
21030
21351
  for (var i = 0; i < this.actionObj.groupIndex; i++) {
21031
- datesCount = datesCount + this.verticalEvent.dateRender[i].length;
21352
+ if (this.verticalEvent.dateRender[i]) {
21353
+ datesCount = datesCount + this.verticalEvent.dateRender[i].length;
21354
+ }
21032
21355
  }
21033
21356
  }
21034
21357
  var indexGroup = this.parent.uiStateValues.isGroupAdaptive ? datesCount : this.actionObj.groupIndex;
@@ -21648,11 +21971,15 @@ var ViewBase = /** @__PURE__ @class */ (function () {
21648
21971
  };
21649
21972
  ViewBase.prototype.createTableLayout = function (className) {
21650
21973
  var clsName = className || '';
21651
- var table = createElement('table', { className: SCHEDULE_TABLE_CLASS + ' ' + clsName, attrs: { role: 'table' } });
21974
+ var table = createElement('table', { className: SCHEDULE_TABLE_CLASS + ' ' + clsName });
21652
21975
  var tbody = createElement('tbody');
21653
21976
  table.appendChild(tbody);
21654
21977
  return table;
21655
21978
  };
21979
+ ViewBase.prototype.setAriaAttributes = function (table) {
21980
+ table.setAttribute('role', 'grid');
21981
+ table.setAttribute('aria-label', this.getLabelText(this.parent.currentView));
21982
+ };
21656
21983
  ViewBase.prototype.createColGroup = function (table, lastRow) {
21657
21984
  var length = lastRow.length;
21658
21985
  if (lastRow[0] && lastRow[0].colSpan) {
@@ -22117,6 +22444,32 @@ var ViewBase = /** @__PURE__ @class */ (function () {
22117
22444
  }
22118
22445
  return null;
22119
22446
  };
22447
+ ViewBase.prototype.resetColLevels = function () {
22448
+ this.parent.resourceBase.expandedResources = [];
22449
+ var renderedCount = this.parent.virtualScrollModule.getRenderedCount();
22450
+ var lastLevel = this.parent.activeViewOptions.group.byDate ? this.colLevels[0] :
22451
+ this.parent.resourceBase.renderedResources;
22452
+ var index = 0;
22453
+ for (var i = 0; i < lastLevel.length; i++) {
22454
+ if (index >= renderedCount) {
22455
+ break;
22456
+ }
22457
+ index += lastLevel[i].colSpan;
22458
+ this.parent.resourceBase.expandedResources.push(lastLevel[i]);
22459
+ }
22460
+ if (this.parent.activeViewOptions.group.byDate) {
22461
+ this.colLevels[0] = this.parent.resourceBase.expandedResources;
22462
+ this.parent.virtualScrollModule.setRenderedDates(this.parent.resourceBase.expandedResources);
22463
+ }
22464
+ else {
22465
+ this.colLevels[this.colLevels.length - 2] = this.parent.resourceBase.expandedResources;
22466
+ this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources;
22467
+ }
22468
+ if (this.parent.currentView !== 'Month') {
22469
+ this.colLevels[this.colLevels.length - 1] = this.colLevels[this.colLevels.length - 1].slice(0, index);
22470
+ this.parent.resourceBase.expandedResources = this.colLevels[this.colLevels.length - 1];
22471
+ }
22472
+ };
22120
22473
  ViewBase.prototype.destroy = function () {
22121
22474
  if (this.element && this.element.parentNode) {
22122
22475
  remove(this.element);
@@ -22381,15 +22734,27 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22381
22734
  if (!isNullOrUndefined(this.parent.resourceBase) && (this.parent.activeViewOptions.group.resources.length > 0) &&
22382
22735
  !this.parent.uiStateValues.isGroupAdaptive) {
22383
22736
  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);
22737
+ if (this.parent.virtualScrollModule && this.parent.activeViewOptions.allowVirtualScrolling &&
22738
+ this.parent.activeViewOptions.group.byDate) {
22739
+ for (var _i = 0, _a = this.parent.resourceBase.expandedResources; _i < _a.length; _i++) {
22740
+ var resource = _a[_i];
22741
+ if (resetTime(resource.date).getTime() === resetTime(this.parent.getCurrentTime()).getTime()) {
22742
+ currentDateIndex.push(count);
22743
+ }
22744
+ count += 1;
22745
+ }
22746
+ }
22747
+ else {
22748
+ for (var _b = 0, _c = this.parent.resourceBase.renderedResources; _b < _c.length; _b++) {
22749
+ var resource = _c[_b];
22750
+ var index = this.parent.getIndexOfDate(resource.renderDates, resetTime(this.parent.getCurrentTime()));
22751
+ if (index >= 0) {
22752
+ var resIndex = this.parent.activeViewOptions.group.byDate ?
22753
+ (this.parent.resourceBase.lastResourceLevel.length * index) + count : count + index;
22754
+ currentDateIndex.push(resIndex);
22755
+ }
22756
+ count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;
22391
22757
  }
22392
- count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;
22393
22758
  }
22394
22759
  }
22395
22760
  else {
@@ -22535,7 +22900,7 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22535
22900
  if (!this.parent.activeViewOptions.timeScale.enable) {
22536
22901
  addClass([this.element], [TIMESCALE_DISABLE, this.viewClass]);
22537
22902
  }
22538
- if (this.parent.activeViewOptions.allowVirtualScrolling) {
22903
+ if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {
22539
22904
  clsList.push(VIRTUAL_SCROLL_CLASS);
22540
22905
  }
22541
22906
  if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {
@@ -22566,6 +22931,9 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22566
22931
  prepend([tr], this.element.querySelector('tbody'));
22567
22932
  };
22568
22933
  VerticalView.prototype.renderContent = function () {
22934
+ if (this.parent.activeViewOptions.group.resources.length > 0) {
22935
+ this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);
22936
+ }
22569
22937
  var tr = createElement('tr');
22570
22938
  var workTd = createElement('td');
22571
22939
  if (this.parent.isAdaptive) {
@@ -22581,13 +22949,22 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22581
22949
  tr.appendChild(workTd);
22582
22950
  }
22583
22951
  else {
22584
- workTd.appendChild(this.renderContentArea());
22952
+ var levels = this.colLevels.slice(0);
22953
+ if (this.parent.virtualScrollModule) {
22954
+ this.resetColLevels();
22955
+ }
22956
+ var wrap = this.renderContentArea();
22957
+ workTd.appendChild(wrap);
22585
22958
  if (this.parent.activeViewOptions.timeScale.enable) {
22586
22959
  var timesTd = createElement('td');
22587
22960
  timesTd.appendChild(this.renderTimeCells());
22588
22961
  tr.appendChild(timesTd);
22589
22962
  }
22590
22963
  tr.appendChild(workTd);
22964
+ if (this.parent.virtualScrollModule) {
22965
+ this.colLevels = levels;
22966
+ this.parent.virtualScrollModule.renderVirtualTrack(wrap);
22967
+ }
22591
22968
  }
22592
22969
  this.element.querySelector('tbody').appendChild(tr);
22593
22970
  };
@@ -22659,7 +23036,6 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22659
23036
  td.className = [ALLDAY_CELLS_CLASS];
22660
23037
  td.type = 'alldayCells';
22661
23038
  var ntd = this.createTd(td);
22662
- ntd.setAttribute('role', 'gridcell');
22663
23039
  ntd.setAttribute('data-date', td.date.getTime().toString());
22664
23040
  if (!isNullOrUndefined(td.groupIndex)) {
22665
23041
  ntd.setAttribute('data-group-index', '' + td.groupIndex);
@@ -22672,7 +23048,7 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22672
23048
  }
22673
23049
  table.querySelector('tbody').appendChild(ntr);
22674
23050
  var thead = createElement('thead');
22675
- thead.appendChild(this.createEventWrapper('allDay'));
23051
+ thead.appendChild(this.parent.eventBase.createEventWrapper('allDay'));
22676
23052
  prepend([thead], table);
22677
23053
  };
22678
23054
  VerticalView.prototype.createTd = function (td) {
@@ -22692,7 +23068,6 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22692
23068
  }
22693
23069
  if (td.type === 'dateHeader' && td.className.indexOf(HEADER_CELLS_CLASS) >= 0) {
22694
23070
  tdEle.setAttribute('data-date', td.date.getTime().toString());
22695
- tdEle.setAttribute('role', 'gridcell');
22696
23071
  if (!isNullOrUndefined(td.groupIndex)) {
22697
23072
  tdEle.setAttribute('data-group-index', '' + td.groupIndex);
22698
23073
  }
@@ -22733,6 +23108,7 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22733
23108
  VerticalView.prototype.renderContentArea = function () {
22734
23109
  var wrap = createElement('div', { className: CONTENT_WRAP_CLASS });
22735
23110
  var tbl = this.createTableLayout(CONTENT_TABLE_CLASS);
23111
+ this.setAriaAttributes(tbl);
22736
23112
  this.addAutoHeightClass(tbl);
22737
23113
  this.renderContentTable(tbl);
22738
23114
  this.createColGroup(tbl, this.colLevels.slice(-1)[0]);
@@ -22743,10 +23119,15 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22743
23119
  return wrap;
22744
23120
  };
22745
23121
  VerticalView.prototype.renderContentTable = function (table) {
23122
+ var tBody = table.querySelector('tbody');
23123
+ append(this.getContentRows(), tBody);
23124
+ this.renderContentTableHeader(table);
23125
+ };
23126
+ VerticalView.prototype.getContentRows = function () {
22746
23127
  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');
23128
+ var rows = [];
23129
+ var tr = createElement('tr');
23130
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
22750
23131
  var handler = function (r) {
22751
23132
  var ntr = tr.cloneNode();
22752
23133
  for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {
@@ -22754,11 +23135,11 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22754
23135
  var ntd = _this.createContentTd(tdData, r, td);
22755
23136
  ntr.appendChild(ntd);
22756
23137
  }
22757
- tbody.appendChild(ntr);
23138
+ rows.push(ntr);
22758
23139
  return r;
22759
23140
  };
22760
23141
  this.getTimeSlotRows(handler);
22761
- this.renderContentTableHeader(table);
23142
+ return rows;
22762
23143
  };
22763
23144
  VerticalView.prototype.createContentTd = function (tdData, r, td) {
22764
23145
  var ntd = td.cloneNode();
@@ -22805,36 +23186,12 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22805
23186
  };
22806
23187
  VerticalView.prototype.renderContentTableHeader = function (table) {
22807
23188
  var thead = createElement('thead');
22808
- thead.appendChild(this.createEventWrapper());
23189
+ thead.appendChild(this.parent.eventBase.createEventWrapper());
22809
23190
  if (this.parent.activeViewOptions.timeScale.enable) {
22810
- thead.appendChild(this.createEventWrapper('timeIndicator'));
23191
+ thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));
22811
23192
  }
22812
23193
  prepend([thead], table);
22813
23194
  };
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
23195
  VerticalView.prototype.getScrollableElement = function () {
22839
23196
  if (this.parent.isAdaptive && !this.isTimelineView()) {
22840
23197
  return this.element.querySelector('.' + SCROLL_CONTAINER_CLASS);
@@ -23250,7 +23607,7 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23250
23607
  if (this.parent.activeViewOptions.group.byDate) {
23251
23608
  clsList.push('e-by-date');
23252
23609
  }
23253
- if (this.parent.activeViewOptions.allowVirtualScrolling) {
23610
+ if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {
23254
23611
  clsList.push(VIRTUAL_SCROLL_CLASS);
23255
23612
  }
23256
23613
  if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {
@@ -23298,11 +23655,18 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23298
23655
  }
23299
23656
  };
23300
23657
  Month.prototype.renderContent = function () {
23658
+ if (this.parent.activeViewOptions.group.resources.length > 0) {
23659
+ this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);
23660
+ }
23301
23661
  var tr = createElement('tr');
23302
23662
  if (this.parent.activeViewOptions.showWeekNumber) {
23303
23663
  tr.appendChild(this.renderWeekNumberContent());
23304
23664
  }
23305
23665
  var workTd = createElement('td');
23666
+ var levels = this.colLevels.slice(0);
23667
+ if (this.parent.virtualScrollModule) {
23668
+ this.resetColLevels();
23669
+ }
23306
23670
  var wrap = createElement('div', { className: CONTENT_WRAP_CLASS });
23307
23671
  var contentArea = this.renderContentArea();
23308
23672
  if (this.parent.currentView === 'Month') {
@@ -23316,6 +23680,10 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23316
23680
  EventHandler.add(wrap, 'scroll', this.onContentScroll, this);
23317
23681
  workTd.appendChild(wrap);
23318
23682
  tr.appendChild(workTd);
23683
+ if (this.parent.virtualScrollModule) {
23684
+ this.colLevels = levels;
23685
+ this.parent.virtualScrollModule.renderVirtualTrack(wrap);
23686
+ }
23319
23687
  this.element.querySelector('tbody').appendChild(tr);
23320
23688
  this.renderAppointmentContainer();
23321
23689
  };
@@ -23343,6 +23711,11 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23343
23711
  var wrap = createElement('div', { className: DATE_HEADER_WRAP_CLASS });
23344
23712
  container.appendChild(wrap);
23345
23713
  var table = this.createTableLayout();
23714
+ if (this.parent.currentView === 'Month') {
23715
+ var thead = createElement('thead');
23716
+ thead.appendChild(createElement('tr'));
23717
+ prepend([thead], table);
23718
+ }
23346
23719
  this.createColGroup(table, this.colLevels[this.colLevels.length - 1]);
23347
23720
  var trEle = createElement('tr');
23348
23721
  for (var i = 0; i < this.colLevels.length; i++) {
@@ -23432,10 +23805,12 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23432
23805
  var dates = this.renderDates.map(function (date) { return new Date(+date); });
23433
23806
  var count = this.parent.activeViewOptions.showWeekend ? WEEK_LENGTH :
23434
23807
  this.parent.activeViewOptions.workDays.length;
23808
+ var level = this.colLevels.slice(0, 1)[0];
23809
+ var startIndex = this.renderDates.map(Number).indexOf(+level[0].date);
23435
23810
  for (var i = 0; i < (this.renderDates.length / count); i++) {
23436
23811
  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];
23812
+ for (var j = startIndex; j < (this.colLevels[0].length + startIndex) && j < colDates.length; j++) {
23813
+ var colDate = colDates[j];
23439
23814
  if (includeResource) {
23440
23815
  var lastRow = this.colLevels[(this.colLevels.length - 1)];
23441
23816
  var resourcesTd = lastRow.slice(0, lastRow.length / count);
@@ -23471,6 +23846,7 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23471
23846
  };
23472
23847
  Month.prototype.renderContentArea = function () {
23473
23848
  var tbl = this.createTableLayout(CONTENT_TABLE_CLASS);
23849
+ this.setAriaAttributes(tbl);
23474
23850
  this.addAutoHeightClass(tbl);
23475
23851
  if (this.parent.currentView === 'TimelineMonth') {
23476
23852
  this.createColGroup(tbl, this.colLevels[this.colLevels.length - 1]);
@@ -23487,8 +23863,8 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23487
23863
  };
23488
23864
  Month.prototype.getContentRows = function () {
23489
23865
  var trows = [];
23490
- var tr = createElement('tr', { attrs: { role: 'row' } });
23491
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
23866
+ var tr = createElement('tr');
23867
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
23492
23868
  var slotDatas = this.getContentSlots();
23493
23869
  for (var row = 0; row < slotDatas.length; row++) {
23494
23870
  var ntr = tr.cloneNode();
@@ -23778,7 +24154,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23778
24154
  this.generateColumnLevels();
23779
24155
  this.renderResourceMobileLayout();
23780
24156
  }
23781
- this.wireEvents(this.element.querySelector('.' + CONTENT_WRAP_CLASS), 'scroll');
24157
+ EventHandler.add(this.element.querySelector('.' + CONTENT_WRAP_CLASS), 'scroll', this.onContentScroll, this);
23782
24158
  this.parent.notify(contentReady, {});
23783
24159
  };
23784
24160
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -23814,7 +24190,14 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23814
24190
  };
23815
24191
  Year.prototype.renderCalendarHeader = function (currentDate) {
23816
24192
  var headerWrapper = createElement('div', { className: 'e-header e-month' });
23817
- var headerContent = createElement('div', { className: 'e-day e-title', innerHTML: this.getMonthName(currentDate) });
24193
+ var headerContent = createElement('div', { className: 'e-day e-title' });
24194
+ if (this.parent.monthHeaderTemplate) {
24195
+ var args = { date: currentDate, type: 'monthHeader' };
24196
+ this.renderTemplates(this.parent.getMonthHeaderTemplate(), args, 'monthHeaderTemplate', this.parent.activeViewOptions.monthHeaderTemplateName, headerContent);
24197
+ }
24198
+ else {
24199
+ headerContent.innerHTML = this.getMonthName(currentDate);
24200
+ }
23818
24201
  headerWrapper.appendChild(headerContent);
23819
24202
  this.parent.trigger(renderCell, { elementType: 'headerCells', element: headerContent, date: currentDate });
23820
24203
  return headerWrapper;
@@ -23824,6 +24207,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23824
24207
  var contentWrapper = createElement('div', { className: 'e-content e-month' });
23825
24208
  var contentTable = this.createTableLayout('e-calendar-table ' + CONTENT_TABLE_CLASS);
23826
24209
  contentWrapper.appendChild(contentTable);
24210
+ this.setAriaAttributes(contentTable);
23827
24211
  var thead = createElement('thead', { className: 'e-week-header' });
23828
24212
  var tr = createElement('tr');
23829
24213
  var currentWeek = getWeekFirstDate(firstDateOfMonth(currentDate), this.parent.firstDayOfWeek);
@@ -23831,7 +24215,15 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23831
24215
  tr.appendChild(createElement('th'));
23832
24216
  }
23833
24217
  for (var i = 0; i < WEEK_LENGTH; i++) {
23834
- tr.appendChild(createElement('th', { innerHTML: this.parent.getDayNames('narrow')[currentWeek.getDay()] }));
24218
+ if (this.parent.dayHeaderTemplate) {
24219
+ var th = createElement('th');
24220
+ var args = { date: currentWeek, type: 'dayHeader' };
24221
+ this.renderTemplates(this.parent.getDayHeaderTemplate(), args, 'dayHeaderTemplate', this.parent.activeViewOptions.dayHeaderTemplateName, th);
24222
+ tr.appendChild(th);
24223
+ }
24224
+ else {
24225
+ tr.appendChild(createElement('th', { innerHTML: this.parent.getDayNames('narrow')[currentWeek.getDay()] }));
24226
+ }
23835
24227
  currentWeek = new Date(currentWeek.getTime() + MS_PER_DAY);
23836
24228
  }
23837
24229
  thead.appendChild(tr);
@@ -23839,12 +24231,12 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23839
24231
  var tbody = contentTable.querySelector('tbody');
23840
24232
  while (dateCollection.length > 0) {
23841
24233
  var weekDates = dateCollection.splice(0, WEEK_LENGTH);
23842
- var tr_1 = createElement('tr', { attrs: { 'role': 'row' } });
24234
+ var tr_1 = createElement('tr');
23843
24235
  if (this.parent.activeViewOptions.showWeekNumber) {
23844
24236
  var weekNumber = this.parent.getWeekNumberContent(weekDates);
23845
24237
  var td = createElement('td', {
23846
24238
  className: 'e-week-number',
23847
- attrs: { 'role': 'gridcell', 'title': this.parent.localeObj.getConstant('week') + ' ' + weekNumber },
24239
+ attrs: { 'title': this.parent.localeObj.getConstant('week') + ' ' + weekNumber },
23848
24240
  innerHTML: weekNumber
23849
24241
  });
23850
24242
  tr_1.appendChild(td);
@@ -23854,13 +24246,23 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23854
24246
  var date = weekDates_1[_i];
23855
24247
  var td = createElement('td', {
23856
24248
  className: 'e-cell ' + WORK_CELLS_CLASS,
23857
- attrs: { 'role': 'gridcell', 'aria-selected': 'false', 'data-date': date.getTime().toString() }
24249
+ attrs: { 'aria-selected': 'false', 'data-date': date.getTime().toString() }
23858
24250
  });
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);
24251
+ if (this.parent.activeViewOptions.cellHeaderTemplate) {
24252
+ var args = { date: date, type: 'monthCells' };
24253
+ this.renderTemplates(this.parent.getCellHeaderTemplate(), args, 'cellHeaderTemplate', this.parent.activeViewOptions.cellHeaderTemplateName, td);
24254
+ }
24255
+ else {
24256
+ var span = createElement('span', {
24257
+ className: 'e-day', innerHTML: this.parent.globalize.formatDate(date, { skeleton: 'd', calendar: this.parent.getCalendarMode() }),
24258
+ attrs: { title: this.parent.globalize.formatDate(date, { type: 'date', skeleton: 'full' }) }
24259
+ });
24260
+ td.appendChild(span);
24261
+ }
24262
+ if (this.parent.activeViewOptions.cellTemplate) {
24263
+ var args = { date: date, type: 'monthCells' };
24264
+ this.renderTemplates(this.parent.getCellTemplate(), args, 'cellTemplate', this.parent.activeViewOptions.cellTemplateName, td);
24265
+ }
23864
24266
  var classList$$1 = [];
23865
24267
  if (currentDate.getMonth() !== date.getMonth()) {
23866
24268
  classList$$1.push(OTHERMONTH_CLASS);
@@ -23872,7 +24274,10 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23872
24274
  addClass([td], classList$$1);
23873
24275
  }
23874
24276
  tr_1.appendChild(td);
23875
- this.wireEvents(td, 'cell');
24277
+ EventHandler.add(td, 'click', this.onCellClick, this);
24278
+ if (!this.parent.isAdaptive) {
24279
+ EventHandler.add(td, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
24280
+ }
23876
24281
  this.parent.trigger(renderCell, { elementType: 'workCells', element: td, date: date });
23877
24282
  }
23878
24283
  tbody.appendChild(tr_1);
@@ -23958,6 +24363,11 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23958
24363
  return _this.parent.firstMonthOfYear + index;
23959
24364
  });
23960
24365
  };
24366
+ Year.prototype.renderTemplates = function (fn, args, tName, vName, ele) {
24367
+ var templateId = this.parent.element.id + '_' + vName + tName;
24368
+ var template = [].slice.call(fn(args, this.parent, tName, templateId, false));
24369
+ append(template, ele);
24370
+ };
23961
24371
  Year.prototype.onCellClick = function (e) {
23962
24372
  var target = closest(e.target, '.' + WORK_CELLS_CLASS);
23963
24373
  var startDate = this.parent.getDateFromElement(target);
@@ -23980,6 +24390,8 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23980
24390
  target = this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + target.getAttribute('data-date') + '"]');
23981
24391
  }
23982
24392
  this.parent.activeCellsData = this.parent.getCellDetails(target);
24393
+ var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });
24394
+ this.parent.trigger(cellClick, args);
23983
24395
  this.parent.quickPopup.moreEventClick(moreEventArgs, endDate);
23984
24396
  }
23985
24397
  };
@@ -24091,23 +24503,6 @@ var Year = /** @__PURE__ @class */ (function (_super) {
24091
24503
  this.yearEventModule.renderAppointments();
24092
24504
  this.parent.notify(eventsLoaded, args);
24093
24505
  };
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
24506
  Year.prototype.scrollToDate = function (scrollDate) {
24112
24507
  var date = +new Date(resetTime(scrollDate));
24113
24508
  var element = this.element.querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')[data-date="' + date + '"]');
@@ -24190,7 +24585,6 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
24190
24585
  'tabindex': '0',
24191
24586
  'aria-disabled': _this.parent.eventBase.getReadonlyAttribute(listData[li]),
24192
24587
  'aria-pressed': 'false',
24193
- 'aria-grabbed': 'true',
24194
24588
  'aria-label': _this.parent.getAnnouncementString(listData[li])
24195
24589
  }
24196
24590
  });
@@ -24397,9 +24791,9 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
24397
24791
  }
24398
24792
  };
24399
24793
  AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {
24400
- var tr = createElement('tr', { attrs: { role: 'row' } });
24794
+ var tr = createElement('tr');
24401
24795
  var ntr;
24402
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
24796
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
24403
24797
  var tempData;
24404
24798
  var rowSpan = 0;
24405
24799
  var level;
@@ -24494,11 +24888,10 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
24494
24888
  };
24495
24889
  AgendaBase.prototype.createTableRowElement = function (date, type) {
24496
24890
  var daysCount = getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
24497
- var tr = createElement('tr', { attrs: { 'role': 'row', 'data-row-index': daysCount.toString() } });
24891
+ var tr = createElement('tr', { attrs: { 'data-row-index': daysCount.toString() } });
24498
24892
  var td = createElement('td', {
24499
24893
  attrs: {
24500
24894
  'class': (type === 'monthHeader') ? MONTH_HEADER_CLASS : AGENDA_CELLS_CLASS,
24501
- 'role': 'gridcell',
24502
24895
  'aria-selected': 'false',
24503
24896
  'data-column-index': daysCount.toString(),
24504
24897
  'data-date': date.getTime().toString()
@@ -24562,6 +24955,7 @@ var Agenda = /** @__PURE__ @class */ (function (_super) {
24562
24955
  var wrap = createElement('div', { className: CONTENT_WRAP_CLASS });
24563
24956
  workTd.appendChild(wrap);
24564
24957
  var tbl = this.createTableLayout(CONTENT_TABLE_CLASS);
24958
+ this.setAriaAttributes(tbl);
24565
24959
  wrap.appendChild(tbl);
24566
24960
  var tBody = tbl.querySelector('tbody');
24567
24961
  var agendaDate = resetTime(this.parent.selectedDate);
@@ -25497,8 +25891,8 @@ var TimelineViews = /** @__PURE__ @class */ (function (_super) {
25497
25891
  };
25498
25892
  TimelineViews.prototype.getContentRows = function () {
25499
25893
  var rows = [];
25500
- var tr = createElement('tr', { attrs: { role: 'row' } });
25501
- var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });
25894
+ var tr = createElement('tr');
25895
+ var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
25502
25896
  var trCount = this.getRowCount();
25503
25897
  for (var i = 0; i < trCount; i++) {
25504
25898
  var ntr = tr.cloneNode();
@@ -25883,6 +26277,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25883
26277
  var content = createElement('div', { className: CONTENT_WRAP_CLASS });
25884
26278
  lastTd.appendChild(content);
25885
26279
  var contentTable = this.createTableLayout(CONTENT_TABLE_CLASS);
26280
+ this.setAriaAttributes(contentTable);
25886
26281
  content.appendChild(contentTable);
25887
26282
  var eventWrapper = createElement('div', { className: EVENT_TABLE_CLASS });
25888
26283
  content.appendChild(eventWrapper);
@@ -25916,12 +26311,12 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25916
26311
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);
25917
26312
  var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
25918
26313
  var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));
25919
- var tr = createElement('tr', { attrs: { 'role': 'row' } });
26314
+ var tr = createElement('tr');
25920
26315
  var monthTr = tr.cloneNode();
25921
26316
  monthBody.appendChild(monthTr);
25922
26317
  var contentTr = tr.cloneNode();
25923
26318
  contentBody.appendChild(contentTr);
25924
- var monthTd = createElement('td', { className: MONTH_HEADER_CLASS, attrs: { 'role': 'gridcell' } });
26319
+ var monthTd = createElement('td', { className: MONTH_HEADER_CLASS });
25925
26320
  if (this.parent.activeViewOptions.orientation === 'Horizontal') {
25926
26321
  if (this.parent.monthHeaderTemplate) {
25927
26322
  append(this.renderDayMonthHeaderTemplate(monthStart, month, 'monthHeaderTemplate'), monthTd);
@@ -25956,7 +26351,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25956
26351
  isDateAvail = column >= monthStart.getDay() && date.getTime() < monthEnd.getTime();
25957
26352
  }
25958
26353
  var td = createElement('td', {
25959
- className: WORK_CELLS_CLASS, attrs: { 'role': 'gridcell', 'aria-selected': 'false' }
26354
+ className: WORK_CELLS_CLASS, attrs: { 'aria-selected': 'false' }
25960
26355
  });
25961
26356
  contentTr.appendChild(td);
25962
26357
  var dateHeader = createElement('div', {
@@ -25997,7 +26392,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25997
26392
  td.appendChild(dateHeader);
25998
26393
  if (isDateAvail) {
25999
26394
  td.setAttribute('data-date', date.getTime().toString());
26000
- this.wireEvents(td, 'cell');
26395
+ this.wireEvents(td);
26001
26396
  }
26002
26397
  this.renderCellTemplate({ date: date, type: 'workCells' }, td);
26003
26398
  this.parent.trigger(renderCell, { elementType: 'workCells', element: td, date: date });
@@ -26013,7 +26408,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26013
26408
  var tRow = [];
26014
26409
  var monthCells = this.getMonths();
26015
26410
  for (var row = 0; row < this.parent.resourceBase.renderedResources.length; row++) {
26016
- var tr = createElement('tr', { attrs: { 'role': 'row' } });
26411
+ var tr = createElement('tr');
26017
26412
  tRow.push(tr);
26018
26413
  var resData = void 0;
26019
26414
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
@@ -26036,14 +26431,14 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26036
26431
  var tdELe = createElement('td', {
26037
26432
  className: WORK_CELLS_CLASS,
26038
26433
  attrs: {
26039
- 'role': 'gridcell', 'aria-selected': 'false',
26434
+ 'aria-selected': 'false',
26040
26435
  'data-date': date.getTime().toString()
26041
26436
  }
26042
26437
  });
26043
26438
  addClass([tdELe], classList$$1);
26044
26439
  tdELe.setAttribute('data-group-index', groupIndex.toString());
26045
26440
  this.renderCellTemplate({ date: date, type: 'resourceGroupCells', groupIndex: groupIndex }, tdELe);
26046
- this.wireEvents(tdELe, 'cell');
26441
+ this.wireEvents(tdELe);
26047
26442
  this.parent.trigger(renderCell, { elementType: 'resourceGroupCells', element: tdELe, date: date });
26048
26443
  tr.appendChild(tdELe);
26049
26444
  }
@@ -26054,7 +26449,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26054
26449
  var months = this.getMonths();
26055
26450
  for (var row = 0; row < this.rowCount; row++) {
26056
26451
  wrapper.appendChild(createElement('div', { className: APPOINTMENT_CONTAINER_CLASS }));
26057
- var tr = createElement('tr', { attrs: { 'role': 'row' } });
26452
+ var tr = createElement('tr');
26058
26453
  contentBody.appendChild(tr);
26059
26454
  var resData = void 0;
26060
26455
  if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
@@ -26067,7 +26462,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26067
26462
  monthBody.appendChild(monthTr);
26068
26463
  var monthTd = createElement('td', {
26069
26464
  className: MONTH_HEADER_CLASS,
26070
- attrs: { 'role': 'gridcell', 'data-date': date.getTime().toString() }
26465
+ attrs: { 'data-date': date.getTime().toString() }
26071
26466
  });
26072
26467
  if (this.parent.monthHeaderTemplate) {
26073
26468
  append(this.renderDayMonthHeaderTemplate(monthDate, row, 'monthHeaderTemplate'), monthTd);
@@ -26099,14 +26494,14 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26099
26494
  var td = createElement('td', {
26100
26495
  className: WORK_CELLS_CLASS,
26101
26496
  attrs: {
26102
- 'role': 'gridcell', 'aria-selected': 'false',
26497
+ 'aria-selected': 'false',
26103
26498
  'data-date': date.getTime().toString()
26104
26499
  }
26105
26500
  });
26106
26501
  addClass([td], classList$$1);
26107
26502
  td.setAttribute('data-group-index', groupIndex.toString());
26108
26503
  this.renderCellTemplate({ date: date, type: 'resourceGroupCells', groupIndex: groupIndex }, td);
26109
- this.wireEvents(td, 'cell');
26504
+ this.wireEvents(td);
26110
26505
  tr.appendChild(td);
26111
26506
  this.parent.trigger(renderCell, { elementType: 'resourceGroupCells', element: td, date: date });
26112
26507
  }
@@ -26171,6 +26566,13 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
26171
26566
  return this.getContentAreaElement();
26172
26567
  }
26173
26568
  };
26569
+ TimelineYear.prototype.wireEvents = function (element) {
26570
+ EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);
26571
+ EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);
26572
+ if (!this.parent.isAdaptive) {
26573
+ EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
26574
+ }
26575
+ };
26174
26576
  return TimelineYear;
26175
26577
  }(Year));
26176
26578
 
@@ -26443,6 +26845,7 @@ var ICalendarImport = /** @__PURE__ @class */ (function () {
26443
26845
  this.parent.addEvent(this.processOccurrence(app));
26444
26846
  };
26445
26847
  ICalendarImport.prototype.processOccurrence = function (app) {
26848
+ var _this = this;
26446
26849
  var appoint = [];
26447
26850
  var uId = 'UID';
26448
26851
  var fields = this.parent.eventFields;
@@ -26465,17 +26868,21 @@ var ICalendarImport = /** @__PURE__ @class */ (function () {
26465
26868
  // eslint-disable-next-line no-prototype-builtins
26466
26869
  if (data[i].hasOwnProperty(fields.recurrenceID)) {
26467
26870
  var exdate = data[i][fields.recurrenceID];
26871
+ data[i][fields.id] = _this.parent.eventBase.generateGuid();
26468
26872
  data[i][fields.recurrenceID] = id;
26469
26873
  data[i][fields.recurrenceException] = null;
26470
26874
  parentObj[fields.recurrenceException] = (isNullOrUndefined(parentObj[fields.recurrenceException])) ?
26471
26875
  exdate : parentObj[fields.recurrenceException] + ',' + exdate;
26876
+ delete data[i][uId];
26472
26877
  appoint.push(data[i]);
26473
26878
  }
26474
26879
  }
26880
+ delete parentObj[uId];
26475
26881
  appoint.push(parentObj);
26476
26882
  // eslint-disable-next-line no-prototype-builtins
26477
26883
  }
26478
26884
  else if (!eventObj.hasOwnProperty(fields.recurrenceID)) {
26885
+ delete eventObj[uId];
26479
26886
  appoint.push(eventObj);
26480
26887
  }
26481
26888
  }
@@ -26736,5 +27143,5 @@ var Print = /** @__PURE__ @class */ (function () {
26736
27143
  * Export Schedule components
26737
27144
  */
26738
27145
 
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 };
27146
+ 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
27147
  //# sourceMappingURL=ej2-schedule.es5.js.map