@syncfusion/ej2-schedule 19.4.52 → 20.1.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +31 -9
  2. package/dist/ej2-schedule.umd.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-schedule.es2015.js +158 -47
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +158 -47
  7. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  8. package/dist/global/ej2-schedule.min.js +2 -2
  9. package/dist/global/ej2-schedule.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +15 -15
  12. package/src/recurrence-editor/date-generator.js +4 -0
  13. package/src/schedule/base/schedule.js +4 -0
  14. package/src/schedule/event-renderer/agenda-base.js +1 -1
  15. package/src/schedule/event-renderer/month.d.ts +3 -0
  16. package/src/schedule/event-renderer/month.js +38 -24
  17. package/src/schedule/event-renderer/timeline-view.js +2 -1
  18. package/src/schedule/event-renderer/year.js +3 -1
  19. package/src/schedule/popups/event-window.js +4 -2
  20. package/src/schedule/renderer/month.d.ts +1 -0
  21. package/src/schedule/renderer/month.js +29 -12
  22. package/src/schedule/renderer/renderer.js +2 -1
  23. package/src/schedule/renderer/timeline-year.d.ts +2 -1
  24. package/src/schedule/renderer/timeline-year.js +49 -4
  25. package/src/schedule/renderer/vertical-view.js +2 -1
  26. package/src/schedule/renderer/year.js +20 -0
  27. package/styles/bootstrap-dark.css +19 -8
  28. package/styles/bootstrap.css +19 -8
  29. package/styles/bootstrap4.css +20 -9
  30. package/styles/bootstrap5-dark.css +29 -20
  31. package/styles/bootstrap5.css +29 -20
  32. package/styles/fabric-dark.css +19 -8
  33. package/styles/fabric.css +19 -8
  34. package/styles/fluent-dark.css +5102 -0
  35. package/styles/fluent-dark.scss +2 -0
  36. package/styles/fluent.css +5103 -0
  37. package/styles/fluent.scss +2 -0
  38. package/styles/highcontrast-light.css +19 -8
  39. package/styles/highcontrast.css +20 -9
  40. package/styles/material-dark.css +19 -8
  41. package/styles/material.css +19 -8
  42. package/styles/recurrence-editor/_fluent-dark-definition.scss +1 -0
  43. package/styles/recurrence-editor/fluent-dark.css +495 -0
  44. package/styles/recurrence-editor/fluent-dark.scss +3 -0
  45. package/styles/recurrence-editor/fluent.css +495 -0
  46. package/styles/recurrence-editor/fluent.scss +3 -0
  47. package/styles/schedule/_bootstrap4-definition.scss +1 -1
  48. package/styles/schedule/_bootstrap5-definition.scss +4 -4
  49. package/styles/schedule/_fluent-dark-definition.scss +1 -0
  50. package/styles/schedule/_fluent-definition.scss +10 -8
  51. package/styles/schedule/_highcontrast-definition.scss +1 -1
  52. package/styles/schedule/_layout.scss +62 -15
  53. package/styles/schedule/_tailwind-definition.scss +1 -0
  54. package/styles/schedule/_theme.scss +6 -9
  55. package/styles/schedule/bootstrap-dark.css +19 -8
  56. package/styles/schedule/bootstrap.css +19 -8
  57. package/styles/schedule/bootstrap4.css +20 -9
  58. package/styles/schedule/bootstrap5-dark.css +29 -20
  59. package/styles/schedule/bootstrap5.css +29 -20
  60. package/styles/schedule/fabric-dark.css +19 -8
  61. package/styles/schedule/fabric.css +19 -8
  62. package/styles/schedule/fluent-dark.css +4606 -0
  63. package/styles/schedule/fluent-dark.scss +4 -0
  64. package/styles/schedule/fluent.css +4607 -0
  65. package/styles/schedule/fluent.scss +5 -0
  66. package/styles/schedule/highcontrast-light.css +19 -8
  67. package/styles/schedule/highcontrast.css +20 -9
  68. package/styles/schedule/icons/_fluent-dark.scss +1 -0
  69. package/styles/schedule/icons/_fluent.scss +51 -50
  70. package/styles/schedule/icons/_tailwind.scss +51 -50
  71. package/styles/schedule/material-dark.css +19 -8
  72. package/styles/schedule/material.css +19 -8
  73. package/styles/schedule/tailwind-dark.css +74 -61
  74. package/styles/schedule/tailwind.css +74 -61
  75. package/styles/tailwind-dark.css +74 -61
  76. package/styles/tailwind.css +74 -61
