@syncfusion/ej2-schedule 26.1.35 → 26.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 (72) hide show
  1. package/dist/ej2-schedule.min.js +2 -2
  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 +110 -47
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +109 -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 +11 -11
  12. package/src/schedule/actions/crud.js +3 -1
  13. package/src/schedule/actions/resize.js +5 -0
  14. package/src/schedule/base/schedule.js +6 -3
  15. package/src/schedule/event-renderer/agenda-base.js +2 -2
  16. package/src/schedule/event-renderer/event-base.js +4 -2
  17. package/src/schedule/event-renderer/month.js +2 -1
  18. package/src/schedule/event-renderer/timeline-view.js +6 -1
  19. package/src/schedule/event-renderer/vertical-view.js +4 -4
  20. package/src/schedule/event-renderer/year.js +1 -1
  21. package/src/schedule/exports/excel-export.js +1 -1
  22. package/src/schedule/exports/print.js +10 -7
  23. package/src/schedule/popups/quick-popups.js +1 -1
  24. package/src/schedule/renderer/header-renderer.js +1 -1
  25. package/src/schedule/renderer/month.js +5 -4
  26. package/src/schedule/renderer/renderer.js +8 -2
  27. package/src/schedule/renderer/timeline-year.js +3 -3
  28. package/src/schedule/renderer/vertical-view.d.ts +1 -0
  29. package/src/schedule/renderer/vertical-view.js +21 -9
  30. package/src/schedule/renderer/view-base.d.ts +1 -0
  31. package/src/schedule/renderer/view-base.js +25 -2
  32. package/src/schedule/renderer/year.js +1 -1
  33. package/styles/bootstrap-dark.css +10 -0
  34. package/styles/bootstrap.css +10 -0
  35. package/styles/bootstrap4.css +10 -0
  36. package/styles/bootstrap5-dark.css +10 -0
  37. package/styles/bootstrap5.css +10 -0
  38. package/styles/fabric-dark.css +10 -0
  39. package/styles/fabric.css +10 -0
  40. package/styles/fluent-dark.css +10 -0
  41. package/styles/fluent.css +10 -0
  42. package/styles/fluent2.css +79 -54
  43. package/styles/highcontrast-light.css +10 -0
  44. package/styles/highcontrast.css +10 -0
  45. package/styles/material-dark.css +10 -0
  46. package/styles/material.css +10 -0
  47. package/styles/material3-dark.css +10 -0
  48. package/styles/material3.css +10 -0
  49. package/styles/recurrence-editor/fluent2.css +35 -35
  50. package/styles/schedule/_fluent2-definition.scss +3 -3
  51. package/styles/schedule/_layout.scss +12 -0
  52. package/styles/schedule/_theme.scss +4 -0
  53. package/styles/schedule/bootstrap-dark.css +10 -0
  54. package/styles/schedule/bootstrap.css +10 -0
  55. package/styles/schedule/bootstrap4.css +10 -0
  56. package/styles/schedule/bootstrap5-dark.css +10 -0
  57. package/styles/schedule/bootstrap5.css +10 -0
  58. package/styles/schedule/fabric-dark.css +10 -0
  59. package/styles/schedule/fabric.css +10 -0
  60. package/styles/schedule/fluent-dark.css +10 -0
  61. package/styles/schedule/fluent.css +10 -0
  62. package/styles/schedule/fluent2.css +79 -54
  63. package/styles/schedule/highcontrast-light.css +10 -0
  64. package/styles/schedule/highcontrast.css +10 -0
  65. package/styles/schedule/material-dark.css +10 -0
  66. package/styles/schedule/material.css +10 -0
  67. package/styles/schedule/material3-dark.css +10 -0
  68. package/styles/schedule/material3.css +10 -0
  69. package/styles/schedule/tailwind-dark.css +10 -0
  70. package/styles/schedule/tailwind.css +10 -0
  71. package/styles/tailwind-dark.css +10 -0
  72. package/styles/tailwind.css +10 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 26.1.35
3
+ * version : 26.1.39
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-schedule@*",
3
- "_id": "@syncfusion/ej2-schedule@22.9.0",
3
+ "_id": "@syncfusion/ej2-schedule@26.1.38",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-cbmdRc8J/qV77jIuDMYvpqRZxfgaaT8ATKKb8JFgIE2W/9wR2bhVqd9nWjMfnqTB2n8C+s07mz1p590gCbi5eQ==",
5
+ "_integrity": "sha512-6wiM9HSKXKAhDc4QcYohgHXw5aBMa9GL6V99hxG5+1qDdJRqCEsTmKThJSYDMYt8rC2CjJjgTWZt+SIveHVZvQ==",
6
6
  "_location": "/@syncfusion/ej2-schedule",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,8 +23,8 @@
23
23
  "/@syncfusion/ej2-react-schedule",
24
24
  "/@syncfusion/ej2-vue-schedule"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-release/@syncfusion/ej2-schedule/-/ej2-schedule-22.9.0.tgz",
27
- "_shasum": "dc4b9da9933cae83dd17089bda3a219960824ba3",
26
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-26.1.38.tgz",
27
+ "_shasum": "43e837e3f81d03784ae9ec082ecbb0ecffb9f96c",
28
28
  "_spec": "@syncfusion/ej2-schedule@*",
29
29
  "_where": "/jenkins/workspace/elease-automation_release_26.1.1/packages/included",
