@syncfusion/ej2-schedule 22.2.12 → 23.1.38

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 (111) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/ej2-schedule.min.js +3 -3
  3. package/dist/ej2-schedule.umd.min.js +3 -3
  4. package/dist/ej2-schedule.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es2015.js +309 -67
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +311 -67
  8. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  9. package/dist/global/ej2-schedule.min.js +3 -3
  10. package/dist/global/ej2-schedule.min.js.map +1 -1
  11. package/dist/global/index.d.ts +2 -2
  12. package/package.json +16 -16
  13. package/src/schedule/actions/crud.d.ts +1 -1
  14. package/src/schedule/actions/crud.js +13 -5
  15. package/src/schedule/actions/data.js +29 -8
  16. package/src/schedule/actions/keyboard.js +1 -2
  17. package/src/schedule/actions/virtual-scroll.d.ts +1 -0
  18. package/src/schedule/actions/virtual-scroll.js +37 -2
  19. package/src/schedule/base/constant.d.ts +6 -0
  20. package/src/schedule/base/constant.js +6 -0
  21. package/src/schedule/base/interface.d.ts +15 -0
  22. package/src/schedule/base/resource.js +1 -0
  23. package/src/schedule/base/schedule-model.d.ts +48 -35
  24. package/src/schedule/base/schedule.d.ts +60 -35
  25. package/src/schedule/base/schedule.js +74 -6
  26. package/src/schedule/event-renderer/event-base.js +17 -11
  27. package/src/schedule/models/views-model.d.ts +10 -1
  28. package/src/schedule/models/views.d.ts +9 -1
  29. package/src/schedule/models/views.js +3 -0
  30. package/src/schedule/popups/event-tooltip.js +7 -3
  31. package/src/schedule/popups/event-window.d.ts +7 -0
  32. package/src/schedule/popups/event-window.js +123 -29
  33. package/src/schedule/popups/quick-popups.js +3 -0
  34. package/styles/bootstrap-dark.css +15 -0
  35. package/styles/bootstrap.css +15 -0
  36. package/styles/bootstrap4.css +15 -0
  37. package/styles/bootstrap5-dark.css +15 -0
  38. package/styles/bootstrap5.css +15 -0
  39. package/styles/fabric-dark.css +15 -0
  40. package/styles/fabric.css +15 -0
  41. package/styles/fluent-dark.css +15 -0
  42. package/styles/fluent.css +15 -0
  43. package/styles/highcontrast-light.css +15 -0
  44. package/styles/highcontrast.css +15 -0
  45. package/styles/material-dark.css +15 -1
  46. package/styles/material.css +15 -1
  47. package/styles/material3-dark.css +16 -2
  48. package/styles/material3-dark.scss +1 -1
  49. package/styles/material3.css +16 -2
  50. package/styles/material3.scss +1 -1
  51. package/styles/recurrence-editor/bootstrap-dark.scss +1 -1
  52. package/styles/recurrence-editor/bootstrap.scss +1 -1
  53. package/styles/recurrence-editor/bootstrap4.scss +1 -1
  54. package/styles/recurrence-editor/bootstrap5-dark.scss +1 -1
  55. package/styles/recurrence-editor/bootstrap5.scss +1 -1
  56. package/styles/recurrence-editor/fabric-dark.scss +1 -1
  57. package/styles/recurrence-editor/fabric.scss +1 -1
  58. package/styles/recurrence-editor/fluent-dark.scss +1 -1
  59. package/styles/recurrence-editor/fluent.scss +1 -1
  60. package/styles/recurrence-editor/highcontrast-light.scss +1 -1
  61. package/styles/recurrence-editor/highcontrast.scss +1 -1
  62. package/styles/recurrence-editor/material-dark.css +0 -1
  63. package/styles/recurrence-editor/material-dark.scss +1 -1
  64. package/styles/recurrence-editor/material.css +0 -1
  65. package/styles/recurrence-editor/material.scss +1 -1
  66. package/styles/recurrence-editor/material3-dark.css +0 -1
  67. package/styles/recurrence-editor/material3-dark.scss +1 -1
  68. package/styles/recurrence-editor/material3.css +0 -1
  69. package/styles/recurrence-editor/material3.scss +1 -1
  70. package/styles/recurrence-editor/tailwind-dark.css +0 -1
  71. package/styles/recurrence-editor/tailwind-dark.scss +1 -1
  72. package/styles/recurrence-editor/tailwind.css +0 -1
  73. package/styles/recurrence-editor/tailwind.scss +1 -1
  74. package/styles/schedule/_layout.scss +15 -0
  75. package/styles/schedule/_material3-definition.scss +1 -1
  76. package/styles/schedule/bootstrap-dark.css +15 -0
  77. package/styles/schedule/bootstrap-dark.scss +1 -1
  78. package/styles/schedule/bootstrap.css +15 -0
  79. package/styles/schedule/bootstrap.scss +1 -1
  80. package/styles/schedule/bootstrap4.css +15 -0
  81. package/styles/schedule/bootstrap4.scss +1 -1
  82. package/styles/schedule/bootstrap5-dark.css +15 -0
  83. package/styles/schedule/bootstrap5-dark.scss +1 -1
  84. package/styles/schedule/bootstrap5.css +15 -0
  85. package/styles/schedule/bootstrap5.scss +1 -1
  86. package/styles/schedule/fabric-dark.css +15 -0
  87. package/styles/schedule/fabric-dark.scss +1 -1
  88. package/styles/schedule/fabric.css +15 -0
  89. package/styles/schedule/fabric.scss +1 -1
  90. package/styles/schedule/fluent-dark.css +15 -0
  91. package/styles/schedule/fluent-dark.scss +1 -1
  92. package/styles/schedule/fluent.css +15 -0
  93. package/styles/schedule/fluent.scss +1 -1
  94. package/styles/schedule/highcontrast-light.css +15 -0
  95. package/styles/schedule/highcontrast-light.scss +1 -1
  96. package/styles/schedule/highcontrast.css +15 -0
  97. package/styles/schedule/highcontrast.scss +1 -1
  98. package/styles/schedule/material-dark.css +15 -1
  99. package/styles/schedule/material-dark.scss +1 -1
  100. package/styles/schedule/material.css +15 -1
  101. package/styles/schedule/material.scss +1 -1
  102. package/styles/schedule/material3-dark.css +16 -2
  103. package/styles/schedule/material3-dark.scss +1 -1
  104. package/styles/schedule/material3.css +16 -2
  105. package/styles/schedule/material3.scss +1 -1
  106. package/styles/schedule/tailwind-dark.css +15 -1
  107. package/styles/schedule/tailwind-dark.scss +1 -1
  108. package/styles/schedule/tailwind.css +15 -1
  109. package/styles/schedule/tailwind.scss +1 -1
  110. package/styles/tailwind-dark.css +15 -2
  111. package/styles/tailwind.css +15 -2
