@syncfusion/ej2-schedule 30.2.7 → 31.1.20

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 (154) 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 +111 -37
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +111 -37
  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/action-base.js +3 -0
  13. package/src/schedule/actions/drag.js +11 -4
  14. package/src/schedule/actions/keyboard.js +1 -1
  15. package/src/schedule/actions/resize.js +8 -5
  16. package/src/schedule/base/css-constant.d.ts +2 -0
  17. package/src/schedule/base/css-constant.js +2 -0
  18. package/src/schedule/base/schedule.js +15 -1
  19. package/src/schedule/event-renderer/agenda-base.d.ts +1 -1
  20. package/src/schedule/event-renderer/agenda-base.js +5 -4
  21. package/src/schedule/event-renderer/event-base.js +1 -1
  22. package/src/schedule/event-renderer/inline-edit.js +11 -6
  23. package/src/schedule/event-renderer/month.js +5 -3
  24. package/src/schedule/event-renderer/vertical-view.js +3 -0
  25. package/src/schedule/event-renderer/year.d.ts +2 -0
  26. package/src/schedule/event-renderer/year.js +28 -4
  27. package/src/schedule/popups/event-tooltip.js +4 -0
  28. package/src/schedule/popups/event-window.js +2 -2
  29. package/src/schedule/popups/quick-popups.js +5 -1
  30. package/src/schedule/renderer/agenda.js +3 -2
  31. package/src/schedule/renderer/vertical-view.js +1 -1
  32. package/src/schedule/renderer/year.js +3 -2
  33. package/styles/bds-lite.css +11 -8
  34. package/styles/bds.css +11 -8
  35. package/styles/bootstrap-dark-lite.css +12 -9
  36. package/styles/bootstrap-dark.css +12 -9
  37. package/styles/bootstrap-lite.css +12 -9
  38. package/styles/bootstrap.css +12 -9
  39. package/styles/bootstrap4-lite.css +19 -8
  40. package/styles/bootstrap4.css +19 -8
  41. package/styles/bootstrap5-dark-lite.css +11 -8
  42. package/styles/bootstrap5-dark.css +11 -8
  43. package/styles/bootstrap5-lite.css +11 -8
  44. package/styles/bootstrap5.3-lite.css +11 -8
  45. package/styles/bootstrap5.3.css +11 -8
  46. package/styles/bootstrap5.css +11 -8
  47. package/styles/fabric-dark-lite.css +12 -9
  48. package/styles/fabric-dark.css +12 -9
  49. package/styles/fabric-lite.css +12 -9
  50. package/styles/fabric.css +12 -9
  51. package/styles/fluent-dark-lite.css +13 -10
  52. package/styles/fluent-dark.css +13 -10
  53. package/styles/fluent-lite.css +13 -10
  54. package/styles/fluent.css +13 -10
  55. package/styles/fluent2-lite.css +11 -8
  56. package/styles/fluent2.css +11 -8
  57. package/styles/highcontrast-light-lite.css +12 -9
  58. package/styles/highcontrast-light.css +12 -9
  59. package/styles/highcontrast-lite.css +12 -9
  60. package/styles/highcontrast.css +12 -9
  61. package/styles/material-dark-lite.css +12 -9
  62. package/styles/material-dark.css +12 -9
  63. package/styles/material-lite.css +12 -9
  64. package/styles/material.css +12 -9
  65. package/styles/material3-dark-lite.css +11 -8
  66. package/styles/material3-dark.css +11 -8
  67. package/styles/material3-lite.css +11 -8
  68. package/styles/material3.css +11 -8
  69. package/styles/recurrence-editor/_bds-definition.scss +1 -0
  70. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +1 -0
  71. package/styles/recurrence-editor/_bootstrap-definition.scss +1 -0
  72. package/styles/recurrence-editor/_bootstrap4-definition.scss +1 -0
  73. package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -0
  74. package/styles/recurrence-editor/_bootstrap5.3-definition.scss +1 -0
  75. package/styles/recurrence-editor/_fabric-dark-definition.scss +1 -0
  76. package/styles/recurrence-editor/_fabric-definition.scss +1 -0
  77. package/styles/recurrence-editor/_fluent-definition.scss +1 -0
  78. package/styles/recurrence-editor/_fluent2-definition.scss +1 -0
  79. package/styles/recurrence-editor/_fusionnew-definition.scss +1 -0
  80. package/styles/recurrence-editor/_highcontrast-definition.scss +1 -0
  81. package/styles/recurrence-editor/_highcontrast-light-definition.scss +1 -0
  82. package/styles/recurrence-editor/_layout.scss +5 -1
  83. package/styles/recurrence-editor/_material-dark-definition.scss +1 -0
  84. package/styles/recurrence-editor/_material-definition.scss +1 -0
  85. package/styles/recurrence-editor/_material3-definition.scss +1 -0
  86. package/styles/recurrence-editor/_tailwind-definition.scss +1 -0
  87. package/styles/recurrence-editor/_tailwind3-definition.scss +1 -0
  88. package/styles/recurrence-editor/bds.css +3 -0
  89. package/styles/recurrence-editor/bootstrap-dark.css +4 -1
  90. package/styles/recurrence-editor/bootstrap.css +4 -1
  91. package/styles/recurrence-editor/bootstrap4.css +11 -0
  92. package/styles/recurrence-editor/bootstrap5-dark.css +3 -0
  93. package/styles/recurrence-editor/bootstrap5.3.css +3 -0
  94. package/styles/recurrence-editor/bootstrap5.css +3 -0
  95. package/styles/recurrence-editor/fabric-dark.css +4 -1
  96. package/styles/recurrence-editor/fabric.css +4 -1
  97. package/styles/recurrence-editor/fluent-dark.css +4 -1
  98. package/styles/recurrence-editor/fluent.css +4 -1
  99. package/styles/recurrence-editor/fluent2.css +3 -0
  100. package/styles/recurrence-editor/highcontrast-light.css +4 -1
  101. package/styles/recurrence-editor/highcontrast.css +4 -1
  102. package/styles/recurrence-editor/material-dark.css +4 -1
  103. package/styles/recurrence-editor/material.css +4 -1
  104. package/styles/recurrence-editor/material3-dark.css +3 -0
  105. package/styles/recurrence-editor/material3.css +3 -0
  106. package/styles/recurrence-editor/tailwind-dark.css +3 -0
  107. package/styles/recurrence-editor/tailwind.css +3 -0
  108. package/styles/recurrence-editor/tailwind3.css +3 -0
  109. package/styles/schedule/_bds-definition.scss +2 -0
  110. package/styles/schedule/_bootstrap-dark-definition.scss +2 -0
  111. package/styles/schedule/_bootstrap-definition.scss +2 -0
  112. package/styles/schedule/_bootstrap4-definition.scss +2 -0
  113. package/styles/schedule/_bootstrap5-definition.scss +2 -0
  114. package/styles/schedule/_bootstrap5.3-definition.scss +2 -0
  115. package/styles/schedule/_fabric-dark-definition.scss +2 -0
  116. package/styles/schedule/_fabric-definition.scss +2 -0
  117. package/styles/schedule/_fluent-definition.scss +3 -1
  118. package/styles/schedule/_fluent2-definition.scss +2 -0
  119. package/styles/schedule/_fusionnew-definition.scss +2 -0
  120. package/styles/schedule/_highcontrast-definition.scss +2 -0
  121. package/styles/schedule/_highcontrast-light-definition.scss +2 -0
  122. package/styles/schedule/_layout.scss +12 -11
  123. package/styles/schedule/_material-dark-definition.scss +2 -0
  124. package/styles/schedule/_material-definition.scss +2 -0
  125. package/styles/schedule/_material3-definition.scss +2 -0
  126. package/styles/schedule/_tailwind-definition.scss +2 -0
  127. package/styles/schedule/_tailwind3-definition.scss +2 -0
  128. package/styles/schedule/bds.css +8 -8
  129. package/styles/schedule/bootstrap-dark.css +8 -8
  130. package/styles/schedule/bootstrap.css +8 -8
  131. package/styles/schedule/bootstrap4.css +16 -8
  132. package/styles/schedule/bootstrap5-dark.css +8 -8
  133. package/styles/schedule/bootstrap5.3.css +8 -8
  134. package/styles/schedule/bootstrap5.css +8 -8
  135. package/styles/schedule/fabric-dark.css +8 -8
  136. package/styles/schedule/fabric.css +8 -8
  137. package/styles/schedule/fluent-dark.css +9 -9
  138. package/styles/schedule/fluent.css +9 -9
  139. package/styles/schedule/fluent2.css +8 -8
  140. package/styles/schedule/highcontrast-light.css +8 -8
  141. package/styles/schedule/highcontrast.css +8 -8
  142. package/styles/schedule/material-dark.css +8 -8
  143. package/styles/schedule/material.css +8 -8
  144. package/styles/schedule/material3-dark.css +8 -8
  145. package/styles/schedule/material3.css +8 -8
  146. package/styles/schedule/tailwind-dark.css +8 -8
  147. package/styles/schedule/tailwind.css +8 -8
  148. package/styles/schedule/tailwind3.css +8 -8
  149. package/styles/tailwind-dark-lite.css +11 -8
  150. package/styles/tailwind-dark.css +11 -8
  151. package/styles/tailwind-lite.css +11 -8
  152. package/styles/tailwind.css +11 -8
  153. package/styles/tailwind3-lite.css +11 -8
  154. package/styles/tailwind3.css +11 -8
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 30.2.7
3
+ * version : 31.1.20
4
4
  * Copyright Syncfusion Inc. 2001 - 2024. 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,22 +1,22 @@
