@syncfusion/ej2-schedule 25.1.37 → 25.1.39

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 (64) hide show
  1. package/CHANGELOG.md +10 -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 +92 -13
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +101 -17
  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 +11 -1
  24. package/src/schedule/popups/quick-popups.js +3 -1
  25. package/src/schedule/renderer/header-renderer.js +3 -2
  26. package/src/schedule/renderer/renderer.js +1 -0
  27. package/src/schedule/renderer/timeline-year.js +4 -1
  28. package/src/schedule/renderer/vertical-view.js +14 -0
  29. package/src/schedule/renderer/view-base.js +1 -1
  30. package/styles/bootstrap-dark.css +8 -1
  31. package/styles/bootstrap.css +8 -1
  32. package/styles/bootstrap4.css +8 -1
  33. package/styles/bootstrap5-dark.css +8 -1
  34. package/styles/bootstrap5.css +8 -1
  35. package/styles/fabric-dark.css +8 -1
  36. package/styles/fabric.css +8 -1
  37. package/styles/fluent-dark.css +8 -1
  38. package/styles/fluent.css +8 -1
  39. package/styles/highcontrast-light.css +8 -1
  40. package/styles/highcontrast.css +8 -1
  41. package/styles/material-dark.css +8 -1
  42. package/styles/material.css +8 -1
  43. package/styles/material3-dark.css +8 -1
  44. package/styles/material3.css +8 -1
  45. package/styles/schedule/_layout.scss +18 -1
  46. package/styles/schedule/bootstrap-dark.css +8 -1
  47. package/styles/schedule/bootstrap.css +8 -1
  48. package/styles/schedule/bootstrap4.css +8 -1
  49. package/styles/schedule/bootstrap5-dark.css +8 -1
  50. package/styles/schedule/bootstrap5.css +8 -1
  51. package/styles/schedule/fabric-dark.css +8 -1
  52. package/styles/schedule/fabric.css +8 -1
  53. package/styles/schedule/fluent-dark.css +8 -1
  54. package/styles/schedule/fluent.css +8 -1
  55. package/styles/schedule/highcontrast-light.css +8 -1
  56. package/styles/schedule/highcontrast.css +8 -1
  57. package/styles/schedule/material-dark.css +8 -1
  58. package/styles/schedule/material.css +8 -1
  59. package/styles/schedule/material3-dark.css +8 -1
  60. package/styles/schedule/material3.css +8 -1
  61. package/styles/schedule/tailwind-dark.css +8 -1
  62. package/styles/schedule/tailwind.css +8 -1
  63. package/styles/tailwind-dark.css +8 -1
  64. 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
  }
@@ -8370,8 +8383,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
8370
8383
  attrs: {
8371
8384
  'role': 'button',
8372
8385
  'tabindex': '0',
8373
- 'aria-label': this.parent.globalize.formatNumber(count) + '&nbsp;'
8374
- + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more')),
8386
+ 'aria-label': this.parent.globalize.formatNumber(count) + ' ' + this.parent.localeObj.getConstant('moreEvents'),
8375
8387
  'data-count': count.toString(),
8376
8388
  'data-start-date': startDate.getTime().toString(),
8377
8389
  'data-end-date': endDate.getTime().toString()
@@ -8495,11 +8507,18 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
8495
8507
  };
8496
8508
  TimelineEvent.prototype.getOverlapSortComparerEvents = function (startDate, endDate, appointmentsCollection) {
8497
8509
  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())) {
8510
+ var _loop_1 = function (app) {
8511
+ if (this_1.renderType === 'day') {
8512
+ var start_1 = resetTime(startDate).getTime();
8513
+ var end_1 = resetTime(endDate).getTime();
8514
+ var appStart_1 = resetTime(app[this_1.fields.startTime]).getTime();
8515
+ var appEnd_1 = resetTime(app[this_1.fields.endTime]).getTime();
8516
+ var isEndOverlap = function () {
8517
+ var endTime = (end_1 - (getDateInMs(endDate) <= 0 ? MS_PER_DAY : 0));
8518
+ endTime = start_1 > endTime ? start_1 : endTime;
8519
+ return appEnd_1 >= endTime && appStart_1 <= endTime;
8520
+ };
8521
+ if (appStart_1 <= start_1 && appEnd_1 >= start_1 || isEndOverlap() || appStart_1 > start_1 && appEnd_1 < end_1) {
8503
8522
  appointments.push(app);
8504
8523
  }
8505
8524
  }
@@ -8510,6 +8529,11 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
8510
8529
  appointments.push(app);
8511
8530
  }
8512
8531
  }
