@syncfusion/ej2-schedule 25.1.37 → 25.1.41

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 (65) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/ej2-schedule.min.js +2 -2
  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 +98 -16
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +107 -20
  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 +12 -12
  13. package/src/schedule/actions/virtual-scroll.d.ts +2 -0
  14. package/src/schedule/actions/virtual-scroll.js +24 -1
  15. package/src/schedule/base/css-constant.d.ts +2 -0
  16. package/src/schedule/base/css-constant.js +2 -0
  17. package/src/schedule/base/interface.d.ts +1 -0
  18. package/src/schedule/base/resource.js +1 -0
  19. package/src/schedule/base/schedule.d.ts +1 -0
  20. package/src/schedule/base/schedule.js +20 -4
  21. package/src/schedule/event-renderer/month.js +1 -2
  22. package/src/schedule/event-renderer/timeline-view.js +17 -5
  23. package/src/schedule/event-renderer/vertical-view.js +16 -3
  24. package/src/schedule/popups/event-window.js +1 -1
  25. package/src/schedule/popups/quick-popups.js +3 -1
  26. package/src/schedule/renderer/header-renderer.js +3 -2
  27. package/src/schedule/renderer/renderer.js +1 -0
  28. package/src/schedule/renderer/timeline-year.js +4 -1
  29. package/src/schedule/renderer/vertical-view.js +14 -0
  30. package/src/schedule/renderer/view-base.js +1 -1
  31. package/styles/bootstrap-dark.css +8 -1
  32. package/styles/bootstrap.css +8 -1
  33. package/styles/bootstrap4.css +8 -1
  34. package/styles/bootstrap5-dark.css +8 -1
  35. package/styles/bootstrap5.css +8 -1
  36. package/styles/fabric-dark.css +8 -1
  37. package/styles/fabric.css +8 -1
  38. package/styles/fluent-dark.css +8 -1
  39. package/styles/fluent.css +8 -1
  40. package/styles/highcontrast-light.css +8 -1
  41. package/styles/highcontrast.css +8 -1
  42. package/styles/material-dark.css +8 -1
  43. package/styles/material.css +8 -1
  44. package/styles/material3-dark.css +8 -1
  45. package/styles/material3.css +8 -1
  46. package/styles/schedule/_layout.scss +18 -1
  47. package/styles/schedule/bootstrap-dark.css +8 -1
  48. package/styles/schedule/bootstrap.css +8 -1
  49. package/styles/schedule/bootstrap4.css +8 -1
  50. package/styles/schedule/bootstrap5-dark.css +8 -1
  51. package/styles/schedule/bootstrap5.css +8 -1
  52. package/styles/schedule/fabric-dark.css +8 -1
  53. package/styles/schedule/fabric.css +8 -1
  54. package/styles/schedule/fluent-dark.css +8 -1
  55. package/styles/schedule/fluent.css +8 -1
  56. package/styles/schedule/highcontrast-light.css +8 -1
  57. package/styles/schedule/highcontrast.css +8 -1
  58. package/styles/schedule/material-dark.css +8 -1
  59. package/styles/schedule/material.css +8 -1
  60. package/styles/schedule/material3-dark.css +8 -1
  61. package/styles/schedule/material3.css +8 -1
  62. package/styles/schedule/tailwind-dark.css +8 -1
  63. package/styles/schedule/tailwind.css +8 -1
  64. package/styles/tailwind-dark.css +8 -1
  65. package/styles/tailwind.css +8 -1
@@ -558,6 +558,8 @@ var RTL = 'e-rtl';
558
558
  /** @private */
559
559
  var DEVICE_CLASS = 'e-device';
560
560
  /** @private */
561
+ var ADAPTIVE_CLASS = 'e-adaptive';
562
+ /** @private */
561
563
  var MULTI_DRAG = 'e-multi-drag';
562
564
  /** @private */
563
565
  var ICON = 'e-icons';
@@ -1097,6 +1099,7 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1097
1099
  });