30
30
  "author": {
@@ -35,16 +35,16 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~26.1.35",
38
+ "@syncfusion/ej2-base": "~26.1.37",
39
39
  "@syncfusion/ej2-buttons": "~26.1.35",
40
- "@syncfusion/ej2-calendars": "~26.1.35",
40
+ "@syncfusion/ej2-calendars": "~26.1.38",
41
41
  "@syncfusion/ej2-data": "~26.1.35",
42
- "@syncfusion/ej2-dropdowns": "~26.1.35",
42
+ "@syncfusion/ej2-dropdowns": "~26.1.39",
43
43
  "@syncfusion/ej2-excel-export": "~26.1.35",
44
- "@syncfusion/ej2-inputs": "~26.1.35",
44
+ "@syncfusion/ej2-inputs": "~26.1.39",
45
45
  "@syncfusion/ej2-lists": "~26.1.35",
46
- "@syncfusion/ej2-navigations": "~26.1.35",
47
- "@syncfusion/ej2-popups": "~26.1.35",
46
+ "@syncfusion/ej2-navigations": "~26.1.39",
47
+ "@syncfusion/ej2-popups": "~26.1.38",
48
48
  "@types/requirejs": "^2.1.37"
49
49
  },
50
50
  "deprecated": false,
@@ -74,6 +74,6 @@
74
74
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
75
75
  },
76
76
  "typings": "index.d.ts",
77
- "version": "26.1.35",
77
+ "version": "26.1.39",
78
78
  "sideEffects": false
79
79
  }
@@ -59,7 +59,9 @@ var Crud = /** @class */ (function () {
59
59
  _this.parent.trigger(events.dataBound, null, function () {
60
60
  _this.parent.hideSpinner();
61
61
  if (_this.parent.isPrinting) {
62
- _this.parent.notify(events.print, {});
62
+ setTimeout(function () {
63
+ _this.parent.notify(events.print, {});
64
+ }, 100);
63
65
  }
64
66
  });
65
67
  });
@@ -116,6 +116,11 @@ var Resize = /** @class */ (function (_super) {
116
116
  }
117
117
  var viewElement = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
118
118
  _this.scrollArgs = { element: viewElement, width: viewElement.scrollWidth, height: viewElement.scrollHeight };
119
+ // 883565 - To fix the resizing not working issue at the last column of the timeline view
120
+ if (['Month', 'TimelineYear'].indexOf(_this.parent.currentView) < 0) {
121
+ var scrollWidth = Math.round(_this.scrollArgs.width / _this.actionObj.cellWidth) * _this.actionObj.cellWidth;
122
+ _this.scrollArgs.width = _this.scrollArgs.width < scrollWidth ? scrollWidth : _this.scrollArgs.width;
123
+ }
119
124
  EventHandler.add(document, Browser.touchMoveEvent, _this.resizing, _this);
120
125
  EventHandler.add(document, Browser.touchEndEvent, _this.resizeStop, _this);
121
126
  });
