@syncfusion/ej2-schedule 19.4.55 → 20.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +23 -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 +156 -46
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +156 -46
  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/year.js +20 -0
  26. package/styles/bootstrap-dark.css +10 -7
  27. package/styles/bootstrap.css +10 -7
  28. package/styles/bootstrap4.css +11 -8
  29. package/styles/bootstrap5-dark.css +20 -19
  30. package/styles/bootstrap5.css +20 -19
  31. package/styles/fabric-dark.css +10 -7
  32. package/styles/fabric.css +10 -7
  33. package/styles/fluent-dark.css +5102 -0
  34. package/styles/fluent-dark.scss +2 -0
  35. package/styles/fluent.css +5103 -0
  36. package/styles/fluent.scss +2 -0
  37. package/styles/highcontrast-light.css +10 -7
  38. package/styles/highcontrast.css +11 -8
  39. package/styles/material-dark.css +10 -7
  40. package/styles/material.css +10 -7
  41. package/styles/recurrence-editor/_fluent-dark-definition.scss +1 -0
  42. package/styles/recurrence-editor/fluent-dark.css +495 -0
  43. package/styles/recurrence-editor/fluent-dark.scss +3 -0
  44. package/styles/recurrence-editor/fluent.css +495 -0
  45. package/styles/recurrence-editor/fluent.scss +3 -0
  46. package/styles/schedule/_bootstrap4-definition.scss +1 -1
  47. package/styles/schedule/_bootstrap5-definition.scss +4 -4
  48. package/styles/schedule/_fluent-dark-definition.scss +1 -0
  49. package/styles/schedule/_fluent-definition.scss +10 -8
  50. package/styles/schedule/_highcontrast-definition.scss +1 -1
  51. package/styles/schedule/_layout.scss +55 -14
  52. package/styles/schedule/_tailwind-definition.scss +1 -0
  53. package/styles/schedule/_theme.scss +6 -9
  54. package/styles/schedule/bootstrap-dark.css +10 -7
  55. package/styles/schedule/bootstrap.css +10 -7
  56. package/styles/schedule/bootstrap4.css +11 -8
  57. package/styles/schedule/bootstrap5-dark.css +20 -19
  58. package/styles/schedule/bootstrap5.css +20 -19
  59. package/styles/schedule/fabric-dark.css +10 -7
  60. package/styles/schedule/fabric.css +10 -7
  61. package/styles/schedule/fluent-dark.css +4606 -0
  62. package/styles/schedule/fluent-dark.scss +4 -0
  63. package/styles/schedule/fluent.css +4607 -0
  64. package/styles/schedule/fluent.scss +5 -0
  65. package/styles/schedule/highcontrast-light.css +10 -7
  66. package/styles/schedule/highcontrast.css +11 -8
  67. package/styles/schedule/icons/_fluent-dark.scss +1 -0
  68. package/styles/schedule/icons/_fluent.scss +51 -50
  69. package/styles/schedule/icons/_tailwind.scss +51 -50
  70. package/styles/schedule/material-dark.css +10 -7
  71. package/styles/schedule/material.css +10 -7
  72. package/styles/schedule/tailwind-dark.css +65 -60
  73. package/styles/schedule/tailwind.css +65 -60
  74. package/styles/tailwind-dark.css +65 -60
  75. package/styles/tailwind.css +65 -60
@@ -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++) {
@@ -22924,6 +22952,8 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22924
22952
  this.parent.notify(virtualScroll, e);
22925
22953
  this.scrollTopPanel(e.target);
22926
22954
  this.scrollLeftPanel(e.target);
22955
+ this.parent.uiStateValues.top = e.target.scrollTop;
22956
+ this.parent.uiStateValues.left = e.target.scrollLeft;
22927
22957
  this.setPersistence();
22928
22958
  };
22929
22959
  Month.prototype.scrollLeftPanel = function (target) {
@@ -22956,26 +22986,41 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22956
22986
  header.style[args.cssProperties.padding] = '';
22957
22987
  }
22958
22988
  this.setColWidth(content);
22959
- if (args.scrollPosition) {
22989
+ if (args.scrollPosition || !args.isPreventScrollUpdate && this.parent.currentView === 'TimelineMonth') {
22990
+ var top_1 = this.parent.currentView === 'TimelineMonth' ? this.parent.uiStateValues.top : args.scrollPosition.top;
22960
22991
  if (leftPanel) {
22961
- leftPanel.scrollTop = args.scrollPosition.top;
22992
+ leftPanel.scrollTop = top_1;
22962
22993
  }
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);
22994
+ content.scrollTop = top_1;
22995
+ if (this.parent.uiStateValues.isInitial) {
22996
+ this.scrollToSelectedDate();
22997
+ this.parent.uiStateValues.isInitial = false;
22972
22998
  }
22973
22999
  else {
22974
- content.scrollLeft = 0;
23000
+ content.scrollLeft = this.parent.currentView === 'TimelineMonth' ? this.parent.uiStateValues.left :
23001
+ args.scrollPosition.left;
22975
23002
  }
22976
23003
  }