@@ -35,6 +35,8 @@ var renderCell = 'renderCell';
35
35
  /** @private */
36
36
  var eventClick = 'eventClick';
37
37
  /** @private */
38
+ var eventDoubleClick = 'eventDoubleClick';
39
+ /** @private */
38
40
  var eventRendered = 'eventRendered';
39
41
  /** @private */
40
42
  var dataBinding = 'dataBinding';
@@ -60,6 +62,10 @@ var resizeStop = 'resizeStop';
60
62
  var inlineClick = 'inlineClick';
61
63
  /** @private */
62
64
  var cellSelect = 'cellSelect';
65
+ /** @private */
66
+ var virtualScrollStart = 'virtualScrollStart';
67
+ /** @private */
68
+ var virtualScrollStop = 'virtualScrollStop';
63
69
  /**
64
70
  * Specifies schedule internal events
65
71
  */
@@ -553,7 +559,7 @@ var WORK_HOURS_CLASS = 'e-work-hours';
553
559
  /** @private */
554
560
  var POPUP_OPEN = 'e-popup-open';
555
561
  /** @private */
556
-
562
+ var POPUP_CLOSE = 'e-popup-close';
557
563
  /** @private */
558
564
  var DATE_HEADER_WRAP_CLASS = 'e-date-header-wrap';
559
565
  /** @private */
@@ -2075,8 +2081,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2075
2081
  var queryStr = '.' + WORK_CELLS_CLASS + ',.' + ALLDAY_CELLS_CLASS + ',.' + HEADER_CELLS_CLASS;
2076
2082
  var target = closest(e.target, queryStr);
2077
2083
  var selectedCells = this.parent.getSelectedCells();
2078
- if (this.parent.activeViewOptions.group.resources.length > 0 && selectedCells.length > 0 &&
2079
- selectedCells[0].getAttribute('data-group-index') !== target.getAttribute('data-group-index')) {
2084
+ if (selectedCells.length > 0 && selectedCells.indexOf(target) === -1) {
2080
2085
  target = selectedCells[selectedCells.length - 1];
2081
2086
  }
2082
2087
  if (this.parent.currentView === 'TimelineYear' && target.classList.contains(OTHERMONTH_CLASS)) {
@@ -3059,15 +3064,35 @@ var Data = /** @__PURE__ @class */ (function () {
3059
3064
  */
3060
3065
  Data.prototype.generateQuery = function (startDate, endDate) {
3061
3066
  var query = this.query.clone();
3062
- if (this.parent && this.parent.eventSettings.includeFiltersInQuery && startDate && endDate) {
3063
- var dateQuery = this.getStartEndQuery(startDate, endDate);
3064
- var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));
3065
- return query.where(dateQuery.or(recurrenceQuery));
3066
- }
3067
- if (startDate) {
3067
+ if (this.parent && startDate && endDate) {
3068
+ if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading &&
3069
+ !isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&
3070
+ this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase &&
3071
+ this.parent.resourceBase.resourceCollection.length > 0 && this.parent.resourceBase.renderedResources.length > 0) {
3072
+ var resIdCollection_1 = [];
3073
+ this.parent.resourceBase.resourceCollection.forEach(function () { return resIdCollection_1.push([]); });
3074
+ this.parent.resourceBase.renderedResources.forEach(function (resource) {
3075
+ resIdCollection_1.forEach(function (resId, index) {
3076
+ var groupId = resource.groupOrder[parseInt(index.toString(), 10)];
3077
+ if (groupId && resId.indexOf(groupId) < 0) {
3078
+ resId.push(groupId);
3079
+ }
3080
+ });
3081
+ });
3082
+ this.parent.resourceBase.resourceCollection.forEach(function (resource, index) {
3083
+ query.addParams(resource.field, resIdCollection_1[parseInt(index.toString(), 10)].toString());
3084
+ });
3085
+ }
3086
+ if (this.parent.timezone) {
3087
+ startDate = this.parent.tzModule.remove(new Date(+startDate.getTime()), this.parent.timezone);
3088
+ endDate = this.parent.tzModule.remove(new Date(+endDate.getTime()), this.parent.timezone);
3089
+ }
3090
+ if (this.parent.eventSettings.includeFiltersInQuery) {
3091
+ var dateQuery = this.getStartEndQuery(startDate, endDate);
3092
+ var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));
3093
+ return query.where(dateQuery.or(recurrenceQuery));
3094
+ }
3068
3095
  query.addParams('StartDate', startDate.toISOString());
3069
- }
3070
- if (endDate) {
3071
3096
  query.addParams('EndDate', endDate.toISOString());
3072
3097
  }
3073
3098
  return query;
@@ -6064,12 +6089,13 @@ var EventBase = /** @__PURE__ @class */ (function () {
6064
6089
  });
6065
6090
  }
