@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
@@ -38,7 +38,7 @@ import { Print } from '../exports/print';
38
38
  import { IRenderer, ActionEventArgs, NavigatingEventArgs, CellClickEventArgs, RenderCellEventArgs, ScrollCss, TimezoneFields } from '../base/interface';
39
39
  import { EventClickArgs, EventRenderedArgs, PopupOpenEventArgs, UIStateArgs, DragEventArgs, ResizeEventArgs } from '../base/interface';
40
40
  import { EventFieldsMapping, TdData, ResourceDetails, ResizeEdges, ExportOptions, SelectEventArgs } from '../base/interface';
41
- import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, CallbackFunction } from '../base/interface';
41
+ import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, ScrollEventArgs, CallbackFunction } from '../base/interface';
42
42
  import { CalendarUtil, CalendarType } from '../../common/calendar-util';
43
43
  import { ResourceBase } from '../base/resource';
44
44
  import { Timezone } from '../timezone/timezone';
@@ -93,6 +93,8 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
93
93
  private eventTooltipTemplateFn;
94
94
  private headerTooltipTemplateFn;
95
95
  private editorTemplateFn;
96
+ private editorHeaderTemplateFn;
97
+ private editorFooterTemplateFn;
96
98
  private quickInfoTemplatesHeaderFn;
97
99
  private quickInfoTemplatesContentFn;
98
100
  private quickInfoTemplatesFooterFn;
@@ -561,6 +563,28 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
561
563
  * @aspType string
562
564
  */
563
565
  editorTemplate: string | Function;
566
+ /**
567
+ * The template option to render the customized header of the editor window.
568
+ *
569
+ *
570
+ * @default null
571
+ * @angularType string | object
572
+ * @reactType string | function | JSX.Element
573
+ * @vueType string | function
574
+ * @aspType string
575
+ */
576
+ editorHeaderTemplate: string | Function;
577
+ /**
578
+ * The template option to render the customized footer of the editor window.
579
+ *
580
+ *
581
+ * @default null
582
+ * @angularType string | object
583
+ * @reactType string | function | JSX.Element
584
+ * @vueType string | function
585
+ * @aspType string
586
+ */
587
+ editorFooterTemplate: string | Function;
564
588
  /**
565
589
  * The template option to customize the quick window. The three sections of the quick popup whereas the header, content,
566
590
  * and footer can be easily customized with individual template option.
@@ -744,135 +768,115 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
744
768
  /**
745
769
  * Triggers on beginning of every scheduler action.
746
770
  *
747
- * {% codeBlock src='schedule/actionBegin/index.md' %}{% endcodeBlock %}
748
- *
749
771
  * @event 'actionBegin'
750
772
  */
751
773
  actionBegin: EmitType<ActionEventArgs>;
752
774
  /**
753
775
  * Triggers on successful completion of the scheduler actions.
754
776
  *
755
- * {% codeBlock src='schedule/actionComplete/index.md' %}{% endcodeBlock %}
756
- *
757
777
  * @event 'actionComplete'
758
778
  */
759
779
  actionComplete: EmitType<ActionEventArgs>;
760
780
  /**
761
781
  * Triggers when a scheduler action gets failed or interrupted and an error information will be returned.
762
782
  *
763
- * {% codeBlock src='schedule/actionFailure/index.md' %}{% endcodeBlock %}
764
- *
765
783
  * @event 'actionFailure'
766
784
  */
767
785
  actionFailure: EmitType<ActionEventArgs>;
768
786
  /**
769
787
  * Triggers before the date or view navigation takes place on scheduler.
770
788
  *
771
- * {% codeBlock src='schedule/navigating/index.md' %}{% endcodeBlock %}
772
- *
773
789
  * @event 'navigating'
774
790
  */
775
791
  navigating: EmitType<NavigatingEventArgs>;
776
792
  /**
777
793
  * Triggers before each element of the schedule rendering on the page.
778
794
  *
779
- * {% codeBlock src='schedule/renderCell/index.md' %}{% endcodeBlock %}
780
- *
781
795
  * @event 'renderCell'
782
796
  */
783
797
  renderCell: EmitType<RenderCellEventArgs>;
