@syncfusion/ej2-schedule 19.3.48 → 19.4.40

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 (124) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +63 -0
  2. package/.github/PULL_REQUEST_TEMPLATE/Feature.md +39 -0
  3. package/CHANGELOG.md +47 -10
  4. package/dist/ej2-schedule.umd.min.js +2 -2
  5. package/dist/ej2-schedule.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es2015.js +457 -120
  7. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  8. package/dist/es6/ej2-schedule.es5.js +460 -126
  9. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  10. package/dist/global/ej2-schedule.min.js +2 -2
  11. package/dist/global/ej2-schedule.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +15 -15
  14. package/src/recurrence-editor/date-generator.js +3 -3
  15. package/src/recurrence-editor/recurrence-editor.js +2 -2
  16. package/src/schedule/actions/drag.js +14 -5
  17. package/src/schedule/actions/keyboard.d.ts +7 -0
  18. package/src/schedule/actions/keyboard.js +197 -28
  19. package/src/schedule/base/interface.d.ts +19 -0
  20. package/src/schedule/base/resource.js +1 -0
  21. package/src/schedule/base/schedule-model.d.ts +97 -20
  22. package/src/schedule/base/schedule.d.ts +96 -20
  23. package/src/schedule/base/schedule.js +27 -6
  24. package/src/schedule/base/util.d.ts +1 -0
  25. package/src/schedule/base/util.js +1 -0
  26. package/src/schedule/event-renderer/event-base.d.ts +2 -1
  27. package/src/schedule/event-renderer/event-base.js +20 -5
  28. package/src/schedule/event-renderer/inline-edit.js +8 -5
  29. package/src/schedule/event-renderer/month.js +1 -1
  30. package/src/schedule/event-renderer/timeline-view.js +4 -0
  31. package/src/schedule/event-renderer/vertical-view.js +9 -6
  32. package/src/schedule/event-renderer/year.js +1 -1
  33. package/src/schedule/exports/excel-export.d.ts +2 -1
  34. package/src/schedule/exports/excel-export.js +21 -18
  35. package/src/schedule/models/event-settings-model.d.ts +17 -9
  36. package/src/schedule/models/event-settings.d.ts +15 -8
  37. package/src/schedule/models/event-settings.js +6 -3
  38. package/src/schedule/models/views-model.d.ts +19 -0
  39. package/src/schedule/models/views.d.ts +17 -0
  40. package/src/schedule/models/views.js +6 -0
  41. package/src/schedule/popups/event-window.d.ts +0 -1
  42. package/src/schedule/popups/event-window.js +4 -5
  43. package/src/schedule/popups/form-validator.js +1 -1
  44. package/src/schedule/popups/quick-popups.js +3 -0
  45. package/src/schedule/renderer/agenda.js +2 -1
  46. package/src/schedule/renderer/header-renderer.d.ts +1 -0
  47. package/src/schedule/renderer/header-renderer.js +23 -8
  48. package/src/schedule/renderer/month.d.ts +4 -0
  49. package/src/schedule/renderer/month.js +69 -19
  50. package/src/schedule/renderer/renderer.js +6 -1
  51. package/src/schedule/renderer/timeline-year.js +4 -1
  52. package/src/schedule/renderer/view-base.js +9 -0
  53. package/src/schedule/renderer/year.d.ts +2 -2
  54. package/src/schedule/renderer/year.js +24 -6
  55. package/src/schedule/timezone/timezone.d.ts +3 -2
  56. package/src/schedule/timezone/timezone.js +0 -1
  57. package/styles/bootstrap-dark.css +108 -27
  58. package/styles/bootstrap.css +105 -27
  59. package/styles/bootstrap4.css +117 -62
  60. package/styles/bootstrap5-dark.css +118 -67
  61. package/styles/bootstrap5.css +118 -67
  62. package/styles/fabric-dark.css +108 -26
  63. package/styles/fabric.css +109 -26
  64. package/styles/highcontrast-light.css +104 -26
  65. package/styles/highcontrast.css +109 -28
  66. package/styles/material-dark.css +110 -32
  67. package/styles/material.css +103 -25
  68. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +7 -0
  69. package/styles/recurrence-editor/_bootstrap-definition.scss +7 -0
  70. package/styles/recurrence-editor/_bootstrap4-definition.scss +7 -0
  71. package/styles/recurrence-editor/_bootstrap5-definition.scss +7 -0
  72. package/styles/recurrence-editor/_fabric-dark-definition.scss +8 -0
  73. package/styles/recurrence-editor/_fabric-definition.scss +7 -0
  74. package/styles/recurrence-editor/_fluent-definition.scss +15 -0
  75. package/styles/recurrence-editor/_highcontrast-definition.scss +7 -0
  76. package/styles/recurrence-editor/_highcontrast-light-definition.scss +7 -0
  77. package/styles/recurrence-editor/_layout.scss +20 -4
  78. package/styles/recurrence-editor/_material-dark-definition.scss +7 -0
  79. package/styles/recurrence-editor/_material-definition.scss +7 -0
  80. package/styles/recurrence-editor/_tailwind-definition.scss +15 -8
  81. package/styles/recurrence-editor/bootstrap-dark.css +20 -4
  82. package/styles/recurrence-editor/bootstrap.css +20 -4
  83. package/styles/recurrence-editor/bootstrap4.css +20 -4
  84. package/styles/recurrence-editor/bootstrap5-dark.css +20 -4
  85. package/styles/recurrence-editor/bootstrap5.css +20 -4
  86. package/styles/recurrence-editor/fabric-dark.css +20 -4
  87. package/styles/recurrence-editor/fabric.css +20 -4
  88. package/styles/recurrence-editor/highcontrast-light.css +20 -4
  89. package/styles/recurrence-editor/highcontrast.css +20 -4
  90. package/styles/recurrence-editor/material-dark.css +20 -4
  91. package/styles/recurrence-editor/material.css +20 -4
  92. package/styles/recurrence-editor/tailwind-dark.css +20 -4
  93. package/styles/recurrence-editor/tailwind.css +20 -4
  94. package/styles/schedule/_bootstrap-dark-definition.scss +22 -1
  95. package/styles/schedule/_bootstrap-definition.scss +22 -1
  96. package/styles/schedule/_bootstrap4-definition.scss +23 -1
  97. package/styles/schedule/_bootstrap5-definition.scss +145 -119
  98. package/styles/schedule/_fabric-dark-definition.scss +22 -1
  99. package/styles/schedule/_fabric-definition.scss +22 -1
  100. package/styles/schedule/_fluent-definition.scss +218 -0
  101. package/styles/schedule/_highcontrast-definition.scss +22 -1
  102. package/styles/schedule/_highcontrast-light-definition.scss +22 -1
  103. package/styles/schedule/_layout.scss +95 -158
  104. package/styles/schedule/_material-dark-definition.scss +22 -1
  105. package/styles/schedule/_material-definition.scss +21 -0
  106. package/styles/schedule/_tailwind-definition.scss +216 -195
  107. package/styles/schedule/_theme.scss +1 -1
  108. package/styles/schedule/bootstrap-dark.css +88 -23
  109. package/styles/schedule/bootstrap.css +85 -23
  110. package/styles/schedule/bootstrap4.css +97 -58
  111. package/styles/schedule/bootstrap5-dark.css +98 -63
  112. package/styles/schedule/bootstrap5.css +98 -63
  113. package/styles/schedule/fabric-dark.css +88 -22
  114. package/styles/schedule/fabric.css +89 -22
  115. package/styles/schedule/highcontrast-light.css +84 -22
  116. package/styles/schedule/highcontrast.css +89 -24
  117. package/styles/schedule/icons/_fluent.scss +231 -0
  118. package/styles/schedule/icons/_tailwind.scss +231 -231
  119. package/styles/schedule/material-dark.css +90 -28
  120. package/styles/schedule/material.css +83 -21
  121. package/styles/schedule/tailwind-dark.css +94 -52
  122. package/styles/schedule/tailwind.css +94 -52
  123. package/styles/tailwind-dark.css +114 -56
  124. package/styles/tailwind.css +114 -56
@@ -91,6 +91,7 @@ var cellMouseDown = 'cell-mouse-down';
91
91
  * Schedule common utilities
92
92
  */
93
93
  var WEEK_LENGTH = 7;
94
+ var DEFAULT_WEEKS = 6;
94
95
  var MS_PER_DAY = 86400000;
95
96
  var MS_PER_MINUTE = 60000;