1098
1100
  _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;
1099
1101
  _this.toolbarObj.appendTo(_this.parent.element.querySelector('.' + HEADER_TOOLBAR));
1102
+ _this.toolbarObj.element.setAttribute('aria-label', 'Scheduler');
1100
1103
  var prevNavEle = _this.toolbarObj.element.querySelector('.e-prev');
1101
1104
  if (prevNavEle) {
1102
1105
  prevNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('previous'));
@@ -1284,7 +1287,7 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1284
1287
  switch (item.name) {
1285
1288
  case 'Today':
1286
1289
  tbItem = {
1287
- showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',
1290
+ showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',
1288
1291
  text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'
1289
1292
  };
1290
1293
  tbItem.align = propItem.align ? propItem.align : item.align;
@@ -1371,7 +1374,7 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1371
1374
  }
1372
1375
  else {
1373
1376
  items.push({
1374
- align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',
1377
+ align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',
1375
1378
  text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'
1376
1379
  });
1377
1380
  if (this.parent.views.length > 1) {
@@ -6887,6 +6890,14 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6887
6890
  var wrapperElements = [].slice.call(this.parent.element.querySelectorAll('.' + BLOCK_APPOINTMENT_CLASS +
6888
6891
  ',.' + APPOINTMENT_CLASS + ',.' + ROW_COUNT_WRAPPER_CLASS));
6889
6892
  var isDragging = (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) ? true : false;
6893
+ var hideWrapper = function (wrapper) {
6894
+ if (_this.parent.isReact && !isNullOrUndefined(_this.parent.activeViewOptions.eventTemplate)) {
6895
+ var appWrapper = closest(wrapper, '.' + DAY_WRAPPER_CLASS + ',.' + ALLDAY_APPOINTMENT_WRAPPER_CLASS);
6896
+ if (appWrapper && !appWrapper.classList.contains(APPOINTMENT_WRAPPER_HIDDEN_CLASS)) {
6897
+ addClass([appWrapper], APPOINTMENT_WRAPPER_HIDDEN_CLASS);
6898
+ }
6899
+ }
6900
+ };
6890
6901
  for (var _i = 0, wrapperElements_1 = wrapperElements; _i < wrapperElements_1.length; _i++) {
6891
6902
  var wrapper = wrapperElements_1[_i];
6892
6903
  if (isDragging && !(wrapper.classList.contains(ALLDAY_APPOINTMENT_CLASS) ||
@@ -6895,11 +6906,13 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6895
6906
  for (var j = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; j < len; j++) {
6896
6907
  if (groupIndex === this.parent.crudModule.crudObj.sourceEvent[parseInt(j.toString(), 10)].groupIndex ||
6897
6908
  groupIndex === this.parent.crudModule.crudObj.targetEvent[parseInt(j.toString(), 10)].groupIndex) {
6909
+ hideWrapper(wrapper);
6898
6910
  remove(wrapper);
6899
6911
  }
6900
6912
  }
6901
6913
  }
6902
6914
  else {
6915
+ hideWrapper(wrapper);
6903
6916
  remove(wrapper);
6904
6917
  }
6905
6918
  }
@@ -7460,9 +7473,12 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
7460
7473
  return (tempLeft > 99 ? 99 : tempLeft) + '%';
7461
7474
  };
7462
7475
  VerticalEvent.prototype.getTopValue = function (date, day, resource) {
7463
- var startEndHours = getStartEndHours(resetTime(this.dateRender[parseInt(resource.toString(), 10)][parseInt(day.toString(), 10)]), this.startHour, this.endHour);
7476
+ var viewDate = resetTime(this.dateRender[parseInt(resource.toString(), 10)][parseInt(day.toString(), 10)]);
7477
+ var startEndHours = getStartEndHours(viewDate, this.startHour, this.endHour);
7464
7478
  var startHour = startEndHours.startHour;
7465
- var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());
7479
+ var adjustedStartHour = isDaylightSavingTime(viewDate) && (startHour.getHours() !== this.startHour.getHours()) ?
7480
+ this.startHour.getHours() : startHour.getHours();
7481
+ var diffInMinutes = ((date.getHours() - adjustedStartHour) * 60) + (date.getMinutes() - startHour.getMinutes());
7466
7482
  return (this.parent.activeViewOptions.timeScale.enable) ? ((diffInMinutes * this.cellHeight * this.slotCount) / this.interval) : 0;
7467
7483
  };
7468
7484
  VerticalEvent.prototype.getOverlapIndex = function (record, day, isAllDay, resource) {
@@ -8370,8 +8386,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
8370
8386
  attrs: {
8371
8387
  'role': 'button',
8372
8388
  'tabindex': '0',
8373
- 'aria-label': this.parent.globalize.formatNumber(count) + '&nbsp;'
8374
- + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more')),
8389
+ 'aria-label': this.parent.globalize.formatNumber(count) + ' ' + this.parent.localeObj.getConstant('moreEvents'),
8375
8390
  'data-count': count.toString(),
8376
8391
  'data-start-date': startDate.getTime().toString(),
8377
8392
  'data-end-date': endDate.getTime().toString()
@@ -8495,11 +8510,18 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
8495
8510
  };
8496
8511
  TimelineEvent.prototype.getOverlapSortComparerEvents = function (startDate, endDate, appointmentsCollection) {
8497
8512
  var appointments = [];
8498
- for (var _i = 0, appointmentsCollection_1 = appointmentsCollection; _i < appointmentsCollection_1.length; _i++) {
8499
- var app = appointmentsCollection_1[_i];
8500
- if (this.renderType === 'day') {
8501
- if ((resetTime(app[this.fields.startTime]).getTime() <= resetTime(new Date(startDate.getTime())).getTime()) &&
8502
- (resetTime(app[this.fields.endTime]).getTime() >= resetTime(new Date(startDate.getTime())).getTime())) {
8513
+ var _loop_1 = function (app) {
8514
+ if (this_1.renderType === 'day') {
8515
+ var start_1 = resetTime(startDate).getTime();
8516
+ var end_1 = resetTime(endDate).getTime();
8517
+ var appStart_1 = resetTime(app[this_1.fields.startTime]).getTime();
8518
+ var appEnd_1 = resetTime(app[this_1.fields.endTime]).getTime();
8519
+ var isEndOverlap = function () {
8520
+ var endTime = (end_1 - (getDateInMs(endDate) <= 0 ? MS_PER_DAY : 0));
8521
+ endTime = start_1 > endTime ? start_1 : endTime;
8522
+ return appEnd_1 >= endTime && appStart_1 <= endTime;
8523
+ };
8524
+ if (appStart_1 <= start_1 && appEnd_1 >= start_1 || isEndOverlap() || appStart_1 > start_1 && appEnd_1 < end_1) {
8503
8525
  appointments.push(app);
8504
8526
  }
8505
8527
  }
@@ -8510,6 +8532,11 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
8510
8532
  appointments.push(app);
8511
8533
  }
8512
8534
  }
8535
+ };
8536
+ var this_1 = this;
8537
+ for (var _i = 0, appointmentsCollection_1 = appointmentsCollection; _i < appointmentsCollection_1.length; _i++) {
8538
+ var app = appointmentsCollection_1[_i];
8539
+ _loop_1(app);
8513
8540
  }
8514
8541
  return appointments;
8515
8542
  };
@@ -9384,7 +9411,7 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9384
9411
  QuickPopups.prototype.renderMorePopup = function () {
9385
9412
  var moreEventPopup = "<div class=\"" + MORE_EVENT_POPUP_CLASS + "\"><div class=\"" + MORE_EVENT_HEADER_CLASS + "\">" +
9386
9413
  ("<div class=\"" + MORE_EVENT_CLOSE_CLASS + "\" title=\"" + this.l10n.getConstant('close') + "\" tabindex=\"0\" role=\"button\"></div>") +
9387
- ("<div class=\"" + MORE_EVENT_DATE_HEADER_CLASS + "\"><div class=\"" + MORE_EVENT_HEADER_DAY_CLASS + "\"></div>") +
9414
+ ("<div class=\"" + MORE_EVENT_DATE_HEADER_CLASS + "\"><div class=\"" + MORE_EVENT_HEADER_DAY_CLASS + "\" id=\"" + this.parent.element.id + "_more_popup\"></div>") +
9388
9415
  ("<div class=\"" + MORE_EVENT_HEADER_DATE_CLASS + " " + NAVIGATE_CLASS + "\" tabindex=\"0\" role=\"link\"></div></div></div></div>");
9389
9416
  var moreEventWrapper = createElement('div', {
9390
9417
  className: MORE_POPUP_WRAPPER_CLASS + ' e-popup-close',
@@ -9409,6 +9436,8 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9409
9436
  viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),
9410
9437
  zIndex: (this.parent.isAdaptive ? 1002 : 2)
9411
9438
  });
9439
+ this.morePopup.element.setAttribute('role', 'dialog');
9440
+ this.morePopup.element.setAttribute('aria-labelledby', this.parent.element.id + '_more_popup');
9412
9441
  var closeButton = this.morePopup.element.querySelector('.' + MORE_EVENT_CLOSE_CLASS);
9413
9442
  this.renderButton('e-round', ICON + ' ' + CLOSE_ICON_CLASS, false, closeButton, this.closeClick);
9414
9443
  EventHandler.add(this.morePopup.element.querySelector('.' + MORE_EVENT_HEADER_DATE_CLASS), 'click', this.navigationClick, this);
@@ -12558,7 +12587,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12558
12587
  var resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD$1, fieldName);
12559
12588
  resourceDiv.appendChild(resourceInput);
12560
12589
  var resourceTemplate = function (data) {
12561
- return "<div class=\"e-resource-template\"><div class=\"e-resource-color\" style=\"background-color:" + data[resourceData.colorField] + "\"></div><div class=\"e-resource-text\">" + data[resourceData.textField] + "</div></div>";
12590
+ return SanitizeHtmlHelper.sanitize("<div class=\"e-resource-template\"><div class=\"e-resource-color\" style=\"background-color:" + data[resourceData.colorField] + "\"></div><div class=\"e-resource-text\">" + data[resourceData.textField] + "</div></div>");
12562
12591
  };
12563
12592
  initializeCSPTemplate(resourceTemplate, resourceData);
12564
12593
  if (resourceData.allowMultiple) {
@@ -14120,6 +14149,27 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14120
14149
  this.itemSize = getElementHeightFromClass(this.parent.activeView.element, WORK_CELLS_CLASS) || this.itemSize;
14121
14150
  }
14122
14151
  };
14152
+ VirtualScroll.prototype.refreshLayout = function () {
14153
+ var initialHeight = this.parent.uiStateValues.scheduleHeight;
14154
+ this.parent.uiStateValues.scheduleHeight = this.parent.element.offsetHeight;
14155
+ var preRenderedLength = this.renderedLength;
14156
+ if (this.parent.uiStateValues.scheduleHeight !== initialHeight) {
14157
+ if (preRenderedLength < this.getRenderedCount()) {
14158
+ this.isRemoteRefresh = true;
14159
+ }
14160
+ var resWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
14161
+ var conWrap = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
14162
+ var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
14163
+ var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
14164
+ var endIndex = (firstTDIndex + this.renderedLength);
14165
+ firstTDIndex = (endIndex > this.parent.resourceBase.expandedResources.length) ?
14166
+ (this.parent.resourceBase.expandedResources.length - this.renderedLength) : firstTDIndex;
14167
+ this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.slice(firstTDIndex, endIndex);
14168
+ if (this.parent.resourceBase.renderedResources.length > 0) {
14169
+ this.updateContent(resWrap, conWrap, eventWrap, this.parent.resourceBase.renderedResources);
14170
+ }
14171
+ }
14172
+ };
14123
14173
  VirtualScroll.prototype.renderEvents = function () {
14124
14174
  this.setTabIndex();
14125
14175
  var dynamicData = this.triggerScrollEvent(virtualScrollStop);
@@ -14155,7 +14205,9 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14155
14205
  var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
14156
14206
  var timeIndicator = this.parent.element.querySelector('.' + CURRENT_TIMELINE_CLASS);
14157
14207
  var conTable = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS);
14158
- addClass([conWrap], 'e-transition');
14208
+ if (!this.parent.rowAutoHeight) {
14209
+ addClass([conWrap, resWrap], 'e-transition');
14210
+ }
14159
14211
  this.renderedLength = resWrap.querySelector('tbody').children.length;
14160
14212
  var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
14161
14213
  var scrollHeight = this.parent.rowAutoHeight ?
@@ -14557,6 +14609,7 @@ var Render = /** @__PURE__ @class */ (function () {
14557
14609
  }
14558
14610
  throw Error('Inject required modules');
14559
14611
  }
14612
+ this.parent.uiStateValues.scheduleHeight = this.parent.element.offsetHeight;
14560
14613
  this.parent.activeView.viewIndex = this.parent.viewIndex;
14561
14614
  this.updateLabelText(viewName);
14562
14615
  this.parent.activeView.addEventListener();
@@ -16477,6 +16530,7 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
16477
16530
  args = {
16478
16531
  cancel: false, event: (event) ? event.event : null, groupIndex: _this.parent.uiStateValues.groupIndex, requestType: 'resourceChanged'
16479
16532
  };
16533
+ _this.parent.adaptiveGroupIndex = _this.parent.uiStateValues.groupIndex;
16480
16534
  _this.parent.trigger(actionComplete, args);
16481
16535
  }