1
1
  {
2
2
  "name": "@syncfusion/ej2-schedule",
3
- "version": "30.2.7",
3
+ "version": "31.1.20",
4
4
  "author": "Syncfusion Inc.",
5
5
  "license": "SEE LICENSE IN license",
6
6
  "main": "./dist/ej2-schedule.umd.min.js",
7
7
  "module": "./index.js",
8
8
  "es2015": "./dist/es6/ej2-schedule.es5.js",
9
9
  "dependencies": {
10
- "@syncfusion/ej2-base": "~30.2.6",
11
- "@syncfusion/ej2-buttons": "~30.2.4",
12
- "@syncfusion/ej2-calendars": "~30.2.4",
13
- "@syncfusion/ej2-data": "~30.2.4",
14
- "@syncfusion/ej2-dropdowns": "~30.2.6",
15
- "@syncfusion/ej2-excel-export": "~30.2.4",
16
- "@syncfusion/ej2-inputs": "~30.2.6",
17
- "@syncfusion/ej2-lists": "~30.2.4",
18
- "@syncfusion/ej2-navigations": "~30.2.7",
19
- "@syncfusion/ej2-popups": "~30.2.4"
10
+ "@syncfusion/ej2-base": "~31.1.20",
11
+ "@syncfusion/ej2-buttons": "~31.1.17",
12
+ "@syncfusion/ej2-calendars": "~31.1.20",
13
+ "@syncfusion/ej2-data": "~31.1.17",
14
+ "@syncfusion/ej2-dropdowns": "~31.1.20",
15
+ "@syncfusion/ej2-excel-export": "~31.1.17",
16
+ "@syncfusion/ej2-inputs": "~31.1.20",
17
+ "@syncfusion/ej2-lists": "~31.1.17",
18
+ "@syncfusion/ej2-navigations": "~31.1.20",
19
+ "@syncfusion/ej2-popups": "~31.1.20"
20
20
  },
21
21
  "devDependencies": {},
22
22
  "description": "Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.",
@@ -324,6 +324,9 @@ var ActionBase = /** @class */ (function () {
324
324
  if (this.parent.activeViewOptions.group.resources.length > 0) {
325
325
  query = query.concat('[data-group-index = "' + cloneElement.getAttribute('data-group-index') + '"]');
326
326
  }
327
+ if (cloneElement.hasAttribute('data-guid')) {
328
+ query += '[data-guid="' + cloneElement.getAttribute('data-guid') + '"]';
329
+ }
327
330
  var elements = [].slice.call(this.parent.element.querySelectorAll(query));
328
331
  addClass(elements, cls.EVENT_ACTION_CLASS);
329
332
  var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));
@@ -58,7 +58,7 @@ var DragAndDrop = /** @class */ (function (_super) {
58
58
  }
59
59
  DragAndDrop.prototype.wireDragEvent = function (element) {
60
60
  new Draggable(element, {
61
- abort: '.' + cls.EVENT_RESIZE_CLASS,
61
+ abort: '.' + cls.EVENT_RESIZE_CLASS + ', .' + cls.INLINE_EDIT_CLASS,
62
62
  clone: true,
63
63
  isDragScroll: true,
64
64
  enableTailMode: this.parent.eventDragArea ? true : false,
@@ -584,6 +584,11 @@ var DragAndDrop = /** @class */ (function (_super) {
584
584
  this.actionObj.clone.style.top = formatUnit(td.offsetParent.offsetTop);
585
585
  this.actionObj.clone.style.left = formatUnit(td.offsetLeft);
586
586
  this.actionObj.clone.style.width = formatUnit(td.offsetWidth);
587
+ if (this.actionObj.cloneElement.length > 1) {
588
+ this.actionObj.cloneElement.forEach(function (element) {
589
+ element.style.width = formatUnit(td.offsetWidth);
590
+ });
591
+ }
587
592
  var eventContainer = td;
588
593
  var eventWrapper;
589
594
  if (this.parent.activeView.isTimelineView()) {
@@ -873,6 +878,10 @@ var DragAndDrop = /** @class */ (function (_super) {
873
878
  this.verticalEvent.getTopValue(eStart) : this.actionObj.element.offsetTop;
874
879
  if (isNullOrUndefined(index)) {
875
880
  if (i === 0) {
881
+ if (this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {
882
+ topValue = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop;
883
+ appHeight = this.getAllDayEventHeight();
884
+ }
876
885
  this.actionObj.clone.style.top = formatUnit(topValue);
877
886
  this.actionObj.clone.style.height = formatUnit(appHeight);
878
887
  }
@@ -882,9 +891,7 @@ var DragAndDrop = /** @class */ (function (_super) {
882
891
  }
883
892
  else {
884
893
  var appWidth = this.actionObj.cellWidth;
885
- if (event[this.parent.eventFields.isAllDay]) {
886
- topValue = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop;
887
- appHeight = this.getAllDayEventHeight();
894
+ if (event[this.parent.eventFields.isAllDay] && this.parent.activeViewOptions.timeScale.enable) {
888
895
  var timeDiff = event[this.parent.eventFields.endTime].getTime() -
889
896
  event[this.parent.eventFields.startTime].getTime();
890
897
  var allDayDifference = Math.ceil(timeDiff / (1000 * 3600 * 24));
@@ -1131,7 +1131,7 @@ var KeyboardInteraction = /** @class */ (function () {
1131
1131
  };
1132
1132
  KeyboardInteraction.prototype.processDelete = function (e) {
1133
1133
  var activeEle = document.activeElement;
1134
- if (this.parent.currentView === 'MonthAgenda') {
1134
+ if (this.parent.currentView === 'MonthAgenda' || (!isNullOrUndefined(activeEle) && closest(activeEle, '.' + cls.POPUP_WRAPPER_CLASS))) {
1135
1135
  var selectedEle = this.parent.eventBase.getSelectedEvents().element;
1136
1136
  activeEle = ((selectedEle && isNullOrUndefined(selectedEle.length)) ? selectedEle : selectedEle[0]);
1137
1137
  }
@@ -53,17 +53,20 @@ var Resize = /** @class */ (function (_super) {
53
53
  };
54
54
  Resize.prototype.resizeStart = function (e) {
55
55
  var _this = this;
56
- if (e && e.type === 'touchstart' && (!this.parent.uiStateValues.isTapHold ||
57
- !closest(e.target, '.' + cls.APPOINTMENT_BORDER))) {
56
+ if ((e && e.type === 'touchstart' && (!this.parent.uiStateValues.isTapHold ||
57
+ !closest(e.target, '.' + cls.APPOINTMENT_BORDER))) || closest(e.target, '.' + cls.INLINE_EDIT_CLASS)) {
58
+ return;
59
+ }
60
+ var resizeTarget = closest(e.target, '.' + cls.EVENT_RESIZE_CLASS);
61
+ this.actionObj.element = closest(resizeTarget, '.' + cls.APPOINTMENT_CLASS);
62
+ this.actionObj.event = this.parent.eventBase.getEventByGuid(this.actionObj.element.getAttribute('data-guid'));
63
+ if (isNullOrUndefined(this.actionObj.event)) {
58
64
  return;
59
65
  }
60
66
  this.parent.eventBase.removeSelectedAppointmentClass();
61
67
  this.actionObj.action = 'resize';
62
68
  this.actionObj.slotInterval = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;
63
69
  this.actionObj.interval = this.actionObj.slotInterval;
64
- var resizeTarget = closest(e.target, '.' + cls.EVENT_RESIZE_CLASS);
65
- this.actionObj.element = closest(resizeTarget, '.' + cls.APPOINTMENT_CLASS);
66
- this.actionObj.event = this.parent.eventBase.getEventByGuid(this.actionObj.element.getAttribute('data-guid'));
67
70
  var eventObj = extend({}, this.actionObj.event, null, true);
68
71
  var resizeArgs = {
69
72
  cancel: false,
@@ -463,6 +463,8 @@ export declare const MONTH_HEADER_WRAPPER: string;
463
463
  export declare const INLINE_SUBJECT_CLASS: string;
464
464
  /** @private */
465
465
  export declare const INLINE_APPOINTMENT_CLASS: string;
466
+ /** @private */
467
+ export declare const INLINE_EDIT_CLASS: string;
466
468
  /** @hidden */
467
469
  export declare const SCROLL_HIDDEN: string;
468
470
  /** @private */
@@ -463,6 +463,8 @@ export var MONTH_HEADER_WRAPPER = 'e-month-header-wrapper';
463
463
  export var INLINE_SUBJECT_CLASS = 'e-inline-subject';
464
464
  /** @private */
465
465
  export var INLINE_APPOINTMENT_CLASS = 'e-inline-appointment';
466
+ /** @private */
467
+ export var INLINE_EDIT_CLASS = 'e-inline-edit';
466
468
  /** @hidden */
467
469
  export var SCROLL_HIDDEN = 'e-scroll-hidden';
468
470
  /** @private */
@@ -1696,6 +1696,14 @@ var Schedule = /** @class */ (function (_super) {
1696
1696
  if (newProp.allowKeyboardInteraction || newProp.allowClipboard) {
1697
1697
  this.keyboardInteractionModule = new KeyboardInteraction(this);
1698
1698
  }
1699
+ if (prop === 'allowClipboard') {
1700
+ if (newProp.allowClipboard) {
1701
+ EventHandler.add(document, 'paste', this.onDocumentPaste, this);
1702
+ }
1703
+ else {
1704
+ EventHandler.remove(document, 'paste', this.onDocumentPaste);
1705
+ }
1706
+ }
1699
1707
  break;
1700
1708
  case 'timezoneDataSource':
1701
1709
  if (this.eventWindow) {
@@ -2647,12 +2655,18 @@ var Schedule = /** @class */ (function (_super) {
2647
2655
  */
2648
2656
  Schedule.prototype.paste = function (targetElement) {
2649
2657
  var _this = this;
2650
- if (!this.allowClipboard || !this.allowKeyboardInteraction) {
2658
+ if (!this.allowClipboard || !this.allowKeyboardInteraction || !targetElement) {
2651
2659
  return;
2652
2660
  }
2653
2661
  if (!targetElement.classList.contains('e-work-cells') && !targetElement.classList.contains('e-all-day-cells')) {
2654
2662
  return;
2655
2663
  }
2664
+ if (!this.activeCellsData) {
2665
+ var cellData = this.getCellDetails([targetElement]);
2666
+ if (cellData) {
2667
+ this.activeCellsData = cellData;
2668
+ }
2669
+ }
2656
2670
  var clipboardData = new DataTransfer();
2657
2671
  if (!isNullOrUndefined(navigator.clipboard)) {
2658
2672
  navigator.clipboard.readText()
@@ -8,7 +8,7 @@ export declare class AgendaBase extends ViewBase {
8
8
  wireEventActions(): void;
9
9
  calculateResourceTableElement(tBody: Element, noOfDays: number, agendaDate: Date, agendaEnd?: Date): void;
10
10
  private createResourceTableRow;
11
- createDateHeaderElement(date: Date): Element;
11
+ createDateHeaderElement(date: Date, groupIndex?: number): Element;
12
12
  renderEmptyContent(tBody: Element, agendaDate: Date, hasNoEvents?: boolean): void;
13
13
  createTableRowElement(date: Date, type: string): Element;
14
14
  destroy(): void;
@@ -229,7 +229,8 @@ var AgendaBase = /** @class */ (function (_super) {
229
229
  rowSpan: 1, type: 'dateColumn', resource: resColl[parseInt((resColl.length - 1).toString(), 10)],
230
230
  groupOrder: resData[parseInt(res.toString(), 10)].groupOrder,
231
231
  resourceData: resData[parseInt(res.toString(), 10)].resourceData,
232
- date: agendaDate
232
+ date: agendaDate,
233
+ groupIndex: resData[parseInt(res.toString(), 10)].groupIndex
233
234
  };
234
235
  if (!lastLevelInfo[parseInt(tempIndex.toString(), 10)]) {
235
236
  lastLevelInfo[parseInt(tempIndex.toString(), 10)] = [];
@@ -322,7 +323,7 @@ var AgendaBase = /** @class */ (function (_super) {
322
323
  continue;
323
324
  }
324
325
  ntd.setAttribute('data-date', data.date.getTime().toString());
325
- ntd.appendChild(this.createDateHeaderElement(data.date));
326
+ ntd.appendChild(this.createDateHeaderElement(data.date, data.groupIndex));
326
327
  var className = [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS];
327
328
  if (data.cssClass) {
328
329
  className.push(data.cssClass);
@@ -377,11 +378,11 @@ var AgendaBase = /** @class */ (function (_super) {
377
378
  tBody.appendChild(ntr);
378
379
  }
379
380
  };
380
- AgendaBase.prototype.createDateHeaderElement = function (date) {
381
+ AgendaBase.prototype.createDateHeaderElement = function (date, groupIndex) {
381
382
  var dateHeader;
382
383
  if (this.parent.activeViewOptions.dateHeaderTemplate) {
383
384
  dateHeader = createElement('div', { className: cls.AGENDA_HEADER_CLASS });
384
- var args = { date: date, type: 'dateHeader' };
385
+ var args = { date: date, type: 'dateHeader', groupIndex: groupIndex };
385
386
  var scheduleId = this.parent.element.id + '_';
386
387
  var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
387
388
  var templateId = scheduleId + viewName + 'dateHeaderTemplate';
@@ -943,7 +943,7 @@ var EventBase = /** @class */ (function () {
943
943
  }
944
944
  var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });
945
945
  this.parent.trigger(event.eventDoubleClick, args, function (eventDoubleClickArgs) {
946
- if (!eventDoubleClickArgs.cancel) {
946
+ if (!eventDoubleClickArgs.cancel && _this.parent.eventSettings.allowEditing) {
947
947
  if (!isNullOrUndefined(_this.parent.activeEventData.event) &&
948
948
  isNullOrUndefined(_this.parent.activeEventData.event[_this.parent.eventFields.recurrenceID])) {
949
949
  _this.parent.eventWindow.openEditor(_this.parent.activeEventData.event, 'Save');
@@ -65,6 +65,7 @@ var InlineEdit = /** @class */ (function () {
65
65
  InlineEdit.prototype.eventEdit = function (args) {
66
66
  var inlineSubject = args.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);
67
67
  var subject;
68
+ addClass([args.element], cls.INLINE_EDIT_CLASS);
68
69
  if (inlineSubject) {
69
70
  subject = inlineSubject.value;
70
71
  }
@@ -72,11 +73,9 @@ var InlineEdit = /** @class */ (function () {
72
73
  var subEle = args.element.querySelector('.' + cls.SUBJECT_CLASS);
73
74
  if (!isNullOrUndefined(subEle)) {
74
75
  addClass([subEle], cls.DISABLE_CLASS);
75
- subject = subEle.innerText;
76
- }
77
- else {
78
- subject = args.data[this.parent.eventFields.subject];
79
76
  }
77
+ subject = !isNullOrUndefined(args.data) && args.data[this.parent.eventFields.subject] ||
78
+ this.parent.eventSettings.fields.subject.default || this.parent.localeObj.getConstant('addTitle');
80
79
  inlineSubject = this.inlineInputEle =
81
80
  createElement('input', { className: cls.INLINE_SUBJECT_CLASS, attrs: { value: subject } });
82
81
  if (closest(args.element, '.' + cls.MORE_POPUP_WRAPPER_CLASS)) {
@@ -98,7 +97,12 @@ var InlineEdit = /** @class */ (function () {
98
97
  args.element.querySelector('.e-appointment-details').prepend(inlineSubject);
99
98
  }
100
99
  else {
101
- innerWrapElement.prepend(inlineSubject);
100
+ if (subEle && this.parent.activeViewOptions && !this.parent.activeViewOptions.eventTemplate) {
101
+ innerWrapElement.insertBefore(inlineSubject, subEle);
102
+ }
103
+ else {
104
+ innerWrapElement.prepend(inlineSubject);
105
+ }
102
106
  }
103
107
  }
104
108
  inlineSubject.focus();
@@ -225,7 +229,7 @@ var InlineEdit = /** @class */ (function () {
225
229
  };
226
230
  InlineEdit.prototype.createInlineAppointmentElement = function (inlineData) {
227
231
  var inlineAppointmentElement = createElement('div', {
228
- className: cls.APPOINTMENT_CLASS + ' ' + cls.INLINE_APPOINTMENT_CLASS
232
+ className: cls.APPOINTMENT_CLASS + ' ' + cls.INLINE_APPOINTMENT_CLASS + ' ' + cls.INLINE_EDIT_CLASS
229
233
  });
230
234
  var inlineDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });
231
235
  inlineAppointmentElement.appendChild(inlineDetails);
@@ -251,6 +255,7 @@ var InlineEdit = /** @class */ (function () {
251
255
  var inlineSubject = this.getInlineElement();
252
256
  if (inlineSubject) {
253
257
  var appointmentSubject = closest(inlineSubject, '.' + cls.APPOINTMENT_CLASS);
258
+ removeClass([appointmentSubject], cls.INLINE_EDIT_CLASS);
254
259
  var subject = appointmentSubject.querySelector('.' + cls.SUBJECT_CLASS);
255
260
  if (!isNullOrUndefined(subject)) {
256
261
  removeClass([subject], cls.DISABLE_CLASS);
@@ -136,13 +136,15 @@ var MonthEvent = /** @class */ (function (_super) {
136
136
  this.parent.notify(events.scrollUiUpdate, data);
137
137
  if (this.parent.currentView === 'Month' && this.parent.showWeekNumber) {
138
138
  var totalCells_1 = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));
139
- var weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WEEK_NUMBER_CLASS));
139
+ var weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('td' + '.' + cls.WEEK_NUMBER_CLASS));
140
140
  weekNumberCells.forEach(function (cell, i) {
141
141
  var height = totalCells_1[parseInt(i.toString(), 10)].offsetHeight;
142
142
  setStyleAttribute(cell, { 'height': height + 'px' });
143
143
  });
144
- this.parent.element.querySelector('.' + cls.WEEK_NUMBER_WRAPPER_CLASS).scrollTop =
145
- this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).scrollTop;
144
+ var weekNumberWrapper = this.parent.element.querySelector('.' + cls.WEEK_NUMBER_WRAPPER_CLASS);
145
+ if (!isNullOrUndefined(weekNumberWrapper)) {
146
+ weekNumberWrapper.scrollTop = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).scrollTop;
147
+ }
146
148
  }
147
149
  }
148
150
  this.parent.renderTemplates();
@@ -499,6 +499,9 @@ var VerticalEvent = /** @class */ (function (_super) {
499
499
  var record = this.splitEvent(eventObj, currentDates)[0];
500
500
  var eStart = new Date(record[this.parent.eventFields.startTime].getTime());
501
501
  var eEnd = new Date(record[this.parent.eventFields.endTime].getTime());
502
+ if (eStart.getTime() < this.parent.minDate.getTime() || eEnd.getTime() > this.parent.maxDate.getTime()) {
503
+ return;
504
+ }
502
505
  var appWidth = 0;
503
506
  var topValue = 1;
504
507
  var isDateRange = currentDates[0].getTime() <= eStart.getTime() &&
@@ -12,7 +12,9 @@ export declare class YearEvent extends TimelineEvent {
12
12
  private timelineYearViewEvents;
13
13
  private updateSpannedEvents;
14
14
  private timelineResourceEvents;
15
+ private shouldRenderAppointment;
15
16
  private renderResourceEvent;
17
+ setMaxEventHeight(event: HTMLElement, cell: HTMLElement): void;
16
18
  private renderEvent;
17
19
  private renderMoreIndicator;
18
20
  private createEventElement;
@@ -175,9 +175,10 @@ var YearEvent = /** @class */ (function (_super) {
175
175
  return "continue";
176
176
  }
177
177
  }
178
- var enableAppRender = this_1.maxOrIndicator || (overlapIndex < eventsPerRow) ||
179
- (this_1.cellHeight > availedHeight);
180
- if (this_1.parent.rowAutoHeight || enableAppRender || this_1.cellHeight > availedHeight) {
178
+ if (this_1.maxHeight && this_1.parent.currentView.indexOf('Timeline') !== -1 && overlapIndex > 0) {
179
+ return "continue";
180
+ }
181
+ if (this_1.parent.rowAutoHeight || this_1.shouldRenderAppointment(overlapIndex, availedHeight)) {
181
182
  this_1.renderEvent(eventWrapper, eventData, row, leftValue, rightValue, monthStart, dayIndex);
182
183
  if (this_1.parent.rowAutoHeight || this_1.cellHeight > availedHeight) {
183
184
  this_1.updateCellHeight(rowTd, availedHeight);
@@ -312,6 +313,19 @@ var YearEvent = /** @class */ (function (_super) {
312
313
  });
313
314
  }
314
315
  };
316
+ YearEvent.prototype.shouldRenderAppointment = function (overlapIndex, availedHeight) {
317
+ var eventsPerRow = this.parent.rowAutoHeight ? 1 : this.parent.activeViewOptions.maxEventsPerRow;
318
+ if (this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight &&
319
+ !this.parent.eventSettings.enableIndicator) {
320
+ return overlapIndex < eventsPerRow;
321
+ }
322
+ else if (this.maxOrIndicator) {
323
+ return overlapIndex < 1;
324
+ }
325
+ else {
326
+ return this.cellHeight > availedHeight;
327
+ }
328
+ };
315
329
  YearEvent.prototype.renderResourceEvent = function (wrapper, resource, month, index, monthStart) {
316
330
  var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });
317
331
  wrapper.appendChild(eventWrapper);
@@ -352,7 +366,10 @@ var YearEvent = /** @class */ (function (_super) {
352
366
  return "continue";
353
367
  }
354
368
  }
355
- if (this_2.parent.rowAutoHeight || this_2.cellHeight > availedHeight) {
369
+ if (this_2.maxHeight && this_2.parent.currentView.indexOf('Timeline') !== -1 && overlapIndex > 0) {
370
+ return "continue";
371
+ }
372
+ if (this_2.parent.rowAutoHeight || this_2.shouldRenderAppointment(overlapIndex, availedHeight)) {
356
373
  this_2.renderEvent(eventWrapper, eventData, month, leftValue, leftValue, monthStart, index);
357
374
  this_2.updateCellHeight(td, availedHeight);
358
375
  isSpannedCollection.push(eventData);
@@ -377,6 +394,10 @@ var YearEvent = /** @class */ (function (_super) {
377
394
  break;
378
395
  }
379
396
  };
397
+ YearEvent.prototype.setMaxEventHeight = function (event, cell) {
398
+ var height = (cell.offsetHeight - this.cellHeader) - (this.maxHeight ? 0 : this.moreIndicatorHeight);
399
+ setStyleAttribute(event, { 'height': height + 'px', 'align-items': 'center' });
400
+ };
380
401
  // eslint-disable-next-line max-len
381
402
  YearEvent.prototype.renderEvent = function (wrapper, eventData, row, left, right, monthDate, rowIndex) {
382
403
  var _this = this;
@@ -407,6 +428,9 @@ var YearEvent = /** @class */ (function (_super) {
407
428
  setStyleAttribute(wrap, {
408
429
  'width': width + 'px', 'height': this.eventHeight + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px'
409
430
  });
431
+ if (this.maxOrIndicator && this.parent.currentView.indexOf('Timeline') !== -1) {
432
+ this.setMaxEventHeight(wrap, rowTd);
433
+ }
410
434
  if (!this.isResource && this.parent.rowAutoHeight && this.parent.activeViewOptions.orientation === 'Vertical') {
411
435
  wrap.setAttribute('data-index', eventObj.Index.toString());
412
436
  }
@@ -47,6 +47,10 @@ var EventTooltip = /** @class */ (function () {
47
47
  return;
48
48
  }
49
49
  if (args.target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeViewOptions.group.resources.length > 0) {
50
+ if (args.target.closest('.' + cls.LEFT_INDENT_WRAP_CLASS)) {
51
+ args.cancel = true;
52
+ return;
53
+ }
50
54
  var resCollection = void 0;
51
55
  if (this.parent.activeView.isTimelineView()) {
52
56
  var index = parseInt(args.target.getAttribute('data-group-index'), 10);
@@ -1255,9 +1255,9 @@ var EventWindow = /** @class */ (function () {
1255
1255
  var startObj = startDate.ej2_instances[0];
1256
1256
  var endObj = endDate.ej2_instances[0];
1257
1257
  startObj.min = this.parent.minDate;
1258
- startObj.max = this.parent.maxDate;
1258
+ startObj.max = new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59));
1259
1259
  endObj.min = this.parent.minDate;
1260
- endObj.max = this.parent.maxDate;
1260
+ endObj.max = new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59));
1261
1261
  startObj.dataBind();
1262
1262
  endObj.dataBind();
1263
1263
  }
@@ -1330,7 +1330,11 @@ var QuickPopups = /** @class */ (function () {
1330
1330
  if (closest(target, '.' + cls.APPOINTMENT_CLASS + ',.' + cls.HEADER_CELLS_CLASS)) {
1331
1331
  this.parent.removeNewEventElement();
1332
1332
  }
1333
- if (!closest(target, '.' + cls.MORE_POPUP_WRAPPER_CLASS) && (target.classList &&
1333
+ var isQuickPopupClick = closest(target, '.' + cls.POPUP_WRAPPER_CLASS) ||
1334
+ closest(target, '.' + cls.QUICK_DIALOG_CLASS);
1335
+ var isEditButton = target.classList.contains(cls.EDIT_EVENT_CLASS) ||
1336
+ target.classList.contains(cls.EDIT_CLASS) || target.classList.contains(cls.EDIT_ICON_CLASS);
1337
+ if (isEditButton || !isQuickPopupClick && !closest(target, '.' + cls.MORE_POPUP_WRAPPER_CLASS) && (target.classList &&
1334
1338
  !target.classList.contains(cls.MORE_INDICATOR_CLASS))
1335
1339
  && (!closest(target, '.' + cls.MORE_POPUP_WRAPPER_CLASS + '.' + cls.POPUP_OPEN))
1336
1340
  && !closest(target, '.' + cls.WORK_CELLS_CLASS)) {
@@ -78,11 +78,12 @@ var Agenda = /** @class */ (function (_super) {
78
78
  this.parent.eventsProcessed = this.processAgendaEvents(eventCollection);
79
79
  var agendaDate = util.resetTime(this.parent.selectedDate);
80
80
  var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');
81
+ var contentArea = closest(tBody, '.' + cls.CONTENT_WRAP_CLASS);
82
+ var scrollTop = contentArea.scrollTop;
81
83
  util.removeChildren(tBody);
82
84
  this.renderInitialContent(tBody, agendaDate);
83
85
  this.wireEventActions();
84
- var contentArea = closest(tBody, '.' + cls.CONTENT_WRAP_CLASS);
85
- contentArea.scrollTop = 1;
86
+ contentArea.scrollTop = scrollTop;
86
87
  this.parent.notify(event.eventsLoaded, {});
87
88
  if (!this.parent.activeViewOptions.allowVirtualScrolling) {
88
89
  this.retainScrollPosition();
@@ -398,7 +398,7 @@ var VerticalView = /** @class */ (function (_super) {
398
398
  case 'dateHeader':
399
399
  if (this.parent.activeViewOptions.dateHeaderTemplate) {
400
400
  templateName = 'dateHeaderTemplate';
401
- var args = { date: date, type: type };
401
+ var args = { date: date, type: type, groupIndex: groupIndex };
402
402
  var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
403
403
  cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false, undefined, undefined, this.parent.root));
404
404
  }
@@ -401,10 +401,11 @@ var Year = /** @class */ (function (_super) {
401
401
  var startDate = isDateColAvail ? dateCollection[0] : this.getStartDate();
402
402
  var endDate = isDateColAvail ? dateCollection[dateCollection.length - 1] : this.getEndDate();
403
403
  if (startDate.getFullYear() !== endDate.getFullYear()) {
404
- return this.parent.globalize.formatDate(startDate, { skeleton: 'yMMM' }) + ' - ' + this.parent.globalize.formatDate(endDate, { skeleton: 'yMMM' });
404
+ return this.parent.globalize.formatDate(startDate, { format: 'MMM y', calendar: this.parent.getCalendarMode() })
405
+ + ' - ' + this.parent.globalize.formatDate(endDate, { format: 'MMM y', calendar: this.parent.getCalendarMode() });
405
406
  }
406
407
  else {
407
- return this.parent.globalize.formatDate(isDateColAvail ? dateCollection[0] : date, { skeleton: 'y' });
408
+ return this.parent.globalize.formatDate(isDateColAvail ? dateCollection[0] : date, { skeleton: 'y', calendar: this.parent.getCalendarMode() });
408
409
  }
409
410
  };
410
411
  Year.prototype.addEventListener = function () {
@@ -1415,7 +1415,6 @@
1415
1415
  }
1416
1416
  .e-schedule.e-rtl .e-vertical-view .e-day-wrapper .e-appointment .e-subject {
1417
1417
  font-weight: 500;
1418
- margin-left: 15px;
1419
1418
  margin-right: auto;
1420
1419
  }
1421
1420
  .e-schedule.e-rtl .e-vertical-view .e-day-wrapper .e-appointment .e-recurrence-icon,
@@ -2295,6 +2294,10 @@
2295
2294
  .e-schedule.e-rtl .e-timeline-month-view .e-appointment.e-schedule-event-clone .e-appointment-details .e-inner-wrap {
2296
2295
  text-align: right;
2297
2296
  }
2297
+ .e-schedule.e-rtl .e-timeline-view .e-date-header-wrap table tbody td,
2298
+ .e-schedule.e-rtl .e-timeline-month-view .e-date-header-wrap table tbody td {
2299
+ padding: 8px 8px 8px 0;
2300
+ }
2298
2301
  .e-schedule.e-device .e-month-view .e-date-header-wrap,
2299
2302
  .e-schedule.e-device .e-timeline-view .e-date-header-wrap,
2300
2303
  .e-schedule.e-device .e-timeline-month-view .e-date-header-wrap {
@@ -3328,13 +3331,6 @@
3328
3331
  left: 6px;
3329
3332
  right: auto;
3330
3333
  }
3331
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-date-time-wrapper,
3332
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-location-details,
3333
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-time-zone-details,
3334
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-description-details,
3335
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-resource-details {
3336
- margin-right: 10px;
3337
- }
3338
3334
  .e-quick-popup-wrapper.e-rtl .e-event-details,
3339
3335
  .e-quick-popup-wrapper.e-rtl .e-event-edit {
3340
3336
  margin-left: 8px;
@@ -3520,6 +3516,10 @@
3520
3516
  display: none;
3521
3517
  }
3522
3518
 
3519
+ .e-month-view .e-appointment.e-schedule-event-clone .e-appointment-details .e-subject {
3520
+ line-height: 1.4;
3521
+ }
3522
+
3523
3523
  @media print {
3524
3524
  .e-schedule .e-table-container {
3525
3525
  display: block;
@@ -4222,6 +4222,9 @@
4222
4222
  .e-recurrenceeditor.e-rtl .e-input-wrapper.e-end-on-count {
4223
4223
  padding: 0 8px 0 0;
4224
4224
  }
4225
+ .e-recurrenceeditor.e-rtl .e-recurrence-table .e-day-position {
4226
+ margin-right: 20px;
4227
+ }
4225
4228
  .e-recurrenceeditor.e-rtl .e-recurrenceeditor .e-recurrence-table.e-month-expand-wrapper td:first-child {
4226
4229
  width: 30px;
4227
4230
  }
package/styles/bds.css CHANGED
@@ -1415,7 +1415,6 @@
1415
1415
  }
1416
1416
  .e-schedule.e-rtl .e-vertical-view .e-day-wrapper .e-appointment .e-subject {
1417
1417
  font-weight: 500;
1418
- margin-left: 15px;
1419
1418
  margin-right: auto;
1420
1419
  }
1421
1420
  .e-schedule.e-rtl .e-vertical-view .e-day-wrapper .e-appointment .e-recurrence-icon,
@@ -2295,6 +2294,10 @@
2295
2294
  .e-schedule.e-rtl .e-timeline-month-view .e-appointment.e-schedule-event-clone .e-appointment-details .e-inner-wrap {
2296
2295
  text-align: right;
2297
2296
  }
2297
+ .e-schedule.e-rtl .e-timeline-view .e-date-header-wrap table tbody td,
2298
+ .e-schedule.e-rtl .e-timeline-month-view .e-date-header-wrap table tbody td {
2299
+ padding: 8px 8px 8px 0;
2300
+ }
2298
2301
  .e-schedule.e-device .e-month-view .e-date-header-wrap,
2299
2302
  .e-schedule.e-device .e-timeline-view .e-date-header-wrap,
2300
2303
  .e-schedule.e-device .e-timeline-month-view .e-date-header-wrap {
@@ -3328,13 +3331,6 @@
3328
3331
  left: 6px;
3329
3332
  right: auto;
3330
3333
  }
3331
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-date-time-wrapper,
3332
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-location-details,
3333
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-time-zone-details,
3334
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-description-details,
3335
- .e-quick-popup-wrapper.e-rtl .e-popup-content .e-resource-details {
3336
- margin-right: 10px;
3337
- }
3338
3334
  .e-quick-popup-wrapper.e-rtl .e-event-details,
3339
3335
  .e-quick-popup-wrapper.e-rtl .e-event-edit {
3340
3336
  margin-left: 8px;
@@ -3520,6 +3516,10 @@
3520
3516
  display: none;
3521
3517
  }
3522
3518
 
3519
+ .e-month-view .e-appointment.e-schedule-event-clone .e-appointment-details .e-subject {
3520
+ line-height: 1.4;
3521
+ }
3522
+
3523
3523
  @media print {
3524
3524
  .e-schedule .e-table-container {
3525
3525
  display: block;
@@ -4889,6 +4889,9 @@
4889
4889
  .e-recurrenceeditor.e-rtl .e-input-wrapper.e-end-on-count {
4890
4890
  padding: 0 8px 0 0;
4891
4891
  }
4892
+ .e-recurrenceeditor.e-rtl .e-recurrence-table .e-day-position {
4893
+ margin-right: 20px;
4894
+ }
4892
4895
  .e-recurrenceeditor.e-rtl .e-recurrenceeditor .e-recurrence-table.e-month-expand-wrapper td:first-child {
4893
4896
  width: 30px;
4894
4897
  }