96
97
  /**
@@ -1247,8 +1248,10 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1247
1248
  enableRtl: this.parent.enableRtl
1248
1249
  });
1249
1250
  var calendarView = this.getCalendarView();
1251
+ var isDisplayDate = this.parent.currentView === 'Month' &&
1252
+ !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && !this.hasSelectedDate();
1250
1253
  this.headerCalendar = new Calendar({
1251
- value: this.parent.selectedDate,
1254
+ value: isDisplayDate ? this.parent.activeViewOptions.displayDate : this.parent.selectedDate,
1252
1255
  min: this.parent.minDate,
1253
1256
  max: this.parent.maxDate,
1254
1257
  firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,
@@ -1287,6 +1290,7 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1287
1290
  var strClass = args.item.cssClass.replace('e-views ', '');
1288
1291
  var data;
1289
1292
  var isSameTime;
1293
+ var currentTime;
1290
1294
  switch (strClass) {
1291
1295
  case 'e-date-range':
1292
1296
  if (!this.headerPopup) {
@@ -1336,8 +1340,13 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1336
1340
  this.parent.changeView('TimelineYear', args.originalEvent, undefined, this.calculateViewIndex(args));
1337
1341
  break;
1338
1342
  case 'e-today':
1339
- if (this.parent.currentView === 'Agenda' || !this.parent.isSelectedDate(resetTime(this.parent.getCurrentTime()))) {
1340
- this.parent.changeDate(resetTime(this.parent.getCurrentTime()), args.originalEvent);
1343
+ currentTime = resetTime(this.parent.getCurrentTime());
1344
+ if (this.parent.currentView === 'Agenda' || !this.parent.isSelectedDate(currentTime) ||
1345
+ this.parent.currentView === 'Month' && this.parent.activeViewOptions.displayDate && !this.hasSelectedDate() &&
1346
+ resetTime(this.parent.activeViewOptions.displayDate) !== currentTime || this.parent.currentView === 'Month' &&
1347
+ this.parent.activeViewOptions.numberOfWeeks > 0 && !this.hasSelectedDate()
1348
+ && resetTime(firstDateOfMonth(this.parent.selectedDate)) !== currentTime) {
1349
+ this.parent.changeDate(currentTime, args.originalEvent);
1341
1350
  }
1342
1351
  break;
1343
1352
  case 'e-prev':
@@ -1356,8 +1365,8 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1356
1365
  var slotCount = this.parent.activeViewOptions.timeScale.slotCount;
1357
1366
  var msInterval = (interval * MS_PER_MINUTE) / slotCount;
1358
1367
  var startTime = new Date(this.parent.selectedDate.getTime());
1359
- var currentTime = this.parent.getCurrentTime();
1360
- startTime.setHours(currentTime.getHours(), (Math.round(startTime.getMinutes() / msInterval) * msInterval), 0);
1368
+ var currentTime_1 = this.parent.getCurrentTime();
1369
+ startTime.setHours(currentTime_1.getHours(), (Math.round(startTime.getMinutes() / msInterval) * msInterval), 0);
1361
1370
  var endTime = new Date(new Date(startTime.getTime()).setMilliseconds(startTime.getMilliseconds() + msInterval));
1362
1371
  data = { startTime: startTime, endTime: endTime, isAllDay: false };
1363
1372
  }
@@ -1372,6 +1381,11 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1372
1381
  toolbarPopUp.ej2_instances[0].hide({ name: 'SlideUp', duration: 100 });
1373
1382
  }
1374
1383
  };
1384
+ HeaderRenderer.prototype.hasSelectedDate = function () {
1385
+ var selectedTime = resetTime(this.parent.selectedDate).getTime();
1386
+ return selectedTime >= this.parent.activeView.getStartDate().getTime() &&
1387
+ selectedTime <= this.parent.activeView.getEndDate().getTime();
1388
+ };
1375
1389
  HeaderRenderer.prototype.getHeaderElement = function () {
1376
1390
  return this.toolbarObj.element;
1377
1391
  };
@@ -1416,9 +1430,11 @@ var HeaderRenderer = /** @__PURE__ @class */ (function () {
1416
1430
  lastDate = addDays(firstDate, 7 * this.parent.activeViewOptions.interval);
1417
1431
  }
1418
1432
  if (this.parent.currentView === 'Month') {
1419
- firstDate = firstDateOfMonth(this.parent.selectedDate);
1420
- var lastMonthFirstDate = addMonths(firstDate, this.parent.activeViewOptions.interval - 1);
1421
- lastDate = lastDateOfMonth(lastMonthFirstDate);
1433
+ var isCustomMonth = !isNullOrUndefined(this.parent.activeViewOptions.displayDate) ||
1434
+ this.parent.activeViewOptions.numberOfWeeks > 0;
1435
+ firstDate = isCustomMonth ? this.parent.activeView.getStartDate() : firstDateOfMonth(this.parent.selectedDate);
1436
+ lastDate = isCustomMonth ? this.parent.activeView.getEndDate() :
1437
+ lastDateOfMonth(addMonths(firstDate, this.parent.activeViewOptions.interval - 1));
1422
1438
  }
1423
1439
  if (!isNullOrUndefined(prevNavEle)) {
1424
1440
  this.toolbarObj.enableItems(prevNavEle, firstDate > this.parent.minDate);
@@ -1954,6 +1970,9 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
1954
1970
  }
1955
1971
  var queryStr = '.' + WORK_CELLS_CLASS + ',.' + ALLDAY_CELLS_CLASS + ',.' + HEADER_CELLS_CLASS;
1956
1972
  var target = closest(e.target, queryStr);
1973
+ if (this.parent.currentView === 'TimelineYear' && target.classList.contains(OTHERMONTH_CLASS)) {
1974
+ return;
1975
+ }
1957
1976
  this.parent.activeCellsData = this.getSelectedElements(target);
1958
1977
  var cellData = {};
1959
1978
  if (this.parent.eventWindow) {
@@ -1977,6 +1996,9 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
1977
1996
  || this.isPreventAction(e)) {
1978
1997
  return;
1979
1998
  }
1999
+ if (this.parent.currentView === 'TimelineYear' && e.target.classList.contains(OTHERMONTH_CLASS)) {
2000
+ return;
2001
+ }
1980
2002
  var target = e.target;
1981
2003
  if (closest(target, '.' + POPUP_WRAPPER_CLASS)) {
1982
2004
  if (target.classList.contains(QUICK_POPUP_EVENT_DETAILS_CLASS) ||
@@ -2011,11 +2033,16 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2011
2033
  this.parent.notify(inlineClick, inlineArgs);
2012
2034
  }
2013
2035
  else {
2014
- this.parent.notify(cellClick, args);
2036
+ if (this.parent.currentView === 'Year') {
2037
+ target.click();
2038
+ }
2039
+ else {
2040
+ this.parent.notify(cellClick, args);
2041
+ }
2015
2042
  }
2016
2043
  return;
2017
2044
  }
2018
- if (target.classList.contains(INLINE_SUBJECT_CLASS)) {
2045
+ if (target.classList.contains(INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {
2019
2046
  this.parent.inlineModule.inlineCrudActions(target);
2020
2047
  return;
2021
2048
  }
@@ -2047,7 +2074,9 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2047
2074
  };
2048
2075
  KeyboardInteraction.prototype.getCells = function (isInverseTable, start, end) {
2049
2076
  var tableEle = this.parent.getContentTable();
2050
- var cells = [].slice.call(tableEle.querySelectorAll('td'));
2077
+ var isTimelineYear = this.parent.currentView === 'TimelineYear';
2078
+ var query = isTimelineYear && !isInverseTable ? '.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')' : 'td';
2079
+ var cells = [].slice.call(tableEle.querySelectorAll(query));
2051
2080
  var maxRow = tableEle.rows.length;
2052
2081
  var maxColumn = tableEle.rows[0].cells.length;
2053
2082
  if (start && start.classList.contains(ALLDAY_CELLS_CLASS)) {
@@ -2062,7 +2091,11 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2062
2091
  if (isInverseTable) {
2063
2092
  for (var i = 0; i < maxColumn; i++) {
2064
2093
  for (var j = 0; j < maxRow; j++) {
2065
- inverseCells.push(cells[maxColumn * j + i]);
2094
+ var cell = cells[maxColumn * j + i];
2095
+ if (isTimelineYear && cell.classList.contains(OTHERMONTH_CLASS)) {
2096
+ continue;
2097
+ }
2098
+ inverseCells.push(cell);
2066
2099
  }
2067
2100
  }
2068
2101
  startIndex = inverseCells.indexOf(start);
@@ -2084,11 +2117,17 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2084
2117
  return;
2085
2118
  }
2086
2119
  this.parent.eventBase.removeSelectedAppointmentClass();
2087
- if (this.parent.activeView.isTimelineView()) {
2120
+ if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear') {
2088
2121
  var cell = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS +
2089
2122
  ' tr:not(.' + HIDDEN_CLASS + ') .' + WORK_CELLS_CLASS + ':not(.' + RESOURCE_GROUP_CELLS_CLASS + ')');
2090
2123
  this.selectCells(false, cell);
2091
2124
  }
2125
+ else if (this.parent.currentView.indexOf('Year') > -1) {
2126
+ var query = '.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')' + ':not(.' + RESOURCE_GROUP_CELLS_CLASS + ')';
2127
+ var isVerticalYear = this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical';
2128
+ query += isVerticalYear ? '[data-date="' + this.parent.activeView.startDate().getTime() + '"]' : '';
2129
+ this.selectCells(false, this.parent.element.querySelector(query));
2130
+ }
2092
2131
  else {
2093
2132
  this.selectCells(false, this.parent.getWorkCellElements()[0]);
2094
2133
  }
@@ -2110,13 +2149,21 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2110
2149
  var target = (targetCell instanceof Array) ? targetCell.slice(-1)[0] : targetCell;
2111
2150
  if (isMultiple) {
2112
2151
  var initialId_1;
2113
- var views_1 = ['Day', 'Week', 'WorkWeek', 'Month', 'TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth'];
2152
+ var views_1 = ['Day', 'Week', 'WorkWeek', 'TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth', 'TimelineYear'];
2114
2153
  var args = { element: targetCell, requestType: 'mousemove', allowMultipleRow: true };
2115
2154
  this.parent.inlineModule.removeInlineAppointmentElement();
2116
2155
  this.parent.trigger(select, args, function (selectArgs) {
2117
2156
  var allowMultipleRow = (!selectArgs.allowMultipleRow) || (!_this.parent.allowMultiRowSelection);
2118
- if (allowMultipleRow && (views_1.indexOf(_this.parent.currentView) > -1)) {
2119
- target = target.parentElement.children[_this.initialTarget.cellIndex];
2157
+ if (allowMultipleRow) {
2158
+ var isTimelineYear = _this.parent.currentView === 'TimelineYear';
2159
+ if (isTimelineYear && _this.parent.activeViewOptions.orientation === 'Horizontal' || _this.parent.currentView === 'Month') {
2160
+ var isGroupYear = isTimelineYear && _this.parent.activeViewOptions.group.resources.length > 0;
2161
+ target = isGroupYear ? _this.initialTarget :
2162
+ _this.initialTarget.parentElement.children[target.cellIndex];
2163
+ }
2164
+ else if (views_1.indexOf(_this.parent.currentView) > -1) {
2165
+ target = target.parentElement.children[_this.initialTarget.cellIndex];
2166
+ }
2120
2167
  }
2121
2168
  var selectedCells = _this.getCells(_this.isInverseTableSelect(), _this.initialTarget, target);
2122
2169
  if (_this.parent.activeViewOptions.group.resources.length > 0) {
@@ -2252,8 +2299,20 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2252
2299
  }
2253
2300
  }
2254
2301
  };
2302
+ KeyboardInteraction.prototype.cancelUpDownAction = function (isTimelineYear) {
2303
+ var isVerticalYear = isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical';
2304
+ var isGroup = this.parent.activeViewOptions.group.resources.length > 0;
2305
+ if (isVerticalYear && isGroup || isTimelineYear && this.initialTarget.classList.contains(OTHERMONTH_CLASS)) {
2306
+ return true;
2307
+ }
2308
+ if (this.parent.activeView.isTimelineView() && !isTimelineYear || this.parent.currentView === 'MonthAgenda') {
2309
+ return true;
2310
+ }
2311
+ return false;
2312
+ };
2255
2313
  KeyboardInteraction.prototype.processUp = function (e, isMultiple) {
2256
- if ((isMultiple && (this.parent.activeView.isTimelineView() || this.parent.currentView === 'MonthAgenda'))) {
2314
+ var isTimelineYear = this.parent.currentView === 'TimelineYear';
2315
+ if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {
2257
2316
  return;
2258
2317
  }
2259
2318
  var target = (e.target);
@@ -2276,8 +2335,22 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2276
2335
  if (target.classList.contains(WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + POPUP_OPEN)) {
2277
2336
  var tableRows = this.parent.getTableRows();
2278
2337
  var curRowIndex = tableRows.indexOf(target.parentElement);
2279
- if (curRowIndex > 0 && curRowIndex < tableRows.length) {
2280
- this.selectCells(isMultiple, (tableRows[curRowIndex - 1]).cells[target.cellIndex]);
2338
+ var targetCell = void 0;
2339
+ if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {
2340
+ targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, true) :
2341
+ this.getHorizontalUpDownCell(tableRows, target, curRowIndex, true);
2342
+ }
2343
+ if ((curRowIndex > 0 || targetCell) && curRowIndex < tableRows.length) {
2344
+ targetCell = targetCell ? targetCell : (tableRows[curRowIndex - 1]).cells[target.cellIndex];
2345
+ if (this.parent.currentView === 'Year' && targetCell.classList.contains(OTHERMONTH_CLASS)) {
2346
+ if (this.parent.activeView.getStartDate().getTime() < +targetCell.getAttribute('data-date')) {
2347
+ targetCell = this.getYearUpDownCell(tableRows, curRowIndex - 1, target.cellIndex, true);
2348
+ }
2349
+ else {
2350
+ return;
2351
+ }
2352
+ }
2353
+ this.selectCells(isMultiple, targetCell);
2281
2354
  }
2282
2355
  }
2283
2356
  else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {
@@ -2285,7 +2358,8 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2285
2358
  }
2286
2359
  };
2287
2360
  KeyboardInteraction.prototype.processDown = function (e, isMultiple) {
2288
- if (isMultiple && (this.parent.activeView.isTimelineView() || this.parent.currentView === 'MonthAgenda')) {
2361
+ var isTimelineYear = this.parent.currentView === 'TimelineYear';
2362
+ if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {
2289
2363
  return;
2290
2364
  }
2291
2365
  var target = (e.target);
@@ -2308,16 +2382,62 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2308
2382
  }
2309
2383
  if (target.classList.contains(WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + POPUP_OPEN)) {
2310
2384
  var curRowIndex = tableRows.indexOf(target.parentElement);
2311
- if (curRowIndex >= 0 && curRowIndex < tableRows.length - 1) {
2312
- this.selectCells(isMultiple, (tableRows[curRowIndex + 1]).cells[target.cellIndex]);
2385
+ var targetCell = void 0;
2386
+ if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {
2387
+ targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, false)
2388
+ : this.getHorizontalUpDownCell(tableRows, target, curRowIndex, false);
2389
+ }
2390
+ if (curRowIndex >= 0 && ((curRowIndex < tableRows.length - 1) || targetCell)) {
2391
+ targetCell = targetCell ? targetCell : (tableRows[curRowIndex + 1]).cells[target.cellIndex];
2392
+ if (this.parent.currentView === 'Year' && targetCell.classList.contains(OTHERMONTH_CLASS)) {
2393
+ if (this.parent.activeView.getEndDate().getTime() > +targetCell.getAttribute('data-date')) {
2394
+ targetCell = this.getYearUpDownCell(tableRows, curRowIndex + 1, target.cellIndex, false);
2395
+ }
2396
+ else {
2397
+ return;
2398
+ }
2399
+ }
2400
+ this.selectCells(isMultiple, targetCell);
2313
2401
  }
2314
2402
  }
2315
2403
  else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {
2316
2404
  this.selectAppointment(false, target);
2317
2405
  }
2318
2406
  };
2407
+ KeyboardInteraction.prototype.getYearUpDownCell = function (tableRows, rowIndex, cellIndex, isUp) {
2408
+ while (tableRows[rowIndex] && tableRows[rowIndex].cells[cellIndex].classList.contains(OTHERMONTH_CLASS)) {
2409
+ rowIndex = rowIndex + (isUp ? -1 : 1);
2410
+ }
2411
+ return tableRows[rowIndex].cells[cellIndex];
2412
+ };
2413
+ // eslint-disable-next-line max-len
2414
+ KeyboardInteraction.prototype.getHorizontalUpDownCell = function (tableRows, target, curRowIndex, isUp) {
2415
+ var row = tableRows[curRowIndex + (isUp ? -1 : 1)];
2416
+ var cell = row ? row.cells[target.cellIndex] : target;
2417
+ if (cell.classList.contains(OTHERMONTH_CLASS)) {
2418
+ var workCell = row.querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')');
2419
+ var date = new Date(+workCell.getAttribute('data-date'));
2420
+ var query = '[data-date="' + new Date(date.getFullYear(), date.getMonth() + 1, 0).getTime() + '"]';
2421
+ cell = cell.cellIndex < workCell.cellIndex ? workCell : row.querySelector(query);
2422
+ }
2423
+ return cell;
2424
+ };
2425
+ // eslint-disable-next-line max-len
2426
+ KeyboardInteraction.prototype.getVerticalUpDownCell = function (tableRows, target, curRowIndex, isUp) {
2427
+ var hasRow = isUp && curRowIndex > 0 || !isUp && curRowIndex < tableRows.length - 1;
2428
+ var targetCell = hasRow ? tableRows[curRowIndex + (isUp ? -1 : 1)].cells[target.cellIndex] : undefined;
2429
+ if (!targetCell || targetCell.classList.contains(OTHERMONTH_CLASS)) {
2430
+ var column = tableRows[curRowIndex].cells[target.cellIndex - (isUp ? 1 : -1)];
2431
+ if (column) {
2432
+ var dateAttr = +target.getAttribute('data-date') - (isUp ? MS_PER_DAY : -MS_PER_DAY);
2433
+ return this.parent.getContentTable().querySelector('.' + WORK_CELLS_CLASS + '[data-date="' + dateAttr + '"]');
2434
+ }
2435
+ targetCell = target;
2436
+ }
2437
+ return targetCell;
2438
+ };
2319
2439
  KeyboardInteraction.prototype.processLeftRight = function (target) {
2320
- var tableEle = this.parent.getContentTable();
2440
+ var tableEle = (this.parent.currentView === 'Year' ? target.closest('tbody') : this.parent.getContentTable());
2321
2441
  var curRowIndex = target.parentNode.sectionRowIndex;
2322
2442
  var key = {
2323
2443
  element: tableEle,
@@ -2330,8 +2450,9 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2330
2450
  KeyboardInteraction.prototype.getQuickPopupElement = function () {
2331
2451
  return (this.parent.isAdaptive ? document.body : this.parent.element).querySelector('.' + POPUP_WRAPPER_CLASS);
2332
2452
  };
2333
- KeyboardInteraction.prototype.isCancelLeftRightAction = function (e, isMultiple) {
2334
- if (this.parent.currentView === 'Agenda' || (isMultiple && this.parent.currentView === 'MonthAgenda')) {
2453
+ KeyboardInteraction.prototype.isCancelLeftRightAction = function (e, isMultiple, isTimelineYear) {
2454
+ var prevent = this.parent.currentView === 'MonthAgenda' || isTimelineYear && this.initialTarget.classList.contains(OTHERMONTH_CLASS);
2455
+ if (this.parent.currentView === 'Agenda' || (isMultiple && prevent)) {
2335
2456
  return true;
2336
2457
  }
2337
2458
  if (this.isPreventAction(e) && isMultiple) {
@@ -2345,7 +2466,8 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2345
2466
  return false;
2346
2467
  };
2347
2468
  KeyboardInteraction.prototype.processRight = function (e, isMultiple) {
2348
- if (this.isCancelLeftRightAction(e, isMultiple)) {
2469
+ var isTimelineYear = this.parent.currentView === 'TimelineYear';
2470
+ if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {
2349
2471
  return;
2350
2472
  }
2351
2473
  var selectedCells = this.parent.getSelectedElements();
@@ -2366,24 +2488,36 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2366
2488
  if (target.classList.contains(WORK_CELLS_CLASS) &&
2367
2489
  (e.target).classList.contains(WORK_CELLS_CLASS)) {
2368
2490
  var key = this.processLeftRight(target);
2369
- if (key.columnIndex >= 0 && key.columnIndex < key.maxIndex - 1) {
2491
+ var targetDate = new Date(+target.getAttribute('data-date'));
2492
+ var isMonthEnd = this.parent.currentView === 'Year' && targetDate.getTime() === lastDateOfMonth(targetDate).getTime();
2493
+ if (key.columnIndex >= 0 && key.columnIndex < key.maxIndex - 1 && !isMonthEnd) {
2370
2494
  targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex + 1], 'right');
2495
+ if (isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS)) {
2496
+ targetCell = this.getTimelineYearTargetCell(key, target, true);
2497
+ }
2371
2498
  if (!isNullOrUndefined(targetCell)) {
2372
2499
  this.selectCells(isMultiple, targetCell);
2373
2500
  }
2374
2501
  }
2375
- else if (key.columnIndex === key.maxIndex - 1) {
2376
- if (!this.isInverseTableSelect() && key.rowIndex < key.element.rows.length - 1) {
2502
+ else if (key.columnIndex === key.maxIndex - 1 || isMonthEnd) {
2503
+ if (!this.isInverseTableSelect() && key.rowIndex < key.element.rows.length - 1 && !isMonthEnd) {
2377
2504
  targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex + 1].cells[0], 'right');
2505
+ var changeTargetCell = isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS);
2506
+ targetCell = changeTargetCell ? this.getHorizontalLeftRightCell(key, target, true) : targetCell;
2378
2507
  if (!isNullOrUndefined(targetCell)) {
2379
2508
  this.selectCells(isMultiple, targetCell);
2380
2509
  }
2381
2510
  }
2382
2511
  else if (!isMultiple) {
2512
+ if (isMonthEnd && targetDate.getTime() !== this.parent.activeView.getEndDate().getTime()) {
2513
+ this.selectCells(isMultiple, this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + (targetDate.getTime() + MS_PER_DAY) + '"]'));
2514
+ return;
2515
+ }
2383
2516
  var rowIndex = this.isInverseTableSelect() ? key.rowIndex : 0;
2384
2517
  this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);
2385
2518
  var tableEle = this.parent.getContentTable();
2386
- this.selectCells(false, tableEle.rows[rowIndex].cells[0]);
2519
+ var cell = isMonthEnd ? tableEle.rows[rowIndex].querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')') : tableEle.rows[rowIndex].cells[0];
2520
+ this.selectCells(false, cell);
2387
2521
  }
2388
2522
  }
2389
2523
  }
@@ -2402,7 +2536,8 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2402
2536
  }
2403
2537
  };
2404
2538
  KeyboardInteraction.prototype.processLeft = function (e, isMultiple) {
2405
- if (this.isCancelLeftRightAction(e, isMultiple)) {
2539
+ var isTimelineYear = this.parent.currentView === 'TimelineYear';
2540
+ if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {
2406
2541
  return;
2407
2542
  }
2408
2543
  var target = (e.target);
@@ -2423,24 +2558,40 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2423
2558
  if ((e.target).classList.contains(WORK_CELLS_CLASS) &&
2424
2559
  target.classList.contains(WORK_CELLS_CLASS)) {
2425
2560
  var key = this.processLeftRight(target);
2426
- if (key.columnIndex > 0 && key.columnIndex < key.maxIndex) {
2561
+ var targetDate = new Date(+target.getAttribute('data-date'));
2562
+ var isMonthStart = this.parent.currentView === 'Year' && targetDate.getTime() === firstDateOfMonth(targetDate).getTime();
2563
+ if (key.columnIndex > 0 && key.columnIndex < key.maxIndex && !isMonthStart) {
2427
2564
  targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex - 1], 'left');
2565
+ if (isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS)) {
2566
+ targetCell = this.getTimelineYearTargetCell(key, target, false);
2567
+ }
2428
2568
  if (!isNullOrUndefined(targetCell)) {
2429
2569
  this.selectCells(isMultiple, targetCell);
2430
2570
  }
2431
2571
  }
2432
- else if (key.columnIndex === 0) {
2572
+ else if (key.columnIndex === 0 || isMonthStart) {
2433
2573
  if (!this.isInverseTableSelect() && key.rowIndex > 0) {
2434
2574
  targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex - 1].cells[key.maxIndex - 1], 'left');
2575
+ var otherMonthCell = isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS);
2576
+ targetCell = otherMonthCell ? this.getHorizontalLeftRightCell(key, target, false) : targetCell;
2435
2577
  if (!isNullOrUndefined(targetCell)) {
2436
2578
  this.selectCells(isMultiple, targetCell);
2437
2579
  }
2438
2580
  }
2439
2581
  else if (!isMultiple) {
2582
+ if (isMonthStart && targetDate.getTime() !== this.parent.activeView.getStartDate().getTime()) {
2583
+ this.selectCells(isMultiple, this.parent.element.querySelector('[data-date="' + (targetDate.getTime() - MS_PER_DAY) + '"]'));
2584
+ return;
2585
+ }
2440
2586
  this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);
2441
2587
  var tableEle = this.parent.getContentTable();
2442
2588
  var rowIndex = this.isInverseTableSelect() ? key.rowIndex : tableEle.rows.length - 1;
2443
- this.selectCells(false, tableEle.rows[rowIndex].cells[key.maxIndex - 1]);
2589
+ var cell = tableEle.rows[rowIndex].cells[key.maxIndex - 1];
2590
+ if (isMonthStart) {
2591
+ var tbody = this.parent.element.querySelectorAll('.' + CONTENT_TABLE_CLASS + ' tbody');
2592
+ cell = tbody.item(tbody.length - 1).querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + this.parent.activeView.getEndDate().getTime() + '"]');
2593
+ }
2594
+ this.selectCells(false, cell);
2444
2595
  }
2445
2596
  }
