@syncfusion/ej2-schedule 22.2.11 → 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 (120) hide show
  1. package/CHANGELOG.md +25 -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 +445 -172
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +445 -173
  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/recurrence-editor/date-generator.d.ts +1 -2
  14. package/src/recurrence-editor/date-generator.js +3 -5
  15. package/src/recurrence-editor/recurrence-editor.d.ts +1 -1
  16. package/src/schedule/actions/crud.d.ts +1 -1
  17. package/src/schedule/actions/crud.js +19 -6
  18. package/src/schedule/actions/data.js +29 -8
  19. package/src/schedule/actions/keyboard.js +4 -1
  20. package/src/schedule/actions/virtual-scroll.d.ts +1 -0
  21. package/src/schedule/actions/virtual-scroll.js +37 -2
  22. package/src/schedule/base/constant.d.ts +4 -0
  23. package/src/schedule/base/constant.js +4 -0
  24. package/src/schedule/base/interface.d.ts +15 -0
  25. package/src/schedule/base/resource.js +1 -0
  26. package/src/schedule/base/schedule-model.d.ts +41 -35
  27. package/src/schedule/base/schedule.d.ts +54 -35
  28. package/src/schedule/base/schedule.js +71 -6
  29. package/src/schedule/base/util.d.ts +1 -0
  30. package/src/schedule/base/util.js +1 -0
  31. package/src/schedule/event-renderer/event-base.d.ts +1 -1
  32. package/src/schedule/event-renderer/event-base.js +4 -4
  33. package/src/schedule/exports/calendar-import.d.ts +2 -1
  34. package/src/schedule/exports/calendar-import.js +134 -106
  35. package/src/schedule/models/views-model.d.ts +10 -1
  36. package/src/schedule/models/views.d.ts +9 -1
  37. package/src/schedule/models/views.js +3 -0
  38. package/src/schedule/popups/event-tooltip.js +7 -3
  39. package/src/schedule/popups/event-window.d.ts +7 -0
  40. package/src/schedule/popups/event-window.js +123 -29
  41. package/src/schedule/popups/quick-popups.js +3 -0
  42. package/src/schedule/renderer/timeline-view.js +5 -2
  43. package/styles/bootstrap-dark.css +15 -0
  44. package/styles/bootstrap.css +15 -0
  45. package/styles/bootstrap4.css +15 -0
  46. package/styles/bootstrap5-dark.css +15 -0
  47. package/styles/bootstrap5.css +15 -0
  48. package/styles/fabric-dark.css +15 -0
  49. package/styles/fabric.css +15 -0
  50. package/styles/fluent-dark.css +15 -0
  51. package/styles/fluent.css +15 -0
  52. package/styles/highcontrast-light.css +15 -0
  53. package/styles/highcontrast.css +15 -0
  54. package/styles/material-dark.css +15 -1
  55. package/styles/material.css +15 -1
  56. package/styles/material3-dark.css +16 -2
  57. package/styles/material3-dark.scss +1 -1
  58. package/styles/material3.css +16 -2
  59. package/styles/material3.scss +1 -1
  60. package/styles/recurrence-editor/bootstrap-dark.scss +1 -1
  61. package/styles/recurrence-editor/bootstrap.scss +1 -1
  62. package/styles/recurrence-editor/bootstrap4.scss +1 -1
  63. package/styles/recurrence-editor/bootstrap5-dark.scss +1 -1
  64. package/styles/recurrence-editor/bootstrap5.scss +1 -1
  65. package/styles/recurrence-editor/fabric-dark.scss +1 -1
  66. package/styles/recurrence-editor/fabric.scss +1 -1
  67. package/styles/recurrence-editor/fluent-dark.scss +1 -1
  68. package/styles/recurrence-editor/fluent.scss +1 -1
  69. package/styles/recurrence-editor/highcontrast-light.scss +1 -1
  70. package/styles/recurrence-editor/highcontrast.scss +1 -1
  71. package/styles/recurrence-editor/material-dark.css +0 -1
  72. package/styles/recurrence-editor/material-dark.scss +1 -1
  73. package/styles/recurrence-editor/material.css +0 -1
  74. package/styles/recurrence-editor/material.scss +1 -1
  75. package/styles/recurrence-editor/material3-dark.css +0 -1
  76. package/styles/recurrence-editor/material3-dark.scss +1 -1
  77. package/styles/recurrence-editor/material3.css +0 -1
  78. package/styles/recurrence-editor/material3.scss +1 -1
  79. package/styles/recurrence-editor/tailwind-dark.css +0 -1
  80. package/styles/recurrence-editor/tailwind-dark.scss +1 -1
  81. package/styles/recurrence-editor/tailwind.css +0 -1
  82. package/styles/recurrence-editor/tailwind.scss +1 -1
  83. package/styles/schedule/_layout.scss +15 -0
  84. package/styles/schedule/_material3-definition.scss +1 -1
  85. package/styles/schedule/bootstrap-dark.css +15 -0
  86. package/styles/schedule/bootstrap-dark.scss +1 -1
  87. package/styles/schedule/bootstrap.css +15 -0
  88. package/styles/schedule/bootstrap.scss +1 -1
  89. package/styles/schedule/bootstrap4.css +15 -0
  90. package/styles/schedule/bootstrap4.scss +1 -1
  91. package/styles/schedule/bootstrap5-dark.css +15 -0
  92. package/styles/schedule/bootstrap5-dark.scss +1 -1
  93. package/styles/schedule/bootstrap5.css +15 -0
  94. package/styles/schedule/bootstrap5.scss +1 -1
  95. package/styles/schedule/fabric-dark.css +15 -0
  96. package/styles/schedule/fabric-dark.scss +1 -1
  97. package/styles/schedule/fabric.css +15 -0
  98. package/styles/schedule/fabric.scss +1 -1
  99. package/styles/schedule/fluent-dark.css +15 -0
  100. package/styles/schedule/fluent-dark.scss +1 -1
  101. package/styles/schedule/fluent.css +15 -0
  102. package/styles/schedule/fluent.scss +1 -1
  103. package/styles/schedule/highcontrast-light.css +15 -0
  104. package/styles/schedule/highcontrast-light.scss +1 -1
  105. package/styles/schedule/highcontrast.css +15 -0
  106. package/styles/schedule/highcontrast.scss +1 -1
  107. package/styles/schedule/material-dark.css +15 -1
  108. package/styles/schedule/material-dark.scss +1 -1
  109. package/styles/schedule/material.css +15 -1
  110. package/styles/schedule/material.scss +1 -1
  111. package/styles/schedule/material3-dark.css +16 -2
  112. package/styles/schedule/material3-dark.scss +1 -1
  113. package/styles/schedule/material3.css +16 -2
  114. package/styles/schedule/material3.scss +1 -1
  115. package/styles/schedule/tailwind-dark.css +15 -1
  116. package/styles/schedule/tailwind-dark.scss +1 -1
  117. package/styles/schedule/tailwind.css +15 -1
  118. package/styles/schedule/tailwind.scss +1 -1
  119. package/styles/tailwind-dark.css +15 -2
  120. package/styles/tailwind.css +15 -2
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 22.2.11
3
+ * version : 23.1.36
4
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-schedule@*",
3
- "_id": "@syncfusion/ej2-schedule@22.2.8",
3
+ "_id": "@syncfusion/ej2-schedule@22.5.7",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-Kx0CfzH9nk0XZaYgJGZpQXWGCWARyl7WB9pF2s8F7U749gjOQ/9T/+jYXY/9ViAcoH0YKgy1LsvCy1fl2Pa6cQ==",
5
+ "_integrity": "sha512-OkyacVmb2OC8LhOoRaL2gksKeFKVUc/KR1DbSjBkJmpZ05BDdYH5Oxcm8V2z7E5GV2fzVwfHDUjbHO60A8CMlQ==",
6
6
  "_location": "/@syncfusion/ej2-schedule",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,10 +23,10 @@