6066
6091
  };
6067
- EventBase.prototype.eventDoubleClick = function (e) {
6092
+ EventBase.prototype.eventDoubleClick = function (eventData) {
6093
+ var _this = this;
6068
6094
  if (this.parent.quickPopup) {
6069
6095
  this.parent.quickPopup.quickPopupHide(true);
6070
6096
  }
6071
- if (e.type === 'touchstart') {
6072
- this.activeEventData(e, true);
6097
+ if (eventData.type === 'touchstart') {
6098
+ this.activeEventData(eventData, true);
6073
6099
  }
6074
6100
  this.removeSelectedAppointmentClass();
6075
6101
  this.parent.selectedElements = [];
@@ -6077,14 +6103,19 @@ var EventBase = /** @__PURE__ @class */ (function () {
6077
6103
  this.parent.activeEventData.element.querySelector('.' + INLINE_SUBJECT_CLASS)) {
6078
6104
  return;
6079
6105
  }
6080
- if (!isNullOrUndefined(this.parent.activeEventData.event) &&
6081
- isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceID])) {
6082
- this.parent.eventWindow.openEditor(this.parent.activeEventData.event, 'Save');
6083
- }
6084
- else {
6085
- this.parent.currentAction = 'EditOccurrence';
6086
- this.parent.quickPopup.openRecurrenceAlert();
6087
- }
6106
+ var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });
6107
+ this.parent.trigger(eventDoubleClick, args, function (eventDoubleClickArgs) {
6108
+ if (!eventDoubleClickArgs.cancel) {
6109
+ if (!isNullOrUndefined(_this.parent.activeEventData.event) &&
6110
+ isNullOrUndefined(_this.parent.activeEventData.event[_this.parent.eventFields.recurrenceID])) {
6111
+ _this.parent.eventWindow.openEditor(_this.parent.activeEventData.event, 'Save');
6112
+ }
6113
+ else {
6114
+ _this.parent.currentAction = 'EditOccurrence';
6115
+ _this.parent.quickPopup.openRecurrenceAlert();
6116
+ }
6117
+ }
6118
+ });
6088
6119
  };
6089
6120
  EventBase.prototype.getEventByGuid = function (guid) {
6090
6121
  return this.parent.eventsProcessed.filter(function (data) { return data.Guid === guid; })[0];
@@ -9380,6 +9411,9 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9380
9411
  'aria-label': this_1.parent.getAnnouncementString(eventData)
9381
9412
  }
9382
9413
  });
9414
+ if (eventData[fields.isReadonly]) {
9415
+ addClass([appointmentElement], 'e-read-only');
9416
+ }
9383
9417
  var templateElement = void 0;
9384
9418
  if (!isNullOrUndefined(this_1.parent.activeViewOptions.eventTemplate)) {
9385
9419
  var tempId = this_1.parent.element.id + '_' + this_1.parent.activeViewOptions.eventTemplateName + 'eventTemplate';
@@ -10488,7 +10522,7 @@ var EventTooltip = /** @__PURE__ @class */ (function () {
10488
10522
  cssClass: this.parent.cssClass + ' ' + EVENT_TOOLTIP_ROOT_CLASS,
10489
10523
  target: this.getTargets(),
10490
10524
  beforeRender: this.onBeforeRender.bind(this),
10491
- afterClose: this.onTooltipClose.bind(this),
10525
+ beforeClose: this.onTooltipClose.bind(this),
10492
10526
  enableRtl: this.parent.enableRtl,
10493
10527
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer
10494
10528
  });
@@ -10596,7 +10630,11 @@ var EventTooltip = /** @__PURE__ @class */ (function () {
10596
10630
  }
10597
10631
  this.parent.renderTemplates();
10598
10632
  };
10599
- EventTooltip.prototype.onTooltipClose = function () {
10633
+ EventTooltip.prototype.onTooltipClose = function (args) {
10634
+ if (args.element) {
10635
+ removeClass([args.element], POPUP_OPEN);
10636
+ addClass([args.element], POPUP_CLOSE);
10637
+ }
10600
10638
  this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);
10601
10639
  };
10602
10640
  EventTooltip.prototype.setContent = function (content) {
@@ -11803,40 +11841,54 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11803
11841
  };
11804
11842
  if (this.parent.isAdaptive) {
11805
11843
  dialogModel.cssClass = EVENT_WINDOW_DIALOG_CLASS + ' ' + DEVICE_CLASS;
11806
- dialogModel.header = '<div class="e-title-header"><div class="e-back-icon e-icons"></div><div class="e-title-text">' +
11807
- this.l10n.getConstant('newEvent') + '</div><div class="e-save-icon e-icons"></div></div>';
11844
+ if (!this.parent.editorHeaderTemplate) {
11845
+ dialogModel.header = '<div class="e-title-header"><div class="e-back-icon e-icons"></div><div class="e-title-text">' +
11846
+ this.l10n.getConstant('newEvent') + '</div><div class="e-save-icon e-icons"></div></div>';
11847
+ }
11808
11848
  }
11809
11849
  else {
11810
- dialogModel.buttons = [{
11811
- buttonModel: {
11812
- content: this.l10n.getConstant('deleteButton'), cssClass: DELETE_EVENT_CLASS,
11813
- disabled: !this.parent.eventSettings.allowDeleting || this.parent.readonly
11814
- },
11815
- click: this.eventDelete.bind(this)
11816
- }, {
11817
- buttonModel: {
11818
- content: this.l10n.getConstant('saveButton'), cssClass: 'e-primary ' + EVENT_WINDOW_SAVE_BUTTON_CLASS,
11819
- isPrimary: true, disabled: !this.parent.eventSettings.allowAdding || this.parent.readonly
11820
- },
11821
- click: this.eventSave.bind(this)
11822
- }, {
11823
- buttonModel: { cssClass: EVENT_WINDOW_CANCEL_BUTTON_CLASS, content: this.l10n.getConstant('cancelButton') },
11824
- click: this.dialogClose.bind(this)
11825
- }];
11826
- dialogModel.header = '<div class="e-title-text">' + this.l10n.getConstant('newEvent') + '</div>';
11850
+ if (!this.parent.editorFooterTemplate) {
11851
+ this.renderDialogButtons(dialogModel);
11852
+ }
11853
+ if (!this.parent.editorHeaderTemplate) {
11854
+ dialogModel.header = '<div class="e-title-text">' + this.l10n.getConstant('newEvent') + '</div>';
11855
+ }
11827
11856
  }
11828
11857
  this.dialogObject = new Dialog(dialogModel, this.element);
11829
11858
  if (this.dialogObject.element.querySelector('.e-dlg-closeicon-btn')) {
11830
11859
  this.dialogObject.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));