784
798
  /**
785
799
  * Triggers when the events are single clicked or on single tapping the events on the mobile devices.
786
800
  *
787
- * {% codeBlock src='schedule/eventClick/index.md' %}{% endcodeBlock %}
788
- *
789
801
  * @event 'eventClick'
790
802
  */
791
803
  eventClick: EmitType<EventClickArgs>;
792
804
  /**
793
805
  * Triggers before each of the event getting rendered on the scheduler user interface.
794
806
  *
795
- * {% codeBlock src='schedule/eventRendered/index.md' %}{% endcodeBlock %}
796
- *
797
807
  * @event 'eventRendered'
798
808
  */
799
809
  eventRendered: EmitType<EventRenderedArgs>;
800
810
  /**
801
811
  * Triggers before the data binds to the scheduler.
802
812
  *
803
- * {% codeBlock src='schedule/dataBinding/index.md' %}{% endcodeBlock %}
804
- *
805
813
  * @event 'dataBinding'
806
814
  */
807
815
  dataBinding: EmitType<ReturnType>;
808
816
  /**
809
817
  * Triggers before any of the scheduler popups opens on the page.
810
818
  *
811
- * {% codeBlock src='schedule/popupOpen/index.md' %}{% endcodeBlock %}
812
- *
813
819
  * @event 'popupOpen'
814
820
  */
815
821
  popupOpen: EmitType<PopupOpenEventArgs>;
816
822
  /**
817
823
  * Triggers before any of the scheduler popups close on the page.
818
824
  *
819
- * {% codeBlock src='schedule/popupClose/index.md' %}{% endcodeBlock %}
820
- *
821
825
  * @event 'popupClose'
822
826
  */
823
827
  popupClose: EmitType<PopupCloseEventArgs>;
824
828
  /**
825
829
  * Triggers when an appointment is started to drag.
826
830
  *
827
- * {% codeBlock src='schedule/dragStart/index.md' %}{% endcodeBlock %}
828
- *
829
831
  * @event 'dragStart'
830
832
  */
831
833
  dragStart: EmitType<DragEventArgs>;
832
834
  /**
833
835
  * Triggers when an appointment is being in a dragged state.
834
836
  *
835
- * {% codeBlock src='schedule/drag/index.md' %}{% endcodeBlock %}
836
- *
837
837
  * @event 'drag'
838
838
  */
839
839
  drag: EmitType<DragEventArgs>;
840
840
  /**
841
841
  * Triggers when the dragging of appointment is stopped.
842
842
  *
843
- * {% codeBlock src='schedule/dragStop/index.md' %}{% endcodeBlock %}
844
- *
845
843
  * @event 'dragStop'
846
844
  */
847
845
  dragStop: EmitType<DragEventArgs>;
848
846
  /**
849
847
  * Triggers when an appointment is started to resize.
850
848
  *
851
- * {% codeBlock src='schedule/resizeStart/index.md' %}{% endcodeBlock %}
852
- *
853
849
  * @event 'resizeStart'
854
850
  */
855
851
  resizeStart: EmitType<ResizeEventArgs>;
856
852
  /**
857
853
  * Triggers when an appointment is being in a resizing action.
858
854
  *
859
- * {% codeBlock src='schedule/resizing/index.md' %}{% endcodeBlock %}
860
- *
861
855
  * @event 'resizing'
862
856
  */
863
857
  resizing: EmitType<ResizeEventArgs>;
864
858
  /**
865
859
  * Triggers when the resizing of appointment is stopped.
866
860
  *
867
- * {% codeBlock src='schedule/resizeStop/index.md' %}{% endcodeBlock %}
868
- *
869
861
  * @event 'resizeStop'
870
862
  */
871
863
  resizeStop: EmitType<ResizeEventArgs>;