23
23
  "/@syncfusion/ej2-react-schedule",
24
24
  "/@syncfusion/ej2-vue-schedule"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-22.2.8.tgz",
27
- "_shasum": "d4abd42dfb2c617501dbb6a65a870fd9e915774e",
26
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-schedule/-/ej2-schedule-22.5.7.tgz",
27
+ "_shasum": "67afb25d998973aec9b52b4ed0948d850175c558",
28
28
  "_spec": "@syncfusion/ej2-schedule@*",
29
- "_where": "/jenkins/workspace/elease-automation_release_21.1.1/packages/included",
29
+ "_where": "/jenkins/workspace/elease-automation_release_23.1.1/packages/included",
30
30
  "author": {
31
31
  "name": "Syncfusion Inc."
32
32
  },
@@ -35,16 +35,16 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~22.2.10",
39
- "@syncfusion/ej2-buttons": "~22.2.9",
40
- "@syncfusion/ej2-calendars": "~22.2.11",
41
- "@syncfusion/ej2-data": "~22.2.5",
42
- "@syncfusion/ej2-dropdowns": "~22.2.11",
43
- "@syncfusion/ej2-excel-export": "~22.2.5",
44
- "@syncfusion/ej2-inputs": "~22.2.9",
45
- "@syncfusion/ej2-lists": "~22.2.11",
46
- "@syncfusion/ej2-navigations": "~22.2.11",
47
- "@syncfusion/ej2-popups": "~22.2.11"
38
+ "@syncfusion/ej2-base": "~23.1.36",
39
+ "@syncfusion/ej2-buttons": "~23.1.36",
40
+ "@syncfusion/ej2-calendars": "~23.1.36",
41
+ "@syncfusion/ej2-data": "~23.1.36",
42
+ "@syncfusion/ej2-dropdowns": "~23.1.36",
43
+ "@syncfusion/ej2-excel-export": "~23.1.36",
44
+ "@syncfusion/ej2-inputs": "~23.1.36",
45
+ "@syncfusion/ej2-lists": "~23.1.36",
46
+ "@syncfusion/ej2-navigations": "~23.1.36",
47
+ "@syncfusion/ej2-popups": "~23.1.36"
48
48
  },
49
49
  "deprecated": false,
50
50
  "description": "Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.",
@@ -73,6 +73,6 @@
73
73
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
74
74
  },
75
75
  "typings": "index.d.ts",
76
- "version": "22.2.11",
76
+ "version": "23.1.36",
77
77
  "sideEffects": false
78
78
  }