@@ -788,6 +788,7 @@ var Schedule = /** @class */ (function (_super) {
788
788
  subject: 'Subject',
789
789
  addTitle: 'Add title',
790
790
  moreDetails: 'More Details',
791
+ moreEvents: 'More Events',
791
792
  save: 'Save',
792
793
  editContent: 'How would you like to change the appointment in the series?',
793
794
  deleteContent: 'Are you sure you want to delete this event?',
@@ -822,6 +823,7 @@ var Schedule = /** @class */ (function (_super) {
822
823
  ok: 'Ok',
823
824
  yes: 'Yes',
824
825
  no: 'No',
826
+ of: 'of',
825
827
  occurrence: 'Occurrence',
826
828
  series: 'Series',
827
829
  previous: 'Previous',
@@ -1393,7 +1395,7 @@ var Schedule = /** @class */ (function (_super) {
1393
1395
  var scheduleId = this.element.id + '_';
1394
1396
  var viewName = this.activeViewOptions.headerIndentTemplateName;
1395
1397
  var templateId = scheduleId + viewName + 'headerIndentTemplate';
1396
- var indentTemplate = [].slice.call(this.getHeaderIndentTemplate()(data, this, 'headerIndentTemplate', templateId, false));
1398
+ var indentTemplate = [].slice.call(this.getHeaderIndentTemplate()(data, this, 'headerIndentTemplate', templateId, false, undefined, undefined, this.root));
1397
1399
  append(indentTemplate, td);
1398
1400
  }
1399
1401
  };
@@ -1925,8 +1927,9 @@ var Schedule = /** @class */ (function (_super) {
1925
1927
  }
1926
1928
  var msMajorInterval = this.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;
1927
1929
  var msInterval = msMajorInterval / this.activeViewOptions.timeScale.slotCount;
1928
- var startIndex = Math.round((startHour.getTime() - viewStartHour.getTime()) / msInterval);
1929
- var endIndex = Math.ceil((endHour.getTime() - viewStartHour.getTime()) / msInterval);
1930
+ var offsetDiff = ((viewStartHour.getTimezoneOffset() - startHour.getTimezoneOffset()) * util.MS_PER_MINUTE);
1931
+ var startIndex = Math.round((startHour.getTime() - viewStartHour.getTime() + offsetDiff) / msInterval);
1932
+ var endIndex = Math.ceil((endHour.getTime() - viewStartHour.getTime() + offsetDiff) / msInterval);
1930
1933
  var tempStartIndex = startIndex;
1931
1934
  var tempEndIndex = endIndex;
1932
1935
  var cells = [];
@@ -68,7 +68,7 @@ var AgendaBase = /** @class */ (function (_super) {
68
68
  var scheduleId = _this.parent.element.id + '_';
69
69
  var viewName = _this.parent.activeViewOptions.eventTemplateName;
70
70
  var templateId = scheduleId + viewName + 'eventTemplate';
71
- templateEle = _this.parent.getAppointmentTemplate()(listData[parseInt(li.toString(), 10)], _this.parent, 'eventTemplate', templateId, false);
71
+ templateEle = _this.parent.getAppointmentTemplate()(listData[parseInt(li.toString(), 10)], _this.parent, 'eventTemplate', templateId, false, undefined, undefined, _this.parent.root);
72
72
  if (!isNullOrUndefined(listData[parseInt(li.toString(), 10)][fieldMapping.recurrenceRule])) {
73
73
  var iconClass = (listData[parseInt(li.toString(), 10)][fieldMapping.id] ===
74
74
  listData[parseInt(li.toString(), 10)][fieldMapping.recurrenceID]) ?
@@ -372,7 +372,7 @@ var AgendaBase = /** @class */ (function (_super) {
372
372
  var scheduleId = this.parent.element.id + '_';
373
373
  var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
374
374
  var templateId = scheduleId + viewName + 'dateHeaderTemplate';
375
- var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, 'dateHeaderTemplate', templateId, false));
375
+ var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, 'dateHeaderTemplate', templateId, false, undefined, undefined, this.parent.root));
376
376
  append(dateTemplate, dateHeader);
377
377
  }
378
378
  else {
@@ -1131,7 +1131,7 @@ var EventBase = /** @class */ (function () {
1131
1131
  var templateId = scheduleId + viewName + 'eventTemplate';
1132
1132
  var templateName = isResourceEventTemplate && this.parent.currentView.indexOf('Year') === -1 ?
1133
1133
  this.parent.getEventTemplateName(resIndex) : 'eventTemplate';
1134
- templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
1134
+ templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false, undefined, undefined, this.parent.root);
1135
1135
  }
1136
1136
  else {
1137
1137
  var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS });
@@ -1270,7 +1270,9 @@ var EventBase = /** @class */ (function () {
1270
1270
  }
1271
1271
  };
1272
1272
  EventBase.prototype.updateEventMinimumDuration = function (startEndHours, startTime, endTime) {
1273
- if (startTime.getTime() < endTime.getTime()) {
1273
+ if (startTime.getTime() < endTime.getTime() || (startTime.getTime() === endTime.getTime() &&
1274
+ (startEndHours.startHour.getTime() < endTime.getTime() && startEndHours.endHour.getTime() > startTime.getTime()) &&
1275
+ this.parent.currentView.indexOf('Timeline') === -1)) {
1274
1276
  var eventDuration = (util.getUniversalTime(endTime) - util.getUniversalTime(startTime)) / util.MS_PER_MINUTE;
1275
1277
  if (eventDuration < this.parent.eventSettings.minimumEventDuration) {
1276
1278
  var tempEnd = new Date(startTime);
@@ -406,7 +406,7 @@ var MonthEvent = /** @class */ (function (_super) {
406
406
  var viewName = this.parent.activeViewOptions.eventTemplateName;
407
407
  var templateId = scheduleId + viewName + 'eventTemplate';
408
408
  var eventTemplate = this.isResourceEventTemplate ? this.parent.getEventTemplateName(resIndex) : 'eventTemplate';
409
- templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, eventTemplate, templateId, false);
409
+ templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, eventTemplate, templateId, false, undefined, undefined, this.parent.root);
410
410
  }
411
411
  else {
412
412
  var eventLocation = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');
@@ -535,6 +535,7 @@ var MonthEvent = /** @class */ (function (_super) {
535
535
  if (indicator) {
536
536
  var count = parseInt(indicator.getAttribute('data-count'), 10) + 1;
537
537
  indicator.setAttribute('data-count', count.toString());
538
+ indicator.setAttribute('aria-label', count + ' ' + this.parent.localeObj.getConstant('moreEvents'));
538
539
  indicator.innerHTML = this.getMoreIndicatorText(count);
539
540
  }
540
541
  else {
@@ -462,8 +462,13 @@ var TimelineEvent = /** @class */ (function (_super) {
462
462
  }
463
463
  };
464
464
  TimelineEvent.prototype.getSameDayEventsWidth = function (startDate, endDate) {
465
+ var intervalMins = this.interval;
466
+ if (this.slotsPerDay === 1) {
467
+ var hoursRange = util.getStartEndHours(util.resetTime(new Date(startDate.getTime())), this.startHour, this.endHour);
468
+ intervalMins = (hoursRange.endHour.getTime() - hoursRange.startHour.getTime()) / util.MS_PER_MINUTE;
469
+ }
465
470
  return ((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) /
466
- util.MS_PER_MINUTE * (this.cellWidth * this.slotCount) / this.interval);
471
+ util.MS_PER_MINUTE * (this.cellWidth * this.slotCount) / intervalMins);
467
472
  };
468
473
  TimelineEvent.prototype.getSpannedEventsWidth = function (startDate, endDate, diffInDays) {
469
474
  var width = (diffInDays * this.slotsPerDay) * this.cellWidth;
@@ -360,7 +360,7 @@ var VerticalEvent = /** @class */ (function (_super) {
360
360
  var templateId = elementId + viewName + 'eventTemplate';
361
361
  var resIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;
362
362
  var templateName = this.isResourceEventTemplate ? this.parent.getEventTemplateName(resIndex) : 'eventTemplate';
363
- templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
363
+ templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false, undefined, undefined, this.parent.root);
364
364
  }
365
365
  else {
366
366
  var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS });
@@ -575,7 +575,7 @@ var VerticalEvent = /** @class */ (function (_super) {
575
575
  }
576
576
  if (eStart <= eEnd && isValidEvent && this.isWorkDayAvailable(resource, eStart)) {
577
577
  var appHeight = this.getHeight(eStart, eEnd);
578
- if (eStart.getTime() > schedule.startHour.getTime()) {
578
+ if (eStart.getTime() >= schedule.startHour.getTime()) {
579
579
  topValue = this.getTopValue(eStart, dayIndex, resource);
580
580
  }
581
581
  var appIndex = this.getOverlapIndex(record, dayIndex, false, resource);
@@ -842,12 +842,12 @@ var VerticalEvent = /** @class */ (function (_super) {
842
842
  var rowHeight;
843
843
  if (this.parent.uiStateValues.expand) {
844
844
  target.setAttribute('title', this.parent.localeObj.getConstant('collapseAllDaySection'));
845
- target.setAttribute('aria-label', 'Collapse section');
845
+ target.setAttribute('aria-label', this.parent.localeObj.getConstant('collapseAllDaySection'));
846
846
  rowHeight = ((this.allDayLevel + 1) * this.getEventHeight()) + 4;
847
847
  }
848
848
  else {
849
849
  target.setAttribute('title', this.parent.localeObj.getConstant('expandAllDaySection'));
850
- target.setAttribute('aria-label', 'Expand section');
850
+ target.setAttribute('aria-label', this.parent.localeObj.getConstant('expandAllDaySection'));
851
851
  rowHeight = (3 * this.getEventHeight()) + 4;
852
852
  this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS).scrollTop = 0;
853
853
  }
@@ -479,7 +479,7 @@ var YearEvent = /** @class */ (function (_super) {
479
479
  var eventObj = extend({}, record, null, true);
480
480
  if (this.parent.activeViewOptions.eventTemplate) {
481
481
  var templateId = this.parent.element.id + '_' + this.parent.activeViewOptions.eventTemplateName + 'eventTemplate';
482
- templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, 'eventTemplate', templateId, false);
482
+ templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, 'eventTemplate', templateId, false, undefined, undefined, this.parent.root);
483
483
  }
484
484
  else {
485
485
  var locationEle = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');
@@ -42,7 +42,7 @@ var ExcelExport = /** @class */ (function () {
42
42
  fields.forEach(function (field, n) {
43
43
  var columnRule = { index: n + 1, value: event[field.name] || '' };
44
44
  if (field.name === _this.parent.eventFields.startTime || field.name === _this.parent.eventFields.endTime) {
45
- var styleRule = { fontSize: 12, numberFormat: 'm/d/yyyy h:mm AM/PM' };
45
+ var styleRule = { fontSize: 12, numberFormat: 'm/d/yyyy h:mm a' };
46
46
  columnRule = extend({}, columnRule, { style: styleRule }, true);
47
47
  }
48
48
  columnData.push(columnRule);
@@ -78,6 +78,7 @@ var Print = /** @class */ (function () {
78
78
  Schedule.Inject(Day, Week, WorkWeek, Month, Agenda, MonthAgenda, TimelineViews, TimelineMonth, Year, TimelineYear);
79
79
  this.printInstance = new Schedule(this.getPrintScheduleModel(printOptions));
80
80
  this.printInstance.isPrinting = true;
81
+ this.printInstance.root = this.parent.root ? this.parent.root : this.parent;
81
82
  this.printInstance.appendTo(element);
82
83
  this.printInstance.on(events.print, this.contentReady, this);
83
84
  this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');
@@ -111,7 +112,7 @@ var Print = /** @class */ (function () {
111
112
  eventSettings.dataSource = this.parent.eventsData;
112
113
  var eventTemplate = !isNullOrUndefined(printOptions.eventSettings) &&
113
114
  !isNullOrUndefined(printOptions.eventSettings.template) ? printOptions.eventSettings.template : eventSettings.template;
114
- eventSettings.template = typeof (eventTemplate) === 'function' ? null : eventTemplate;
115
+ eventSettings.template = !this.parent.isAngular && typeof (eventTemplate) === 'function' ? null : eventTemplate;
115
116
  printModel.eventSettings = eventSettings;
116
117
  break;
117
118
  }
@@ -122,13 +123,15 @@ var Print = /** @class */ (function () {
122
123
  break;
123
124
  case 'timeScale':
124
125
  timeScale = isNullOrUndefined(printOptions.timeScale) ? this.parent.timeScale : printOptions.timeScale;
125
- timeScale.majorSlotTemplate = typeof (timeScale.majorSlotTemplate) === 'function' ? null : timeScale.majorSlotTemplate;
126
- timeScale.minorSlotTemplate = typeof (timeScale.minorSlotTemplate) === 'function' ? null : timeScale.minorSlotTemplate;
127
- printOptions.timeScale = timeScale;
126
+ if (!this.parent.isAngular) {
127
+ timeScale.majorSlotTemplate = typeof (timeScale.majorSlotTemplate) === 'function' ? null : timeScale.majorSlotTemplate;
128
+ timeScale.minorSlotTemplate = typeof (timeScale.minorSlotTemplate) === 'function' ? null : timeScale.minorSlotTemplate;
129
+ }
130
+ printModel.timeScale = timeScale;
128
131
  break;
129
132
  case 'views':
130
133
  views = isNullOrUndefined(printOptions.views) ? this.parent.views : printOptions.views;
131
- if (views && views.length > 0 && typeof (views[0]) === 'object') {
134
+ if (!this.parent.isAngular && views && views.length > 0 && typeof (views[0]) === 'object') {
132
135
  var _loop_1 = function (view) {
133
136
  scheduleTemplates.forEach(function (x) {
134
137
  if (!isNullOrUndefined(view["" + x])) {
@@ -146,8 +149,8 @@ var Print = /** @class */ (function () {
146
149
  default:
147
150
  if (scheduleTemplates.indexOf(key) > -1) {
148
151
  printModel["" + key] = isNullOrUndefined(printOptions["" + key]) ?
149
- (typeof (this.parent["" + key]) === 'function' ? null : this.parent["" + key]) :
150
- (typeof (printOptions["" + key]) === 'function' ? null : printOptions["" + key]);
152
+ (!this.parent.isAngular && typeof (this.parent["" + key]) === 'function' ? null : this.parent["" + key]) :
153
+ (!this.parent.isAngular && typeof (printOptions["" + key]) === 'function' ? null : printOptions["" + key]);
151
154
  break;
152
155
  }
153
156
  if (scheduleEvents.indexOf(key) > -1) {
@@ -325,7 +325,7 @@ var QuickPopups = /** @class */ (function () {
325
325
  var templateElement = void 0;
326
326
  if (!isNullOrUndefined(this_1.parent.activeViewOptions.eventTemplate)) {
327
327
  var tempId = this_1.parent.element.id + '_' + this_1.parent.activeViewOptions.eventTemplateName + 'eventTemplate';
328
- templateElement = this_1.parent.getAppointmentTemplate()(eventData, this_1.parent, 'eventTemplate', tempId, false);
328
+ templateElement = this_1.parent.getAppointmentTemplate()(eventData, this_1.parent, 'eventTemplate', tempId, false, undefined, undefined, this_1.parent.root);
329
329
  append(templateElement, appointmentElement);
330
330
  }
331
331
  else {
@@ -178,7 +178,7 @@ var HeaderRenderer = /** @class */ (function () {
178
178
  };
179
179
  var viewName = this.parent.activeViewOptions.dateRangeTemplateName;
180
180
  var templateId = this.parent.element.id + '_' + viewName + 'dateRangeTemplate';
181
- var dateTemplate = [].slice.call(this.parent.getDateRangeTemplate()(args, this.parent, 'dateRangeTemplate', templateId, false));
181
+ var dateTemplate = [].slice.call(this.parent.getDateRangeTemplate()(args, this.parent, 'dateRangeTemplate', templateId, false, undefined, undefined, this.parent.root));
182
182
  append(dateTemplate, textEle);
183
183
  }
184
184
  else {
@@ -347,7 +347,7 @@ var Month = /** @class */ (function (_super) {
347
347
  var elementId = this.parent.element.id + '_';
348
348
  var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
349
349
  var templateId = elementId + viewName + 'dateHeaderTemplate';
350
- var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(cellArgs, this.parent, 'dateHeaderTemplate', templateId, false));
350
+ var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(cellArgs, this.parent, 'dateHeaderTemplate', templateId, false, undefined, undefined, this.parent.root));
351
351
  if (dateTemplate && dateTemplate.length) {
352
352
  append(dateTemplate, tdEle);
353
353
  }
@@ -523,7 +523,7 @@ var Month = /** @class */ (function (_super) {
523
523
  var scheduleId = this.parent.element.id + '_';
524
524
  var viewName = this.parent.activeViewOptions.cellTemplateName;
525
525
  var templateId = scheduleId + viewName + 'cellTemplate';
526
- var cellTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));
526
+ var cellTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false, undefined, undefined, this.parent.root));
527
527
  append(cellTemplate, ntd);
528
528
  }
529
529
  var args = { elementType: type, element: ntd, date: data.date, groupIndex: data.groupIndex };
@@ -540,7 +540,7 @@ var Month = /** @class */ (function (_super) {
540
540
  var scheduleId = this.parent.element.id + '_';
541
541
  var viewName = this.parent.activeViewOptions.cellHeaderTemplateName;
542
542
  var templateId = scheduleId + viewName + 'cellHeaderTemplate';
543
- var cellHeaderTemplate = [].slice.call(this.parent.getCellHeaderTemplate()(args, this.parent, 'cellHeaderTemplate', templateId, false));
543
+ var cellHeaderTemplate = [].slice.call(this.parent.getCellHeaderTemplate()(args, this.parent, 'cellHeaderTemplate', templateId, false, undefined, undefined, this.parent.root));
544
544
  append(cellHeaderTemplate, dateHeader);
545
545
  }
546
546
  else {
@@ -670,7 +670,8 @@ var Month = /** @class */ (function (_super) {
670
670
  return this.formatDateRange(this.parent.selectedDate);
671
671
  };
672
672
  Month.prototype.getLabelText = function (view) {
673
- return this.parent.localeObj.getConstant(view) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: 'MMMM y', calendar: this.parent.getCalendarMode() }), 'single');
673
+ var viewStr = view.charAt(0).toLowerCase() + view.substring(1);
674
+ return this.formatViewLabel(viewStr, this.getStartDate(), this.getEndDate());
674
675
  };
675
676
  Month.prototype.createWeekNumberElement = function (text) {
676
677
  var tr = createElement('tr');
@@ -147,9 +147,15 @@ var Render = /** @class */ (function () {
147
147
  }
148
148
  };
149
149
  Render.prototype.updateLabelText = function (view) {
150
- var content = this.parent.activeView.getLabelText(view);
151
150
  this.parent.element.setAttribute('role', 'application');
152
- this.parent.element.setAttribute('aria-label', content);
151
+ this.parent.element.removeAttribute('aria-labelledby');
152
+ this.parent.element.removeAttribute('aria-label');
153
+ if (view === 'Year') {
154
+ this.parent.element.setAttribute('aria-label', this.parent.activeView.getLabelText(view));
155
+ }
156
+ else {
157
+ this.parent.element.setAttribute('aria-labelledby', this.parent.element.id + '_table');
158
+ }
153
159
  };
154
160
  return Render;
155
161
  }());
@@ -413,10 +413,10 @@ var TimelineYear = /** @class */ (function (_super) {
413
413
  var monthId = "schedule_" + this.parent.activeViewOptions.dayHeaderTemplateName + "monthHeaderTemplate";
414
414
  if (type === 'dayHeaderTemplate') {
415
415
  args.day = this.parent.getDayNames('wide')[column % 7];
416
- return [].slice.call(this.parent.getDayHeaderTemplate()(args, this.parent, 'dayHeaderTemplate', dayId, false));
416
+ return [].slice.call(this.parent.getDayHeaderTemplate()(args, this.parent, 'dayHeaderTemplate', dayId, false, undefined, undefined, this.parent.root));
417
417
  }
418
418
  else {
419
- return [].slice.call(this.parent.getMonthHeaderTemplate()(args, this.parent, 'monthHeaderTemplate', monthId, false));
419
+ return [].slice.call(this.parent.getMonthHeaderTemplate()(args, this.parent, 'monthHeaderTemplate', monthId, false, undefined, undefined, this.parent.root));
420
420
  }
421
421
  };
422
422
  TimelineYear.prototype.renderCellTemplate = function (data, td) {
@@ -430,7 +430,7 @@ var TimelineYear = /** @class */ (function (_super) {
430
430
  var scheduleId = this.parent.element.id + '_';
431
431
  var viewName = this.parent.activeViewOptions.cellTemplateName;
432
432
  var templateId = scheduleId + viewName + 'cellTemplate';
433
- var cellTemplate = [].slice.call(this.parent.getCellTemplate()(args, this.parent, 'cellTemplate', templateId, false));
433
+ var cellTemplate = [].slice.call(this.parent.getCellTemplate()(args, this.parent, 'cellTemplate', templateId, false, undefined, undefined, this.parent.root));
434
434
  append(cellTemplate, td);
435
435
  };
436
436
  TimelineYear.prototype.scrollToDate = function (scrollDate) {
@@ -56,6 +56,7 @@ export declare class VerticalView extends ViewBase implements IRenderer {
56
56
  getScrollableElement(): Element;
57
57
  getLeftPanelElement(): HTMLElement;
58
58
  getEndDateFromStartDate(start: Date): Date;
59
+ private getStartEndHours;
59
60
  getTimeSlotRows(handler?: CallbackFunction): TimeSlotData[];
60
61
  getAdjustedDate(startTime: Date): Date;
61
62
  destroy(): void;
@@ -387,7 +387,7 @@ var VerticalView = /** @class */ (function (_super) {
387
387
  templateName = 'dateHeaderTemplate';
388
388
  var args = { date: date, type: type };
389
389
  var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
390
- cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));
390
+ cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false, undefined, undefined, this.parent.root));
391
391
  }
392
392
  else {
393
393
  wrapper.innerHTML = this.parent.activeView.isTimelineView() ?
@@ -401,7 +401,7 @@ var VerticalView = /** @class */ (function (_super) {
401
401
  if (this.parent.activeViewOptions.timeScale.majorSlotTemplate) {
402
402
  templateName = 'majorSlotTemplate';
403
403
  var args = { date: date, type: type };
404
- cntEle = [].slice.call(this.parent.getMajorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));
404
+ cntEle = [].slice.call(this.parent.getMajorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false, undefined, undefined, this.parent.root));
405
405
  }
406
406
  else {
407
407
  wrapper.innerHTML = "<span>" + this.getTime(date) + "</span>";
@@ -412,7 +412,7 @@ var VerticalView = /** @class */ (function (_super) {
412
412
  if (this.parent.activeViewOptions.timeScale.minorSlotTemplate) {
413
413
  templateName = 'minorSlotTemplate';
414
414
  var args = { date: date, type: type };
415
- cntEle = [].slice.call(this.parent.getMinorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));
415
+ cntEle = [].slice.call(this.parent.getMinorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false, undefined, undefined, this.parent.root));
416
416
  }
417
417
  else {
418
418
  cntEle = [].slice.call(wrapper.childNodes);
@@ -423,7 +423,7 @@ var VerticalView = /** @class */ (function (_super) {
423
423
  var viewName = this.parent.activeViewOptions.cellTemplateName;
424
424
  templateName = 'cellTemplate';
425
425
  var args = { date: date, type: type, groupIndex: groupIndex };
426
- cntEle = [].slice.call(this.parent.getCellTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));
426
+ cntEle = [].slice.call(this.parent.getCellTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false, undefined, undefined, this.parent.root));
427
427
  }
428
428
  break;
429
429
  }
@@ -542,7 +542,8 @@ var VerticalView = /** @class */ (function (_super) {
542
542
  var appointmentExpandCollapse = createElement('div', {
543
543
  attrs: {
544
544
  'tabindex': '0', 'role': 'list',
545
- title: this.parent.localeObj.getConstant('expandAllDaySection'), 'aria-disabled': 'false', 'aria-label': 'Expand section'
545
+ title: this.parent.localeObj.getConstant('expandAllDaySection'), 'aria-disabled': 'false',
546
+ 'aria-label': this.parent.localeObj.getConstant('expandAllDaySection')
546
547
  },
547
548
  className: cls.ALLDAY_APPOINTMENT_SECTION_CLASS + ' ' + cls.APPOINTMENT_ROW_EXPAND_CLASS + ' ' +
548
549
  cls.ICON + ' ' + cls.DISABLE_CLASS
@@ -699,7 +700,7 @@ var VerticalView = /** @class */ (function (_super) {
699
700
  if (!this.parent.isMinMaxDate(cellDate)) {
700
701
  clsName.push(cls.DISABLE_DATES);
701
702
  }
702
- util.setTime(cellDate, util.getDateInMs(r.date));
703
+ cellDate = new Date(cellDate.setHours(r.date.getHours(), r.date.getMinutes(), r.date.getSeconds(), r.date.getMilliseconds()));
703
704
  var type = 'workCells';
704
705
  if (tdData.className.indexOf(cls.RESOURCE_PARENT_CLASS) !== -1) {
705
706
  clsName.push(cls.RESOURCE_GROUP_CELLS_CLASS);
@@ -716,7 +717,7 @@ var VerticalView = /** @class */ (function (_super) {
716
717
  var scheduleId = this.parent.element.id + '_';
717
718
  var viewName = this.parent.activeViewOptions.cellTemplateName;
718
719
  var templateId = scheduleId + viewName + 'cellTemplate';
719
- var tooltipTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));
720
+ var tooltipTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false, undefined, undefined, this.parent.root));
720
721
  append(tooltipTemplate, ntd);
721
722
  }
722
723
  ntd.setAttribute('data-date', cellDate.getTime().toString());
@@ -772,10 +773,21 @@ var VerticalView = /** @class */ (function (_super) {
772
773
  end.setMilliseconds(end.getMilliseconds() + msInterval);
773
774
  return end;
774
775
  };
776
+ VerticalView.prototype.getStartEndHours = function (startEndTime) {
777
+ if (!isNullOrUndefined(startEndTime) && startEndTime !== '') {
778
+ var startEndDate = new Date(2000, 0, 0, 0);
779
+ var timeString = startEndTime.split(':');
780
+ if (timeString.length === 2) {
781
+ startEndDate.setHours(parseInt(timeString[0], 10), parseInt(timeString[1], 10), 0);
782
+ }
783
+ return startEndDate;
784
+ }
785
+ return new Date(2000, 0, 0, 0);
786
+ };
775
787
  VerticalView.prototype.getTimeSlotRows = function (handler) {
776
788
  var rows = [];
777
- var startHour = this.getStartHour();
778
- var endHour = this.getEndHour();
789
+ var startHour = this.getStartEndHours(this.parent.activeViewOptions.startHour);
790
+ var endHour = this.getStartEndHours(this.parent.activeViewOptions.endHour);
779
791
  var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;
780
792
  var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;
781
793
  var length = Math.round(util.MS_PER_DAY / msInterval);
@@ -55,6 +55,7 @@ export declare class ViewBase {
55
55
  isWorkHour(date: Date, startHour: Date, endHour: Date, workDays: number[]): boolean;
56
56
  getRenderDates(workDays?: number[]): Date[];
57
57
  getNextPreviousDate(type: string): Date;
58
+ formatViewLabel(view: string, startDate: Date, endDate: Date): string;
58
59
  getLabelText(view: string): string;
59
60
  getDateRangeText(): string;
60
61
  formatDateRange(startDate: Date, endDate?: Date): string;
@@ -101,6 +101,9 @@ var ViewBase = /** @class */ (function () {
101
101
  };
102
102
  ViewBase.prototype.setAriaAttributes = function (table) {
103
103
  table.setAttribute('role', 'grid');
104
+ if (this.parent.currentView !== 'Year') {
105
+ table.setAttribute('id', this.parent.element.id + '_table');
106
+ }
104
107
  table.setAttribute('aria-label', this.getLabelText(this.parent.currentView));
105
108
  };
106
109
  ViewBase.prototype.createColGroup = function (table, lastRow) {
@@ -348,9 +351,29 @@ var ViewBase = /** @class */ (function () {
348
351
  var weekLength = type === 'next' ? util.WEEK_LENGTH : -util.WEEK_LENGTH;
349
352
  return util.addDays(this.parent.selectedDate, weekLength * this.parent.activeViewOptions.interval);
350
353
  };
354
+ ViewBase.prototype.formatViewLabel = function (view, startDate, endDate) {
355
+ var formatOptions = { type: 'date', skeleton: 'full', calendar: this.parent.getCalendarMode() };
356
+ return this.parent.localeObj.getConstant(view) + ' ' + this.parent.localeObj.getConstant('start') + ' ' + this.parent.globalize.formatDate(startDate, formatOptions) + ' '
357
+ + this.parent.localeObj.getConstant('endAt') + ' ' + this.parent.globalize.formatDate(endDate, formatOptions);
358
+ };
351
359
  ViewBase.prototype.getLabelText = function (view) {
352
360
  var viewStr = view.charAt(0).toLowerCase() + view.substring(1);
353
- return this.parent.localeObj.getConstant(viewStr) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { skeleton: 'long', calendar: this.parent.getCalendarMode() }), 'single');
361
+ if (view === 'Year' || view === 'TimelineYear') {
362
+ return this.formatViewLabel(viewStr, this.parent.activeView.getStartDate(), this.parent.activeView.getEndDate());
363
+ }
364
+ else {
365
+ if (this.renderDates.length > 0) {
366
+ if (this.parent.currentView === 'Day' || this.parent.currentView === 'TimelineDay') {
367
+ return this.parent.localeObj.getConstant(viewStr) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { type: 'date', skeleton: 'full', calendar: this.parent.getCalendarMode() }), 'single');
368
+ }
369
+ else {
370
+ return this.formatViewLabel(viewStr, this.renderDates[0], this.renderDates[this.renderDates.length - 1]);
371
+ }
372
+ }
373
+ else {
374
+ return '';
375
+ }
376
+ }
354
377
  };
355
378
  ViewBase.prototype.getDateRangeText = function () {
356
379
  if (this.parent.isAdaptive) {
@@ -441,7 +464,7 @@ var ViewBase = /** @class */ (function () {
441
464
  var scheduleId = this.parent.element.id + '_';
442
465
  var viewName = this.parent.activeViewOptions.resourceHeaderTemplateName;
443
466
  var templateId = scheduleId + viewName + 'resourceHeaderTemplate';
444
- var quickTemplate = [].slice.call(this.parent.getResourceHeaderTemplate()(data, this.parent, 'resourceHeaderTemplate', templateId, false));
467
+ var quickTemplate = [].slice.call(this.parent.getResourceHeaderTemplate()(data, this.parent, 'resourceHeaderTemplate', templateId, false, undefined, undefined, this.parent.root));
445
468
  append(quickTemplate, tdElement);
446
469
  }
447
470
  else {
@@ -280,7 +280,7 @@ var Year = /** @class */ (function (_super) {
280
280
  };
281
281
  Year.prototype.renderTemplates = function (fn, args, tName, vName, ele) {
282
282
  var templateId = this.parent.element.id + '_' + vName + tName;
283
- var template = [].slice.call(fn(args, this.parent, tName, templateId, false));
283
+ var template = [].slice.call(fn(args, this.parent, tName, templateId, false, undefined, undefined, this.parent.root));
284
284
  append(template, ele);
285
285
  };
286
286
  Year.prototype.onCellClick = function (e) {
@@ -3673,6 +3673,16 @@
3673
3673
  width: 26px;
3674
3674
  }
3675
3675
 
3676
+ @media print {
3677
+ .e-schedule .e-table-container {
3678
+ display: block;
3679
+ }
3680
+ .e-schedule .e-vertical-view .e-content-table thead {
3681
+ -webkit-column-break-inside: auto;
3682
+ -moz-column-break-inside: auto;
3683
+ break-inside: auto;
3684
+ }
3685
+ }
3676
3686
  .e-bigger .e-more-popup-wrapper,
3677
3687
  .e-more-popup-wrapper {
3678
3688
  background: #1a1a1a;
@@ -3668,6 +3668,16 @@
3668
3668
  width: 26px;
3669
3669
  }
3670
3670
 
3671
+ @media print {
3672
+ .e-schedule .e-table-container {
3673
+ display: block;
3674
+ }
3675
+ .e-schedule .e-vertical-view .e-content-table thead {
3676
+ -webkit-column-break-inside: auto;
3677
+ -moz-column-break-inside: auto;
3678
+ break-inside: auto;
3679
+ }
3680
+ }
3671
3681
  .e-bigger .e-more-popup-wrapper,
3672
3682
  .e-more-popup-wrapper {
3673
3683
  background: #fff;
@@ -3770,6 +3770,16 @@
3770
3770
  width: 26px;
3771
3771
  }
3772
3772
 
3773
+ @media print {
3774
+ .e-schedule .e-table-container {
3775
+ display: block;
3776
+ }
3777
+ .e-schedule .e-vertical-view .e-content-table thead {
3778
+ -webkit-column-break-inside: auto;
3779
+ -moz-column-break-inside: auto;
3780
+ break-inside: auto;
3781
+ }
3782
+ }
3773
3783
  .e-bigger .e-more-popup-wrapper,
3774
3784
  .e-more-popup-wrapper {
3775
3785
  background: #fff;