@syncfusion/ej2-schedule 22.2.12 → 23.1.36

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 (110) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/ej2-schedule.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js +2 -2
  4. package/dist/ej2-schedule.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es2015.js +288 -56
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +289 -56
  8. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  9. package/dist/global/ej2-schedule.min.js +2 -2
  10. package/dist/global/ej2-schedule.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +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 +4 -0
  20. package/src/schedule/base/constant.js +4 -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 +41 -35
  24. package/src/schedule/base/schedule.d.ts +54 -35
  25. package/src/schedule/base/schedule.js +71 -6
  26. package/src/schedule/models/views-model.d.ts +10 -1
  27. package/src/schedule/models/views.d.ts +9 -1
  28. package/src/schedule/models/views.js +3 -0
  29. package/src/schedule/popups/event-tooltip.js +7 -3
  30. package/src/schedule/popups/event-window.d.ts +7 -0
  31. package/src/schedule/popups/event-window.js +123 -29
  32. package/src/schedule/popups/quick-popups.js +3 -0
  33. package/styles/bootstrap-dark.css +15 -0
  34. package/styles/bootstrap.css +15 -0
  35. package/styles/bootstrap4.css +15 -0
  36. package/styles/bootstrap5-dark.css +15 -0
  37. package/styles/bootstrap5.css +15 -0
  38. package/styles/fabric-dark.css +15 -0
  39. package/styles/fabric.css +15 -0
  40. package/styles/fluent-dark.css +15 -0
  41. package/styles/fluent.css +15 -0
  42. package/styles/highcontrast-light.css +15 -0
  43. package/styles/highcontrast.css +15 -0
  44. package/styles/material-dark.css +15 -1
  45. package/styles/material.css +15 -1
  46. package/styles/material3-dark.css +16 -2
  47. package/styles/material3-dark.scss +1 -1
  48. package/styles/material3.css +16 -2
  49. package/styles/material3.scss +1 -1
  50. package/styles/recurrence-editor/bootstrap-dark.scss +1 -1
  51. package/styles/recurrence-editor/bootstrap.scss +1 -1
  52. package/styles/recurrence-editor/bootstrap4.scss +1 -1
  53. package/styles/recurrence-editor/bootstrap5-dark.scss +1 -1
  54. package/styles/recurrence-editor/bootstrap5.scss +1 -1
  55. package/styles/recurrence-editor/fabric-dark.scss +1 -1
  56. package/styles/recurrence-editor/fabric.scss +1 -1
  57. package/styles/recurrence-editor/fluent-dark.scss +1 -1
  58. package/styles/recurrence-editor/fluent.scss +1 -1
  59. package/styles/recurrence-editor/highcontrast-light.scss +1 -1
  60. package/styles/recurrence-editor/highcontrast.scss +1 -1
  61. package/styles/recurrence-editor/material-dark.css +0 -1
  62. package/styles/recurrence-editor/material-dark.scss +1 -1
  63. package/styles/recurrence-editor/material.css +0 -1
  64. package/styles/recurrence-editor/material.scss +1 -1
  65. package/styles/recurrence-editor/material3-dark.css +0 -1
  66. package/styles/recurrence-editor/material3-dark.scss +1 -1
  67. package/styles/recurrence-editor/material3.css +0 -1
  68. package/styles/recurrence-editor/material3.scss +1 -1
  69. package/styles/recurrence-editor/tailwind-dark.css +0 -1
  70. package/styles/recurrence-editor/tailwind-dark.scss +1 -1
  71. package/styles/recurrence-editor/tailwind.css +0 -1
  72. package/styles/recurrence-editor/tailwind.scss +1 -1
  73. package/styles/schedule/_layout.scss +15 -0
  74. package/styles/schedule/_material3-definition.scss +1 -1
  75. package/styles/schedule/bootstrap-dark.css +15 -0
  76. package/styles/schedule/bootstrap-dark.scss +1 -1
  77. package/styles/schedule/bootstrap.css +15 -0
  78. package/styles/schedule/bootstrap.scss +1 -1
  79. package/styles/schedule/bootstrap4.css +15 -0
  80. package/styles/schedule/bootstrap4.scss +1 -1
  81. package/styles/schedule/bootstrap5-dark.css +15 -0
  82. package/styles/schedule/bootstrap5-dark.scss +1 -1
  83. package/styles/schedule/bootstrap5.css +15 -0
  84. package/styles/schedule/bootstrap5.scss +1 -1
  85. package/styles/schedule/fabric-dark.css +15 -0
  86. package/styles/schedule/fabric-dark.scss +1 -1
  87. package/styles/schedule/fabric.css +15 -0
  88. package/styles/schedule/fabric.scss +1 -1
  89. package/styles/schedule/fluent-dark.css +15 -0
  90. package/styles/schedule/fluent-dark.scss +1 -1
  91. package/styles/schedule/fluent.css +15 -0
  92. package/styles/schedule/fluent.scss +1 -1
  93. package/styles/schedule/highcontrast-light.css +15 -0
  94. package/styles/schedule/highcontrast-light.scss +1 -1
  95. package/styles/schedule/highcontrast.css +15 -0
  96. package/styles/schedule/highcontrast.scss +1 -1
  97. package/styles/schedule/material-dark.css +15 -1
  98. package/styles/schedule/material-dark.scss +1 -1
  99. package/styles/schedule/material.css +15 -1
  100. package/styles/schedule/material.scss +1 -1
  101. package/styles/schedule/material3-dark.css +16 -2
  102. package/styles/schedule/material3-dark.scss +1 -1
  103. package/styles/schedule/material3.css +16 -2
  104. package/styles/schedule/material3.scss +1 -1
  105. package/styles/schedule/tailwind-dark.css +15 -1
  106. package/styles/schedule/tailwind-dark.scss +1 -1
  107. package/styles/schedule/tailwind.css +15 -1
  108. package/styles/schedule/tailwind.scss +1 -1
  109. package/styles/tailwind-dark.css +15 -2
  110. package/styles/tailwind.css +15 -2