11831
11860
  }
11861
+ this.addEventHandlers();
11832
11862
  addClass([this.element.parentElement], EVENT_WINDOW_DIALOG_CLASS + '-container');
11833
- if (this.parent.isAdaptive) {
11834
- EventHandler.add(this.element.querySelector('.' + EVENT_WINDOW_BACK_ICON_CLASS), 'click', this.dialogClose, this);
11835
- EventHandler.add(this.element.querySelector('.' + EVENT_WINDOW_SAVE_ICON_CLASS), 'click', this.eventSave, this);
11836
- }
11837
11863
  EventHandler.add(this.dialogObject.element, 'keydown', this.preventEventSave, this);
11838
11864
  this.applyFormValidation();
11839
11865
  };
11866
+ EventWindow.prototype.renderDialogButtons = function (dialogButton) {
11867
+ dialogButton.buttons = [{
11868
+ buttonModel: {
11869
+ content: this.l10n.getConstant('deleteButton'), cssClass: DELETE_EVENT_CLASS,
11870
+ disabled: !this.parent.eventSettings.allowDeleting || this.parent.readonly
11871
+ },
11872
+ click: this.eventDelete.bind(this)
11873
+ }, {
11874
+ buttonModel: {
11875
+ content: this.l10n.getConstant('saveButton'), cssClass: 'e-primary ' + EVENT_WINDOW_SAVE_BUTTON_CLASS,
11876
+ isPrimary: true, disabled: !this.parent.eventSettings.allowAdding || this.parent.readonly
11877
+ },
11878
+ click: this.eventSave.bind(this)
11879
+ }, {
11880
+ buttonModel: { cssClass: EVENT_WINDOW_CANCEL_BUTTON_CLASS, content: this.l10n.getConstant('cancelButton') },
11881
+ click: this.dialogClose.bind(this)
11882
+ }];
11883
+ };
11884
+ EventWindow.prototype.addEventHandlers = function () {
11885
+ var backIcon = this.element.querySelector('.' + EVENT_WINDOW_BACK_ICON_CLASS);
11886
+ var saveIcon = this.element.querySelector('.' + EVENT_WINDOW_SAVE_ICON_CLASS);
11887
+ if (this.parent.isAdaptive && !isNullOrUndefined(backIcon) && !isNullOrUndefined(saveIcon)) {
11888
+ EventHandler.add(backIcon, 'click', this.dialogClose, this);
11889
+ EventHandler.add(saveIcon, 'click', this.eventSave, this);
11890
+ }
11891
+ };
11840
11892
  EventWindow.prototype.refresh = function () {
11841
11893
  this.destroy(true);
11842
11894
  this.renderEventWindow();
@@ -11880,6 +11932,23 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11880
11932
  }
11881
11933
  data = eventObj;
11882
11934
  }
11935
+ if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {
11936
+ this.parent.resetTemplates(['editorHeaderTemplate']);
11937
+ if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {
11938
+ this.dialogObject.header = this.createAdaptiveHeaderElement(data);
11939
+ }
11940
+ else {
11941
+ this.dialogObject.header = this.getDialogHeader(data);
11942
+ }
11943
+ }
11944
+ if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {
11945
+ this.parent.resetTemplates(['editorFooterTemplate']);
11946
+ this.dialogObject.footerTemplate = this.getDialogFooter(data);
11947
+ }
11948
+ if (!isNullOrUndefined(this.parent.editorHeaderTemplate) || !isNullOrUndefined(this.parent.editorFooterTemplate)) {
11949
+ this.dialogObject.dataBind();
11950
+ this.addEventHandlers();
11951
+ }
11883
11952
  if (!isNullOrUndefined(this.parent.editorTemplate)) {
11884
11953
  this.renderFormElements(this.element.querySelector('.e-schedule-form'), data);
11885
11954
  }