8532
+ };
8533
+ var this_1 = this;
8534
+ for (var _i = 0, appointmentsCollection_1 = appointmentsCollection; _i < appointmentsCollection_1.length; _i++) {
8535
+ var app = appointmentsCollection_1[_i];
8536
+ _loop_1(app);
8513
8537
  }
8514
8538
  return appointments;
8515
8539
  };
@@ -9384,7 +9408,7 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9384
9408
  QuickPopups.prototype.renderMorePopup = function () {
9385
9409
  var moreEventPopup = "<div class=\"" + MORE_EVENT_POPUP_CLASS + "\"><div class=\"" + MORE_EVENT_HEADER_CLASS + "\">" +
9386
9410
  ("<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>") +
9411
+ ("<div class=\"" + MORE_EVENT_DATE_HEADER_CLASS + "\"><div class=\"" + MORE_EVENT_HEADER_DAY_CLASS + "\" id=\"" + this.parent.element.id + "_more_popup\"></div>") +
9388
9412
  ("<div class=\"" + MORE_EVENT_HEADER_DATE_CLASS + " " + NAVIGATE_CLASS + "\" tabindex=\"0\" role=\"link\"></div></div></div></div>");
9389
9413
  var moreEventWrapper = createElement('div', {
9390
9414
  className: MORE_POPUP_WRAPPER_CLASS + ' e-popup-close',
@@ -9409,6 +9433,8 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9409
9433
  viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),
9410
9434
  zIndex: (this.parent.isAdaptive ? 1002 : 2)
9411
9435
  });
9436
+ this.morePopup.element.setAttribute('role', 'dialog');
9437
+ this.morePopup.element.setAttribute('aria-labelledby', this.parent.element.id + '_more_popup');
9412
9438
  var closeButton = this.morePopup.element.querySelector('.' + MORE_EVENT_CLOSE_CLASS);
9413
9439
  this.renderButton('e-round', ICON + ' ' + CLOSE_ICON_CLASS, false, closeButton, this.closeClick);
9414
9440
  EventHandler.add(this.morePopup.element.querySelector('.' + MORE_EVENT_HEADER_DATE_CLASS), 'click', this.navigationClick, this);
@@ -14120,6 +14146,27 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14120
14146
  this.itemSize = getElementHeightFromClass(this.parent.activeView.element, WORK_CELLS_CLASS) || this.itemSize;
14121
14147
  }
14122
14148
  };
14149
+ VirtualScroll.prototype.refreshLayout = function () {
14150
+ var initialHeight = this.parent.uiStateValues.scheduleHeight;
14151
+ this.parent.uiStateValues.scheduleHeight = this.parent.element.offsetHeight;
14152
+ var preRenderedLength = this.renderedLength;
14153
+ if (this.parent.uiStateValues.scheduleHeight !== initialHeight) {
14154
+ if (preRenderedLength < this.getRenderedCount()) {
14155
+ this.isRemoteRefresh = true;
14156
+ }
14157
+ var resWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
14158
+ var conWrap = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
14159
+ var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
14160
+ var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
14161
+ var endIndex = (firstTDIndex + this.renderedLength);
14162
+ firstTDIndex = (endIndex > this.parent.resourceBase.expandedResources.length) ?
14163
+ (this.parent.resourceBase.expandedResources.length - this.renderedLength) : firstTDIndex;
14164
+ this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.slice(firstTDIndex, endIndex);
14165
+ if (this.parent.resourceBase.renderedResources.length > 0) {
14166
+ this.updateContent(resWrap, conWrap, eventWrap, this.parent.resourceBase.renderedResources);
14167
+ }
14168
+ }
14169
+ };
14123
14170
  VirtualScroll.prototype.renderEvents = function () {
14124
14171
  this.setTabIndex();
14125
14172
  var dynamicData = this.triggerScrollEvent(virtualScrollStop);
@@ -14155,7 +14202,9 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
14155
14202
  var eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
14156
14203
  var timeIndicator = this.parent.element.querySelector('.' + CURRENT_TIMELINE_CLASS);
14157
14204
  var conTable = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS);