@@ -60,6 +60,10 @@ var resizeStop = 'resizeStop';
60
60
  var inlineClick = 'inlineClick';
61
61
  /** @private */
62
62
  var cellSelect = 'cellSelect';
63
+ /** @private */
64
+ var virtualScrollStart = 'virtualScrollStart';
65
+ /** @private */
66
+ var virtualScrollStop = 'virtualScrollStop';
63
67
  /**
64
68
  * Specifies schedule internal events
65
69
  */
@@ -553,7 +557,7 @@ var WORK_HOURS_CLASS = 'e-work-hours';
553
557
  /** @private */
554
558
  var POPUP_OPEN = 'e-popup-open';
555
559
  /** @private */
556
-
560
+ var POPUP_CLOSE = 'e-popup-close';
557
561
  /** @private */
558
562
  var DATE_HEADER_WRAP_CLASS = 'e-date-header-wrap';
559
563
  /** @private */
@@ -2075,8 +2079,7 @@ var KeyboardInteraction = /** @__PURE__ @class */ (function () {
2075
2079
  var queryStr = '.' + WORK_CELLS_CLASS + ',.' + ALLDAY_CELLS_CLASS + ',.' + HEADER_CELLS_CLASS;
2076
2080
  var target = closest(e.target, queryStr);
2077
2081
  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')) {
2082
+ if (selectedCells.length > 0 && selectedCells.indexOf(target) === -1) {
2080
2083
  target = selectedCells[selectedCells.length - 1];
2081
2084
  }
2082
2085
  if (this.parent.currentView === 'TimelineYear' && target.classList.contains(OTHERMONTH_CLASS)) {
@@ -3059,15 +3062,35 @@ var Data = /** @__PURE__ @class */ (function () {
3059
3062
  */
3060
3063
  Data.prototype.generateQuery = function (startDate, endDate) {
3061
3064
  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) {
3065
+ if (this.parent && startDate && endDate) {
3066
+ if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading &&
3067
+ !isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&
3068
+ this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase &&
3069
+ this.parent.resourceBase.resourceCollection.length > 0 && this.parent.resourceBase.renderedResources.length > 0) {
3070
+ var resIdCollection_1 = [];
3071
+ this.parent.resourceBase.resourceCollection.forEach(function () { return resIdCollection_1.push([]); });
3072
+ this.parent.resourceBase.renderedResources.forEach(function (resource) {
3073
+ resIdCollection_1.forEach(function (resId, index) {
3074
+ var groupId = resource.groupOrder[parseInt(index.toString(), 10)];
3075
+ if (groupId && resId.indexOf(groupId) < 0) {
3076
+ resId.push(groupId);
3077
+ }
3078
+ });
3079
+ });
3080
+ this.parent.resourceBase.resourceCollection.forEach(function (resource, index) {
3081
+ query.addParams(resource.field, resIdCollection_1[parseInt(index.toString(), 10)].toString());
3082
+ });
3083
+ }
3084
+ if (this.parent.timezone) {
3085
+ startDate = this.parent.tzModule.remove(new Date(+startDate.getTime()), this.parent.timezone);
3086
+ endDate = this.parent.tzModule.remove(new Date(+endDate.getTime()), this.parent.timezone);
3087
+ }
3088
+ if (this.parent.eventSettings.includeFiltersInQuery) {
3089
+ var dateQuery = this.getStartEndQuery(startDate, endDate);
3090
+ var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));
3091
+ return query.where(dateQuery.or(recurrenceQuery));
3092
+ }
3068
3093
  query.addParams('StartDate', startDate.toISOString());
3069
- }
3070
- if (endDate) {
3071
3094
  query.addParams('EndDate', endDate.toISOString());
3072
3095
  }
3073
3096
  return query;
@@ -9380,6 +9403,9 @@ var QuickPopups = /** @__PURE__ @class */ (function () {
9380
9403
  'aria-label': this_1.parent.getAnnouncementString(eventData)
9381
9404
  }
9382
9405
  });
9406
+ if (eventData[fields.isReadonly]) {
9407
+ addClass([appointmentElement], 'e-read-only');
9408
+ }
9383
9409
  var templateElement = void 0;
9384
9410
  if (!isNullOrUndefined(this_1.parent.activeViewOptions.eventTemplate)) {
9385
9411
  var tempId = this_1.parent.element.id + '_' + this_1.parent.activeViewOptions.eventTemplateName + 'eventTemplate';
@@ -10488,7 +10514,7 @@ var EventTooltip = /** @__PURE__ @class */ (function () {
10488
10514
  cssClass: this.parent.cssClass + ' ' + EVENT_TOOLTIP_ROOT_CLASS,
10489
10515
  target: this.getTargets(),
10490
10516
  beforeRender: this.onBeforeRender.bind(this),
10491
- afterClose: this.onTooltipClose.bind(this),
10517
+ beforeClose: this.onTooltipClose.bind(this),
10492
10518
  enableRtl: this.parent.enableRtl,
10493
10519
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer
10494
10520
  });
@@ -10596,7 +10622,11 @@ var EventTooltip = /** @__PURE__ @class */ (function () {
10596
10622
  }
10597
10623
  this.parent.renderTemplates();
10598
10624
  };
10599
- EventTooltip.prototype.onTooltipClose = function () {
10625
+ EventTooltip.prototype.onTooltipClose = function (args) {
10626
+ if (args.element) {
10627
+ removeClass([args.element], POPUP_OPEN);
10628
+ addClass([args.element], POPUP_CLOSE);
10629
+ }
10600
10630
  this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);
10601
10631
  };
10602
10632
  EventTooltip.prototype.setContent = function (content) {
@@ -11803,40 +11833,54 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11803
11833
  };
11804
11834
  if (this.parent.isAdaptive) {
11805
11835
  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>';
11836
+ if (!this.parent.editorHeaderTemplate) {
11837
+ dialogModel.header = '<div class="e-title-header"><div class="e-back-icon e-icons"></div><div class="e-title-text">' +
11838
+ this.l10n.getConstant('newEvent') + '</div><div class="e-save-icon e-icons"></div></div>';
11839
+ }
11808
11840
  }
11809
11841
  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>';
11842
+ if (!this.parent.editorFooterTemplate) {
11843
+ this.renderDialogButtons(dialogModel);
11844
+ }
11845
+ if (!this.parent.editorHeaderTemplate) {
11846
+ dialogModel.header = '<div class="e-title-text">' + this.l10n.getConstant('newEvent') + '</div>';
11847
+ }
11827
11848
  }
11828
11849
  this.dialogObject = new Dialog(dialogModel, this.element);
11829
11850
  if (this.dialogObject.element.querySelector('.e-dlg-closeicon-btn')) {
11830
11851
  this.dialogObject.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));
11831
11852
  }