2446
2597
  }
@@ -2458,6 +2609,29 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2458
2609
  }
2459
2610
  }
2460
2611
  };
2612
+ KeyboardInteraction.prototype.getTimelineYearTargetCell = function (key, target, isRight) {
2613
+ return this.isInverseTableSelect() ? this.getVerticalLeftRightCell(target, isRight) :
2614
+ this.getHorizontalLeftRightCell(key, target, isRight);
2615
+ };
2616
+ KeyboardInteraction.prototype.getHorizontalLeftRightCell = function (key, target, isRight) {
2617
+ var row = key.element.rows[target.parentNode.sectionRowIndex + (isRight ? 1 : -1)];
2618
+ if (row) {
2619
+ var query = isRight ? '.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')'
2620
+ : '[data-date="' + ((+target.getAttribute('data-date')) - MS_PER_DAY) + '"]';
2621
+ return row.querySelector(query);
2622
+ }
2623
+ return target;
2624
+ };
2625
+ KeyboardInteraction.prototype.getVerticalLeftRightCell = function (target, isRight) {
2626
+ var date = new Date(+target.getAttribute('data-date'));
2627
+ var start = new Date(date.getFullYear(), date.getMonth() + (isRight ? 1 : -1), 1);
2628
+ var tableEle = this.parent.getContentTable();
2629
+ var targetCell = tableEle.querySelector('[data-date="' + start.getTime() + '"]');
2630
+ if (targetCell.parentNode.sectionRowIndex > target.parentNode.sectionRowIndex) {
2631
+ return targetCell;
2632
+ }
2633
+ return tableEle.querySelector('[data-date="' + new Date(start.getFullYear(), start.getMonth() + 1, 0).getTime() + '"]');
2634
+ };
2461
2635
  KeyboardInteraction.prototype.calculateNextPrevDate = function (currentCell, target, type) {
2462
2636
  var initialId = this.initialTarget.getAttribute('data-group-index');
2463
2637
  if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.currentView === 'Month') {
@@ -2502,6 +2676,16 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2502
2676
  };