16482
16536
  });
@@ -17217,7 +17271,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17217
17271
  * @param {string | HTMLElement} element Accepts the DOM element reference
17218
17272
  */
17219
17273
  function Schedule(options, element) {
17220
- return _super.call(this, options, element) || this;
17274
+ var _this = _super.call(this, options, element) || this;
17275
+ _this.adaptiveGroupIndex = 0;
17276
+ return _this;
17221
17277
  }
17222
17278
  /**
17223
17279
  * Core method that initializes the control rendering.
@@ -17241,6 +17297,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17241
17297
  else {
17242
17298
  removeClasses.push(DEVICE_CLASS);
17243
17299
  }
17300
+ if (this.enableAdaptiveUI) {
17301
+ addClasses.push(ADAPTIVE_CLASS);
17302
+ }
17303
+ else {
17304
+ removeClasses.push(ADAPTIVE_CLASS);
17305
+ }
17244
17306
  if (this.allowMultiDrag) {
17245
17307
  addClasses.push(MULTI_DRAG);
17246
17308
  }
@@ -17853,7 +17915,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17853
17915
  if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {
17854
17916
  this.uiStateValues = {
17855
17917
  expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,
17856
- isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false
17918
+ isIgnoreOccurrence: false, groupIndex: this.adaptiveGroupIndex, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false
17857
17919
  };
17858
17920
  }
17859
17921
  this.currentTimezoneDate = this.getCurrentTime();
@@ -18347,6 +18409,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18347
18409
  && document.activeElement.classList.contains(SUBJECT_CLASS))) {
18348
18410
  return;
18349
18411
  }
18412
+ if (this.virtualScrollModule && this.activeView.isTimelineView()) {
18413
+ this.virtualScrollModule.refreshLayout();
18414
+ }
18350
18415
  if (this.activeViewOptions.timeScale.enable && this.activeView) {
18351
18416
  this.activeView.highlightCurrentTime();
18352
18417
  }
@@ -18358,7 +18423,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18358
18423
  && !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {
18359
18424
  this.activeView.resetColWidth();
18360
18425
  this.notify(scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });
18361
- this.refreshEvents(false);
18426
+ var isRemoteRefresh = false;
18427
+ if (this.activeViewOptions.enableLazyLoading && this.virtualScrollModule && this.virtualScrollModule.isRemoteRefresh) {
18428
+ isRemoteRefresh = this.virtualScrollModule.isRemoteRefresh;
18429
+ this.virtualScrollModule.isRemoteRefresh = false;
18430
+ }
18431
+ this.refreshEvents(isRemoteRefresh);
18362
18432
  }
18363
18433
  else {
18364
18434
  this.notify(contentReady, {});
@@ -18541,7 +18611,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18541
18611
  * @private
18542
18612
  */