11853
+ this.addEventHandlers();
11832
11854
  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
11855
  EventHandler.add(this.dialogObject.element, 'keydown', this.preventEventSave, this);
11838
11856
  this.applyFormValidation();
11839
11857
  };
11858
+ EventWindow.prototype.renderDialogButtons = function (dialogButton) {
11859
+ dialogButton.buttons = [{
11860
+ buttonModel: {
11861
+ content: this.l10n.getConstant('deleteButton'), cssClass: DELETE_EVENT_CLASS,
11862
+ disabled: !this.parent.eventSettings.allowDeleting || this.parent.readonly
11863
+ },
11864
+ click: this.eventDelete.bind(this)
11865
+ }, {
11866
+ buttonModel: {
11867
+ content: this.l10n.getConstant('saveButton'), cssClass: 'e-primary ' + EVENT_WINDOW_SAVE_BUTTON_CLASS,
11868
+ isPrimary: true, disabled: !this.parent.eventSettings.allowAdding || this.parent.readonly
11869
+ },
11870
+ click: this.eventSave.bind(this)
11871
+ }, {
11872
+ buttonModel: { cssClass: EVENT_WINDOW_CANCEL_BUTTON_CLASS, content: this.l10n.getConstant('cancelButton') },
11873
+ click: this.dialogClose.bind(this)
11874
+ }];
11875
+ };
11876
+ EventWindow.prototype.addEventHandlers = function () {
11877
+ var backIcon = this.element.querySelector('.' + EVENT_WINDOW_BACK_ICON_CLASS);
11878
+ var saveIcon = this.element.querySelector('.' + EVENT_WINDOW_SAVE_ICON_CLASS);
11879
+ if (this.parent.isAdaptive && !isNullOrUndefined(backIcon) && !isNullOrUndefined(saveIcon)) {
11880
+ EventHandler.add(backIcon, 'click', this.dialogClose, this);
11881
+ EventHandler.add(saveIcon, 'click', this.eventSave, this);
11882
+ }
11883
+ };
11840
11884
  EventWindow.prototype.refresh = function () {
11841
11885
  this.destroy(true);
11842
11886
  this.renderEventWindow();
@@ -11880,6 +11924,23 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11880
11924
  }