14158
- addClass([conWrap], 'e-transition');
14205
+ if (!this.parent.rowAutoHeight) {
14206
+ addClass([conWrap, resWrap], 'e-transition');
14207
+ }
14159
14208
  this.renderedLength = resWrap.querySelector('tbody').children.length;
14160
14209
  var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
14161
14210
  var scrollHeight = this.parent.rowAutoHeight ?
@@ -14557,6 +14606,7 @@ var Render = /** @__PURE__ @class */ (function () {
14557
14606
  }
14558
14607
  throw Error('Inject required modules');
14559
14608
  }
14609
+ this.parent.uiStateValues.scheduleHeight = this.parent.element.offsetHeight;
14560
14610
  this.parent.activeView.viewIndex = this.parent.viewIndex;
14561
14611
  this.updateLabelText(viewName);
14562
14612
  this.parent.activeView.addEventListener();
@@ -16477,6 +16527,7 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
16477
16527
  args = {
16478
16528
  cancel: false, event: (event) ? event.event : null, groupIndex: _this.parent.uiStateValues.groupIndex, requestType: 'resourceChanged'
16479
16529
  };
16530
+ _this.parent.adaptiveGroupIndex = _this.parent.uiStateValues.groupIndex;
16480
16531
  _this.parent.trigger(actionComplete, args);
16481
16532
  }
16482
16533
  });
@@ -17217,7 +17268,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17217
17268
  * @param {string | HTMLElement} element Accepts the DOM element reference
17218
17269
  */
17219
17270
  function Schedule(options, element) {
17220
- return _super.call(this, options, element) || this;
17271
+ var _this = _super.call(this, options, element) || this;
17272
+ _this.adaptiveGroupIndex = 0;
17273
+ return _this;
17221
17274
  }
17222
17275
  /**
17223
17276
  * Core method that initializes the control rendering.
@@ -17241,6 +17294,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17241
17294
  else {
17242
17295
  removeClasses.push(DEVICE_CLASS);
17243
17296
  }
17297
+ if (this.enableAdaptiveUI) {
17298
+ addClasses.push(ADAPTIVE_CLASS);
17299
+ }
17300
+ else {
17301
+ removeClasses.push(ADAPTIVE_CLASS);
17302
+ }
17244
17303
  if (this.allowMultiDrag) {
17245
17304
  addClasses.push(MULTI_DRAG);
17246
17305
  }
@@ -17853,7 +17912,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17853
17912
  if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {
17854
17913
  this.uiStateValues = {
17855
17914
  expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,
17856
- isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false
17915
+ isIgnoreOccurrence: false, groupIndex: this.adaptiveGroupIndex, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false
17857
17916
  };
17858
17917
  }
17859
17918
  this.currentTimezoneDate = this.getCurrentTime();
@@ -18347,6 +18406,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18347
18406
  && document.activeElement.classList.contains(SUBJECT_CLASS))) {
18348
18407
  return;
18349
18408
  }
18409
+ if (this.virtualScrollModule && this.activeView.isTimelineView()) {
18410
+ this.virtualScrollModule.refreshLayout();
18411
+ }
18350
18412
  if (this.activeViewOptions.timeScale.enable && this.activeView) {
18351
18413
  this.activeView.highlightCurrentTime();
18352
18414
  }
@@ -18358,7 +18420,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18358
18420
  && !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {
18359
18421
  this.activeView.resetColWidth();
18360
18422
  this.notify(scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });
18361
- this.refreshEvents(false);
18423
+ var isRemoteRefresh = false;
18424
+ if (this.activeViewOptions.enableLazyLoading && this.virtualScrollModule && this.virtualScrollModule.isRemoteRefresh) {
18425
+ isRemoteRefresh = this.virtualScrollModule.isRemoteRefresh;
18426
+ this.virtualScrollModule.isRemoteRefresh = false;
18427
+ }
18428
+ this.refreshEvents(isRemoteRefresh);
18362
18429
  }
18363
18430
  else {
18364
18431
  this.notify(contentReady, {});
@@ -18541,7 +18608,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18541
18608
  * @private
18542
18609
  */