@@ -3660,6 +3660,10 @@ function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount, vi
3660
3660
  }
3661
3661
  maxOccurrence = maximumCount;
3662
3662
  setFirstDayOfWeek(DAYINDEX[startDayOfWeek]);
3663
+ if (ruleObject.until) {
3664
+ var end = resetTime(ruleObject.until);
3665
+ ruleObject.until = new Date(end.getFullYear(), end.getMonth(), end.getDate(), 23, 59, 59);
3666
+ }
3663
3667
  switch (ruleObject.freq) {
3664
3668
  case 'DAILY':
3665
3669
  dailyType(modifiedDate, ruleObject.until, data, ruleObject);
@@ -7242,6 +7246,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7242
7246
  function MonthEvent(parent) {
7243
7247
  var _this = _super.call(this, parent) || this;
7244
7248
  _this.renderedEvents = [];
7249
+ _this.eventsRendered = [];
7245
7250
  _this.monthHeaderHeight = 0;
7246
7251
  _this.moreIndicatorHeight = 19;
7247
7252
  _this.renderType = 'day';
@@ -7262,7 +7267,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7262
7267
  appElement = (this.parent.currentView === 'Month') ? appElement : [appElement[0]];
7263
7268
  for (var _i = 0, appElement_1 = appElement; _i < appElement_1.length; _i++) {
7264
7269
  var wrap = appElement_1[_i];
7265
- if (!wrap.classList.contains('e-more-indicator') && wrap.parentElement && wrap.parentElement.parentNode) {
7270
+ if (wrap.parentElement && wrap.parentElement.parentNode) {
7266
7271
  remove(wrap.parentElement);
7267
7272
  }
7268
7273
  }
@@ -7358,6 +7363,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7358
7363
  };
7359
7364
  MonthEvent.prototype.renderEventsHandler = function (dateRender, workDays, resData) {
7360
7365
  this.renderedEvents = [];
7366
+ this.eventsRendered = [];
7361
7367
  var eventsList;
7362
7368
  var blockList;
7363
7369
  var resIndex = 0;
@@ -7708,16 +7714,16 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7708
7714
  }
7709
7715
  var overlapCount = this.getIndex(startTime);
7710
7716
  event.Index = overlapCount;
7711
- var appHeight = this.eventHeight;
7712
7717
  this.renderedEvents.push(extend({}, event, null, true));
7713
7718
  var diffInDays = event.data.count;
7714
7719
  if (startTime.getTime() <= endTime.getTime()) {
7715
7720
  var appWidth = (diffInDays * this.cellWidth) - 5;
7716
7721
  var cellTd = this.workCells[day];
7717
- var appTop = (overlapCount * (appHeight + EVENT_GAP));
7718
- var height = this.monthHeaderHeight + ((overlapCount + 1) * (appHeight + EVENT_GAP)) + this.moreIndicatorHeight;
7722
+ var appTop = (overlapCount * (this.eventHeight + EVENT_GAP));
7723
+ var height = this.monthHeaderHeight + ((overlapCount + 1) * (this.eventHeight + EVENT_GAP)) + this.moreIndicatorHeight;
7719
7724
  var enableAppRender = this.maxOrIndicator ? overlapCount < 1 ? true : false : this.cellHeight > height;
7720
7725
  if (this.parent.rowAutoHeight || enableAppRender) {
7726
+ this.eventsRendered.push(extend({}, event, null, true));
7721
7727
  var appointmentElement = void 0;
7722
7728
  if (this.inlineValue) {
7723
7729
  appointmentElement = this.parent.inlineModule.createInlineAppointmentElement();
@@ -7733,28 +7739,37 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7733
7739
  var firstChild = cellTd.parentElement.firstElementChild;
7734
7740
  this.updateCellHeight(firstChild, height);
7735
7741
  }
7742
+ else if (cellTd.querySelector('.' + MORE_INDICATOR_CLASS)) {
7743
+ this.renderMoreIndicators(diffInDays, day);
7744
+ }
7736
7745
  }
7737
7746
  else {
7738
- for (var i = 0; i < diffInDays; i++) {
7739
- var cellTd_1 = this.workCells[day + i];
7740
- if (cellTd_1 && isNullOrUndefined(cellTd_1.querySelector('.' + MORE_INDICATOR_CLASS))) {
7741
- var startDate = new Date(this.dateRender[day + i].getTime());
7742
- var endDate = addDays(this.dateRender[day + i], 1);
7743
- var groupIndex = cellTd_1.getAttribute('data-group-index');
7744
- var filterEvents = this.getFilteredEvents(startDate, endDate, groupIndex);
7745
- var appArea = this.cellHeight - this.monthHeaderHeight - this.moreIndicatorHeight;
7746
- appHeight = this.withIndicator ? appArea : appHeight;
7747
- var renderedAppCount = Math.floor(appArea / (appHeight + EVENT_GAP));
7748
- var count = (filterEvents.length - renderedAppCount) <= 0 ? 1 : (filterEvents.length - renderedAppCount);
7749
- var moreIndicatorElement = this.getMoreIndicatorElement(count, startDate, endDate);
7750
- if (!isNullOrUndefined(groupIndex)) {
7751
- moreIndicatorElement.setAttribute('data-group-index', groupIndex);
7752
- }
7753
- moreIndicatorElement.style.top = appArea + 'px';
7754
- moreIndicatorElement.style.width = this.cellWidth - 2 + 'px';
7755
- this.renderElement(cellTd_1, moreIndicatorElement);
7756
- EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);
7747
+ this.renderMoreIndicators(diffInDays, day);
7748
+ }
7749
+ }
7750
+ };
7751
+ MonthEvent.prototype.renderMoreIndicators = function (diffInDays, day) {
7752
+ for (var i = 0; i < diffInDays; i++) {
7753
+ if (this.workCells[day + i]) {
7754
+ var startDate = new Date(this.dateRender[day + i].getTime());
7755
+ var endDate = addDays(this.dateRender[day + i], 1);
7756
+ var groupIndex = this.workCells[day + i].getAttribute('data-group-index');
7757
+ var filterEvents = this.getFilteredEvents(startDate, endDate, groupIndex);
7758
+ var renderedAppCount = this.getOverlapEvents(startDate, this.eventsRendered).length;
7759
+ var count = (filterEvents.length - renderedAppCount) <= 0 ? 1 : (filterEvents.length - renderedAppCount);
7760
+ var indicator = this.workCells[day + i].querySelector('.' + MORE_INDICATOR_CLASS);
7761
+ if (indicator) {
7762
+ indicator.innerHTML = this.getMoreIndicatorText(count);
7763
+ }
7764
+ else {
7765
+ var moreIndicatorElement = this.getMoreIndicatorElement(count, startDate, endDate);
7766
+ if (!isNullOrUndefined(groupIndex)) {
7767
+ moreIndicatorElement.setAttribute('data-group-index', groupIndex);
7757
7768
  }
7769
+ moreIndicatorElement.style.top = (this.cellHeight - this.monthHeaderHeight - this.moreIndicatorHeight) + 'px';
7770
+ moreIndicatorElement.style.width = this.cellWidth - 2 + 'px';
7771
+ this.renderElement(this.workCells[day + i], moreIndicatorElement);
7772
+ EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);
7758
7773
  }
7759
7774
  }
7760
7775
  }
@@ -7876,7 +7891,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7876
7891
  MonthEvent.prototype.getMoreIndicatorElement = function (count, startDate, endDate) {
7877
7892
  var moreIndicatorElement = createElement('div', {
7878
7893
  className: MORE_INDICATOR_CLASS,
7879
- innerHTML: '+' + this.parent.globalize.formatNumber(count) + '&nbsp;' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more')),
7894
+ innerHTML: this.getMoreIndicatorText(count),
7880
7895
  attrs: {
7881
7896
  'tabindex': '0',
7882
7897
  'data-start-date': startDate.getTime().toString(),
@@ -7886,6 +7901,9 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7886
7901
  });
7887
7902
  return moreIndicatorElement;
7888
7903
  };
7904
+ MonthEvent.prototype.getMoreIndicatorText = function (count) {
7905
+ return '+' + this.parent.globalize.formatNumber(count) + '&nbsp;' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'));
7906
+ };
7889
7907
  MonthEvent.prototype.removeHeightProperty = function (selector) {
7890
7908
  var rows = [].slice.call(this.element.querySelectorAll('.' + selector + ' tbody tr'));
7891
7909
  for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
@@ -8185,7 +8203,8 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
8185
8203
  }
8186
8204
  };
8187
8205
  TimelineEvent.prototype.updateCellHeight = function (cell, height) {
8188
- if ((height > this.cellHeight)) {
8206
+ var cellHeight = cell.style.height === '' ? this.cellHeight : parseInt(cell.style.height, 10);
8207
+ if (height > cellHeight) {
8189
8208
  setStyleAttribute(cell, { 'height': height + 'px' });
8190
8209
  if (this.parent.activeViewOptions.group.resources.length > 0) {
8191
8210
  var resourceCell = this.parent.element.querySelector('.' + RESOURCE_COLUMN_TABLE_CLASS + ' ' + 'tbody td[data-group-index="' +
@@ -12007,7 +12026,8 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12007
12026
  return labelText;
12008
12027
  };
12009
12028
  EventWindow.prototype.onChange = function (args) {
12010
- var target = args.event.currentTarget.querySelector('input');
12029
+ var targetSelector = "." + EVENT_WINDOW_ALL_DAY_CLASS + ",." + TIME_ZONE_CLASS + ",." + EVENT_WINDOW_REPEAT_CLASS;
12030
+ var target = closest(args.event.target, targetSelector);
12011
12031
  if (target.classList.contains(EVENT_WINDOW_ALL_DAY_CLASS)) {
12012
12032
  this.onAllDayChange(args.checked);
12013
12033
  }
@@ -12173,7 +12193,8 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12173
12193
  };
12174
12194
  EventWindow.prototype.showDetails = function (eventData) {
12175
12195
  var eventObj = extend({}, eventData, null, true);
12176
- if (eventObj[this.fields.endTime].getHours() === 0 && eventObj[this.fields.endTime].getMinutes() === 0) {
12196
+ if ((!this.cellClickAction || this.cellClickAction && !isNullOrUndefined(this.parent.editorTemplate)) &&
12197
+ eventObj[this.fields.endTime].getHours() === 0 && eventObj[this.fields.endTime].getMinutes() === 0) {
12177
12198
  this.trimAllDay(eventObj);
12178
12199
  }
12179
12200
  this.eventData = eventObj;
@@ -13488,7 +13509,8 @@ var Render = /** @__PURE__ @class */ (function () {
13488
13509
  this.parent.virtualScrollModule.destroy();
13489
13510
  this.parent.virtualScrollModule = null;
13490
13511
  }
13491
- if (this.parent.currentView.indexOf('Timeline') !== -1 && this.parent.currentView.indexOf('Year') === -1
13512
+ if (this.parent.currentView.indexOf('Timeline') !== -1 && (this.parent.currentView.indexOf('Year') === -1 ||
13513
+ (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical'))
13492
13514
  && this.parent.activeViewOptions.allowVirtualScrolling
13493
13515
  && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
13494
13516
  this.parent.virtualScrollModule = new VirtualScroll(this.parent);
@@ -16324,6 +16346,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16324
16346
  };
16325
16347
  _this.trigger(navigating, navArgs, function (navigationArgs) {
16326
16348
  if (!navigationArgs.cancel) {
16349
+ _this.uiStateValues.isInitial = ['TimelineMonth', 'TimelineYear', 'Year'].indexOf(view) > -1 ? true : _this.uiStateValues.isInitial;
16327
16350
  _this.viewIndex = navigationArgs.viewIndex;
16328
16351
  _this.setProperties({ currentView: view }, true);
16329
16352
  if (_this.headerModule) {
@@ -16948,6 +16971,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16948
16971
  if (document.querySelectorAll(template).length) {
16949
16972
  return compile(document.querySelector(template).innerHTML.trim());
16950
16973
  }
16974
+ else {
16975
+ return compile(template);
16976
+ }
16951
16977
  }
16952
16978
  catch (error) {
16953
16979
  return compile(template);
@@ -19833,7 +19859,9 @@ var YearEvent = /** @__PURE__ @class */ (function (_super) {
19833
19859
  this.eventHeight = getElementHeightFromClass(eventTable, APPOINTMENT_CLASS);
19834
19860
  var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + APPOINTMENT_CONTAINER_CLASS));
19835
19861
  var resources = this.parent.uiStateValues.isGroupAdaptive ?
19836
- [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] : this.parent.resourceBase.lastResourceLevel;
19862
+ [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :
19863
+ this.parent.activeViewOptions.allowVirtualScrolling ? this.parent.resourceBase.renderedResources :
19864
+ this.parent.resourceBase.lastResourceLevel;
19837
19865
  var months = this.getMonths();
19838
19866
  if (this.parent.activeViewOptions.orientation === 'Horizontal') {
19839
19867
  for (var month = 0; month < months.length; month++) {
@@ -22684,8 +22712,9 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
22684
22712
  var msStartHour = startHour.getTime();
22685
22713
  var msEndHour = endHour.getTime();
22686
22714
  if (msStartHour !== msEndHour) {
22715
+ var duration = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;
22687
22716
  length = (Math.abs(msEndHour - msStartHour) / msInterval) - ((new Date(msEndHour).getTimezoneOffset()
22688
- - new Date(msStartHour).getTimezoneOffset()) / (60 / this.parent.activeViewOptions.timeScale.slotCount));
22717
+ - new Date(msStartHour).getTimezoneOffset()) / duration);
22689
22718
  }
22690
22719
  if (!this.parent.activeViewOptions.timeScale.enable) {
22691
22720
  length = 1;
@@ -22924,6 +22953,8 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22924
22953
  this.parent.notify(virtualScroll, e);
22925
22954
  this.scrollTopPanel(e.target);
22926
22955
  this.scrollLeftPanel(e.target);
22956
+ this.parent.uiStateValues.top = e.target.scrollTop;
22957
+ this.parent.uiStateValues.left = e.target.scrollLeft;
22927
22958
  this.setPersistence();
22928
22959
  };
22929
22960
  Month.prototype.scrollLeftPanel = function (target) {
@@ -22956,26 +22987,41 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22956
22987
  header.style[args.cssProperties.padding] = '';
22957
22988
  }
22958
22989
  this.setColWidth(content);
22959
- if (args.scrollPosition) {
22990
+ if (args.scrollPosition || !args.isPreventScrollUpdate && this.parent.currentView === 'TimelineMonth') {
22991
+ var top_1 = this.parent.currentView === 'TimelineMonth' ? this.parent.uiStateValues.top : args.scrollPosition.top;
22960
22992
  if (leftPanel) {
22961
- leftPanel.scrollTop = args.scrollPosition.top;
22993
+ leftPanel.scrollTop = top_1;
22962
22994
  }
22963
- content.scrollTop = args.scrollPosition.top;
22964
- content.scrollLeft = args.scrollPosition.left;
22965
- }
22966
- else {
22967
- var headerCell = this.element.querySelector('.' + HEADER_CELLS_CLASS + '[data-date="'
22968
- + this.parent.selectedDate.getTime().toString() + '"]');
22969
- if (!isNullOrUndefined(headerCell)) {
22970
- content.scrollLeft = !this.parent.enableRtl ?
22971
- headerCell.offsetLeft : -(this.parent.getContentTable().offsetWidth - headerCell.offsetLeft - headerCell.offsetWidth);
22995
+ content.scrollTop = top_1;
22996
+ if (this.parent.uiStateValues.isInitial) {
22997
+ this.scrollToSelectedDate();
22998
+ this.parent.uiStateValues.isInitial = false;
22972
22999
  }
22973
23000
  else {
22974
- content.scrollLeft = 0;
23001
+ content.scrollLeft = this.parent.currentView === 'TimelineMonth' ? this.parent.uiStateValues.left :
23002
+ args.scrollPosition.left;
22975
23003
  }
22976
23004
  }
23005
+ else {
23006
+ this.scrollToSelectedDate();
23007
+ }
22977
23008
  this.retainScrollPosition();
22978
23009
  };
23010
+ Month.prototype.scrollToSelectedDate = function () {
23011
+ var headerCell = this.element.querySelector('.' + HEADER_CELLS_CLASS + '[data-date="'
23012
+ + this.parent.selectedDate.getTime().toString() + '"]');
23013
+ var content = this.getContentAreaElement();
23014
+ if (!isNullOrUndefined(headerCell)) {
23015
+ content.scrollLeft = !this.parent.enableRtl ?
23016
+ headerCell.offsetLeft : -(this.parent.getContentTable().offsetWidth - headerCell.offsetLeft - headerCell.offsetWidth);
23017
+ }
23018
+ else {
23019
+ content.scrollLeft = 0;
23020
+ }
23021
+ if (content.scrollLeft === 0 && this.parent.uiStateValues.isInitial) {
23022
+ this.parent.uiStateValues.left = 0;
23023
+ }
23024
+ };
22979
23025
  Month.prototype.setContentHeight = function (content, leftPanelElement, height) {
22980
23026
  content.style.height = 'auto';
22981
23027
  if (this.parent.currentView === 'Month') {
@@ -23549,6 +23595,9 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23549
23595
  var viewTypeClass = this.parent.activeViewOptions.orientation === 'Horizontal' ? 'e-horizontal' : 'e-vertical';
23550
23596
  addClass([this.element], [this.viewClass, viewTypeClass, className]);
23551
23597
  this.renderPanel(className);
23598
+ if (this.parent.activeViewOptions.allowVirtualScrolling) {
23599
+ addClass([this.element], [VIRTUAL_SCROLL_CLASS]);
23600
+ }
23552
23601
  var calendarTable = this.createTableLayout(OUTER_TABLE_CLASS);
23553
23602
  this.element.appendChild(calendarTable);
23554
23603
  this.element.querySelector('table').setAttribute('role', 'presentation');
@@ -23769,6 +23818,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23769
23818
  Year.prototype.onContentScroll = function (e) {
23770
23819
  var target = e.target;
23771
23820
  var headerWrapper = this.getDatesHeaderElement();
23821
+ this.parent.notify(virtualScroll, e);
23772
23822
  if (headerWrapper) {
23773
23823
  headerWrapper.firstElementChild.scrollLeft = target.scrollLeft;
23774
23824
  }
@@ -23777,6 +23827,10 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23777
23827
  if (scrollTopElement) {
23778
23828
  scrollTopElement.scrollTop = target.scrollTop;
23779
23829
  }
23830
+ if (!this.parent.isAdaptive) {
23831
+ this.parent.uiStateValues.top = e.target.scrollTop;
23832
+ }
23833
+ this.parent.uiStateValues.left = e.target.scrollLeft;
23780
23834
  this.setPersistence();
23781
23835
  };
23782
23836
  Year.prototype.onScrollUiUpdate = function (args) {
@@ -23807,6 +23861,18 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23807
23861
  var isYScroll = contentWrapper.scrollWidth > contentWrapper.clientWidth;
23808
23862
  leftPanelElement.style.height = formatUnit(height - (isYScroll ? 17 : 0));
23809
23863
  }
23864
+ if (!args.isPreventScrollUpdate) {
23865
+ if (this.parent.uiStateValues.isInitial) {
23866
+ this.parent.uiStateValues.isInitial = false;
23867
+ }
23868
+ else {
23869
+ if (leftPanelElement) {
23870
+ leftPanelElement.scrollTop = this.parent.uiStateValues.top;
23871
+ }
23872
+ contentWrapper.scrollTop = this.parent.uiStateValues.top;
23873
+ contentWrapper.scrollLeft = this.parent.uiStateValues.left;
23874
+ }
23875
+ }
23810
23876
  this.retainScrollPosition();
23811
23877
  };
23812
23878
  Year.prototype.getStartDate = function () {
@@ -23925,7 +23991,7 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
23925
23991
  moduleName: 'agenda',
23926
23992
  listClass: this.parent.activeView.viewClass,
23927
23993
  itemClass: this.parent.activeView.viewClass,
23928
- template: '<div class=' + AGENDA_NO_EVENT_CLASS + '>${subject}</div>'
23994
+ template: "<div class=\"" + AGENDA_NO_EVENT_CLASS + "\">" + this.parent.localeObj.getConstant('noEvents') + "</div>"
23929
23995
  });
23930
23996
  }
23931
23997
  else {
@@ -25577,7 +25643,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25577
25643
  !this.parent.uiStateValues.isGroupAdaptive) {
25578
25644
  tdCollection.push(firstTd);
25579
25645
  firstTd.appendChild(this.parent.resourceBase.createResourceColumn());
25580
- this.rowCount = this.parent.resourceBase.lastResourceLevel.length;
25646
+ this.rowCount = this.parent.resourceBase.renderedResources.length;
25581
25647
  }
25582
25648
  else {
25583
25649
  tdCollection.push(firstTd);
@@ -25594,6 +25660,9 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25594
25660
  content.appendChild(contentTable);
25595
25661
  var eventWrapper = createElement('div', { className: EVENT_TABLE_CLASS });
25596
25662
  content.appendChild(eventWrapper);
25663
+ if (this.parent.virtualScrollModule) {
25664
+ this.parent.virtualScrollModule.renderVirtualTrack(content);
25665
+ }
25597
25666
  var contentTBody = contentTable.querySelector('tbody');
25598
25667
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25599
25668
  if (this.parent.rowAutoHeight) {
@@ -25711,6 +25780,47 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25711
25780
  }
25712
25781
  }
25713
25782
  };
25783
+ TimelineYear.prototype.getContentRows = function () {
25784
+ var tRow = [];
25785
+ var monthCells = this.getMonths();
25786
+ for (var row = 0; row < this.parent.resourceBase.renderedResources.length; row++) {
25787
+ var tr = createElement('tr', { attrs: { 'role': 'row' } });
25788
+ tRow.push(tr);
25789
+ var resData = void 0;
25790
+ if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25791
+ resData = this.parent.resourceBase.renderedResources[row];
25792
+ }
25793
+ var monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[row], 1);
25794
+ var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
25795
+ for (var month = 0; month < this.columnCount; month++) {
25796
+ var classList$$1 = [];
25797
+ var groupIndex = resData.groupIndex;
25798
+ classList$$1 = classList$$1.concat(resData.className);
25799
+ if (classList$$1.indexOf(RESOURCE_PARENT_CLASS) > -1) {
25800
+ classList$$1.push(RESOURCE_GROUP_CELLS_CLASS);
25801
+ }
25802
+ else {
25803
+ classList$$1.push(WORKDAY_CLASS);
25804
+ }
25805
+ monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[month], 1);
25806
+ date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
25807
+ var tdELe = createElement('td', {
25808
+ className: WORK_CELLS_CLASS,
25809
+ attrs: {
25810
+ 'role': 'gridcell', 'aria-selected': 'false',
25811
+ 'data-date': date.getTime().toString()
25812
+ }
25813
+ });
25814
+ addClass([tdELe], classList$$1);
25815
+ tdELe.setAttribute('data-group-index', groupIndex.toString());
25816
+ this.renderCellTemplate({ date: date, type: 'resourceGroupCells', groupIndex: groupIndex }, tdELe);
25817
+ this.wireEvents(tdELe, 'cell');
25818
+ this.parent.trigger(renderCell, { elementType: 'resourceGroupCells', element: tdELe, date: date });
25819
+ tr.appendChild(tdELe);
25820
+ }
25821
+ }
25822
+ return tRow;
25823
+ };
25714
25824
  TimelineYear.prototype.renderResourceContent = function (wrapper, monthBody, contentBody) {
25715
25825
  var months = this.getMonths();
25716
25826
  for (var row = 0; row < this.rowCount; row++) {
@@ -25718,8 +25828,8 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25718
25828
  var tr = createElement('tr', { attrs: { 'role': 'row' } });
25719
25829
  contentBody.appendChild(tr);
25720
25830
  var resData = void 0;
25721
- if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25722
- resData = this.parent.resourceBase.lastResourceLevel[row];
25831
+ if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25832
+ resData = this.parent.resourceBase.renderedResources[row];
25723
25833
  }
25724
25834
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[row], 1);
25725
25835
  var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
@@ -25740,8 +25850,9 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25740
25850
  }
25741
25851
  for (var month = 0; month < this.columnCount; month++) {
25742
25852
  var classList$$1 = [];
25743
- var groupIndex = row;
25853
+ var groupIndex = void 0;
25744
25854
  if (this.parent.activeViewOptions.orientation === 'Vertical') {
25855
+ groupIndex = resData.groupIndex;
25745
25856
  classList$$1 = classList$$1.concat(resData.className);
25746
25857
  if (classList$$1.indexOf(RESOURCE_PARENT_CLASS) > -1) {
25747
25858
  classList$$1.push(RESOURCE_GROUP_CELLS_CLASS);