@@ -11910,6 +11979,65 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11910
11979
  this.dialogObject.dataBind();
11911
11980
  this.applyFormValidation();
11912
11981
  };
11982
+ EventWindow.prototype.setDialogHeader = function () {
11983
+ if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {
11984
+ this.parent.resetTemplates(['editorHeaderTemplate']);
11985
+ if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {
11986
+ this.dialogObject.header = this.createAdaptiveHeaderElement();
11987
+ }
11988
+ else {
11989
+ this.dialogObject.header = this.getDialogHeader();
11990
+ }
11991
+ }
11992
+ else if (this.parent.isAdaptive) {
11993
+ this.dialogObject.header = '<div class="e-title-header"><div class="e-back-icon e-icons"></div><div class="e-title-text">' +
11994
+ this.l10n.getConstant('newEvent') + '</div><div class="e-save-icon e-icons"></div></div>';
11995
+ }
11996
+ else {
11997
+ this.dialogObject.header = '<div class="e-title-text">' + this.l10n.getConstant('newEvent') + '</div>';
11998
+ }
11999
+ this.dialogObject.dataBind();
12000
+ this.addEventHandlers();
12001
+ };
12002
+ EventWindow.prototype.setDialogFooter = function () {
12003
+ if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {
12004
+ this.parent.resetTemplates(['editorFooterTemplate']);
12005
+ this.dialogObject.footerTemplate = this.getDialogFooter();
12006
+ }
12007
+ else if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {
12008
+ this.renderDialogButtons(this.dialogObject);
12009
+ }
12010
+ else if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {
12011
+ this.dialogObject.footerTemplate = null;
12012
+ }
12013
+ this.dialogObject.dataBind();
12014
+ };
12015
+ EventWindow.prototype.createAdaptiveHeaderElement = function (data) {
12016
+ var header = createElement('div', { className: 'e-title-header' });
12017
+ var headerBackIcon = createElement('div', { className: 'e-back-icon e-icons' });
12018
+ header.appendChild(headerBackIcon);
12019
+ var headerTemplate = this.getDialogHeader(data);
12020
+ header.appendChild(headerTemplate);
12021
+ var headerSaveIcon = createElement('div', { className: 'e-save-icon e-icons' });
12022
+ header.appendChild(headerSaveIcon);
12023
+ return header;
12024
+ };
12025
+ EventWindow.prototype.getDialogHeader = function (args) {
12026
+ var headerTemplate = [];
12027
+ var headerTemplateId = this.parent.element.id + '_editorHeaderTemplate';
12028
+ var temHeaderDiv = document.createElement('div');
12029
+ headerTemplate = [].slice.call(this.parent.getEditorHeaderTemplate()(args || {}, this.parent, 'editorHeaderTemplate', headerTemplateId, false));
12030
+ append(headerTemplate, temHeaderDiv);
12031
+ return temHeaderDiv;
12032
+ };
12033
+ EventWindow.prototype.getDialogFooter = function (args) {
12034
+ var footerTemplate = [];
12035
+ var footerTemplateId = this.parent.element.id + '_editorFooterTemplate';
12036
+ var temFooterDiv = document.createElement('div');
12037
+ footerTemplate = [].slice.call(this.parent.getEditorFooterTemplate()(args || {}, this.parent, 'editorFooterTemplate', footerTemplateId, false));
12038
+ append(footerTemplate, temFooterDiv);
12039
+ return temFooterDiv;
12040
+ };
11913
12041
  EventWindow.prototype.preventEventSave = function (e) {
11914
12042
  if (this.parent && !this.parent.allowKeyboardInteraction && e.code === 'Enter') {
11915
12043
  this.isEnterKey = true;
@@ -12183,9 +12311,9 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12183
12311
  var resourceDiv = this.createDivElement(value + '-container' + ' ' + 'e-resources');
12184
12312
  var resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD$1, fieldName);
12185
12313
  resourceDiv.appendChild(resourceInput);
12186
- function resourceTemplate(data) {
12314
+ var resourceTemplate = function (data) {
12187
12315
  return "<div class=\"e-resource-template\"><div class=\"e-resource-color\" style=\"background-color:" + data[resourceData.colorField] + "\"></div><div class=\"e-resource-text\">" + data[resourceData.textField] + "</div></div>";
12188
- }
12316
+ };
12189
12317
  initializeCSPTemplate(resourceTemplate, resourceData);
12190
12318
  if (resourceData.allowMultiple) {
12191
12319
  var listObj = new MultiSelect({
@@ -12538,7 +12666,9 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12538
12666
  this.renderRepeatDialog();
12539
12667
  }
12540
12668
  this.element.querySelector('.' + FORM_CLASS).removeAttribute('data-id');
12541
- this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');
12669
+ if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {
12670
+ this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');
12671
+ }
12542
12672
  eventObj.Timezone = false;
12543
12673
  this.repeatStartDate = eventObj[this.fields.startTime];
12544
12674
  this.repeatRule = '';
@@ -12778,10 +12908,12 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12778
12908
  if (!this.parent.eventSettings.allowEditing) {
12779
12909
  return;
12780
12910
  }
12781
- if (!this.parent.isAdaptive) {
12911
+ if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {
12782
12912
  removeClass([this.element.querySelector('.' + DELETE_EVENT_CLASS)], DISABLE_CLASS);
12783
12913
  }
12784
- this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');
12914
+ if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {
12915
+ this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');
12916
+ }
12785
12917
  this.element.querySelector('.' + FORM_CLASS).setAttribute('data-id', eventObj[this.fields.id].toString());
12786
12918
  if (isNullOrUndefined(this.parent.editorTemplate)) {
12787
12919
  eventObj = extend({}, eventObj, null, true);
@@ -13604,7 +13736,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13604
13736
  };
13605
13737
  EventWindow.prototype.destroy = function (isIgnore) {
13606
13738
  if (this.parent && !this.parent.isDestroyed) {
13607
- this.parent.resetTemplates(['editorTemplate']);
13739
+ this.parent.resetTemplates(['editorTemplate', 'editorHeaderTemplate', 'editorFooterTemplate']);
13608
13740
  }
13609
13741
  this.destroyComponents();
13610
13742
  if (this.recurrenceEditor) {
@@ -13648,6 +13780,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13648
13780
  return EventWindow;
13649
13781
  }());
13650
13782
 
13783
+ /* eslint-disable @typescript-eslint/no-explicit-any */
13651
13784
  /**
13652
13785
  * Virtual Scroll
13653
13786
  */
@@ -13735,6 +13868,16 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13735
13868
  };
13736
13869
  VirtualScroll.prototype.renderEvents = function () {
13737
13870
  this.setTabIndex();
13871
+ var dynamicData = this.triggerScrollEvent(virtualScrollStop);
13872
+ if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading && this.parent.crudModule) {
13873
+ if (dynamicData.length > 0) {
13874
+ this.parent.crudModule.refreshProcessedData(true, dynamicData);
13875
+ this.parent.hideSpinner();
13876
+ return;
13877
+ }
13878
+ this.parent.crudModule.refreshDataManager();
13879
+ return;
13880
+ }
13738
13881
  if (this.parent.crudModule) {
13739
13882
  this.parent.crudModule.refreshProcessedData(true);
13740
13883
  }
@@ -13771,7 +13914,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13771
13914
  resCollection = this.downScroll(conWrap, firstTDIndex);
13772
13915
  }
13773
13916
  if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
13774
- this.parent.showSpinner();
13917
+ this.triggerScrollEvent(virtualScrollStart);
13775
13918
  var selectedEle = this.parent.getSelectedCells();
13776
13919
  this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
13777
13920
  this.updateContent(resWrap, conWrap, eventWrap, resCollection);
@@ -13799,7 +13942,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13799
13942
  this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||
13800
13943
  this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==
13801
13944
  resCollection[resCollection.length - 1]) {
13802
- this.parent.showSpinner();
13945
+ this.triggerScrollEvent(virtualScrollStart);
13803
13946
  var colLevels = this.parent.activeView.colLevels.slice(0);
13804
13947
  this.updateHorizontalContent(conWrap, resCollection);
13805
13948
  setStyleAttribute(conWrap.querySelector('table'), { transform: "translateX(" + this.translateY + "px)" });
@@ -13812,6 +13955,30 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13812
13955
  this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
13813
13956
  }
13814
13957
  };