872
864
  /**
873
- * Triggers once the event data is bound to the scheduler.
865
+ * Triggers when the scroll action is started.
866
+ * This event triggers only when `allowVirtualScrolling` or `enableLazyLoading` properties are enabled along with resource grouping.
874
867
  *
875
- * {% codeBlock src='schedule/dataBound/index.md' %}{% endcodeBlock %}
868
+ * @event 'virtualScrollStart'
869
+ */
870
+ virtualScrollStart: EmitType<ScrollEventArgs>;
871
+ /**
872
+ * Triggers when the scroll action is stopped.
873
+ * This event triggers only when `allowVirtualScrolling` or `enableLazyLoading` properties are enabled along with resource grouping.
874
+ *
875
+ * @event 'virtualScrollStop'
876
+ */
877
+ virtualScrollStop: EmitType<ScrollEventArgs>;
878
+ /**
879
+ * Triggers once the event data is bound to the scheduler.
876
880
  *
877
881
  * @event 'dataBound'
878
882
  */
@@ -918,6 +922,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
918
922
  */
919
923
  sanitize(value: string, element: HTMLElement): void;
920
924
  private initializeResources;
925
+ private destroyEditorWindow;
921
926
  /**
922
927
  * Method to render the layout elements
923
928
  *
@@ -1207,6 +1212,20 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
1207
1212
  * @private
1208
1213
  */
1209
1214
  getEditorTemplate(): CallbackFunction;
1215
+ /**
1216
+ * Method to process editor header template
1217
+ *
1218
+ * @returns {CallbackFunction} Returns the callback function
1219
+ * @private
1220
+ */
1221
+ getEditorHeaderTemplate(): CallbackFunction;
1222
+ /**
1223
+ * Method to process editor footer template
1224
+ *
1225
+ * @returns {CallbackFunction} Returns the callback function
1226
+ * @private
1227
+ */
1228
+ getEditorFooterTemplate(): CallbackFunction;
1210
1229
  /**
1211
1230
  * Method to process quick info header template
1212
1231
  *
@@ -187,6 +187,13 @@ var Schedule = /** @class */ (function (_super) {
187
187
  this.renderElements(isSetModel);
188
188
  }
189
189
  };