@@ -23,11 +23,10 @@ export declare function generateSummary(rule: string, localeObject: L10n, locale
23
23
  * @param {number} maximumCount Accepts the maximum number count to generate date collections
24
24
  * @param {Date} viewDate Accepts the current date instead of start date
25
25
  * @param {CalendarType} calendarMode Accepts the calendar type
26
- * @param {string} oldTimezone Accepts the timezone name
27
26
  * @param {string} newTimezone Accepts the timezone name
28
27
  * @returns {number[]} Returns the collection of dates
29
28
  */
30
- export declare function generate(startDate: Date, rule: string, excludeDate: string, startDayOfWeek: number, maximumCount?: number, viewDate?: Date, calendarMode?: CalendarType, oldTimezone?: string, newTimezone?: string): number[];
29
+ export declare function generate(startDate: Date, rule: string, excludeDate: string, startDayOfWeek: number, maximumCount?: number, viewDate?: Date, calendarMode?: CalendarType, newTimezone?: string): number[];
31
30
  /**
32
31
  * Generate date object from given date string
33
32
  *
@@ -103,15 +103,13 @@ function getMonthSummary(ruleObject, cldrObj, localeObj) {
103
103
  * @param {number} maximumCount Accepts the maximum number count to generate date collections
104
104
  * @param {Date} viewDate Accepts the current date instead of start date
105
105
  * @param {CalendarType} calendarMode Accepts the calendar type
106
- * @param {string} oldTimezone Accepts the timezone name
107
106
  * @param {string} newTimezone Accepts the timezone name
108
107
  * @returns {number[]} Returns the collection of dates
109
108
  */
110
- export function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount, viewDate, calendarMode, oldTimezone, newTimezone) {
109
+ export function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount, viewDate, calendarMode, newTimezone) {
111
110
  if (maximumCount === void 0) { maximumCount = MAXOCCURRENCE; }
112
111
  if (viewDate === void 0) { viewDate = null; }
113
112
  if (calendarMode === void 0) { calendarMode = 'Gregorian'; }
114
- if (oldTimezone === void 0) { oldTimezone = null; }
115
113
  if (newTimezone === void 0) { newTimezone = null; }
116
114
  var ruleObject = extractObjectFromRule(rule);
117
115
  var cacheDate;
@@ -123,8 +121,8 @@ export function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCo
123
121
  var tz = new Timezone();
124
122
  tempDate.forEach(function (content) {
125
123
  var parsedDate = getDateFromRecurrenceDateString(content);
126
- if (oldTimezone && newTimezone) {
127
- parsedDate = tz.convert(new Date(parsedDate.getTime()), oldTimezone, newTimezone);
124
+ if (newTimezone) {
125
+ parsedDate = tz.add(new Date(parsedDate.getTime()), newTimezone);
128
126
  }
129
127
  tempExcludeDate.push(new Date(parsedDate.getTime()).setHours(0, 0, 0, 0));
130
128
  });
@@ -229,5 +229,5 @@ export declare type RepeatType = 'none' | 'daily' | 'weekly' | 'monthly' | 'year
229
229
  * until :- Denotes that the recurrence ends on a specified date.
230
230
  * count :- Denotes that the recurrence ends after a specified number of occurrences.
231
231
  * ```
232
- */
232
+ */
233
233
  export declare type EndType = 'never' | 'until' | 'count';
@@ -13,7 +13,7 @@ export declare class Crud {
13
13
  refreshDataManager(): void;
14
14
  private dataManagerSuccess;
15
15
  dataManagerFailure(e: ReturnType): void;
16
- refreshProcessedData(isVirtualScrollAction?: boolean): void;
16
+ refreshProcessedData(isVirtualScrollAction?: boolean, dynamicEvents?: Record<string, any>[]): void;
17
17
  private refreshData;
18
18
  addEvent(eventData: Record<string, any> | Record<string, any>[]): void;
19
19
  saveEvent(eventData: Record<string, any> | Record<string, any>[], action: CurrentAction): void;
@@ -62,7 +62,7 @@ var Crud = /** @class */ (function () {
62
62
  }
63
63
  this.parent.trigger(events.actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });
64
64
  };
65
- Crud.prototype.refreshProcessedData = function (isVirtualScrollAction) {
65
+ Crud.prototype.refreshProcessedData = function (isVirtualScrollAction, dynamicEvents) {
66
66
  if (isVirtualScrollAction === void 0) { isVirtualScrollAction = false; }
67
67
  if (this.parent.dragAndDropModule) {
68
68
  this.parent.dragAndDropModule.actionObj.action = '';
@@ -86,7 +86,7 @@ var Crud = /** @class */ (function () {
86
86
  }
87
87
  }
88
88
  if (isVirtualScrollAction) {
89
- this.parent.notify(events.dataReady, { processedData: this.parent.eventsProcessed });
89
+ this.parent.notify(events.dataReady, { processedData: dynamicEvents ? this.parent.eventBase.processData(dynamicEvents) : this.parent.eventsProcessed });
90
90
  return;
91
91
  }
92
92
  var eventsData = this.parent.eventsData || [];
@@ -252,6 +252,8 @@ var Crud = /** @class */ (function () {
252
252
  editParams.changedRecords.push(event_4);
253
253
  promise = _this.parent.dataModule.dataManager.update(fields.id, event_4, _this.getTable(), _this.getQuery());
254
254
  }
255
+ var cloneEvent = extend({}, saveArgs.changedRecords[saveArgs.changedRecords.length - 1], null, true);
256
+ _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);
255
257
  var crudArgs = {
256
258
  requestType: 'eventChanged', cancel: false,
257
259
  data: saveArgs.changedRecords, promise: promise, editParams: editParams
@@ -338,7 +340,8 @@ var Crud = /** @class */ (function () {
338
340
  }
339
341
  var updateEvents = (eventData instanceof Array) ? eventData : [eventData];
340
342
  var args = {
341
- requestType: action === 'EditOccurrence' ? 'eventChange' : 'eventRemove', cancel: false,
343
+ requestType: action === 'EditOccurrence' ? 'eventChange' : 'eventRemove',
344
+ cancel: false,
342
345
  addedRecords: [], changedRecords: updateEvents, deletedRecords: []
343
346
  };
344
347
  args.data = occurrenceData;
@@ -386,7 +389,8 @@ var Crud = /** @class */ (function () {
386
389
  _loop_2(a, count);
387
390
  }
388
391
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());
389
- _this.parent.eventBase.selectWorkCellByTime(occurrenceArgs.changedRecords);
392
+ var cloneEvent = extend({}, occurrenceArgs.changedRecords[occurrenceArgs.changedRecords.length - 1], null, true);
393
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditOccurrence' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
390
394
  var crudArgs = {
391
395
  requestType: action === 'EditOccurrence' ? 'eventChanged' : 'eventRemoved',
392
396
  cancel: false, data: isDeletedRecords ? occurrenceArgs.deletedRecords : occurrenceArgs.changedRecords,
@@ -463,7 +467,8 @@ var Crud = /** @class */ (function () {
463
467
  _loop_3(a, count);
464
468
  }
465
469
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_1.id, _this.getTable(), _this.getQuery());
466
- _this.parent.eventBase.selectWorkCellByTime(followArgs.changedRecords);
470
+ var cloneEvent = extend({}, followArgs.changedRecords[followArgs.changedRecords.length - 1], null, true);
471
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditFollowingEvents' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
467
472
  var crudArgs = {
468
473
  requestType: action === 'EditFollowingEvents' ? 'eventChanged' : 'eventRemoved',
469
474
  cancel: false, data: followArgs.changedRecords, promise: promise, editParams: editParams
@@ -531,7 +536,8 @@ var Crud = /** @class */ (function () {
531
536
  _loop_4(a, count);
532
537
  }
533
538
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_2.id, _this.getTable(), _this.getQuery());
534
- _this.parent.eventBase.selectWorkCellByTime(seriesArgs.changedRecords);
539
+ var cloneEvent = extend({}, seriesArgs.changedRecords[seriesArgs.changedRecords.length - 1], null, true);
540
+ _this.parent.eventBase.selectWorkCellByTime(action === 'EditSeries' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);
535
541
  var crudArgs = {
536
542
  requestType: action === 'EditSeries' ? 'eventChanged' : 'eventRemoved',
537
543
  cancel: false, data: isDeletedRecords ? seriesArgs.deletedRecords : seriesArgs.changedRecords,
@@ -592,6 +598,7 @@ var Crud = /** @class */ (function () {
592
598
  _loop_5(a, count);
593
599
  }
594
600
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_3.id, _this.getTable(), _this.getQuery());
601
+ _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);
595
602
  var crudArgs = {
596
603
  requestType: 'eventRemoved', cancel: false, data: deleteArgs.deletedRecords, promise: promise, editParams: editParams
597
604
  };
@@ -635,6 +642,8 @@ var Crud = /** @class */ (function () {
635
642
  }
636
643
  }
637
644
  var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());
645
+ var cloneEvent = extend({}, editArgs.changedRecords[editArgs.changedRecords.length - 1], null, true);
646
+ _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);
638
647
  var crudArgs = { requestType: 'eventChanged', cancel: false, data: editArgs.changedRecords, promise: promise, editParams: editParams };
639
648
  _this.refreshData(crudArgs);
640
649
  }
@@ -649,6 +658,10 @@ var Crud = /** @class */ (function () {
649
658
  return parentEvent;
650
659
  };
651
660
  Crud.prototype.excludeDateCheck = function (eventStartTime, exceptionDateList) {
661
+ var timezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();
662
+ if (timezone) {
663
+ eventStartTime = this.parent.tzModule.remove(new Date(+eventStartTime.getTime()), timezone);
664
+ }
652
665
  var exDate = getRecurrenceStringFromDate(eventStartTime);
653
666
  if (!isNullOrUndefined(exceptionDateList)) {
654
667
  if (exceptionDateList.indexOf(exDate) === -1) {
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { Query, DataManager, Predicate } from '@syncfusion/ej2-data';
3
+ import { isNullOrUndefined } from '@syncfusion/ej2-base';
3
4
  /**
4
5
  * data module is used to generate query and data source.
5
6
  *
@@ -40,15 +41,35 @@ var Data = /** @class */ (function () {
40
41
  */
41
42
  Data.prototype.generateQuery = function (startDate, endDate) {
42
43
  var query = this.query.clone();
43
- if (this.parent && this.parent.eventSettings.includeFiltersInQuery && startDate && endDate) {
44
- var dateQuery = this.getStartEndQuery(startDate, endDate);
45
- var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));
46
- return query.where(dateQuery.or(recurrenceQuery));
47
- }
48
- if (startDate) {
44
+ if (this.parent && startDate && endDate) {
45
+ if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading &&
46
+ !isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&
47
+ this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase &&
48
+ this.parent.resourceBase.resourceCollection.length > 0 && this.parent.resourceBase.renderedResources.length > 0) {
49
+ var resIdCollection_1 = [];
50
+ this.parent.resourceBase.resourceCollection.forEach(function () { return resIdCollection_1.push([]); });
51
+ this.parent.resourceBase.renderedResources.forEach(function (resource) {
52
+ resIdCollection_1.forEach(function (resId, index) {
53
+ var groupId = resource.groupOrder[parseInt(index.toString(), 10)];
54
+ if (groupId && resId.indexOf(groupId) < 0) {
55
+ resId.push(groupId);
56
+ }
57
+ });
58
+ });
59
+ this.parent.resourceBase.resourceCollection.forEach(function (resource, index) {
60
+ query.addParams(resource.field, resIdCollection_1[parseInt(index.toString(), 10)].toString());
61
+ });
62
+ }
63
+ if (this.parent.timezone) {
64
+ startDate = this.parent.tzModule.remove(new Date(+startDate.getTime()), this.parent.timezone);
65
+ endDate = this.parent.tzModule.remove(new Date(+endDate.getTime()), this.parent.timezone);
66
+ }
67
+ if (this.parent.eventSettings.includeFiltersInQuery) {
68
+ var dateQuery = this.getStartEndQuery(startDate, endDate);
69
+ var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));
70
+ return query.where(dateQuery.or(recurrenceQuery));
71
+ }
49
72
  query.addParams('StartDate', startDate.toISOString());
50
- }
51
- if (endDate) {
52
73
  query.addParams('EndDate', endDate.toISOString());
53
74
  }
54
75
  return query;
@@ -211,6 +211,10 @@ var KeyboardInteraction = /** @class */ (function () {
211
211
  }
212
212
  var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;
213
213
  var target = closest(e.target, queryStr);
214
+ var selectedCells = this.parent.getSelectedCells();
215
+ if (selectedCells.length > 0 && selectedCells.indexOf(target) === -1) {
216
+ target = selectedCells[selectedCells.length - 1];
217
+ }
214
218
  if (this.parent.currentView === 'TimelineYear' && target.classList.contains(cls.OTHERMONTH_CLASS)) {
215
219
  return;
216
220
  }
@@ -219,7 +223,6 @@ var KeyboardInteraction = /** @class */ (function () {
219
223
  if (this.parent.eventWindow) {
220
224
  this.parent.eventWindow.convertToEventData(this.parent.activeCellsData, cellData);
221
225
  }
222
- var selectedCells = this.parent.getSelectedCells();
223
226
  var args = {
224
227
  data: cellData, element: this.parent.activeCellsData.element, event: e,
225
228
  requestType: cellSelect, showQuickPopup: false
@@ -26,6 +26,7 @@ export declare class VirtualScroll {
26
26
  private renderEvents;
27
27
  virtualScrolling(): void;
28
28
  private horizontalScrolling;
29
+ private triggerScrollEvent;
29
30
  private upScroll;
30
31
  private downScroll;
31
32
  private leftScroll;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement, prepend } from '@syncfusion/ej2-base';
2
3
  import * as events from '../base/constant';
3
4
  import * as cls from '../base/css-constant';
@@ -89,6 +90,16 @@ var VirtualScroll = /** @class */ (function () {
89
90
  };
90
91
  VirtualScroll.prototype.renderEvents = function () {
91
92
  this.setTabIndex();
93
+ var dynamicData = this.triggerScrollEvent(events.virtualScrollStop);
94
+ if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading && this.parent.crudModule) {
95
+ if (dynamicData.length > 0) {
96
+ this.parent.crudModule.refreshProcessedData(true, dynamicData);
97
+ this.parent.hideSpinner();
98
+ return;
99
+ }
100
+ this.parent.crudModule.refreshDataManager();
101
+ return;
102
+ }
92
103
  if (this.parent.crudModule) {
93
104
  this.parent.crudModule.refreshProcessedData(true);
94
105
  }
@@ -125,7 +136,7 @@ var VirtualScroll = /** @class */ (function () {
125
136
  resCollection = this.downScroll(conWrap, firstTDIndex);
126
137
  }
127
138
  if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
128
- this.parent.showSpinner();
139
+ this.triggerScrollEvent(events.virtualScrollStart);
129
140
  var selectedEle = this.parent.getSelectedCells();
130
141
  this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
131
142
  this.updateContent(resWrap, conWrap, eventWrap, resCollection);
@@ -153,7 +164,7 @@ var VirtualScroll = /** @class */ (function () {
153
164
  this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||
154
165
  this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==
155
166
  resCollection[resCollection.length - 1]) {
156
- this.parent.showSpinner();
167
+ this.triggerScrollEvent(events.virtualScrollStart);
157
168
  var colLevels = this.parent.activeView.colLevels.slice(0);
158
169
  this.updateHorizontalContent(conWrap, resCollection);
159
170
  setStyleAttribute(conWrap.querySelector('table'), { transform: "translateX(" + this.translateY + "px)" });
@@ -166,6 +177,30 @@ var VirtualScroll = /** @class */ (function () {
166
177
  this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
167
178
  }
168
179
  };
180
+ VirtualScroll.prototype.triggerScrollEvent = function (action) {
181
+ var _this = this;
182
+ var dynamicData = [];
183
+ if (!this.parent.activeView) {
184
+ return dynamicData;
185
+ }
186
+ var eventArgs = {
187
+ startDate: this.parent.activeView.startDate(),
188
+ endDate: this.parent.activeView.endDate(),
189
+ startIndex: this.parent.resourceBase.renderedResources[0].groupIndex,
190
+ endIndex: this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex,
191
+ resourceData: this.parent.resourceBase.renderedResources.map(function (x) { return x.resourceData; }),
192
+ name: action
193
+ };
194
+ this.parent.trigger(action, eventArgs, function (args) {
195
+ if (action === events.virtualScrollStart) {
196
+ _this.parent.showSpinner();
197
+ }
198
+ else if (action === events.virtualScrollStop && !isNullOrUndefined(args.eventData) && args.eventData.length > 0) {
199
+ dynamicData = args.eventData;
200
+ }
201
+ });
202
+ return dynamicData;
203
+ };
169
204
  VirtualScroll.prototype.upScroll = function (conWrap, firstTDIndex) {
170
205
  var index = 0;
171
206
  index = (~~(conWrap.scrollTop / this.itemSize) + Math.ceil(conWrap.clientHeight / this.itemSize)) - this.renderedLength;
@@ -49,6 +49,10 @@ export declare const resizeStop: string;
49
49
  export declare const inlineClick: string;
50
50
  /** @private */
51
51
  export declare const cellSelect: string;
52
+ /** @private */
53
+ export declare const virtualScrollStart: string;
54
+ /** @private */
55
+ export declare const virtualScrollStop: string;
52
56
  /**
53
57
  * Specifies schedule internal events
54
58
  */
@@ -49,6 +49,10 @@ export var resizeStop = 'resizeStop';
49
49
  export var inlineClick = 'inlineClick';
50
50
  /** @private */
51
51
  export var cellSelect = 'cellSelect';
52
+ /** @private */
53
+ export var virtualScrollStart = 'virtualScrollStart';
54
+ /** @private */
55
+ export var virtualScrollStop = 'virtualScrollStop';
52
56
  /**
53
57
  * Specifies schedule internal events
54
58
  */
@@ -248,6 +248,21 @@ export interface DragEventArgs extends BaseEventArgs {
248
248
  /** Defines the date range navigation action while dragging. */
249
249
  navigation?: NavigateOptions;
250
250
  }
251
+ /** An interface that holds options of virtual scroll action. */
252
+ export interface ScrollEventArgs extends BaseEventArgs {
253
+ /** Returns the group index of last resource which is currently being rendered. */
254
+ endIndex: number;
255
+ /** Returns the end date from the active view of scheduler. */
256
+ endDate: Date;
257
+ /** Returns the group index of first resource which is currently being rendered. */
258
+ startIndex: number;
259
+ /** Returns the start date from the active view of scheduler. */
260
+ startDate: Date;
261
+ /** Returns the resource data collection which is currently rendered. */
262
+ resourceData: Record<string, any>[];
263
+ /** Allows to define the event data collection that needs to be rendered on every virtual scroll action only when enableLazyLoading property is enabled. */
264
+ eventData?: Record<string, any>[];
265
+ }
251
266
  /** An interface that holds options to control the navigation, while performing drag action on appointments. */
252
267
  export interface NavigateOptions {
253
268
  /** Allows to enable or disable the auto navigation while performing drag action on appointments. */
@@ -337,6 +337,7 @@ var ResourceBase = /** @class */ (function () {
337
337
  nodeClicked: this.resourceClick.bind(this),
338
338
  created: this.resourceTreeCreated.bind(this)
339
339
  });
340
+ this.treeViewObj.root = this.parent.root ? this.parent.root : this.parent;
340
341
  this.treeViewObj.appendTo(resourceTree);
341
342
  this.treeViewObj.expandAll();
342
343
  this.treePopup = new Popup(treeWrapper, {
@@ -1,4 +1,4 @@
1
- import { Component, ModuleDeclaration, Property, Event, Animation, Collection, append } from '@syncfusion/ej2-base';import { EventHandler, EmitType, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';import { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, INotifyPropertyChanged, Complex } from '@syncfusion/ej2-base';import { getElement, removeClass, addClass, classList, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';import { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';import { HeaderRenderer } from '../renderer/header-renderer';import { Scroll } from '../actions/scroll';import { ScheduleTouch } from '../actions/touch';import { KeyboardInteraction } from '../actions/keyboard';import { Data } from '../actions/data';import { View, CurrentAction, ReturnType, WeekRule } from '../base/type';import { EventBase } from '../event-renderer/event-base';import { InlineEdit } from '../event-renderer/inline-edit';import { QuickPopups } from '../popups/quick-popups';import { EventTooltip } from '../popups/event-tooltip';import { EventWindow } from '../popups/event-window';import { Render } from '../renderer/renderer';import { Day } from '../renderer/day';import { Week } from '../renderer/week';import { WorkWeek } from '../renderer/work-week';import { Month } from '../renderer/month';import { Year } from '../renderer/year';import { Agenda } from '../renderer/agenda';import { MonthAgenda } from '../renderer/month-agenda';import { TimelineViews } from '../renderer/timeline-view';import { TimelineMonth } from '../renderer/timeline-month';import { TimelineYear } from '../renderer/timeline-year';import { WorkHours } from '../models/work-hours';import { TimeScale } from '../models/time-scale';import { QuickInfoTemplates } from '../models/quick-info-templates';import { HeaderRows } from '../models/header-rows';import { Crud } from '../actions/crud';import { Resize } from '../actions/resize';import { DragAndDrop } from '../actions/drag';import { VirtualScroll } from '../actions/virtual-scroll';import { WorkCellInteraction } from '../actions/work-cells';import { WorkHoursModel, ViewsModel, EventSettingsModel, GroupModel, ResourcesModel, TimeScaleModel } from '../models/models';import { QuickInfoTemplatesModel, HeaderRowsModel } from '../models/models';import { EventSettings } from '../models/event-settings';import { Group } from '../models/group';import { Resources } from '../models/resources';import { ICalendarExport } from '../exports/calendar-export';import { ICalendarImport } from '../exports/calendar-import';import { ExcelExport } from '../exports/excel-export';import { Print } from '../exports/print';import { IRenderer, ActionEventArgs, NavigatingEventArgs, CellClickEventArgs, RenderCellEventArgs, ScrollCss, TimezoneFields } from '../base/interface';import { EventClickArgs, EventRenderedArgs, PopupOpenEventArgs, UIStateArgs, DragEventArgs, ResizeEventArgs } from '../base/interface';import { EventFieldsMapping, TdData, ResourceDetails, ResizeEdges, StateArgs, ExportOptions, SelectEventArgs } from '../base/interface';import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, CallbackFunction } from '../base/interface';import { CalendarUtil, Gregorian, Islamic, CalendarType } from '../../common/calendar-util';import { ResourceBase } from '../base/resource';import { Timezone, timezoneData } from '../timezone/timezone';import { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';import * as events from '../base/constant';import * as cls from '../base/css-constant';import * as util from '../base/util';
1
+ import { Component, ModuleDeclaration, Property, Event, Animation, Collection, append } from '@syncfusion/ej2-base';import { EventHandler, EmitType, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';import { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, INotifyPropertyChanged, Complex } from '@syncfusion/ej2-base';import { getElement, removeClass, addClass, classList, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';import { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';import { HeaderRenderer } from '../renderer/header-renderer';import { Scroll } from '../actions/scroll';import { ScheduleTouch } from '../actions/touch';import { KeyboardInteraction } from '../actions/keyboard';import { Data } from '../actions/data';import { View, CurrentAction, ReturnType, WeekRule } from '../base/type';import { EventBase } from '../event-renderer/event-base';import { InlineEdit } from '../event-renderer/inline-edit';import { QuickPopups } from '../popups/quick-popups';import { EventTooltip } from '../popups/event-tooltip';import { EventWindow } from '../popups/event-window';import { Render } from '../renderer/renderer';import { Day } from '../renderer/day';import { Week } from '../renderer/week';import { WorkWeek } from '../renderer/work-week';import { Month } from '../renderer/month';import { Year } from '../renderer/year';import { Agenda } from '../renderer/agenda';import { MonthAgenda } from '../renderer/month-agenda';import { TimelineViews } from '../renderer/timeline-view';import { TimelineMonth } from '../renderer/timeline-month';import { TimelineYear } from '../renderer/timeline-year';import { WorkHours } from '../models/work-hours';import { TimeScale } from '../models/time-scale';import { QuickInfoTemplates } from '../models/quick-info-templates';import { HeaderRows } from '../models/header-rows';import { Crud } from '../actions/crud';import { Resize } from '../actions/resize';import { DragAndDrop } from '../actions/drag';import { VirtualScroll } from '../actions/virtual-scroll';import { WorkCellInteraction } from '../actions/work-cells';import { WorkHoursModel, ViewsModel, EventSettingsModel, GroupModel, ResourcesModel, TimeScaleModel } from '../models/models';import { QuickInfoTemplatesModel, HeaderRowsModel } from '../models/models';import { EventSettings } from '../models/event-settings';import { Group } from '../models/group';import { Resources } from '../models/resources';import { ICalendarExport } from '../exports/calendar-export';import { ICalendarImport } from '../exports/calendar-import';import { ExcelExport } from '../exports/excel-export';import { Print } from '../exports/print';import { IRenderer, ActionEventArgs, NavigatingEventArgs, CellClickEventArgs, RenderCellEventArgs, ScrollCss, TimezoneFields } from '../base/interface';import { EventClickArgs, EventRenderedArgs, PopupOpenEventArgs, UIStateArgs, DragEventArgs, ResizeEventArgs } from '../base/interface';import { EventFieldsMapping, TdData, ResourceDetails, ResizeEdges, StateArgs, ExportOptions, SelectEventArgs } from '../base/interface';import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, ScrollEventArgs, CallbackFunction } from '../base/interface';import { CalendarUtil, Gregorian, Islamic, CalendarType } from '../../common/calendar-util';import { ResourceBase } from '../base/resource';import { Timezone, timezoneData } from '../timezone/timezone';import { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';import * as events from '../base/constant';import * as cls from '../base/css-constant';import * as util from '../base/util';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -477,6 +477,30 @@ export interface ScheduleModel extends ComponentModel{
477
477
  */
478
478
  editorTemplate?: string | Function;
479
479
 
480
+ /**
481
+ * The template option to render the customized header of the editor window.
482
+ *
483
+ *
484
+ * @default null
485
+ * @angularType string | object
486
+ * @reactType string | function | JSX.Element
487
+ * @vueType string | function
488
+ * @aspType string
489
+ */
490
+ editorHeaderTemplate?: string | Function;
491
+
492
+ /**
493
+ * The template option to render the customized footer of the editor window.
494
+ *
495
+ *
496
+ * @default null
497
+ * @angularType string | object
498
+ * @reactType string | function | JSX.Element
499
+ * @vueType string | function
500
+ * @aspType string
501
+ */
502
+ editorFooterTemplate?: string | Function;
503
+
480
504
  /**
481
505
  * The template option to customize the quick window. The three sections of the quick popup whereas the header, content,
482
506
  * and footer can be easily customized with individual template option.
@@ -681,8 +705,6 @@ export interface ScheduleModel extends ComponentModel{
681
705
  /**
682
706
  * Triggers on beginning of every scheduler action.
683
707
  *
684
- * {% codeBlock src='schedule/actionBegin/index.md' %}{% endcodeBlock %}
685
- *
686
708
  * @event 'actionBegin'
687
709
  */
688
710
  actionBegin?: EmitType<ActionEventArgs>;
@@ -690,8 +712,6 @@ export interface ScheduleModel extends ComponentModel{
690
712
  /**
691
713
  * Triggers on successful completion of the scheduler actions.
692
714
  *
693
- * {% codeBlock src='schedule/actionComplete/index.md' %}{% endcodeBlock %}
694
- *
695
715
  * @event 'actionComplete'
696
716
  */
697
717
  actionComplete?: EmitType<ActionEventArgs>;
@@ -699,8 +719,6 @@ export interface ScheduleModel extends ComponentModel{
699
719
  /**
700
720
  * Triggers when a scheduler action gets failed or interrupted and an error information will be returned.
701
721
  *
702
- * {% codeBlock src='schedule/actionFailure/index.md' %}{% endcodeBlock %}
703
- *
704
722
  * @event 'actionFailure'
705
723
  */
706
724
  actionFailure?: EmitType<ActionEventArgs>;
@@ -708,8 +726,6 @@ export interface ScheduleModel extends ComponentModel{
708
726
  /**
709
727
  * Triggers before the date or view navigation takes place on scheduler.
710
728
  *
711
- * {% codeBlock src='schedule/navigating/index.md' %}{% endcodeBlock %}
712
- *
713
729
  * @event 'navigating'
714
730
  */
715
731
  navigating?: EmitType<NavigatingEventArgs>;
@@ -717,8 +733,6 @@ export interface ScheduleModel extends ComponentModel{
717
733
  /**
718
734
  * Triggers before each element of the schedule rendering on the page.
719
735
  *
720
- * {% codeBlock src='schedule/renderCell/index.md' %}{% endcodeBlock %}
721
- *
722
736
  * @event 'renderCell'
723
737
  */
724
738
  renderCell?: EmitType<RenderCellEventArgs>;
@@ -726,8 +740,6 @@ export interface ScheduleModel extends ComponentModel{
726
740
  /**
727
741
  * Triggers when the events are single clicked or on single tapping the events on the mobile devices.
728
742
  *
729
- * {% codeBlock src='schedule/eventClick/index.md' %}{% endcodeBlock %}
730
- *
731
743
  * @event 'eventClick'
732
744
  */
733
745
  eventClick?: EmitType<EventClickArgs>;
@@ -735,8 +747,6 @@ export interface ScheduleModel extends ComponentModel{
735
747
  /**
736
748
  * Triggers before each of the event getting rendered on the scheduler user interface.
737
749
  *
738
- * {% codeBlock src='schedule/eventRendered/index.md' %}{% endcodeBlock %}
739
- *
740
750
  * @event 'eventRendered'
741
751
  */
742
752
  eventRendered?: EmitType<EventRenderedArgs>;
@@ -744,8 +754,6 @@ export interface ScheduleModel extends ComponentModel{
744
754
  /**
745
755
  * Triggers before the data binds to the scheduler.
746
756
  *
747
- * {% codeBlock src='schedule/dataBinding/index.md' %}{% endcodeBlock %}
748
- *
749
757
  * @event 'dataBinding'
750
758
  */
751
759
  dataBinding?: EmitType<ReturnType>;
@@ -753,8 +761,6 @@ export interface ScheduleModel extends ComponentModel{
753
761
  /**
754
762
  * Triggers before any of the scheduler popups opens on the page.
755
763
  *
756
- * {% codeBlock src='schedule/popupOpen/index.md' %}{% endcodeBlock %}
757
- *
758
764
  * @event 'popupOpen'
759
765
  */
760
766
  popupOpen?: EmitType<PopupOpenEventArgs>;
@@ -762,8 +768,6 @@ export interface ScheduleModel extends ComponentModel{
762
768
  /**
763
769
  * Triggers before any of the scheduler popups close on the page.
764
770
  *
765
- * {% codeBlock src='schedule/popupClose/index.md' %}{% endcodeBlock %}
766
- *
767
771
  * @event 'popupClose'
768
772
  */
769
773
  popupClose?: EmitType<PopupCloseEventArgs>;
@@ -771,8 +775,6 @@ export interface ScheduleModel extends ComponentModel{
771
775
  /**
772
776
  * Triggers when an appointment is started to drag.
773
777
  *
774
- * {% codeBlock src='schedule/dragStart/index.md' %}{% endcodeBlock %}
775
- *
776
778
  * @event 'dragStart'
777
779
  */
778
780
  dragStart?: EmitType<DragEventArgs>;
@@ -780,8 +782,6 @@ export interface ScheduleModel extends ComponentModel{
780
782
  /**
781
783
  * Triggers when an appointment is being in a dragged state.
782
784
  *
783
- * {% codeBlock src='schedule/drag/index.md' %}{% endcodeBlock %}
784
- *
785
785
  * @event 'drag'
786
786
  */
787
787
  drag?: EmitType<DragEventArgs>;
@@ -789,8 +789,6 @@ export interface ScheduleModel extends ComponentModel{
789
789
  /**
790
790
  * Triggers when the dragging of appointment is stopped.
791
791
  *
792
- * {% codeBlock src='schedule/dragStop/index.md' %}{% endcodeBlock %}
793
- *
794
792
  * @event 'dragStop'
795
793
  */
796
794
  dragStop?: EmitType<DragEventArgs>;
@@ -798,8 +796,6 @@ export interface ScheduleModel extends ComponentModel{
798
796
  /**
799
797
  * Triggers when an appointment is started to resize.
800
798
  *
801
- * {% codeBlock src='schedule/resizeStart/index.md' %}{% endcodeBlock %}
802
- *
803
799
  * @event 'resizeStart'
804
800
  */
805
801
  resizeStart?: EmitType<ResizeEventArgs>;
@@ -807,8 +803,6 @@ export interface ScheduleModel extends ComponentModel{
807
803
  /**
808
804
  * Triggers when an appointment is being in a resizing action.
809
805
  *
810
- * {% codeBlock src='schedule/resizing/index.md' %}{% endcodeBlock %}
811
- *
812
806
  * @event 'resizing'
813
807
  */
814
808
  resizing?: EmitType<ResizeEventArgs>;
@@ -816,16 +810,28 @@ export interface ScheduleModel extends ComponentModel{
816
810
  /**
817
811
  * Triggers when the resizing of appointment is stopped.
818
812
  *
819
- * {% codeBlock src='schedule/resizeStop/index.md' %}{% endcodeBlock %}
820
- *
821
813
  * @event 'resizeStop'
822
814
  */
823
815
  resizeStop?: EmitType<ResizeEventArgs>;
824
816
 
825
817
  /**
826
- * Triggers once the event data is bound to the scheduler.
818
+ * Triggers when the scroll action is started.
819
+ * This event triggers only when `allowVirtualScrolling` or `enableLazyLoading` properties are enabled along with resource grouping.
827
820
  *
828
- * {% codeBlock src='schedule/dataBound/index.md' %}{% endcodeBlock %}
821
+ * @event 'virtualScrollStart'
822
+ */
823
+ virtualScrollStart?: EmitType<ScrollEventArgs>;
824
+
825
+ /**
826
+ * Triggers when the scroll action is stopped.
827
+ * This event triggers only when `allowVirtualScrolling` or `enableLazyLoading` properties are enabled along with resource grouping.
828
+ *
829
+ * @event 'virtualScrollStop'
830
+ */
831
+ virtualScrollStop?: EmitType<ScrollEventArgs>;
832
+
833
+ /**
834
+ * Triggers once the event data is bound to the scheduler.
829
835
  *
830
836
  * @event 'dataBound'
831
837
  */