13958
+ VirtualScroll.prototype.triggerScrollEvent = function (action) {
13959
+ var _this = this;
13960
+ var dynamicData = [];
13961
+ if (!this.parent.activeView) {
13962
+ return dynamicData;
13963
+ }
13964
+ var eventArgs = {
13965
+ startDate: this.parent.activeView.startDate(),
13966
+ endDate: this.parent.activeView.endDate(),
13967
+ startIndex: this.parent.resourceBase.renderedResources[0].groupIndex,
13968
+ endIndex: this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex,
13969
+ resourceData: this.parent.resourceBase.renderedResources.map(function (x) { return x.resourceData; }),
13970
+ name: action
13971
+ };
13972
+ this.parent.trigger(action, eventArgs, function (args) {
13973
+ if (action === virtualScrollStart) {
13974
+ _this.parent.showSpinner();
13975
+ }
13976
+ else if (action === virtualScrollStop && !isNullOrUndefined(args.eventData) && args.eventData.length > 0) {
13977
+ dynamicData = args.eventData;
13978
+ }
13979
+ });
13980
+ return dynamicData;
13981
+ };
13815
13982
  VirtualScroll.prototype.upScroll = function (conWrap, firstTDIndex) {
13816
13983
  var index = 0;
13817
13984
  index = (~~(conWrap.scrollTop / this.itemSize) + Math.ceil(conWrap.clientHeight / this.itemSize)) - this.renderedLength;
@@ -14408,7 +14575,7 @@ var Crud = /** @__PURE__ @class */ (function () {
14408
14575
  }
14409
14576
  this.parent.trigger(actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });
14410
14577
  };