2503
2677
  KeyboardInteraction.prototype.processTab = function (e, isReverse) {
2504
2678
  var target = e.target;
2679
+ if (target.classList.contains(INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {
2680
+ target = target.closest('.e-appointment');
2681
+ this.parent.inlineModule.inlineCrudActions(e.target);
2682
+ }
2683
+ if (this.parent.currentView === 'TimelineYear' && target.classList.contains(OTHERMONTH_CLASS)) {
2684
+ if (target.classList.contains(SELECTED_CELL_CLASS)) {
2685
+ this.parent.removeSelectedClass();
2686
+ }
2687
+ return;
2688
+ }
2505
2689
  var popupWrapper = closest(target, '.' + POPUP_WRAPPER_CLASS + ',.' + MORE_POPUP_WRAPPER_CLASS);
2506
2690
  if (popupWrapper && popupWrapper.classList.contains(POPUP_OPEN)) {
2507
2691
  if (popupWrapper.classList.contains(MORE_POPUP_WRAPPER_CLASS)) {
@@ -2543,7 +2727,9 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2543
2727
  }
2544
2728
  if (target.classList.contains(APPOINTMENT_CLASS)) {
2545
2729
  var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + APPOINTMENT_CLASS));
2546
- if (this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0) {
2730
+ var isTimelineYear = this.parent.currentView === 'TimelineYear';
2731
+ var isTimeline = this.parent.activeView.isTimelineView() && !isTimelineYear;
2732
+ if ((isTimeline || isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical') && this.parent.activeViewOptions.group.resources.length > 0) {
2547
2733
  var index = parseInt(target.getAttribute('data-group-index'), 10);
2548
2734
  appElements = [].slice.call(this.parent.element.querySelectorAll("." + APPOINTMENT_CLASS + "[data-group-index=\"" + index + "\"]"));
2549
2735
  var resCellSelector = "." + RESOURCE_CELLS_CLASS + "[data-group-index=\"" + (isReverse ? index : index + 1) + "\"]";
@@ -2592,7 +2778,6 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2592
2778
  this.processTabOnResourceCells(target, isReverse);
2593
2779
  }
2594
2780
  };
2595
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2596
2781
  KeyboardInteraction.prototype.processDelete = function (e) {
2597
2782
  var activeEle = document.activeElement;
2598
2783
  if (this.parent.currentView === 'MonthAgenda') {
@@ -2999,7 +3184,6 @@ var Islamic = /** @__PURE__ @class */ (function () {
2999
3184
  return Islamic;
3000
3185
  }());
3001
3186
 
3002
- /* eslint-disable @typescript-eslint/no-explicit-any */
3003
3187
  /**
3004
3188
  * Time zone
3005
3189
  */
@@ -3577,8 +3761,8 @@ function weeklyType(startDate, endDate, data, ruleObject) {
3577
3761
  var weekstartDate = addDays(tempDate, -startDateDiff);
3578
3762
  var weekendDate = addDays(weekstartDate, 6);
3579
3763
  var compareTempDate = new Date(tempDate.getTime());
3580
- resetTime(weekendDate);
3581
- resetTime(compareTempDate);
3764
+ weekendDate = resetTime(weekendDate);
3765
+ compareTempDate = resetTime(compareTempDate);
3582
3766
  while (weekendDate >= compareTempDate) {
3583
3767
  if (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {
3584
3768
  weekCollection.push([tempDate.getTime()]);
@@ -3588,7 +3772,7 @@ function weeklyType(startDate, endDate, data, ruleObject) {
3588
3772
  }
3589
3773
  tempDate.setDate(tempDate.getDate() + 1);
3590
3774
  compareTempDate = new Date(tempDate.getTime());
3591
- resetTime(compareTempDate);
3775
+ compareTempDate = resetTime(compareTempDate);
3592
3776
  }
3593
3777
  tempDate.setDate(tempDate.getDate() - 1);
3594
3778
  if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {
@@ -5561,7 +5745,7 @@ var EventBase = /** @__PURE__ @class */ (function () {
5561
5745
  var isAllDay = event[fieldMapping.isAllDay];
5562
5746
  var isFullDay = ((event[fieldMapping.endTime].getTime() - event[fieldMapping.startTime].getTime())
5563
5747
  / MS_PER_DAY) >= 1;
5564
- return (isAllDay || (!(this.parent.eventSettings.spannedEventPlacement == 'TimeSlot') && isFullDay)) ? true : false;
5748
+ return (isAllDay || (this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' && isFullDay)) ? true : false;
5565
5749
  };
5566
5750
  EventBase.prototype.addEventListener = function () {
5567
5751
  this.parent.on(documentClick, this.appointmentBorderRemove, this);
@@ -5651,7 +5835,8 @@ var EventBase = /** @__PURE__ @class */ (function () {
5651
5835
  EventBase.prototype.eventClick = function (eventData) {
5652
5836
  var _this = this;
5653
5837
  var target = eventData.target;
5654
- if (target.classList.contains(DRAG_CLONE_CLASS) || target.classList.contains(RESIZE_CLONE_CLASS)) {
5838
+ if (target.classList.contains(DRAG_CLONE_CLASS) || target.classList.contains(RESIZE_CLONE_CLASS) ||
5839
+ target.classList.contains(INLINE_SUBJECT_CLASS)) {
5655
5840
  return;
5656
5841
  }
5657
5842
  if ((eventData.ctrlKey || eventData.metaKey) && eventData.which === 1 && this.parent.keyboardInteractionModule) {
@@ -6121,7 +6306,7 @@ var EventBase = /** @__PURE__ @class */ (function () {
6121
6306
  eventObj[this.parent.eventFields.endTime].getTime() < schedule.endHour.getTime() && start.getTime() === end.getTime();
6122
6307
  return isHourRange || isSameRange;
6123
6308
  };
6124
- EventBase.prototype.allDayExpandScroll = function (dateHeader, heightPropChanged) {
6309
+ EventBase.prototype.allDayExpandScroll = function (dateHeader) {
6125
6310
  var indentHeight = 0;
6126
6311
  var headerRows = [].slice.call(this.parent.element.querySelectorAll('.' + HEADER_ROW_CLASS));
6127
6312
  headerRows.forEach(function (element) {
@@ -6131,14 +6316,28 @@ var EventBase = /** @__PURE__ @class */ (function () {
6131
6316
  });
6132
6317
  indentHeight = dateHeader.offsetHeight - indentHeight;
6133
6318
  this.parent.element.querySelector('.' + ALLDAY_CELLS_CLASS).style.height = (indentHeight / 12) + 'em';
6134
- var content = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
6135
- if (this.parent.uiStateValues.expand && (content.offsetWidth - content.clientWidth > 0 || heightPropChanged)) {
6319
+ if (this.parent.uiStateValues.expand) {
6136
6320
  addClass([dateHeader], ALLDAY_APPOINTMENT_SCROLL);
6137
6321
  }
6138
6322
  else {
6139
6323
  removeClass([dateHeader], ALLDAY_APPOINTMENT_SCROLL);
6140
6324
  }
6141
6325
  };
6326
+ EventBase.prototype.updateEventMinimumDuration = function (startEndHours, startTime, endTime) {
6327
+ var eventDuration = (getUniversalTime(endTime) - getUniversalTime(startTime)) / MS_PER_MINUTE;
6328
+ if (eventDuration < this.parent.eventSettings.minimumEventDuration) {
6329
+ var tempEnd = new Date(startTime);
6330
+ tempEnd.setMinutes(tempEnd.getMinutes() + this.parent.eventSettings.minimumEventDuration);
6331
+ endTime = tempEnd;
6332
+ if (endTime.getTime() > startEndHours.endHour.getTime()) {
6333
+ var tempStart = new Date(startEndHours.endHour.getTime());
6334
+ tempStart.setMinutes(tempStart.getMinutes() - this.parent.eventSettings.minimumEventDuration);
6335
+ startTime = tempStart;
6336
+ endTime = startEndHours.endHour;
6337
+ }
6338
+ }
6339
+ return { startDate: startTime, endDate: endTime };
6340
+ };
6142
6341
  EventBase.prototype.unWireEvents = function () {
6143
6342
  var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + APPOINTMENT_CLASS));
6144
6343
  for (var _i = 0, appElements_1 = appElements; _i < appElements_1.length; _i++) {
@@ -6569,18 +6768,21 @@ var VerticalEvent = /** @__PURE__ @class */ (function (_super) {
6569
6768
  if (currentDay.length === 0) {
6570
6769
  currentDate = resetTime(renderedDate[0]);
6571
6770
  }
6572
- var fieldMapping = this.parent.eventFields;
6573
- var startEndHours = getStartEndHours(currentDate, this.startHour, this.endHour);
6771
+ var field = this.parent.eventFields;
6772
+ var schedule = getStartEndHours(currentDate, this.startHour, this.endHour);
6574
6773
  var event = extend({}, record, null, true);
6575
6774
  event.isSpanned = { isBottom: false, isTop: false };
6576
- if (record[fieldMapping.startTime].getTime() < startEndHours.startHour.getTime()) {
6577
- event[fieldMapping.startTime] = startEndHours.startHour;
6775
+ if (record[field.startTime].getTime() < schedule.startHour.getTime()) {
6776
+ event[field.startTime] = schedule.startHour;
6578
6777
  event.isSpanned.isTop = true;
6579
6778
  }
6580
- if (record[fieldMapping.endTime].getTime() > startEndHours.endHour.getTime()) {
6581
- event[fieldMapping.endTime] = startEndHours.endHour;
6779
+ if (record[field.endTime].getTime() > schedule.endHour.getTime()) {
6780
+ event[field.endTime] = schedule.endHour;
6582
6781
  event.isSpanned.isBottom = true;
6583
6782
  }
6783
+ var eventDates = this.updateEventMinimumDuration(schedule, event[field.startTime], event[field.endTime]);
6784
+ event[field.startTime] = eventDates.startDate;
6785
+ event[field.endTime] = eventDates.endDate;
6584
6786
  return event;
6585
6787
  };
6586
6788
  VerticalEvent.prototype.renderAllDayEvents = function (eventObj, dayIndex, resource, dayCount, inline) {
@@ -7149,7 +7351,7 @@ var MonthEvent = /** @__PURE__ @class */ (function (_super) {
7149
7351
  this.cellHeight = cellDetail.height;
7150
7352
  this.dateRender = dateRender;
7151
7353
  var filteredDates = this.getRenderedDates(dateRender);
7152
- this.getSlotDates(workDays);
7354
+ this.getSlotDates(workDays || this.parent.activeViewOptions.workDays);
7153
7355
  this.processBlockEvents(blockList, resIndex, resData);
7154
7356
  for (var _i = 0, eventsList_1 = eventsList; _i < eventsList_1.length; _i++) {
7155
7357
  var event_1 = eventsList_1[_i];
@@ -7807,6 +8009,10 @@ var TimelineEvent = /** @__PURE__ @class */ (function (_super) {
7807
8009
  var eventData = event.data;
7808
8010
  startTime = this.getStartTime(event, eventData);
7809
8011
  endTime = this.getEndTime(event, eventData);
8012
+ var startEndHours = getStartEndHours(event[this.fields.startTime], this.startHour, this.endHour);
8013
+ var eventDates = this.updateEventMinimumDuration(startEndHours, startTime, endTime);
8014
+ startTime = eventDates.startDate;
8015
+ endTime = eventDates.endDate;
7810
8016
  this.day = this.parent.getIndexOfDate(this.dateRender, resetTime(new Date(startTime.getTime())));
7811
8017
  if (this.day < 0) {
7812
8018
  return;
@@ -8196,11 +8402,11 @@ var InlineEdit = /** @__PURE__ @class */ (function () {
8196
8402
  if (this.parent.quickPopup) {
8197
8403
  this.parent.quickPopup.quickPopupHide();
8198
8404
  }
8199
- var moreWrapper = this.parent.element.querySelector('.e-more-popup-wrapper ');
8200
- if (moreWrapper && moreWrapper.classList.contains(POPUP_OPEN)) {
8201
- this.parent.quickPopup.morePopup.hide();
8202
- }
8203
8405
  if (args.type === 'Cell') {
8406
+ var moreWrapper = this.parent.element.querySelector('.' + MORE_POPUP_WRAPPER_CLASS);
8407
+ if (moreWrapper && moreWrapper.classList.contains(POPUP_OPEN)) {
8408
+ this.parent.quickPopup.morePopup.hide();
8409
+ }
8204
8410
  this.removeInlineAppointmentElement();
8205
8411
  this.cellEdit(args);
8206
8412
  }
@@ -8263,8 +8469,8 @@ var InlineEdit = /** @__PURE__ @class */ (function () {
8263
8469
  '.e-inner-wrap' : '.e-appointment-details';
8264
8470
  args.element.querySelector(elementSelector).insertBefore(inlineSubject, timeEle);
8265
8471
  }
8472
+ inlineSubject.focus();
8266
8473
  }
8267
- inlineSubject.focus();
8268
8474
  inlineSubject.setSelectionRange(subject.length, subject.length);
8269
8475
  };
8270
8476
  InlineEdit.prototype.createVerticalViewInline = function (saveObj, dayIndex, resIndex, daysCount) {
@@ -8360,6 +8566,9 @@ var InlineEdit = /** @__PURE__ @class */ (function () {
8360
8566
  if (target && target.value !== '') {
8361
8567
  this.inlineCrudActions(target);
8362
8568
  }
8569
+ else {
8570
+ this.removeInlineAppointmentElement();
8571
+ }
8363
8572
  };
8364
8573
  InlineEdit.prototype.inlineCrudActions = function (target) {
8365
8574
  if (closest(target, '.' + INLINE_APPOINTMENT_CLASS)) {
@@ -8459,7 +8668,7 @@ var FieldValidator = /** @__PURE__ @class */ (function () {
8459
8668
  this.createTooltip(inputElement, error, id, '');
8460
8669
  }
8461
8670
  if (!isNullOrUndefined(elem)) {
8462
- elem.querySelector(".e-error").innerHTML = error.innerHTML;
8671
+ elem.querySelector('.e-error').innerHTML = error.innerHTML;
8463
8672
  }
8464
8673
  };
8465
8674
  FieldValidator.prototype.createTooltip = function (element, error, name, display) {
@@ -9413,6 +9622,9 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9413
9622
  };
9414
9623
  QuickPopups.prototype.closeClick = function (event) {
9415
9624
  this.dialogEvent = event;
9625
+ if (this.parent.currentView === 'Year' && this.parent.activeCellsData && this.parent.activeCellsData.element) {
9626
+ this.parent.selectCell(this.parent.activeCellsData.element);
9627
+ }
9416
9628
  this.quickPopupHide();
9417
9629
  this.morePopup.hide();
9418
9630
  };
@@ -10015,6 +10227,7 @@ var INTERVALCLASS = 'e-interval';
10015
10227
  var DAYWRAPPER = 'e-days';
10016
10228
  var WEEKWRAPPER = 'e-non-week';
10017
10229
  var WEEKPOSITION = 'e-week-position';
10230
+ var DAYPOSITION = 'e-day-position';
10018
10231
  var YEAREXPANDERWRAPPER = 'e-year-expander';
10019
10232
  var YEAREXPANDERELEMENT = 'e-year-expander-element';
10020
10233
  var MONETHEXPANDERWRAPPER = 'e-month-expander';
@@ -10367,7 +10580,6 @@ var RecurrenceEditor = /** @__PURE__ @class */ (function (_super) {
10367
10580
  }
10368
10581
  });
10369
10582
  this.endType.appendTo(this.element.querySelector('.' + ENDONELEMENT));
10370
- // eslint-disable-next-line @typescript-eslint/ban-types
10371
10583
  var renderDropDownList = function (dropDownData) {
10372
10584
  return new DropDownList({
10373
10585
  dataSource: dropDownData,
@@ -10735,7 +10947,7 @@ var RecurrenceEditor = /** @__PURE__ @class */ (function (_super) {
10735
10947
  '<td><div class="' + INPUTWARAPPER + ' ' + WEEKPOSITION + '" >' +
10736
10948
  '<input type="text" tabindex="0" class="' + MONTHPOS + '"title="' + this.localeObj.getConstant('monthPosition') + '" />' +
10737
10949
  '</div></td>' +
10738
- '<td><div class="' + INPUTWARAPPER + '" style="min-width: 120px;">' +
10950
+ '<td><div class="' + INPUTWARAPPER + ' ' + DAYPOSITION + '">' +
10739
10951
  '<input type="text" tabindex="0" class="' + MONTHWEEK + '"title="' + this.localeObj.getConstant('monthWeek') + '" />' +
10740
10952
  '</div></td></tr></table>' +
10741
10953
  '</div></div>' +
@@ -11122,7 +11334,6 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11122
11334
  this.parent = parent;
11123
11335
  this.l10n = this.parent.localeObj;
11124
11336
  this.fields = this.parent.eventFields;
11125
- this.timezoneData = this.parent.tzModule.timezoneData;
11126
11337
  this.eventWindowTime = { startTime: new Date(), endTime: new Date() };
11127
11338
  this.renderEventWindow();
11128
11339
  }
@@ -11560,14 +11771,15 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11560
11771
  allowFiltering: true,
11561
11772
  change: this.onTimezoneChange.bind(this),
11562
11773
  cssClass: this.parent.cssClass || '',
11563
- dataSource: this.timezoneData,
11774
+ dataSource: this.parent.timezoneDataSource,
11564
11775
  enableRtl: this.parent.enableRtl,
11565
11776
  fields: { text: 'Text', value: 'Value' },
11566
- filterBarPlaceholder: 'Search Timezone',
11777
+ filterBarPlaceholder: this.parent.localeObj.getConstant('searchTimezone'),
11778
+ noRecordsTemplate: this.parent.localeObj.getConstant('noRecords'),
11567
11779
  filtering: function (e) {
11568
11780
  var query = new Query();
11569
11781
  query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;
11570
- e.updateData(_this.timezoneData, query);
11782
+ e.updateData(_this.parent.timezoneDataSource, query);
11571
11783
  },
11572
11784
  htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName },
11573
11785
  floatLabelType: 'Always',
@@ -12893,7 +13105,6 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12893
13105
  this.fields = null;
12894
13106
  this.buttonObj = null;
12895
13107
  this.repeatStatus = null;
12896
- this.timezoneData = null;
12897
13108
  this.eventWindowTime = null;
12898
13109
  }
12899
13110
  };
@@ -13161,7 +13372,12 @@ var Render = /** @__PURE__ @class */ (function () {
13161
13372
  };
13162
13373
  Render.prototype.initializeLayout = function (viewName) {
13163
13374
  if (this.parent.activeView) {
13164
- this.parent.resetTemplates();
13375
+ var templates = [
13376
+ 'cellTemplate', 'eventTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',
13377
+ 'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'mothHeaderTemplate',
13378
+ 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate'
13379
+ ];
13380
+ this.parent.resetTemplates(templates);
13165
13381
  this.parent.activeView.removeEventListener();
13166
13382
  this.parent.activeView.destroy();
13167
13383
  }
@@ -14412,12 +14628,15 @@ var EventSettings = /** @__PURE__ @class */ (function (_super) {
14412
14628
  __decorate$6([
14413
14629
  Property(false)
14414
14630
  ], EventSettings.prototype, "enableTooltip", void 0);
14415
- __decorate$6([
14416
- Property()
14417
- ], EventSettings.prototype, "tooltipTemplate", void 0);
14418
14631
  __decorate$6([
14419
14632
  Property('AllDayRow')
14420
14633
  ], EventSettings.prototype, "spannedEventPlacement", void 0);
14634
+ __decorate$6([
14635
+ Property(1)
14636
+ ], EventSettings.prototype, "minimumEventDuration", void 0);
14637
+ __decorate$6([
14638
+ Property()
14639
+ ], EventSettings.prototype, "tooltipTemplate", void 0);
14421
14640
  __decorate$6([
14422
14641
  Property()
14423
14642
  ], EventSettings.prototype, "resourceColorField", void 0);
@@ -14906,6 +15125,7 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
14906
15125
  targetType: 'relative',
14907
15126
  actionOnScroll: 'none',
14908
15127
  content: this.treeViewObj.element,
15128
+ relateTo: this.parent.element.querySelector('.' + TABLE_CONTAINER_CLASS),
14909
15129
  enableRtl: this.parent.enableRtl,
14910
15130
  hideAnimation: { name: 'SlideLeftOut', duration: 500 },
14911
15131
  showAnimation: { name: 'SlideLeftIn', duration: 500 },
@@ -15875,13 +16095,19 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
15875
16095
  timeFormat: this.internalTimeFormat,
15876
16096
  group: group,
15877
16097
  headerRows: this.headerRows,
15878
- orientation: 'Horizontal'
16098
+ orientation: 'Horizontal',
16099
+ numberOfWeeks: 0,
16100
+ displayDate: null
15879
16101
  };
15880
16102
  var viewOptions = this.viewCollections[this.viewIndex];
15881
16103
  var viewsData = extend(scheduleOptions, viewOptions, undefined, true);
15882
16104
  if (this.firstDayOfWeek !== 0 && viewOptions.firstDayOfWeek && this.firstDayOfWeek !== viewOptions.firstDayOfWeek) {
15883
16105
  viewsData.firstDayOfWeek = this.firstDayOfWeek;
15884
16106
  }
16107
+ if (viewsData.displayDate) {
16108
+ viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :
16109
+ new Date(viewsData.displayDate);
16110
+ }
15885
16111
  return viewsData;
15886
16112
  };
15887
16113
  Schedule.prototype.initializeDataModule = function () {
@@ -16194,7 +16420,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16194
16420
  if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {
16195
16421
  this.uiStateValues = {
16196
16422
  expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,
16197
- isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false
16423
+ isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true
16198
16424
  };
16199
16425
  }
16200
16426
  this.activeCellsData = { startTime: this.getCurrentTime(), endTime: this.getCurrentTime(), isAllDay: false };
@@ -16293,7 +16519,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16293
16519
  beginFrom: 'Begin From',
16294
16520
  endAt: 'Ends At',
16295
16521
  expandAllDaySection: 'Expand-all-day-section',
16296
- collapseAllDaySection: 'Collapse-all-day-section'
16522
+ collapseAllDaySection: 'Collapse-all-day-section',
16523
+ searchTimezone: 'Search Timezone',
16524
+ noRecords: 'No records found'
16297
16525
  };
16298
16526
  };
16299
16527
  Schedule.prototype.wireEvents = function () {
@@ -16971,7 +17199,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16971
17199
  if (dateHeader.classList.contains(ALLDAY_APPOINTMENT_AUTO)) {
16972
17200
  removeClass([dateHeader], ALLDAY_APPOINTMENT_AUTO);
16973
17201
  }
16974
- this.eventBase.allDayExpandScroll(dateHeader, true);
17202
+ this.eventBase.allDayExpandScroll(dateHeader);
16975
17203
  }
16976
17204
  if (!this.uiStateValues.expand) {
16977
17205
  allDayRow.style.height = '';
@@ -17012,6 +17240,11 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17012
17240
  this.keyboardInteractionModule = new KeyboardInteraction(this);
17013
17241
  }
17014
17242
  break;
17243
+ case 'timezoneDataSource':
17244
+ if (this.eventWindow) {
17245
+ this.eventWindow.refresh();
17246
+ }
17247
+ break;
17015
17248
  case 'editorTemplate':
17016
17249
  if (!isNullOrUndefined(this.editorTemplate)) {
17017
17250
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
@@ -17156,6 +17389,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17156
17389
  }
17157
17390
  break;
17158
17391
  case 'spannedEventPlacement':
17392
+ case 'minimumEventDuration':
17159
17393
  case 'enableMaxHeight':
17160
17394
  case 'enableIndicator':
17161
17395
  this.refreshEvents(false);
@@ -17530,7 +17764,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17530
17764
  */
17531
17765
  Schedule.prototype.exportToExcel = function (excelExportOptions) {
17532
17766
  if (this.excelExportModule) {
17533
- this.excelExportModule.initializeExcelExport(excelExportOptions || {});
17767
+ this.excelExportModule.initializeExcelExport(excelExportOptions);
17534
17768
  }
17535
17769
  else {
17536
17770
  throw Error('Inject ExcelExport module');
@@ -17715,6 +17949,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17715
17949
  this.crudModule.refreshDataManager();
17716
17950
  }
17717
17951
  else {
17952
+ if (this.activeViewOptions && this.activeViewOptions.eventTemplate) {
17953
+ this.resetTemplates(['eventTemplate']);
17954
+ }
17718
17955
  var eventsData = this.eventsData || [];
17719
17956
  var blockData = this.blockData || [];
17720
17957
  var data = eventsData.concat(blockData);
@@ -17972,6 +18209,7 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17972
18209
  this.eventTooltip = null;
17973
18210
  }
17974
18211
  this.destroyPopups();
18212
+ this.hideSpinner();
17975
18213
  this.unWireEvents();
17976
18214
  this.destroyHeaderModule();
17977
18215
  if (this.eventTooltip) {
@@ -18183,6 +18421,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18183
18421
  __decorate([
18184
18422
  Complex({}, EventSettings)
18185
18423
  ], Schedule.prototype, "eventSettings", void 0);
18424
+ __decorate([
18425
+ Property(timezoneData)
18426
+ ], Schedule.prototype, "timezoneDataSource", void 0);
18186
18427
  __decorate([
18187
18428
  Property()
18188
18429
  ], Schedule.prototype, "resourceHeaderTemplate", void 0);
@@ -19793,7 +20034,7 @@ var YearEvent = /** @__PURE__ @class */ (function (_super) {
19793
20034
  }
19794
20035
  }
19795
20036
  else {
19796
- if (((resetTime(appStart).getTime() <= dateStart) && (resetTime(appEnd).getTime() > dateStart)) ||
20037
+ if (((resetTime(appStart).getTime() <= dateStart) && (resetTime(appEnd).getTime() >= dateStart)) ||
19797
20038
  (resetTime(appStart).getTime() >= dateStart) && (resetTime(appEnd).getTime() <= dateEnd)) {
19798
20039
  appointmentsList.push(app);
19799
20040
  }
@@ -19993,7 +20234,9 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
19993
20234
  var eventGuid = this.actionObj.element.getAttribute('data-guid');
19994
20235
  this.actionObj.event = this.parent.eventBase.getEventByGuid(eventGuid);
19995
20236
  var eventObj = extend({}, this.actionObj.event, null, true);
19996
- this.startTime = eventObj[this.parent.eventFields.startTime].getTime();
20237
+ if (!isNullOrUndefined(eventObj)) {
20238
+ this.startTime = eventObj[this.parent.eventFields.startTime].getTime();
20239
+ }
19997
20240
  var dragArgs = {
19998
20241
  cancel: false,
19999
20242
  data: eventObj,
@@ -20415,7 +20658,7 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20415
20658
  return;
20416
20659
  }
20417
20660
  var td = tr.children[colIndex];
20418
- if (this.parent.activeViewOptions.group.resources.length > 0) {
20661
+ if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
20419
20662
  this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);
20420
20663
  }
20421
20664
  var dragStart$$1;
@@ -20585,7 +20828,8 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20585
20828
  // eslint-disable-next-line max-len
20586
20829
  this.parent.getDateFromElement(isNullOrUndefined(index) ? this.actionObj.target : this.targetTd)));
20587
20830
  var splitEvents = this.splitEvent(event);
20588
- var events_1 = this.parent.eventBase.isAllDayAppointment(event) || splitEvents.length > 2 || !(this.parent.eventSettings.spannedEventPlacement == 'TimeSlot') ? [event] : splitEvents;
20831
+ var events_1 = this.parent.eventBase.isAllDayAppointment(event) || splitEvents.length > 2 ||
20832
+ this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' ? [event] : splitEvents;
20589
20833
  for (var i = 0; i < events_1.length; i++) {
20590
20834
  if (i > 0) {
20591
20835
  var filterQuery = ".e-day-wrapper[data-date=\"" + resetTime(events_1[i][this.parent.eventFields.startTime]).getTime() + "\"]";
@@ -20683,7 +20927,7 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20683
20927
  var renderDates = this.getRenderedDates();
20684
20928
  var events = this.parent.eventBase.splitEvent(event, renderDates);
20685
20929
  var query = ".e-all-day-cells[data-date=\"" + events[0][this.parent.eventFields.startTime].getTime() + "\"]";
20686
- if (this.parent.activeViewOptions.group.resources.length > 0) {
20930
+ if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
20687
20931
  query = query.concat('[data-group-index = "' + this.actionObj.groupIndex + '"]');
20688
20932
  }
20689
20933
  var cell = [].slice.call(this.parent.element.querySelectorAll(query));
@@ -20883,7 +21127,13 @@ var DragAndDrop = /** @__PURE__ @class */ (function (_super) {
20883
21127
  if (this.parent.eventDragArea) {
20884
21128
  var targetDate = this.parent.getDateFromElement(e.target);
20885
21129
  if (!isNullOrUndefined(targetDate)) {
20886
- eventStart = targetDate;
21130
+ if (!this.parent.activeViewOptions.timeScale.enable || (this.parent.currentView === 'TimelineMonth')) {
21131
+ var eventSrt = eventObj[this.parent.eventFields.startTime];
21132
+ eventStart = new Date(eventStart.setHours(eventSrt.getHours(), eventSrt.getMinutes(), eventSrt.getSeconds()));
21133
+ }
21134
+ else {
21135
+ eventStart = targetDate;
21136
+ }
20887
21137
  }
20888
21138
  }
20889
21139
  var eventEnd = new Date(eventStart.getTime());
@@ -21318,6 +21568,10 @@ var ViewBase = /** @__PURE__ @class */ (function () {
21318
21568
  return date.setHours(0, 0, 0, 0) === this.parent.getCurrentTime().setHours(0, 0, 0, 0);
21319
21569
  };
21320
21570
  ViewBase.prototype.isCurrentMonth = function (date) {
21571
+ if (this.parent.activeViewOptions.displayDate || this.parent.activeViewOptions.numberOfWeeks > 0) {
21572
+ return this.parent.activeView.getStartDate().getTime() <= this.parent.getCurrentTime().getTime() &&
21573
+ this.parent.activeView.getEndDate().getTime() >= this.parent.getCurrentTime().getTime();
21574
+ }
21321
21575
  return date.getFullYear() ===
21322
21576
  this.parent.getCurrentTime().getFullYear() && date.getMonth() === this.parent.getCurrentTime().getMonth();
21323
21577
  };
@@ -21550,6 +21804,11 @@ var ViewBase = /** @__PURE__ @class */ (function () {
21550
21804
  setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });
21551
21805
  }
21552
21806
  }
21807
+ var headerCellElements = [].slice.call(this.element.querySelectorAll('.' + HEADER_CELLS_CLASS));
21808
+ headerCellElements.forEach(function (ele) {
21809
+ var headerCellColSpan = parseInt(ele.getAttribute('colspan'), 10);
21810
+ setStyleAttribute(ele, { 'width': formatUnit(colWidth_1 * headerCellColSpan) });
21811
+ });
21553
21812
  }
21554
21813
  };
21555
21814
  ViewBase.prototype.resetColWidth = function () {
@@ -22681,10 +22940,11 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22681
22940
  Month.prototype.getDateSlots = function (renderDates, workDays) {
22682
22941
  var count = this.parent.activeViewOptions.showWeekend ? WEEK_LENGTH : workDays.length;
22683
22942
  var dateSlots = [];
22943
+ var isCurrentMonth = this.isCurrentMonth(this.parent.selectedDate);
22684
22944
  for (var col = 0; col < count; col++) {
22685
22945
  var classList$$1 = [HEADER_CELLS_CLASS];
22686
22946
  var currentDateIndex = renderDates.slice(0, count).map(function (date) { return date.getDay(); });
22687
- if (this.isCurrentMonth(this.parent.selectedDate) && currentDateIndex.indexOf(this.parent.getCurrentTime().getDay()) === col) {
22947
+ if (isCurrentMonth && currentDateIndex.indexOf(this.parent.getCurrentTime().getDay()) === col) {
22688
22948
  classList$$1.push(CURRENT_DAY_CLASS);
22689
22949
  }
22690
22950
  dateSlots.push({ date: renderDates[col], type: 'monthDay', className: classList$$1, colSpan: 1, workDays: workDays });
@@ -22723,6 +22983,9 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22723
22983
  this.renderResourceMobileLayout();
22724
22984
  }
22725
22985
  this.parent.notify(contentReady, {});
22986
+ if (this.parent.uiStateValues.isCustomMonth) {
22987
+ this.parent.uiStateValues.isCustomMonth = false;
22988
+ }
22726
22989
  };
22727
22990
  Month.prototype.refreshHeader = function () {
22728
22991
  remove(this.element.querySelector('tbody tr'));
@@ -22908,7 +23171,7 @@ var Month = /** @__PURE__ @class */ (function (_super) {
22908
23171
  return slotDatas;
22909
23172
  };
22910
23173
  Month.prototype.updateClassList = function (data) {
22911
- if (this.isOtherMonth(data.date)) {
23174
+ if (!this.isCustomMonth() && this.isOtherMonth(data.date)) {
22912
23175
  data.className.push(OTHERMONTH_CLASS);
22913
23176
  }
22914
23177
  if (!this.parent.isMinMaxDate(data.date)) {
@@ -23017,15 +23280,34 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23017
23280
  }
23018
23281
  };
23019
23282
  Month.prototype.getMonthStart = function (currentDate) {
23020
- var monthStart = getWeekFirstDate(this.parent.calendarUtil.firstDateOfMonth(currentDate), this.parent.activeViewOptions.firstDayOfWeek);
23021
- var start = new Date(monthStart.getFullYear(), monthStart.getMonth(), monthStart.getDate());
23022
- return start;
23283
+ var useDisplayDate = this.parent.currentView === 'Month' && !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && (this.parent.uiStateValues.isCustomMonth || this.isCustomRange());
23284
+ var date = useDisplayDate ? this.parent.activeViewOptions.displayDate : !(this.parent.uiStateValues.isCustomMonth ||
23285
+ this.isCustomRange()) && this.isCustomMonth() ? currentDate : this.parent.calendarUtil.firstDateOfMonth(currentDate);
23286
+ var monthStart = getWeekFirstDate(date, this.parent.activeViewOptions.firstDayOfWeek);
23287
+ return new Date(monthStart.getFullYear(), monthStart.getMonth(), monthStart.getDate());
23023
23288
  };
23024
23289
  Month.prototype.getMonthEnd = function (currentDate) {
23025
- var endDate = addMonths(currentDate, this.parent.activeViewOptions.interval - 1);
23026
- var lastWeekOfMonth = getWeekFirstDate(this.parent.calendarUtil.lastDateOfMonth(endDate), this.parent.activeViewOptions.firstDayOfWeek);
23027
- var monthEnd = addDays(lastWeekOfMonth, WEEK_LENGTH - 1);
23028
- return monthEnd;
23290
+ if (this.isCustomMonth()) {
23291
+ var start = this.getMonthStart(currentDate);
23292
+ var numberOfDays = WEEK_LENGTH * (this.parent.activeViewOptions.numberOfWeeks > 0 ?
23293
+ this.parent.activeViewOptions.numberOfWeeks : DEFAULT_WEEKS);
23294
+ return addDays(start, (numberOfDays - 1));
23295
+ }
23296
+ else {
23297
+ var endDate = addMonths(currentDate, this.parent.activeViewOptions.interval - 1);
23298
+ var lastWeekOfMonth = getWeekFirstDate(this.parent.calendarUtil.lastDateOfMonth(endDate), this.parent.activeViewOptions.firstDayOfWeek);
23299
+ return addDays(lastWeekOfMonth, WEEK_LENGTH - 1);
23300
+ }
23301
+ };
23302
+ Month.prototype.isCustomRange = function () {
23303
+ var dates = this.parent.getCurrentViewDates();
23304
+ if (dates && dates.length > 0) {
23305
+ var selectedTime = resetTime(this.parent.selectedDate).getTime();
23306
+ var weekFirstDate = getWeekFirstDate(dates[dates.length - 1], this.parent.activeViewOptions.firstDayOfWeek);
23307
+ return !(selectedTime >= getWeekFirstDate(dates[0], this.parent.activeViewOptions.firstDayOfWeek).getTime() &&
23308
+ selectedTime <= addDays(weekFirstDate, 6).getTime());
23309
+ }
23310
+ return false;
23029
23311
  };
23030
23312
  Month.prototype.getRenderDates = function (workDays) {
23031
23313
  var renderDates = [];
@@ -23055,34 +23337,57 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23055
23337
  return renderDates;
23056
23338
  };
23057
23339
  Month.prototype.getNextPreviousDate = function (type) {
23058
- if (type === 'next') {
23059
- return addMonths(this.parent.selectedDate, this.parent.activeViewOptions.interval);
23340
+ if (this.isCustomMonth()) {
23341
+ var dates = this.parent.getCurrentViewDates();
23342
+ var date = getWeekFirstDate(type === 'next' ? dates[dates.length - 1]
23343
+ : dates[0], this.parent.activeViewOptions.firstDayOfWeek);
23344
+ return addDays(date, type === 'next' ? WEEK_LENGTH : -(this.parent.activeViewOptions.numberOfWeeks > 0 ?
23345
+ this.parent.activeViewOptions.numberOfWeeks : DEFAULT_WEEKS) * WEEK_LENGTH);
23060
23346
  }
23061
23347
  else {
23062
- return addMonths(this.parent.selectedDate, -(this.parent.activeViewOptions.interval));
23348
+ return addMonths(this.parent.selectedDate, ((type === 'next' ? 1 : -1) * this.parent.activeViewOptions.interval));
23063
23349
  }
23064
23350
  };
23351
+ Month.prototype.getStartDate = function () {
23352
+ return this.getMonthStart(this.parent.selectedDate);
23353
+ };
23354
+ Month.prototype.getEndDate = function () {
23355
+ return this.getMonthEnd(this.parent.selectedDate);
23356
+ };
23065
23357
  Month.prototype.getEndDateFromStartDate = function (start) {
23066
23358
  return addDays(new Date(start.getTime()), 1);
23067
23359
  };
23068
23360
  Month.prototype.getDateRangeText = function () {
23069
23361
  if (this.parent.isAdaptive || isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {
23070
- if (this.parent.activeViewOptions.interval > 1) {
23071
- var endDate = addMonths(lastDateOfMonth(this.parent.selectedDate), this.parent.activeViewOptions.interval - 1);
23072
- if (this.parent.selectedDate.getFullYear() === endDate.getFullYear()) {
23073
- var monthNames = (this.parent.globalize.formatDate(this.parent.selectedDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' - ' +
23362
+ var startDate = this.parent.selectedDate;
23363
+ var endDate = void 0;
23364
+ var updateCustomRange = false;
23365
+ if (this.isCustomMonth()) {
23366
+ var dates = this.parent.getCurrentViewDates();
23367
+ updateCustomRange = dates[0].getMonth() !== dates[dates.length - 1].getMonth() ||
23368
+ dates[0].getFullYear() !== dates[dates.length - 1].getFullYear();
23369
+ if (updateCustomRange) {
23370
+ startDate = dates[0];
23371
+ endDate = dates[dates.length - 1];
23372
+ }
23373
+ }
23374
+ var isUpdateDateRange = (this.parent.currentView !== 'Month' || !this.isCustomMonth());
23375
+ if (this.parent.activeViewOptions.interval > 1 && isUpdateDateRange || updateCustomRange) {
23376
+ endDate = endDate ? endDate : addMonths(lastDateOfMonth(startDate), this.parent.activeViewOptions.interval - 1);
23377
+ if (startDate.getFullYear() === endDate.getFullYear()) {
23378
+ var monthNames = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' - ' +
23074
23379
  (this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() })) +
23075
23380
  this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });
23076
23381
  return capitalizeFirstWord(monthNames, 'single');
23077
23382
  }
23078
- var text = (this.parent.globalize.formatDate(this.parent.selectedDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' ' +
23079
- this.parent.selectedDate.getFullYear() + ' - ' +
23383
+ var text = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' ' +
23384
+ startDate.getFullYear() + ' - ' +
23080
23385
  this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() }) +
23081
23386
  this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });
23082
23387
  return capitalizeFirstWord(text, 'single');
23083
23388
  }
23084
23389
  var format = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';
23085
- return capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: format, calendar: this.parent.getCalendarMode() }), 'single');
23390
+ return capitalizeFirstWord(this.parent.globalize.formatDate(startDate, { format: format, calendar: this.parent.getCalendarMode() }), 'single');
23086
23391
  }
23087
23392
  return this.formatDateRange(this.parent.selectedDate);
23088
23393
  };
@@ -23107,6 +23412,10 @@ var Month = /** @__PURE__ @class */ (function (_super) {
23107
23412
  EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);
23108
23413
  }
23109
23414
  };
23415
+ Month.prototype.isCustomMonth = function () {
23416
+ return this.parent.currentView === 'Month' &&
23417
+ (!isNullOrUndefined(this.parent.activeViewOptions.displayDate) || this.parent.activeViewOptions.numberOfWeeks > 0);
23418
+ };
23110
23419
  Month.prototype.getModuleName = function () {
23111
23420
  return 'month';
23112
23421
  };
@@ -23364,10 +23673,27 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23364
23673
  Year.prototype.onCellClick = function (e) {
23365
23674
  var target = closest(e.target, '.' + WORK_CELLS_CLASS);
23366
23675
  var startDate = this.parent.getDateFromElement(target);
23367
- var endDate = addDays(new Date(startDate.getTime()), 1);
23368
- var filteredEvents = this.parent.eventBase.filterEvents(startDate, endDate);
23369
- var moreEventArgs = { date: startDate, event: filteredEvents, element: e.target };
23370
- this.parent.quickPopup.moreEventClick(moreEventArgs, endDate);
23676
+ this.parent.activeCellsData = this.parent.getCellDetails(target);
23677
+ var isPrevious = startDate.getTime() < this.getStartDate().getTime();
23678
+ if (isPrevious || startDate.getTime() > this.getEndDate().getTime()) {
23679
+ this.parent.changeDate(this.parent.activeView.getNextPreviousDate(isPrevious ? 'previous' : 'next'), e);
23680
+ var activeDate = this.parent.activeCellsData.startTime.getTime();
23681
+ var inRange = activeDate >= this.getStartDate().getTime() && activeDate <= this.getEndDate().getTime();
23682
+ var dateAttr = inRange ? activeDate : (isPrevious ? this.getEndDate() : this.getStartDate()).getTime();
23683
+ var selectedCell = this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + dateAttr + '"]');
23684
+ this.parent.selectCell(selectedCell);
23685
+ this.parent.activeCellsData = this.parent.getCellDetails(selectedCell);
23686
+ }
23687
+ else {
23688
+ var endDate = addDays(new Date(startDate.getTime()), 1);
23689
+ var filteredEvents = this.parent.eventBase.filterEvents(startDate, endDate);
23690
+ var moreEventArgs = { date: startDate, event: filteredEvents, element: e.target };
23691
+ if (target.classList.contains(OTHERMONTH_CLASS)) {
23692
+ target = this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + target.getAttribute('data-date') + '"]');
23693
+ }
23694
+ this.parent.activeCellsData = this.parent.getCellDetails(target);
23695
+ this.parent.quickPopup.moreEventClick(moreEventArgs, endDate);
23696
+ }
23371
23697
  };
23372
23698
  Year.prototype.onContentScroll = function (e) {
23373
23699
  var target = e.target;
@@ -23419,10 +23745,10 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23419
23745
  return addDays(addMonths(this.getStartDate(), this.parent.monthsCount), -1);
23420
23746
  };
23421
23747
  Year.prototype.startDate = function () {
23422
- return getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek);
23748
+ return this.parent.currentView === 'Year' ? getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek) : this.getStartDate();
23423
23749
  };
23424
23750
  Year.prototype.endDate = function () {
23425
- return addDays(getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1);
23751
+ return this.parent.currentView === 'Year' ? addDays(getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) : this.getEndDate();
23426
23752
  };
23427
23753
  Year.prototype.getEndDateFromStartDate = function (start) {
23428
23754
  var date = new Date(start.getTime());
@@ -23465,6 +23791,7 @@ var Year = /** @__PURE__ @class */ (function (_super) {
23465
23791
  EventHandler.add(element, 'click', this.onCellClick, this);
23466
23792
  }
23467
23793
  else {
23794
+ EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);
23468
23795
  EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);
23469
23796
  if (!this.parent.isAdaptive) {
23470
23797
  EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
@@ -23937,7 +24264,8 @@ var Agenda = /** @__PURE__ @class */ (function (_super) {
23937
24264
  var event_1 = _a[_i];
23938
24265
  delete event_1.generatedDates;
23939
24266
  }
23940
- var eventCollection = this.parent.activeViewOptions.allowVirtualScrolling ? args.processedData : this.parent.eventsProcessed;
24267
+ var eventCollection = this.parent.activeViewOptions.allowVirtualScrolling ?
24268
+ args.processedData : this.parent.eventsProcessed;
23941
24269
  if (this.parent.uiStateValues.isGroupAdaptive) {
23942
24270
  var resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];
23943
24271
  this.dataSource = this.parent.eventBase.filterEventsByResource(resource, this.dataSource);
@@ -25072,6 +25400,9 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25072
25400
  tr.appendChild(leftHeaderCells);
25073
25401
  leftHeaderCells.appendChild(this.renderResourceHeader(LEFT_INDENT_WRAP_CLASS));
25074
25402
  }
25403
+ var isHorizontal = this.parent.activeViewOptions.orientation === 'Horizontal';
25404
+ var isGroup = this.parent.activeViewOptions.group.resources.length > 0;
25405
+ this.isInverseTableSelect = isHorizontal && !isGroup ? false : true;
25075
25406
  var td = createElement('td');
25076
25407
  tr.appendChild(td);
25077
25408
  var container = createElement('div', { className: DATE_HEADER_CONTAINER_CLASS });
@@ -25104,7 +25435,7 @@ var TimelineYear = /** @__PURE__ @class */ (function (_super) {
25104
25435
  }
25105
25436
  else {
25106
25437
  if (this.parent.monthHeaderTemplate) {
25107
- append(this.renderDayMonthHeaderTemplate(date, months[column], 'mothHeaderTemplate'), innerTd);
25438
+ append(this.renderDayMonthHeaderTemplate(date, months[column], 'monthHeaderTemplate'), innerTd);
25108
25439
  }
25109
25440
  else {
25110
25441
  innerTd.innerHTML = "<span>" + this.getMonthName(date) + "</span>";
@@ -25760,10 +26091,8 @@ var ExcelExport = /** @__PURE__ @class */ (function () {
25760
26091
  this.parent = parent;
25761
26092
  }
25762
26093
  ExcelExport.prototype.initializeExcelExport = function (excelExportOptions) {
25763
- var _this = this;
25764
- var exportFields = excelExportOptions.fields || Object.keys(this.parent.eventFields).map(function (field) {
25765
- return _this.parent.eventFields[field];
25766
- });
26094
+ if (excelExportOptions === void 0) { excelExportOptions = {}; }
26095
+ var exportColumns = this.getExportColumns(excelExportOptions);
25767
26096
  var exportName = excelExportOptions.fileName || 'Schedule';
25768
26097
  var exportType = excelExportOptions.exportType || 'xlsx';
25769
26098
  var isIncludeOccurrences = excelExportOptions.includeOccurrences || false;
@@ -25775,39 +26104,44 @@ var ExcelExport = /** @__PURE__ @class */ (function () {
25775
26104
  else {
25776
26105
  eventCollection = !isIncludeOccurrences ? this.parent.eventsData : this.parent.eventsProcessed;
25777
26106
  }
25778
- this.processWorkbook(exportFields, exportName, exportType, eventCollection);
26107
+ this.processWorkbook(exportColumns, exportName, exportType, eventCollection);
25779
26108
  };
25780
26109
  ExcelExport.prototype.processWorkbook = function (fields, name, type, eventCollection) {
25781
26110
  var _this = this;
25782
26111
  var columns = [];
25783
26112
  var rows = [];
25784
26113
  var columnHeader = [];
25785
- fields.forEach(function (field, i) { return columns.push({ index: i + 1, width: (field === 'Id' ? 20 : 150) }); });
26114
+ fields.forEach(function (field, i) { columns.push({ index: i + 1, width: (field.name === 'Id' ? 50 : 150) }); });
25786
26115
  var style = { fontSize: 12, borders: { color: '#E0E0E0' }, bold: true };
25787
- fields.forEach(function (field, i) { return columnHeader.push({ index: i + 1, value: field, style: style }); });
26116
+ fields.forEach(function (field, i) { columnHeader.push({ index: i + 1, value: field.text, style: style }); });
25788
26117
  rows.push({ index: 1, cells: columnHeader });
25789
- var i = 2;
25790
- var _loop_1 = function (event_1) {
26118
+ eventCollection.forEach(function (event, i) {
25791
26119
  var columnData = [];
25792
26120
  fields.forEach(function (field, n) {
25793
- var columnRule = { index: n + 1, value: event_1[field] || '' };
25794
- if (field === _this.parent.eventFields.startTime || field === _this.parent.eventFields.endTime) {
26121
+ var columnRule = { index: n + 1, value: event[field.name] || '' };
26122
+ if (field.name === _this.parent.eventFields.startTime || field.name === _this.parent.eventFields.endTime) {
25795
26123
  var styleRule = { fontSize: 12, numberFormat: 'm/d/yyyy h:mm AM/PM' };
25796
26124
  columnRule = extend({}, columnRule, { style: styleRule }, true);
25797
26125
  }
25798
26126
  columnData.push(columnRule);
25799
26127
  });
25800
- rows.push({ index: i, cells: columnData });
25801
- i++;
25802
- };
25803
- for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {
25804
- var event_1 = eventCollection_1[_i];
25805
- _loop_1(event_1);
25806
- }
26128
+ rows.push({ index: i + 2, cells: columnData });
26129
+ });
25807
26130
  var workSheet = [{ columns: columns, rows: rows }];
25808
26131
  var book = new Workbook({ worksheets: workSheet }, type, this.parent.locale);
25809
26132
  book.save(name + '.' + type);
25810
26133
  };
26134
+ ExcelExport.prototype.getExportColumns = function (exportOptions) {
26135
+ var _this = this;
26136
+ var exportColumns = exportOptions.fieldsInfo || [];
26137
+ if (exportColumns.length === 0) {
26138
+ var fields = exportOptions.fields || Object.keys(this.parent.eventFields).map(function (field) {
26139
+ return _this.parent.eventFields[field];
26140
+ });
26141
+ fields.forEach(function (field) { exportColumns.push({ name: field, text: field }); });
26142
+ }
26143
+ return exportColumns;
26144
+ };
25811
26145
  ExcelExport.prototype.getModuleName = function () {
25812
26146
  return 'excelExport';
25813
26147
  };
@@ -25957,5 +26291,5 @@ var Print = /** @__PURE__ @class */ (function () {
25957
26291
  * Export Schedule components
25958
26292
  */
25959
26293
 
25960
- export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, initialLoad, initialEnd, print$1 as print, dataReady, eventsLoaded, contentReady, scroll, virtualScroll, scrollUiUpdate, uiUpdate, documentClick, cellMouseDown, WEEK_LENGTH, MS_PER_DAY, MS_PER_MINUTE, getElementHeightFromClass, getTranslateY, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, findIndexInData, getOuterHeight, removeChildren, isDaylightSavingTime, getUniversalTime, isMobile, isIPadDevice, capitalizeFirstWord, Resize, DragAndDrop, HeaderRenderer, ViewBase, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, TimelineViews, TimelineMonth, TimelineYear, Timezone, timezoneData, ICalendarExport, ICalendarImport, ExcelExport, Print, RecurrenceEditor, generateSummary, generate, getDateFromRecurrenceDateString, extractObjectFromRule, getCalendarUtil, getRecurrenceStringFromDate, Gregorian, Islamic };
26294
+ export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, initialLoad, initialEnd, print$1 as print, dataReady, eventsLoaded, contentReady, scroll, virtualScroll, scrollUiUpdate, uiUpdate, documentClick, cellMouseDown, WEEK_LENGTH, DEFAULT_WEEKS, MS_PER_DAY, MS_PER_MINUTE, getElementHeightFromClass, getTranslateY, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, findIndexInData, getOuterHeight, removeChildren, isDaylightSavingTime, getUniversalTime, isMobile, isIPadDevice, capitalizeFirstWord, Resize, DragAndDrop, HeaderRenderer, ViewBase, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, TimelineViews, TimelineMonth, TimelineYear, Timezone, timezoneData, ICalendarExport, ICalendarImport, ExcelExport, Print, RecurrenceEditor, generateSummary, generate, getDateFromRecurrenceDateString, extractObjectFromRule, getCalendarUtil, getRecurrenceStringFromDate, Gregorian, Islamic };
25961
26295
  //# sourceMappingURL=ej2-schedule.es5.js.map