23004
+ else {
23005
+ this.scrollToSelectedDate();
23006
+ }
22977
23007
  this.retainScrollPosition();
22978
23008
  };
23009
+ Month.prototype.scrollToSelectedDate = function () {
23010
+ var headerCell = this.element.querySelector('.' + HEADER_CELLS_CLASS + '[data-date="'
23011
+ + this.parent.selectedDate.getTime().toString() + '"]');
23012
+ var content = this.getContentAreaElement();
23013
+ if (!isNullOrUndefined(headerCell)) {
23014
+ content.scrollLeft = !this.parent.enableRtl ?
23015
+ headerCell.offsetLeft : -(this.parent.getContentTable().offsetWidth - headerCell.offsetLeft - headerCell.offsetWidth);
23016
+ }
23017
+ else {
23018
+ content.scrollLeft = 0;
23019
+ }
23020
+ if (content.scrollLeft === 0 && this.parent.uiStateValues.isInitial) {
23021
+ this.parent.uiStateValues.left = 0;
23022
+ }
23023
+ };
22979
23024
  Month.prototype.setContentHeight = function (content, leftPanelElement, height) {
22980
23025
  content.style.height = 'auto';
22981
23026
  if (this.parent.currentView === 'Month') {
@@ -23549,6 +23594,9 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23549
23594
  var viewTypeClass = this.parent.activeViewOptions.orientation === 'Horizontal' ? 'e-horizontal' : 'e-vertical';
23550
23595
  addClass([this.element], [this.viewClass, viewTypeClass, className]);
23551
23596
  this.renderPanel(className);
23597
+ if (this.parent.activeViewOptions.allowVirtualScrolling) {
23598
+ addClass([this.element], [VIRTUAL_SCROLL_CLASS]);
23599
+ }
23552
23600
  var calendarTable = this.createTableLayout(OUTER_TABLE_CLASS);
23553
23601
  this.element.appendChild(calendarTable);
23554
23602
  this.element.querySelector('table').setAttribute('role', 'presentation');
@@ -23769,6 +23817,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23769
23817
  Year.prototype.onContentScroll = function (e) {
23770
23818
  var target = e.target;
23771
23819
  var headerWrapper = this.getDatesHeaderElement();
23820
+ this.parent.notify(virtualScroll, e);
23772
23821
  if (headerWrapper) {
23773
23822
  headerWrapper.firstElementChild.scrollLeft = target.scrollLeft;
23774
23823
  }
@@ -23777,6 +23826,10 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23777
23826
  if (scrollTopElement) {
23778
23827
  scrollTopElement.scrollTop = target.scrollTop;
23779
23828
  }
23829
+ if (!this.parent.isAdaptive) {
23830
+ this.parent.uiStateValues.top = e.target.scrollTop;
23831
+ }
23832
+ this.parent.uiStateValues.left = e.target.scrollLeft;
23780
23833
  this.setPersistence();
23781
23834
  };
23782
23835
  Year.prototype.onScrollUiUpdate = function (args) {
@@ -23807,6 +23860,18 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23807
23860
  var isYScroll = contentWrapper.scrollWidth > contentWrapper.clientWidth;
23808
23861
  leftPanelElement.style.height = formatUnit(height - (isYScroll ? 17 : 0));
23809
23862
  }
23863
+ if (!args.isPreventScrollUpdate) {
23864
+ if (this.parent.uiStateValues.isInitial) {
23865
+ this.parent.uiStateValues.isInitial = false;
23866
+ }
23867
+ else {
23868
+ if (leftPanelElement) {
23869
+ leftPanelElement.scrollTop = this.parent.uiStateValues.top;
23870
+ }
23871
+ contentWrapper.scrollTop = this.parent.uiStateValues.top;
23872
+ contentWrapper.scrollLeft = this.parent.uiStateValues.left;
23873
+ }
23874
+ }
23810
23875
  this.retainScrollPosition();
23811
23876
  };
23812
23877
  Year.prototype.getStartDate = function () {
@@ -23925,7 +23990,7 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
23925
23990
  moduleName: 'agenda',
23926
23991
  listClass: this.parent.activeView.viewClass,
23927
23992
  itemClass: this.parent.activeView.viewClass,
23928
- template: '<div class=' + AGENDA_NO_EVENT_CLASS + '>${subject}</div>'
23993
+ template: "<div class=\"" + AGENDA_NO_EVENT_CLASS + "\">" + this.parent.localeObj.getConstant('noEvents') + "</div>"
23929
23994
  });
23930
23995
  }