14411
- Crud.prototype.refreshProcessedData = function (isVirtualScrollAction) {
14578
+ Crud.prototype.refreshProcessedData = function (isVirtualScrollAction, dynamicEvents) {
14412
14579
  if (isVirtualScrollAction === void 0) { isVirtualScrollAction = false; }
14413
14580
  if (this.parent.dragAndDropModule) {
14414
14581
  this.parent.dragAndDropModule.actionObj.action = '';
@@ -14432,7 +14599,7 @@ var Crud = /** @__PURE__ @class */ (function () {
14432
14599
  }
14433
14600
  }
14434
14601
  if (isVirtualScrollAction) {
14435
- this.parent.notify(dataReady, { processedData: this.parent.eventsProcessed });
14602
+ this.parent.notify(dataReady, { processedData: dynamicEvents ? this.parent.eventBase.processData(dynamicEvents) : this.parent.eventsProcessed });
14436
14603
  return;
14437
14604
  }
14438
14605
  var eventsData = this.parent.eventsData || [];
@@ -14598,6 +14765,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14598
14765
  editParams.changedRecords.push(event_4);
14599
14766
  promise = _this.parent.dataModule.dataManager.update(fields.id, event_4, _this.getTable(), _this.getQuery());
14600
14767
  }
14768
+ var cloneEvent = extend({}, saveArgs.changedRecords[saveArgs.changedRecords.length - 1], null, true);
14769
+ _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);
14601
14770
  var crudArgs = {
14602
14771
  requestType: 'eventChanged', cancel: false,
14603
14772
  data: saveArgs.changedRecords, promise: promise, editParams: editParams
@@ -14733,7 +14902,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14733
14902
  _loop_2(a, count);
14734
14903
  }
14735
14904
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());
14736
- _this.parent.eventBase.selectWorkCellByTime(occurrenceArgs.changedRecords);
14905
+ var cloneEvent = extend({}, occurrenceArgs.changedRecords[occurrenceArgs.changedRecords.length - 1], null, true);
14906
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditOccurrence' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
14737
14907
  var crudArgs = {
14738
14908
  requestType: action === 'EditOccurrence' ? 'eventChanged' : 'eventRemoved',
14739
14909
  cancel: false, data: isDeletedRecords ? occurrenceArgs.deletedRecords : occurrenceArgs.changedRecords,
@@ -14810,7 +14980,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14810
14980
  _loop_3(a, count);
14811
14981
  }
14812
14982
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_1.id, _this.getTable(), _this.getQuery());
14813
- _this.parent.eventBase.selectWorkCellByTime(followArgs.changedRecords);
14983
+ var cloneEvent = extend({}, followArgs.changedRecords[followArgs.changedRecords.length - 1], null, true);
14984
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditFollowingEvents' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
14814
14985
  var crudArgs = {
14815
14986
  requestType: action === 'EditFollowingEvents' ? 'eventChanged' : 'eventRemoved',
14816
14987
  cancel: false, data: followArgs.changedRecords, promise: promise, editParams: editParams
@@ -14878,7 +15049,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14878
15049
  _loop_4(a, count);
14879
15050
  }
14880
15051
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_2.id, _this.getTable(), _this.getQuery());
14881
- _this.parent.eventBase.selectWorkCellByTime(seriesArgs.changedRecords);
15052
+ var cloneEvent = extend({}, seriesArgs.changedRecords[seriesArgs.changedRecords.length - 1], null, true);
15053
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditSeries' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
14882
15054
  var crudArgs = {
14883
15055
  requestType: action === 'EditSeries' ? 'eventChanged' : 'eventRemoved',
14884
15056
  cancel: false, data: isDeletedRecords ? seriesArgs.deletedRecords : seriesArgs.changedRecords,
@@ -14939,6 +15111,7 @@ var Crud = /** @__PURE__ @class */ (function () {
14939
15111
  _loop_5(a, count);
14940
15112
  }
14941
15113
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_3.id, _this.getTable(), _this.getQuery());
15114
+ _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);
14942
15115
  var crudArgs = {
14943
15116
  requestType: 'eventRemoved', cancel: false, data: deleteArgs.deletedRecords, promise: promise, editParams: editParams
14944
15117
  };
@@ -14982,6 +15155,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14982
15155
  }
14983
15156
  }
14984
15157
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());
15158
+ var cloneEvent = extend({}, editArgs.changedRecords[editArgs.changedRecords.length - 1], null, true);
15159
+ _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);
14985
15160
  var crudArgs = { requestType: 'eventChanged', cancel: false, data: editArgs.changedRecords, promise: promise, editParams: editParams };
14986
15161
  _this.refreshData(crudArgs);
14987
15162
  }
@@ -15875,6 +16050,7 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
15875
16050
  nodeClicked: this.resourceClick.bind(this),
15876
16051
  created: this.resourceTreeCreated.bind(this)
15877
16052
  });
16053
+ this.treeViewObj.root = this.parent.root ? this.parent.root : this.parent;
15878
16054
  this.treeViewObj.appendTo(resourceTree);
15879
16055
  this.treeViewObj.expandAll();
15880
16056
  this.treePopup = new Popup(treeWrapper, {
@@ -16802,6 +16978,13 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16802
16978
  this.renderElements(isSetModel);
16803
16979
  }
16804
16980
  };