11881
11925
  data = eventObj;
11882
11926
  }
11927
+ if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {
11928
+ this.parent.resetTemplates(['editorHeaderTemplate']);
11929
+ if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {
11930
+ this.dialogObject.header = this.createAdaptiveHeaderElement(data);
11931
+ }
11932
+ else {
11933
+ this.dialogObject.header = this.getDialogHeader(data);
11934
+ }
11935
+ }
11936
+ if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {
11937
+ this.parent.resetTemplates(['editorFooterTemplate']);
11938
+ this.dialogObject.footerTemplate = this.getDialogFooter(data);
11939
+ }
11940
+ if (!isNullOrUndefined(this.parent.editorHeaderTemplate) || !isNullOrUndefined(this.parent.editorFooterTemplate)) {
11941
+ this.dialogObject.dataBind();
11942
+ this.addEventHandlers();
11943
+ }
11883
11944
  if (!isNullOrUndefined(this.parent.editorTemplate)) {
11884
11945
  this.renderFormElements(this.element.querySelector('.e-schedule-form'), data);
11885
11946
  }
@@ -11910,6 +11971,65 @@ var EventWindow = /** @__PURE__ @class */ (function () {
11910
11971
  this.dialogObject.dataBind();
11911
11972
  this.applyFormValidation();
11912
11973
  };
11974
+ EventWindow.prototype.setDialogHeader = function () {
11975
+ if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {
11976
+ this.parent.resetTemplates(['editorHeaderTemplate']);
11977
+ if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {
11978
+ this.dialogObject.header = this.createAdaptiveHeaderElement();
11979
+ }
11980
+ else {
11981
+ this.dialogObject.header = this.getDialogHeader();
11982
+ }
11983
+ }
11984
+ else if (this.parent.isAdaptive) {
11985
+ this.dialogObject.header = '<div class="e-title-header"><div class="e-back-icon e-icons"></div><div class="e-title-text">' +
11986
+ this.l10n.getConstant('newEvent') + '</div><div class="e-save-icon e-icons"></div></div>';
11987
+ }
11988
+ else {
11989
+ this.dialogObject.header = '<div class="e-title-text">' + this.l10n.getConstant('newEvent') + '</div>';
11990
+ }
11991
+ this.dialogObject.dataBind();
11992
+ this.addEventHandlers();
11993
+ };
11994
+ EventWindow.prototype.setDialogFooter = function () {
11995
+ if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {
11996
+ this.parent.resetTemplates(['editorFooterTemplate']);
11997
+ this.dialogObject.footerTemplate = this.getDialogFooter();
11998
+ }
11999
+ else if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {
12000
+ this.renderDialogButtons(this.dialogObject);
12001
+ }
12002
+ else if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {
12003
+ this.dialogObject.footerTemplate = null;
12004
+ }
12005
+ this.dialogObject.dataBind();
12006
+ };
12007
+ EventWindow.prototype.createAdaptiveHeaderElement = function (data) {
12008
+ var header = createElement('div', { className: 'e-title-header' });
12009
+ var headerBackIcon = createElement('div', { className: 'e-back-icon e-icons' });
12010
+ header.appendChild(headerBackIcon);
12011
+ var headerTemplate = this.getDialogHeader(data);
12012
+ header.appendChild(headerTemplate);
12013
+ var headerSaveIcon = createElement('div', { className: 'e-save-icon e-icons' });
12014
+ header.appendChild(headerSaveIcon);
12015
+ return header;
12016
+ };
12017
+ EventWindow.prototype.getDialogHeader = function (args) {
12018
+ var headerTemplate = [];
12019
+ var headerTemplateId = this.parent.element.id + '_editorHeaderTemplate';
12020
+ var temHeaderDiv = document.createElement('div');
12021
+ headerTemplate = [].slice.call(this.parent.getEditorHeaderTemplate()(args || {}, this.parent, 'editorHeaderTemplate', headerTemplateId, false));
12022
+ append(headerTemplate, temHeaderDiv);
12023
+ return temHeaderDiv;
12024
+ };
12025
+ EventWindow.prototype.getDialogFooter = function (args) {
12026
+ var footerTemplate = [];
12027
+ var footerTemplateId = this.parent.element.id + '_editorFooterTemplate';
12028
+ var temFooterDiv = document.createElement('div');
12029
+ footerTemplate = [].slice.call(this.parent.getEditorFooterTemplate()(args || {}, this.parent, 'editorFooterTemplate', footerTemplateId, false));
12030
+ append(footerTemplate, temFooterDiv);
12031
+ return temFooterDiv;
12032
+ };
11913
12033
  EventWindow.prototype.preventEventSave = function (e) {
11914
12034
  if (this.parent && !this.parent.allowKeyboardInteraction && e.code === 'Enter') {
11915
12035
  this.isEnterKey = true;
@@ -12183,9 +12303,9 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12183
12303
  var resourceDiv = this.createDivElement(value + '-container' + ' ' + 'e-resources');
12184
12304
  var resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD$1, fieldName);
12185
12305
  resourceDiv.appendChild(resourceInput);
12186
- function resourceTemplate(data) {
12306
+ var resourceTemplate = function (data) {
12187
12307
  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
- }
12308
+ };
12189
12309
  initializeCSPTemplate(resourceTemplate, resourceData);
12190
12310
  if (resourceData.allowMultiple) {
12191
12311
  var listObj = new MultiSelect({
@@ -12538,7 +12658,9 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12538
12658
  this.renderRepeatDialog();
12539
12659
  }
12540
12660
  this.element.querySelector('.' + FORM_CLASS).removeAttribute('data-id');
12541
- this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');
12661
+ if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {
12662
+ this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');
12663
+ }
12542
12664
  eventObj.Timezone = false;
12543
12665
  this.repeatStartDate = eventObj[this.fields.startTime];
12544
12666
  this.repeatRule = '';
@@ -12778,10 +12900,12 @@ var EventWindow = /** @__PURE__ @class */ (function () {
12778
12900
  if (!this.parent.eventSettings.allowEditing) {
12779
12901
  return;
12780
12902
  }
12781
- if (!this.parent.isAdaptive) {
12903
+ if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {
12782
12904
  removeClass([this.element.querySelector('.' + DELETE_EVENT_CLASS)], DISABLE_CLASS);
12783
12905
  }
12784
- this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');
12906
+ if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {
12907
+ this.element.querySelector('.' + EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');
12908
+ }
12785
12909
  this.element.querySelector('.' + FORM_CLASS).setAttribute('data-id', eventObj[this.fields.id].toString());
12786
12910
  if (isNullOrUndefined(this.parent.editorTemplate)) {
12787
12911
  eventObj = extend({}, eventObj, null, true);
@@ -13604,7 +13728,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13604
13728
  };
13605
13729
  EventWindow.prototype.destroy = function (isIgnore) {
13606
13730
  if (this.parent && !this.parent.isDestroyed) {
13607
- this.parent.resetTemplates(['editorTemplate']);
13731
+ this.parent.resetTemplates(['editorTemplate', 'editorHeaderTemplate', 'editorFooterTemplate']);
13608
13732
  }
13609
13733
  this.destroyComponents();
13610
13734
  if (this.recurrenceEditor) {
@@ -13648,6 +13772,7 @@ var EventWindow = /** @__PURE__ @class */ (function () {
13648
13772
  return EventWindow;
13649
13773
  }());
13650
13774
 
13775
+ /* eslint-disable @typescript-eslint/no-explicit-any */
13651
13776
  /**
13652
13777
  * Virtual Scroll
13653
13778
  */
@@ -13735,6 +13860,16 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13735
13860
  };
13736
13861
  VirtualScroll.prototype.renderEvents = function () {
13737
13862
  this.setTabIndex();
13863
+ var dynamicData = this.triggerScrollEvent(virtualScrollStop);
13864
+ if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading && this.parent.crudModule) {
13865
+ if (dynamicData.length > 0) {
13866
+ this.parent.crudModule.refreshProcessedData(true, dynamicData);
13867
+ this.parent.hideSpinner();
13868
+ return;
13869
+ }
13870
+ this.parent.crudModule.refreshDataManager();
13871
+ return;
13872
+ }
13738
13873
  if (this.parent.crudModule) {
13739
13874
  this.parent.crudModule.refreshProcessedData(true);
13740
13875
  }
@@ -13771,7 +13906,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13771
13906
  resCollection = this.downScroll(conWrap, firstTDIndex);
13772
13907
  }
13773
13908
  if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
13774
- this.parent.showSpinner();
13909
+ this.triggerScrollEvent(virtualScrollStart);
13775
13910
  var selectedEle = this.parent.getSelectedCells();
13776
13911
  this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
13777
13912
  this.updateContent(resWrap, conWrap, eventWrap, resCollection);
@@ -13799,7 +13934,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13799
13934
  this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||
13800
13935
  this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==
13801
13936
  resCollection[resCollection.length - 1]) {
13802
- this.parent.showSpinner();
13937
+ this.triggerScrollEvent(virtualScrollStart);
13803
13938
  var colLevels = this.parent.activeView.colLevels.slice(0);
13804
13939
  this.updateHorizontalContent(conWrap, resCollection);
13805
13940
  setStyleAttribute(conWrap.querySelector('table'), { transform: "translateX(" + this.translateY + "px)" });
@@ -13812,6 +13947,30 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
13812
13947
  this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
13813
13948
  }
13814
13949
  };
13950
+ VirtualScroll.prototype.triggerScrollEvent = function (action) {
13951
+ var _this = this;
13952
+ var dynamicData = [];
13953
+ if (!this.parent.activeView) {
13954
+ return dynamicData;
13955
+ }
13956
+ var eventArgs = {
13957
+ startDate: this.parent.activeView.startDate(),
13958
+ endDate: this.parent.activeView.endDate(),
13959
+ startIndex: this.parent.resourceBase.renderedResources[0].groupIndex,
13960
+ endIndex: this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex,
13961
+ resourceData: this.parent.resourceBase.renderedResources.map(function (x) { return x.resourceData; }),
13962
+ name: action
13963
+ };
13964
+ this.parent.trigger(action, eventArgs, function (args) {
13965
+ if (action === virtualScrollStart) {
13966
+ _this.parent.showSpinner();
13967
+ }
13968
+ else if (action === virtualScrollStop && !isNullOrUndefined(args.eventData) && args.eventData.length > 0) {
13969
+ dynamicData = args.eventData;
13970
+ }
13971
+ });
13972
+ return dynamicData;
13973
+ };
13815
13974
  VirtualScroll.prototype.upScroll = function (conWrap, firstTDIndex) {
13816
13975
  var index = 0;
13817
13976
  index = (~~(conWrap.scrollTop / this.itemSize) + Math.ceil(conWrap.clientHeight / this.itemSize)) - this.renderedLength;
@@ -14408,7 +14567,7 @@ var Crud = /** @__PURE__ @class */ (function () {
14408
14567
  }
14409
14568
  this.parent.trigger(actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });
14410
14569
  };
14411
- Crud.prototype.refreshProcessedData = function (isVirtualScrollAction) {
14570
+ Crud.prototype.refreshProcessedData = function (isVirtualScrollAction, dynamicEvents) {
14412
14571
  if (isVirtualScrollAction === void 0) { isVirtualScrollAction = false; }
14413
14572
  if (this.parent.dragAndDropModule) {
14414
14573
  this.parent.dragAndDropModule.actionObj.action = '';
@@ -14432,7 +14591,7 @@ var Crud = /** @__PURE__ @class */ (function () {
14432
14591
  }
14433
14592
  }
14434
14593
  if (isVirtualScrollAction) {
14435
- this.parent.notify(dataReady, { processedData: this.parent.eventsProcessed });
14594
+ this.parent.notify(dataReady, { processedData: dynamicEvents ? this.parent.eventBase.processData(dynamicEvents) : this.parent.eventsProcessed });
14436
14595
  return;
14437
14596
  }
14438
14597
  var eventsData = this.parent.eventsData || [];
@@ -14598,6 +14757,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14598
14757
  editParams.changedRecords.push(event_4);
14599
14758
  promise = _this.parent.dataModule.dataManager.update(fields.id, event_4, _this.getTable(), _this.getQuery());
14600
14759
  }
14760
+ var cloneEvent = extend({}, saveArgs.changedRecords[saveArgs.changedRecords.length - 1], null, true);
14761
+ _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);
14601
14762
  var crudArgs = {
14602
14763
  requestType: 'eventChanged', cancel: false,
14603
14764
  data: saveArgs.changedRecords, promise: promise, editParams: editParams
@@ -14733,7 +14894,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14733
14894
  _loop_2(a, count);
14734
14895
  }
14735
14896
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());
14736
- _this.parent.eventBase.selectWorkCellByTime(occurrenceArgs.changedRecords);
14897
+ var cloneEvent = extend({}, occurrenceArgs.changedRecords[occurrenceArgs.changedRecords.length - 1], null, true);
14898
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditOccurrence' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
14737
14899
  var crudArgs = {
14738
14900
  requestType: action === 'EditOccurrence' ? 'eventChanged' : 'eventRemoved',
14739
14901
  cancel: false, data: isDeletedRecords ? occurrenceArgs.deletedRecords : occurrenceArgs.changedRecords,
@@ -14810,7 +14972,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14810
14972
  _loop_3(a, count);
14811
14973
  }
14812
14974
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_1.id, _this.getTable(), _this.getQuery());
14813
- _this.parent.eventBase.selectWorkCellByTime(followArgs.changedRecords);
14975
+ var cloneEvent = extend({}, followArgs.changedRecords[followArgs.changedRecords.length - 1], null, true);
14976
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditFollowingEvents' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
14814
14977
  var crudArgs = {
14815
14978
  requestType: action === 'EditFollowingEvents' ? 'eventChanged' : 'eventRemoved',
14816
14979
  cancel: false, data: followArgs.changedRecords, promise: promise, editParams: editParams
@@ -14878,7 +15041,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14878
15041
  _loop_4(a, count);
14879
15042
  }
14880
15043
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_2.id, _this.getTable(), _this.getQuery());
14881
- _this.parent.eventBase.selectWorkCellByTime(seriesArgs.changedRecords);
15044
+ var cloneEvent = extend({}, seriesArgs.changedRecords[seriesArgs.changedRecords.length - 1], null, true);
15045
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditSeries' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
14882
15046
  var crudArgs = {
14883
15047
  requestType: action === 'EditSeries' ? 'eventChanged' : 'eventRemoved',
14884
15048
  cancel: false, data: isDeletedRecords ? seriesArgs.deletedRecords : seriesArgs.changedRecords,
@@ -14939,6 +15103,7 @@ var Crud = /** @__PURE__ @class */ (function () {
14939
15103
  _loop_5(a, count);
14940
15104
  }
14941
15105
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_3.id, _this.getTable(), _this.getQuery());
15106
+ _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);
14942
15107
  var crudArgs = {
14943
15108
  requestType: 'eventRemoved', cancel: false, data: deleteArgs.deletedRecords, promise: promise, editParams: editParams
14944
15109
  };
@@ -14982,6 +15147,8 @@ var Crud = /** @__PURE__ @class */ (function () {
14982
15147
  }
14983
15148
  }
14984
15149
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());
15150
+ var cloneEvent = extend({}, editArgs.changedRecords[editArgs.changedRecords.length - 1], null, true);
15151
+ _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);
14985
15152
  var crudArgs = { requestType: 'eventChanged', cancel: false, data: editArgs.changedRecords, promise: promise, editParams: editParams };
14986
15153
  _this.refreshData(crudArgs);
14987
15154
  }
@@ -15875,6 +16042,7 @@ var ResourceBase = /** @__PURE__ @class */ (function () {
15875
16042
  nodeClicked: this.resourceClick.bind(this),
15876
16043
  created: this.resourceTreeCreated.bind(this)
15877
16044
  });
16045
+ this.treeViewObj.root = this.parent.root ? this.parent.root : this.parent;
15878
16046
  this.treeViewObj.appendTo(resourceTree);
15879
16047
  this.treeViewObj.expandAll();
15880
16048
  this.treePopup = new Popup(treeWrapper, {
@@ -16802,6 +16970,13 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16802
16970
  this.renderElements(isSetModel);
16803
16971
  }
16804
16972
  };
16973
+ Schedule.prototype.destroyEditorWindow = function () {
16974
+ if (this.eventWindow) {
16975
+ this.eventWindow.destroy();
16976
+ this.eventWindow = null;
16977
+ }
16978
+ this.eventWindow = new EventWindow(this);
16979
+ };
16805
16980
  /**
16806
16981
  * Method to render the layout elements
16807
16982
  *
@@ -16971,7 +17146,8 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16971
17146
  headerRows: this.headerRows,
16972
17147
  orientation: 'Horizontal',
16973
17148
  numberOfWeeks: 0,
16974
- displayDate: null
17149
+ displayDate: null,
17150
+ enableLazyLoading: false
16975
17151
  };
16976
17152
  var viewOptions = this.viewCollections[this.viewIndex];
16977
17153
  var viewsData = extend(scheduleOptions, viewOptions, undefined, true);
@@ -16982,6 +17158,11 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
16982
17158
  viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :
16983
17159
  new Date(viewsData.displayDate);
16984
17160
  }
17161
+ if (viewsData.enableLazyLoading && !isNullOrUndefined(viewsData.group.resources) && viewsData.group.resources.length > 0 &&
17162
+ (['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(viewsData.option) === -1 ||
17163
+ (viewsData.option === 'TimelineYear' && viewsData.orientation === 'Vertical'))) {
17164
+ viewsData.allowVirtualScrolling = true;
17165
+ }
16985
17166
  return viewsData;
16986
17167
  };
16987
17168
  Schedule.prototype.initializeDataModule = function () {
@@ -17043,6 +17224,8 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17043
17224
  this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);
17044
17225
  this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);
17045
17226
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
17227
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
17228
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
17046
17229
  this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
17047
17230
  this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);
17048
17231
  this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
@@ -17684,6 +17867,24 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
17684
17867
  Schedule.prototype.getEditorTemplate = function () {
17685
17868
  return this.editorTemplateFn;
17686
17869
  };
17870
+ /**
17871
+ * Method to process editor header template
17872
+ *
17873
+ * @returns {CallbackFunction} Returns the callback function
17874
+ * @private
17875
+ */
17876
+ Schedule.prototype.getEditorHeaderTemplate = function () {
17877
+ return this.editorHeaderTemplateFn;
17878
+ };
17879
+ /**
17880
+ * Method to process editor footer template
17881
+ *
17882
+ * @returns {CallbackFunction} Returns the callback function
17883
+ * @private
17884
+ */
17885
+ Schedule.prototype.getEditorFooterTemplate = function () {
17886
+ return this.editorFooterTemplateFn;
17887
+ };
17687
17888
  /**
17688
17889
  * Method to process quick info header template
17689
17890
  *
@@ -18201,6 +18402,22 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18201
18402
  this.eventWindow.setDialogContent();
18202
18403
  }
18203
18404
  break;
18405
+ case 'editorHeaderTemplate':
18406
+ if (!isNullOrUndefined(this.editorHeaderTemplate)) {
18407
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
18408
+ }
18409
+ if (this.eventWindow) {
18410
+ this.eventWindow.setDialogHeader();
18411
+ }
18412
+ break;
18413
+ case 'editorFooterTemplate':
18414
+ if (!isNullOrUndefined(this.editorFooterTemplate)) {
18415
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
18416
+ }
18417
+ if (this.eventWindow) {
18418
+ this.eventWindow.setDialogFooter();
18419
+ }
18420
+ break;
18204
18421
  case 'quickInfoTemplates':
18205
18422
  if (this.quickInfoTemplates.header) {
18206
18423
  this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
@@ -18971,13 +19188,17 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
18971
19188
  this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
18972
19189
  break;
18973
19190
  case 'editorTemplate':
18974
- if (this.eventWindow) {
18975
- this.eventWindow.destroy();
18976
- this.eventWindow = null;
18977
- }
18978
- this.eventWindow = new EventWindow(this);
19191
+ this.destroyEditorWindow();
18979
19192
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
18980
19193
  break;
19194
+ case 'editorHeaderTemplate':
19195
+ this.destroyEditorWindow();
19196
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
19197
+ break;
19198
+ case 'editorFooterTemplate':
19199
+ this.destroyEditorWindow();
19200
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
19201
+ break;
18981
19202
  case 'tooltipTemplate':
18982
19203
  case 'headerTooltipTemplate':
18983
19204
  if (this.eventTooltip) {
@@ -19459,6 +19680,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19459
19680
  __decorate([
19460
19681
  Property()
19461
19682
  ], Schedule.prototype, "editorTemplate", void 0);
19683
+ __decorate([
19684
+ Property()
19685
+ ], Schedule.prototype, "editorHeaderTemplate", void 0);
19686
+ __decorate([
19687
+ Property()
19688
+ ], Schedule.prototype, "editorFooterTemplate", void 0);
19462
19689
  __decorate([
19463
19690
  Complex({}, QuickInfoTemplates)
19464
19691
  ], Schedule.prototype, "quickInfoTemplates", void 0);
@@ -19570,6 +19797,12 @@ var Schedule = /** @__PURE__ @class */ (function (_super) {
19570
19797
  __decorate([
19571
19798
  Event()
19572
19799
  ], Schedule.prototype, "resizeStop", void 0);
19800
+ __decorate([
19801
+ Event()
19802
+ ], Schedule.prototype, "virtualScrollStart", void 0);
19803
+ __decorate([
19804
+ Event()
19805
+ ], Schedule.prototype, "virtualScrollStop", void 0);
19573
19806
  __decorate([
19574
19807
  Event()
19575
19808
  ], Schedule.prototype, "dataBound", void 0);
@@ -28022,5 +28255,5 @@ var Print = /** @__PURE__ @class */ (function () {
28022
28255
  * Export Schedule components
28023
28256
  */
28024
28257
 
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 };
28258
+ 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, 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
28259
  //# sourceMappingURL=ej2-schedule.es5.js.map