18543
18610
  Schedule.prototype.getPersistData = function () {
18544
- return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft']);
18611
+ return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft', 'adaptiveGroupIndex']);
18545
18612
  };
18546
18613
  /**
18547
18614
  * Called internally, if any of the property value changed.
@@ -23684,7 +23751,7 @@ var ViewBase = /** @__PURE__ @class */ (function () {
23684
23751
  var colWidth_1 = (getElementWidth(contentBody) / (colElements.length / 2));
23685
23752
  if (content.offsetHeight !== content.clientHeight) {
23686
23753
  var resourceColumn = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
23687
- if (!isNullOrUndefined(resourceColumn)) {
23754
+ if (!isNullOrUndefined(resourceColumn) && resourceColumn.offsetHeight !== content.clientHeight) {
23688
23755
  setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });
23689
23756
  }
23690
23757
  }
@@ -24531,6 +24598,20 @@ var VerticalView = /** @__PURE__ @class */ (function (_super) {
24531
24598
  append(tooltipTemplate, ntd);
24532
24599
  }
24533
24600
  ntd.setAttribute('data-date', cellDate.getTime().toString());
24601
+ var skeleton = 'full';
24602
+ if (!this.parent.activeViewOptions.timeScale.enable) {
24603
+ var announcementText = this.parent.globalize.formatDate(tdData.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });
24604
+ ntd.setAttribute('aria-label', announcementText);
24605
+ }
24606
+ else {
24607
+ var startDateText = this.parent.globalize.formatDate(cellDate, {
24608
+ type: 'dateTime', skeleton: skeleton, calendar: this.parent.getCalendarMode()
24609
+ });
24610
+ var endDateText = this.parent.globalize.formatDate(this.getEndDateFromStartDate(cellDate), {
24611
+ type: 'dateTime', skeleton: skeleton, calendar: this.parent.getCalendarMode()
24612
+ });
24613
+ ntd.setAttribute('aria-label', startDateText + ' ' + this.parent.localeObj.getConstant('endAt') + ' ' + endDateText);
24614
+ }
24534
24615
  if (!isNullOrUndefined(tdData.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {
24535
24616
  var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :
24536
24617
  tdData.groupIndex;
@@ -27981,11 +28062,14 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
27981
28062
  groupIndex = this.colLevels.slice(-1)[0][parseInt(month.toString(), 10)].groupIndex;
27982
28063
  classList$$1.push(WORKDAY_CLASS);
27983
28064
  }
28065
+ var startDateText = this.parent.globalize.formatDate(date, { type: 'dateTime', skeleton: 'full', calendar: this.parent.getCalendarMode() });
28066
+ var endDateText = this.parent.globalize.formatDate(this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime())), { type: 'dateTime', skeleton: 'full', calendar: this.parent.getCalendarMode() });
27984
28067
  var td = createElement('td', {
27985
28068
  className: WORK_CELLS_CLASS,
27986
28069
  attrs: {
27987
28070
  'aria-selected': 'false',
27988
- 'data-date': date.getTime().toString()
28071
+ 'data-date': date.getTime().toString(),
28072
+ 'aria-label': startDateText + ' ' + this.parent.localeObj.getConstant('endAt') + ' ' + endDateText
27989
28073
  }
27990
28074
  });
27991
28075
  addClass([td], classList$$1);