16981
+ Schedule.prototype.destroyEditorWindow = function () {
16982
+ if (this.eventWindow) {
16983
+ this.eventWindow.destroy();
16984
+ this.eventWindow = null;
16985
+ }
16986
+ this.eventWindow = new EventWindow(this);
16987
+ };
16805
16988
  /**
16806
16989
  * Method to render the layout elements
16807
16990
  *
@@ -16971,7 +17154,8 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16971
17154
  headerRows: this.headerRows,
16972
17155
  orientation: 'Horizontal',
16973
17156
  numberOfWeeks: 0,
16974
- displayDate: null
17157
+ displayDate: null,
17158
+ enableLazyLoading: false
16975
17159
  };
16976
17160
  var viewOptions = this.viewCollections[this.viewIndex];
16977
17161
  var viewsData = extend(scheduleOptions, viewOptions, undefined, true);
@@ -16982,6 +17166,11 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16982
17166
  viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :
16983
17167
  new Date(viewsData.displayDate);
16984
17168
  }
17169
+ if (viewsData.enableLazyLoading && !isNullOrUndefined(viewsData.group.resources) && viewsData.group.resources.length > 0 &&
17170
+ (['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(viewsData.option) === -1 ||
17171
+ (viewsData.option === 'TimelineYear' && viewsData.orientation === 'Vertical'))) {
17172
+ viewsData.allowVirtualScrolling = true;
17173
+ }
16985
17174
  return viewsData;
16986
17175
  };
16987
17176
  Schedule.prototype.initializeDataModule = function () {
@@ -17043,6 +17232,8 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17043
17232
  this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);
17044
17233
  this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);
17045
17234
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
17235
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
17236
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
17046
17237
  this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
17047
17238
  this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);
17048
17239
  this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
@@ -17684,6 +17875,24 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17684
17875
  Schedule.prototype.getEditorTemplate = function () {
17685
17876
  return this.editorTemplateFn;
17686
17877
  };
17878
+ /**
17879
+ * Method to process editor header template
17880
+ *
17881
+ * @returns {CallbackFunction} Returns the callback function
17882
+ * @private
17883
+ */
17884
+ Schedule.prototype.getEditorHeaderTemplate = function () {
17885
+ return this.editorHeaderTemplateFn;
17886
+ };
17887
+ /**
17888
+ * Method to process editor footer template
17889
+ *
17890
+ * @returns {CallbackFunction} Returns the callback function
17891
+ * @private
17892
+ */
17893
+ Schedule.prototype.getEditorFooterTemplate = function () {
17894
+ return this.editorFooterTemplateFn;
17895
+ };
17687
17896
  /**
17688
17897
  * Method to process quick info header template
17689
17898
  *
@@ -18201,6 +18410,22 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18201
18410
  this.eventWindow.setDialogContent();
18202
18411
  }
18203
18412
  break;
18413
+ case 'editorHeaderTemplate':
18414
+ if (!isNullOrUndefined(this.editorHeaderTemplate)) {
18415
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
18416
+ }
18417
+ if (this.eventWindow) {
18418
+ this.eventWindow.setDialogHeader();
18419
+ }
18420
+ break;
18421
+ case 'editorFooterTemplate':
18422
+ if (!isNullOrUndefined(this.editorFooterTemplate)) {
18423
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
18424
+ }
18425
+ if (this.eventWindow) {
18426
+ this.eventWindow.setDialogFooter();
18427
+ }
18428
+ break;
18204
18429
  case 'quickInfoTemplates':
18205
18430
  if (this.quickInfoTemplates.header) {
18206
18431
  this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
@@ -18971,13 +19196,17 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18971
19196
  this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
18972
19197
  break;
18973
19198
  case 'editorTemplate':
18974
- if (this.eventWindow) {
18975
- this.eventWindow.destroy();
18976
- this.eventWindow = null;
18977
- }
18978
- this.eventWindow = new EventWindow(this);
19199
+ this.destroyEditorWindow();
18979
19200
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
18980
19201
  break;
19202
+ case 'editorHeaderTemplate':
19203
+ this.destroyEditorWindow();
19204
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
19205
+ break;
19206
+ case 'editorFooterTemplate':
19207
+ this.destroyEditorWindow();
19208
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
19209
+ break;
18981
19210
  case 'tooltipTemplate':
18982
19211
  case 'headerTooltipTemplate':
18983
19212
  if (this.eventTooltip) {
@@ -19459,6 +19688,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19459
19688
  __decorate([
19460
19689
  Property()
19461
19690
  ], Schedule.prototype, "editorTemplate", void 0);
19691
+ __decorate([
19692
+ Property()
19693
+ ], Schedule.prototype, "editorHeaderTemplate", void 0);
19694
+ __decorate([
19695
+ Property()
19696
+ ], Schedule.prototype, "editorFooterTemplate", void 0);
19462
19697
  __decorate([
19463
19698
  Complex({}, QuickInfoTemplates)
19464
19699
  ], Schedule.prototype, "quickInfoTemplates", void 0);
@@ -19540,6 +19775,9 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19540
19775
  __decorate([
19541
19776
  Event()
19542
19777
  ], Schedule.prototype, "eventClick", void 0);
19778
+ __decorate([
19779
+ Event()
19780
+ ], Schedule.prototype, "eventDoubleClick", void 0);
19543
19781
  __decorate([
19544
19782
  Event()
19545
19783
  ], Schedule.prototype, "eventRendered", void 0);
@@ -19570,6 +19808,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19570
19808
  __decorate([
19571
19809
  Event()
19572
19810
  ], Schedule.prototype, "resizeStop", void 0);
19811
+ __decorate([
19812
+ Event()
19813
+ ], Schedule.prototype, "virtualScrollStart", void 0);
19814
+ __decorate([
19815
+ Event()
19816
+ ], Schedule.prototype, "virtualScrollStop", void 0);
19573
19817
  __decorate([
19574
19818
  Event()
19575
19819
  ], Schedule.prototype, "dataBound", void 0);
@@ -28022,5 +28266,5 @@ var Print = /** @__PURE__ @class */ (function () {
28022
28266
  * Export Schedule components
28023
28267
  */
28024
28268
 
28025
- 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, cellSelect, 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, getElementWidthFromClass, getTranslateY, getTranslateX, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, resetScrollbarWidth, 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 };
28269
+ export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventDoubleClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, cellSelect, virtualScrollStart, virtualScrollStop, 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, getElementWidthFromClass, getTranslateY, getTranslateX, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, resetScrollbarWidth, 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 };
28026
28270
  //# sourceMappingURL=ej2-schedule.es5.js.map