18543
18613
  Schedule.prototype.getPersistData = function () {
18544
- return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft']);
18614
+ return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft', 'adaptiveGroupIndex']);
18545
18615
  };
18546
18616
  /**
18547
18617
  * Called internally, if any of the property value changed.
@@ -23684,7 +23754,7 @@ var ViewBase = /** @__PURE__ @class */ (function () {
23684
23754
  var colWidth_1 = (getElementWidth(contentBody) / (colElements.length / 2));
23685
23755
  if (content.offsetHeight !== content.clientHeight) {
23686
23756
  var resourceColumn = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
23687
- if (!isNullOrUndefined(resourceColumn)) {
23757
+ if (!isNullOrUndefined(resourceColumn) && resourceColumn.offsetHeight !== content.clientHeight) {
23688
23758
  setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });
23689
23759
  }
23690
23760
  }
@@ -24531,6 +24601,20 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
24531
24601
  append(tooltipTemplate, ntd);
24532
24602
  }
24533
24603
  ntd.setAttribute('data-date', cellDate.getTime().toString());
24604
+ var skeleton = 'full';
24605
+ if (!this.parent.activeViewOptions.timeScale.enable) {
24606
+ var announcementText = this.parent.globalize.formatDate(tdData.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });
24607
+ ntd.setAttribute('aria-label', announcementText);
24608
+ }
24609
+ else {
24610
+ var startDateText = this.parent.globalize.formatDate(cellDate, {
24611
+ type: 'dateTime', skeleton: skeleton, calendar: this.parent.getCalendarMode()
24612
+ });
24613
+ var endDateText = this.parent.globalize.formatDate(this.getEndDateFromStartDate(cellDate), {
24614
+ type: 'dateTime', skeleton: skeleton, calendar: this.parent.getCalendarMode()
24615
+ });
24616
+ ntd.setAttribute('aria-label', startDateText + ' ' + this.parent.localeObj.getConstant('endAt') + ' ' + endDateText);
24617
+ }
24534
24618
  if (!isNullOrUndefined(tdData.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {
24535
24619
  var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :
24536
24620
  tdData.groupIndex;
@@ -27981,11 +28065,14 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
27981
28065
  groupIndex = this.colLevels.slice(-1)[0][parseInt(month.toString(), 10)].groupIndex;
27982
28066
  classList$$1.push(WORKDAY_CLASS);
27983
28067
  }
28068
+ var startDateText = this.parent.globalize.formatDate(date, { type: 'dateTime', skeleton: 'full', calendar: this.parent.getCalendarMode() });
28069
+ var endDateText = this.parent.globalize.formatDate(this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime())), { type: 'dateTime', skeleton: 'full', calendar: this.parent.getCalendarMode() });
27984
28070
  var td = createElement('td', {
27985
28071
  className: WORK_CELLS_CLASS,
27986
28072
  attrs: {
27987
28073
  'aria-selected': 'false',
27988
- 'data-date': date.getTime().toString()
28074
+ 'data-date': date.getTime().toString(),
28075
+ 'aria-label': startDateText + ' ' + this.parent.localeObj.getConstant('endAt') + ' ' + endDateText
27989
28076
  }
27990
28077
  });
27991
28078
  addClass([td], classList$$1);