190
+ Schedule.prototype.destroyEditorWindow = function () {
191
+ if (this.eventWindow) {
192
+ this.eventWindow.destroy();
193
+ this.eventWindow = null;
194
+ }
195
+ this.eventWindow = new EventWindow(this);
196
+ };
190
197
  /**
191
198
  * Method to render the layout elements
192
199
  *
@@ -356,7 +363,8 @@ var Schedule = /** @class */ (function (_super) {
356
363
  headerRows: this.headerRows,
357
364
  orientation: 'Horizontal',
358
365
  numberOfWeeks: 0,
359
- displayDate: null
366
+ displayDate: null,
367
+ enableLazyLoading: false
360
368
  };
361
369
  var viewOptions = this.viewCollections[this.viewIndex];
362
370
  var viewsData = extend(scheduleOptions, viewOptions, undefined, true);
@@ -367,6 +375,11 @@ var Schedule = /** @class */ (function (_super) {
367
375
  viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :
368
376
  new Date(viewsData.displayDate);
369
377
  }
378
+ if (viewsData.enableLazyLoading && !isNullOrUndefined(viewsData.group.resources) && viewsData.group.resources.length > 0 &&
379
+ (['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(viewsData.option) === -1 ||
380
+ (viewsData.option === 'TimelineYear' && viewsData.orientation === 'Vertical'))) {
381
+ viewsData.allowVirtualScrolling = true;
382
+ }
370
383
  return viewsData;
371
384
  };
372
385
  Schedule.prototype.initializeDataModule = function () {
@@ -428,6 +441,8 @@ var Schedule = /** @class */ (function (_super) {
428
441
  this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);
429
442
  this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);
430
443
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
444
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
445
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
431
446
  this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
432
447
  this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);
433
448
  this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
@@ -1069,6 +1084,24 @@ var Schedule = /** @class */ (function (_super) {
1069
1084
  Schedule.prototype.getEditorTemplate = function () {
1070
1085
  return this.editorTemplateFn;
1071
1086
  };
1087
+ /**
1088
+ * Method to process editor header template
1089
+ *
1090
+ * @returns {CallbackFunction} Returns the callback function
1091
+ * @private
1092
+ */
1093
+ Schedule.prototype.getEditorHeaderTemplate = function () {
1094
+ return this.editorHeaderTemplateFn;
1095
+ };
1096
+ /**
1097
+ * Method to process editor footer template
1098
+ *
1099
+ * @returns {CallbackFunction} Returns the callback function
1100
+ * @private
1101
+ */
1102
+ Schedule.prototype.getEditorFooterTemplate = function () {
1103
+ return this.editorFooterTemplateFn;
1104
+ };
1072
1105
  /**
1073
1106
  * Method to process quick info header template
1074
1107
  *
@@ -1586,6 +1619,22 @@ var Schedule = /** @class */ (function (_super) {
1586
1619
  this.eventWindow.setDialogContent();
1587
1620
  }
1588
1621
  break;
1622
+ case 'editorHeaderTemplate':
1623
+ if (!isNullOrUndefined(this.editorHeaderTemplate)) {
1624
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
1625
+ }
1626
+ if (this.eventWindow) {
1627
+ this.eventWindow.setDialogHeader();
1628
+ }
1629
+ break;
1630
+ case 'editorFooterTemplate':
1631
+ if (!isNullOrUndefined(this.editorFooterTemplate)) {
1632
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
1633
+ }
1634
+ if (this.eventWindow) {
1635
+ this.eventWindow.setDialogFooter();
1636
+ }
1637
+ break;
1589
1638
  case 'quickInfoTemplates':
1590
1639
  if (this.quickInfoTemplates.header) {
1591
1640
  this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
@@ -2356,13 +2405,17 @@ var Schedule = /** @class */ (function (_super) {
2356
2405
  this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
2357
2406
  break;
2358
2407
  case 'editorTemplate':
2359
- if (this.eventWindow) {
2360
- this.eventWindow.destroy();
2361
- this.eventWindow = null;
2362
- }
2363
- this.eventWindow = new EventWindow(this);
2408
+ this.destroyEditorWindow();
2364
2409
  this.editorTemplateFn = this.templateParser(this.editorTemplate);
2365
2410
  break;
2411
+ case 'editorHeaderTemplate':
2412
+ this.destroyEditorWindow();
2413
+ this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
2414
+ break;
2415
+ case 'editorFooterTemplate':
2416
+ this.destroyEditorWindow();
2417
+ this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
2418
+ break;
2366
2419
  case 'tooltipTemplate':
2367
2420
  case 'headerTooltipTemplate':
2368
2421
  if (this.eventTooltip) {
@@ -2844,6 +2897,12 @@ var Schedule = /** @class */ (function (_super) {
2844
2897
  __decorate([
2845
2898
  Property()
2846
2899
  ], Schedule.prototype, "editorTemplate", void 0);
2900
+ __decorate([
2901
+ Property()
2902
+ ], Schedule.prototype, "editorHeaderTemplate", void 0);
2903
+ __decorate([
2904
+ Property()
2905
+ ], Schedule.prototype, "editorFooterTemplate", void 0);
2847
2906
  __decorate([
2848
2907
  Complex({}, QuickInfoTemplates)
2849
2908
  ], Schedule.prototype, "quickInfoTemplates", void 0);
@@ -2955,6 +3014,12 @@ var Schedule = /** @class */ (function (_super) {
2955
3014
  __decorate([
2956
3015
  Event()
2957
3016
  ], Schedule.prototype, "resizeStop", void 0);
3017
+ __decorate([
3018
+ Event()
3019
+ ], Schedule.prototype, "virtualScrollStart", void 0);
3020
+ __decorate([
3021
+ Event()
3022
+ ], Schedule.prototype, "virtualScrollStop", void 0);
2958
3023
  __decorate([
2959
3024
  Event()
2960
3025
  ], Schedule.prototype, "dataBound", void 0);
@@ -68,7 +68,7 @@ export interface ViewsModel {
68
68
  endHour?: string;
69
69
 
70
70
  /**
71
- * It is used to allow or disallow the virtual scrolling functionality on Agenda View. This is applicable only on Agenda view.
71
+ * It is used to allow or disallow the virtual scrolling functionality.
72
72
  *
73
73
  * @default false
74
74
  */
@@ -317,4 +317,13 @@ export interface ViewsModel {
317
317
  */
318
318
  displayDate?: Date;
319
319
 
320
+ /**
321
+ * Enables the lazy loading of events for scrolling actions only when the resources grouping property is enabled.
322
+ * Lazy loading allows the scheduler to fetch the appointments dynamically during scroll actions for the currently rendered resource collection.
323
+ * New event data is fetched on-demand as the user scrolls through the schedule content.
324
+ *
325
+ * @default false
326
+ */
327
+ enableLazyLoading?: boolean;
328
+
320
329
  }
@@ -62,7 +62,7 @@ export declare class Views extends ChildProperty<Views> {
62
62
  */
63
63
  endHour: string;
64
64
  /**
65
- * It is used to allow or disallow the virtual scrolling functionality on Agenda View. This is applicable only on Agenda view.
65
+ * It is used to allow or disallow the virtual scrolling functionality.
66
66
  *
67
67
  * @default false
68
68
  */
@@ -286,4 +286,12 @@ export declare class Views extends ChildProperty<Views> {
286
286
  * @default null
287
287
  */
288
288
  displayDate: Date;
289
+ /**
290
+ * Enables the lazy loading of events for scrolling actions only when the resources grouping property is enabled.
291
+ * Lazy loading allows the scheduler to fetch the appointments dynamically during scroll actions for the currently rendered resource collection.
292
+ * New event data is fetched on-demand as the user scrolls through the schedule content.
293
+ *
294
+ * @default false
295
+ */
296
+ enableLazyLoading: boolean;
289
297
  }
@@ -122,6 +122,9 @@ var Views = /** @class */ (function (_super) {
122
122
  __decorate([
123
123
  Property()
124
124
  ], Views.prototype, "displayDate", void 0);
125
+ __decorate([
126
+ Property(false)
127
+ ], Views.prototype, "enableLazyLoading", void 0);
125
128
  return Views;
126
129
  }(ChildProperty));
127
130
  export { Views };
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { isNullOrUndefined, append, createElement, addClass, initializeCSPTemplate } from '@syncfusion/ej2-base';
2
+ import { isNullOrUndefined, append, createElement, addClass, initializeCSPTemplate, removeClass } from '@syncfusion/ej2-base';
3
3
  import { Tooltip } from '@syncfusion/ej2-popups';
4
4
  import * as cls from '../base/css-constant';
5
5
  import * as util from '../base/util';
@@ -19,7 +19,7 @@ var EventTooltip = /** @class */ (function () {
19
19
  cssClass: this.parent.cssClass + ' ' + cls.EVENT_TOOLTIP_ROOT_CLASS,
20
20
  target: this.getTargets(),
21
21
  beforeRender: this.onBeforeRender.bind(this),
22
- afterClose: this.onTooltipClose.bind(this),
22
+ beforeClose: this.onTooltipClose.bind(this),
23
23
  enableRtl: this.parent.enableRtl,
24
24
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer
25
25
  });
@@ -127,7 +127,11 @@ var EventTooltip = /** @class */ (function () {
127
127
  }
128
128
  this.parent.renderTemplates();
129
129
  };
130
- EventTooltip.prototype.onTooltipClose = function () {
130
+ EventTooltip.prototype.onTooltipClose = function (args) {
131
+ if (args.element) {
132
+ removeClass([args.element], cls.POPUP_OPEN);
133
+ addClass([args.element], cls.POPUP_CLOSE);
134
+ }
131
135
  this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);
132
136
  };
133
137
  EventTooltip.prototype.setContent = function (content) {
@@ -29,11 +29,18 @@ export declare class EventWindow {
29
29
  private dialogEvent;
30
30
  constructor(parent: Schedule);
31
31
  private renderEventWindow;
32
+ private renderDialogButtons;
33
+ private addEventHandlers;
32
34
  refresh(): void;
33
35
  refreshRecurrenceEditor(): void;
34
36
  setRecurrenceEditor(recurrenceEditor: RecurrenceEditor): void;
35
37
  openEditor(data: Record<string, any>, type: CurrentAction, isEventData?: boolean, repeatType?: number): void;
36
38
  setDialogContent(): void;
39
+ setDialogHeader(): void;
40
+ setDialogFooter(): void;
41
+ private createAdaptiveHeaderElement;
42
+ private getDialogHeader;
43
+ private getDialogFooter;
37
44
  private preventEventSave;
38
45
  private onBeforeOpen;
39
46
  private onBeforeClose;