23931
23996
  else {
@@ -25577,7 +25642,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25577
25642
  !this.parent.uiStateValues.isGroupAdaptive) {
25578
25643
  tdCollection.push(firstTd);
25579
25644
  firstTd.appendChild(this.parent.resourceBase.createResourceColumn());
25580
- this.rowCount = this.parent.resourceBase.lastResourceLevel.length;
25645
+ this.rowCount = this.parent.resourceBase.renderedResources.length;
25581
25646
  }
25582
25647
  else {
25583
25648
  tdCollection.push(firstTd);
@@ -25594,6 +25659,9 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25594
25659
  content.appendChild(contentTable);
25595
25660
  var eventWrapper = createElement('div', { className: EVENT_TABLE_CLASS });
25596
25661
  content.appendChild(eventWrapper);
25662
+ if (this.parent.virtualScrollModule) {
25663
+ this.parent.virtualScrollModule.renderVirtualTrack(content);
25664
+ }
25597
25665
  var contentTBody = contentTable.querySelector('tbody');
25598
25666
  if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25599
25667
  if (this.parent.rowAutoHeight) {
@@ -25711,6 +25779,47 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25711
25779
  }
25712
25780
  }
25713
25781
  };
25782
+ TimelineYear.prototype.getContentRows = function () {
25783
+ var tRow = [];
25784
+ var monthCells = this.getMonths();
25785
+ for (var row = 0; row < this.parent.resourceBase.renderedResources.length; row++) {
25786
+ var tr = createElement('tr', { attrs: { 'role': 'row' } });
25787
+ tRow.push(tr);
25788
+ var resData = void 0;
25789
+ if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25790
+ resData = this.parent.resourceBase.renderedResources[row];
25791
+ }
25792
+ var monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[row], 1);
25793
+ var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
25794
+ for (var month = 0; month < this.columnCount; month++) {
25795
+ var classList$$1 = [];
25796
+ var groupIndex = resData.groupIndex;
25797
+ classList$$1 = classList$$1.concat(resData.className);
25798
+ if (classList$$1.indexOf(RESOURCE_PARENT_CLASS) > -1) {
25799
+ classList$$1.push(RESOURCE_GROUP_CELLS_CLASS);
25800
+ }
25801
+ else {
25802
+ classList$$1.push(WORKDAY_CLASS);
25803
+ }
25804
+ monthDate = new Date(this.parent.selectedDate.getFullYear(), monthCells[month], 1);
25805
+ date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
25806
+ var tdELe = createElement('td', {
25807
+ className: WORK_CELLS_CLASS,
25808
+ attrs: {
25809
+ 'role': 'gridcell', 'aria-selected': 'false',
25810
+ 'data-date': date.getTime().toString()
25811
+ }
25812
+ });
25813
+ addClass([tdELe], classList$$1);
25814
+ tdELe.setAttribute('data-group-index', groupIndex.toString());
25815
+ this.renderCellTemplate({ date: date, type: 'resourceGroupCells', groupIndex: groupIndex }, tdELe);
25816
+ this.wireEvents(tdELe, 'cell');
25817
+ this.parent.trigger(renderCell, { elementType: 'resourceGroupCells', element: tdELe, date: date });
25818
+ tr.appendChild(tdELe);
25819
+ }
25820
+ }
25821
+ return tRow;
25822
+ };
25714
25823
  TimelineYear.prototype.renderResourceContent = function (wrapper, monthBody, contentBody) {
25715
25824
  var months = this.getMonths();
25716
25825
  for (var row = 0; row < this.rowCount; row++) {
@@ -25718,8 +25827,8 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25718
25827
  var tr = createElement('tr', { attrs: { 'role': 'row' } });
25719
25828
  contentBody.appendChild(tr);
25720
25829
  var resData = void 0;
25721
- if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25722
- resData = this.parent.resourceBase.lastResourceLevel[row];
25830
+ if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
25831
+ resData = this.parent.resourceBase.renderedResources[row];
25723
25832
  }
25724
25833
  var monthDate = new Date(this.parent.selectedDate.getFullYear(), months[row], 1);
25725
25834
  var date = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));
@@ -25740,8 +25849,9 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25740
25849
  }
25741
25850
  for (var month = 0; month < this.columnCount; month++) {
25742
25851
  var classList$$1 = [];
25743
- var groupIndex = row;
25852
+ var groupIndex = void 0;
25744
25853
  if (this.parent.activeViewOptions.orientation === 'Vertical') {
25854
+ groupIndex = resData.groupIndex;
25745
25855
  classList$$1 = classList$$1.concat(resData.className);
25746
25856
  if (classList$$1.indexOf(RESOURCE_PARENT_CLASS) > -1) {
25747
25857
  classList$$1.push(RESOURCE_GROUP_CELLS_CLASS);