@syncfusion/ej2-schedule 24.2.4 → 25.1.35

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 (90) hide show
  1. package/CHANGELOG.md +16 -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 +131 -59
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +131 -58
  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.js +6 -0
  14. package/src/schedule/actions/drag.js +3 -3
  15. package/src/schedule/actions/keyboard.d.ts +1 -0
  16. package/src/schedule/actions/keyboard.js +11 -4
  17. package/src/schedule/actions/resize.js +22 -21
  18. package/src/schedule/actions/virtual-scroll.js +4 -0
  19. package/src/schedule/base/interface.d.ts +1 -0
  20. package/src/schedule/base/schedule.d.ts +4 -1
  21. package/src/schedule/base/schedule.js +16 -1
  22. package/src/schedule/base/util.d.ts +21 -0
  23. package/src/schedule/base/util.js +29 -2
  24. package/src/schedule/event-renderer/event-base.d.ts +0 -1
  25. package/src/schedule/event-renderer/event-base.js +0 -3
  26. package/src/schedule/event-renderer/inline-edit.js +1 -1
  27. package/src/schedule/event-renderer/month.js +2 -2
  28. package/src/schedule/event-renderer/timeline-view.js +5 -5
  29. package/src/schedule/event-renderer/vertical-view.js +1 -1
  30. package/src/schedule/event-renderer/year.js +3 -3
  31. package/src/schedule/popups/quick-popups.js +11 -0
  32. package/src/schedule/renderer/renderer.js +11 -3
  33. package/src/schedule/renderer/timeline-view.d.ts +0 -1
  34. package/src/schedule/renderer/timeline-view.js +3 -6
  35. package/src/schedule/renderer/vertical-view.js +1 -1
  36. package/src/schedule/renderer/view-base.js +1 -1
  37. package/styles/bootstrap-dark.css +51 -2
  38. package/styles/bootstrap.css +51 -2
  39. package/styles/bootstrap4.css +48 -3
  40. package/styles/bootstrap5-dark.css +48 -3
  41. package/styles/bootstrap5.css +48 -3
  42. package/styles/fabric-dark.css +47 -2
  43. package/styles/fabric.css +47 -2
  44. package/styles/fluent-dark.css +52 -2
  45. package/styles/fluent.css +52 -2
  46. package/styles/highcontrast-light.css +47 -2
  47. package/styles/highcontrast.css +47 -2
  48. package/styles/material-dark.css +47 -2
  49. package/styles/material.css +47 -2
  50. package/styles/material3-dark.css +48 -3
  51. package/styles/material3.css +48 -3
  52. package/styles/recurrence-editor/_bds-definition.scss +15 -0
  53. package/styles/schedule/_bds-definition.scss +287 -0
  54. package/styles/schedule/_bootstrap-dark-definition.scss +1 -0
  55. package/styles/schedule/_bootstrap-definition.scss +1 -0
  56. package/styles/schedule/_bootstrap4-definition.scss +2 -1
  57. package/styles/schedule/_bootstrap5-definition.scss +2 -1
  58. package/styles/schedule/_fabric-dark-definition.scss +1 -0
  59. package/styles/schedule/_fabric-definition.scss +1 -0
  60. package/styles/schedule/_fluent-definition.scss +1 -0
  61. package/styles/schedule/_fusionnew-definition.scss +2 -1
  62. package/styles/schedule/_highcontrast-definition.scss +1 -0
  63. package/styles/schedule/_highcontrast-light-definition.scss +1 -0
  64. package/styles/schedule/_layout.scss +60 -1
  65. package/styles/schedule/_material-dark-definition.scss +1 -0
  66. package/styles/schedule/_material-definition.scss +1 -0
  67. package/styles/schedule/_material3-definition.scss +2 -1
  68. package/styles/schedule/_tailwind-definition.scss +2 -1
  69. package/styles/schedule/bootstrap-dark.css +51 -2
  70. package/styles/schedule/bootstrap.css +51 -2
  71. package/styles/schedule/bootstrap4.css +48 -3
  72. package/styles/schedule/bootstrap5-dark.css +48 -3
  73. package/styles/schedule/bootstrap5.css +48 -3
  74. package/styles/schedule/fabric-dark.css +47 -2
  75. package/styles/schedule/fabric.css +47 -2
  76. package/styles/schedule/fluent-dark.css +52 -2
  77. package/styles/schedule/fluent.css +52 -2
  78. package/styles/schedule/highcontrast-light.css +47 -2
  79. package/styles/schedule/highcontrast.css +47 -2
  80. package/styles/schedule/icons/_bds.scss +235 -0
  81. package/styles/schedule/material-dark.css +47 -2
  82. package/styles/schedule/material.css +47 -2
  83. package/styles/schedule/material3-dark.css +48 -3
  84. package/styles/schedule/material3.css +48 -3
  85. package/styles/schedule/tailwind-dark.css +48 -3
  86. package/styles/schedule/tailwind.css +48 -3
  87. package/styles/tailwind-dark.css +48 -3
  88. package/styles/tailwind.css +48 -3
  89. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -63
  90. package/.github/PULL_REQUEST_TEMPLATE/Feature.md +0 -39
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 24.2.4
3
+ * version : 25.1.35
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. 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@24.2.3",
3
+ "_id": "@syncfusion/ej2-schedule@22.9.0",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-Gl514rzz50QthXreUYNs3USTKmeufyBVrP23DMVahPJiR8tVS8350GXUgGOhvsVaHn5NmtgDvqcqB3StCeJZxw==",
5
+ "_integrity": "sha512-HgWYJsJtHsRwZLq9VMWjqS/mOk6zZlOZ4oCvazTD0KeKLwl5mimeKns07gIPbz0pY8yWKHLOwt2tvzjYxIi23A==",
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-24.2.3.tgz",
27
- "_shasum": "68cf18dacb39bf44d0164f3b73fdb185aae9fbd4",
26
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-release/@syncfusion/ej2-schedule/-/ej2-schedule-22.9.0.tgz",
27
+ "_shasum": "35f485e5f3e388697c615f38881aa98e3965b071",
28
28
  "_spec": "@syncfusion/ej2-schedule@*",
29
- "_where": "/jenkins/workspace/elease-automation_release_24.1.1/packages/included",
29
+ "_where": "/jenkins/workspace/elease-automation_release_25.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": "~24.2.3",
39
- "@syncfusion/ej2-buttons": "~24.2.3",
40
- "@syncfusion/ej2-calendars": "~24.2.3",
41
- "@syncfusion/ej2-data": "~24.2.3",
42
- "@syncfusion/ej2-dropdowns": "~24.2.4",
43
- "@syncfusion/ej2-excel-export": "~24.2.4",
44
- "@syncfusion/ej2-inputs": "~24.2.4",
45
- "@syncfusion/ej2-lists": "~24.2.4",
46
- "@syncfusion/ej2-navigations": "~24.2.4",
47
- "@syncfusion/ej2-popups": "~24.2.3"
38
+ "@syncfusion/ej2-base": "~25.1.35",
39
+ "@syncfusion/ej2-buttons": "~25.1.35",
40
+ "@syncfusion/ej2-calendars": "~25.1.35",
41
+ "@syncfusion/ej2-data": "~25.1.35",
42
+ "@syncfusion/ej2-dropdowns": "~25.1.35",
43
+ "@syncfusion/ej2-excel-export": "~25.1.35",
44
+ "@syncfusion/ej2-inputs": "~25.1.35",
45
+ "@syncfusion/ej2-lists": "~25.1.35",
46
+ "@syncfusion/ej2-navigations": "~25.1.35",
47
+ "@syncfusion/ej2-popups": "~25.1.35"
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": "24.2.4",
76
+ "version": "25.1.35",
77
77
  "sideEffects": false
78
78
  }
@@ -29,6 +29,12 @@ var Crud = /** @class */ (function () {
29
29
  if (!this.parent.activeView) {
30
30
  return;
31
31
  }
32
+ if (this.parent.uiStateValues && this.parent.uiStateValues.isPreventEventRefresh) {
33
+ this.parent.uiStateValues.isPreventEventRefresh = false;
34
+ this.parent.refreshEvents(false);
35
+ this.parent.hideSpinner();
36
+ return;
37
+ }
32
38
  var start = this.parent.activeView.startDate();
33
39
  var end = this.parent.activeView.endDate();
34
40
  var dataManager = this.parent.dataModule.getData(this.parent.dataModule.generateQuery(start, end));
@@ -436,7 +436,7 @@ var DragAndDrop = /** @class */ (function (_super) {
436
436
  this.timelineEventModule.cellWidth = this.actionObj.cellWidth;
437
437
  this.timelineEventModule.getSlotDates();
438
438
  this.actionObj.cellWidth = this.isHeaderRows ? this.timelineEventModule.cellWidth :
439
- this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect().width;
439
+ util.getElementWidth(this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS));
440
440
  this.calculateTimelineTime(e);
441
441
  }
442
442
  else {
@@ -1255,7 +1255,7 @@ var DragAndDrop = /** @class */ (function (_super) {
1255
1255
  ~~(dragArea.querySelector('table').offsetHeight / trCollection.length) : this.actionObj.cellHeight;
1256
1256
  var rowIndex = Math.floor(Math.floor((this.actionObj.Y +
1257
1257
  (dragArea.scrollTop - translateY - (window.scrollY || window.pageYOffset))) -
1258
- dragArea.getBoundingClientRect().top) / rowHeight);
1258
+ util.getElementTop(dragArea)) / rowHeight);
1259
1259
  rowIndex = (rowIndex < 0) ? 0 : (rowIndex > trCollection.length - 1) ? trCollection.length - 1 : rowIndex;
1260
1260
  this.actionObj.index = rowIndex;
1261
1261
  var eventContainer = this.parent.element.querySelectorAll('.e-appointment-container:not(.e-hidden)').item(rowIndex);
@@ -1271,7 +1271,7 @@ var DragAndDrop = /** @class */ (function (_super) {
1271
1271
  if (!isNullOrUndefined(this.parent.eventDragArea)) {
1272
1272
  return;
1273
1273
  }
1274
- var top = trCollection[parseInt(rowIndex.toString(), 10)].getBoundingClientRect().height * rowIndex;
1274
+ var top = util.getElementHeight(trCollection[parseInt(rowIndex.toString(), 10)]) * rowIndex;
1275
1275
  if (this.parent.rowAutoHeight) {
1276
1276
  var cursorElement = this.getCursorElement(e);
1277
1277
  if (cursorElement) {
@@ -42,6 +42,7 @@ export declare class KeyboardInteraction {
42
42
  private getUniqueAppointmentElements;
43
43
  private getWorkCellFromAppointmentElement;
44
44
  private processViewNavigation;
45
+ private isCalendarTarget;
45
46
  private cancelUpDownAction;
46
47
  private processUp;
47
48
  private processDown;
@@ -558,6 +558,13 @@ var KeyboardInteraction = /** @class */ (function () {
558
558
  }
559
559
  }
560
560
  };
561
+ KeyboardInteraction.prototype.isCalendarTarget = function (e) {
562
+ var keyTarget = e.currentTarget || e.target;
563
+ if (keyTarget && !isNullOrUndefined(keyTarget.querySelector('.e-header-popup.e-popup-open'))) {
564
+ return true;
565
+ }
566
+ return false;
567
+ };
561
568
  KeyboardInteraction.prototype.cancelUpDownAction = function (isTimelineYear) {
562
569
  var isVerticalYear = isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical';
563
570
  var isGroup = this.parent.activeViewOptions.group.resources.length > 0;
@@ -571,7 +578,7 @@ var KeyboardInteraction = /** @class */ (function () {
571
578
  };
572
579
  KeyboardInteraction.prototype.processUp = function (e, isMultiple) {
573
580
  var isTimelineYear = this.parent.currentView === 'TimelineYear';
574
- if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {
581
+ if (isMultiple && this.cancelUpDownAction(isTimelineYear) || (this.isCalendarTarget(e))) {
575
582
  return;
576
583
  }
577
584
  var target = (e.target);
@@ -619,7 +626,7 @@ var KeyboardInteraction = /** @class */ (function () {
619
626
  };
620
627
  KeyboardInteraction.prototype.processDown = function (e, isMultiple) {
621
628
  var isTimelineYear = this.parent.currentView === 'TimelineYear';
622
- if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {
629
+ if (isMultiple && this.cancelUpDownAction(isTimelineYear) || (this.isCalendarTarget(e))) {
623
630
  return;
624
631
  }
625
632
  var target = (e.target);
@@ -729,7 +736,7 @@ var KeyboardInteraction = /** @class */ (function () {
729
736
  };
730
737
  KeyboardInteraction.prototype.processRight = function (e, isMultiple) {
731
738
  var isTimelineYear = this.parent.currentView === 'TimelineYear';
732
- if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {
739
+ if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear) || (this.isCalendarTarget(e))) {
733
740
  return;
734
741
  }
735
742
  var selectedCells = this.parent.getSelectedCells();
@@ -800,7 +807,7 @@ var KeyboardInteraction = /** @class */ (function () {
800
807
  };
801
808
  KeyboardInteraction.prototype.processLeft = function (e, isMultiple) {
802
809
  var isTimelineYear = this.parent.currentView === 'TimelineYear';
803
- if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {
810
+ if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear) || (this.isCalendarTarget(e))) {
804
811
  return;
805
812
  }
806
813
  var target = (e.target);
@@ -81,9 +81,9 @@ var Resize = /** @class */ (function (_super) {
81
81
  bottom: resizeTarget.classList.contains(cls.BOTTOM_RESIZE_HANDLER)
82
82
  };
83
83
  _this.actionObj.groupIndex = _this.parent.uiStateValues.isGroupAdaptive ? _this.parent.uiStateValues.groupIndex : 0;
84
- var workCell = _this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect();
85
- _this.actionObj.cellWidth = workCell.width;
86
- _this.actionObj.cellHeight = workCell.height;
84
+ var workCell = _this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);
85
+ _this.actionObj.cellWidth = util.getElementWidth(workCell);
86
+ _this.actionObj.cellHeight = util.getElementHeight(workCell);
87
87
  var hRows = _this.parent.activeViewOptions.headerRows.map(function (row) { return row.option; });
88
88
  if (_this.parent.activeView.isTimelineView() && hRows.length > 0 && ['Date', 'Hour'].indexOf(hRows.slice(-1)[0]) < 0) {
89
89
  var tr = _this.parent.getContentTable().querySelector('tr');
@@ -385,9 +385,9 @@ var Resize = /** @class */ (function (_super) {
385
385
  parseInt(this.actionObj.clone.style.left, 10);
386
386
  offsetValue = Math.round(offsetValue / this.actionObj.cellWidth) * this.actionObj.cellWidth;
387
387
  if (!isLeft) {
388
- offsetValue += (this.actionObj.clone.getBoundingClientRect().width - this.actionObj.cellWidth);
388
+ offsetValue += (util.getElementWidth(this.actionObj.clone) - this.actionObj.cellWidth);
389
389
  }
390
- cellIndex = Math.floor(offsetValue / Math.floor(tr.getBoundingClientRect().width / noOfDays));
390
+ cellIndex = Math.floor(offsetValue / Math.floor(util.getElementWidth(tr) / noOfDays));
391
391
  isDateHeader = isTimeViews && headerName === 'Date';
392
392
  cellIndex = isLeft ? cellIndex : isTimelineMonth ? cellIndex + 1 : cellIndex;
393
393
  isLastCell = cellIndex === tdCollections.length;
@@ -396,7 +396,7 @@ var Resize = /** @class */ (function (_super) {
396
396
  else {
397
397
  var cellWidth = this.actionObj.cellWidth;
398
398
  cellIndex = isLeft ? Math.floor(offset / this.actionObj.cellWidth) :
399
- Math.ceil((offset + (this.actionObj.clone.getBoundingClientRect().width - cellWidth)) / this.actionObj.cellWidth);
399
+ Math.ceil((offset + (util.getElementWidth(this.actionObj.clone) - cellWidth)) / this.actionObj.cellWidth);
400
400
  if (this.parent.enableRtl) {
401
401
  var cellOffsetWidth = 0;
402
402
  if (headerName === 'TimelineMonth' || (!this.parent.activeViewOptions.timeScale.enable &&
@@ -404,7 +404,7 @@ var Resize = /** @class */ (function (_super) {
404
404
  cellOffsetWidth = this.actionObj.cellWidth;
405
405
  }
406
406
  var offsetWidth = (Math.floor(offset / this.actionObj.cellWidth) *
407
- this.actionObj.cellWidth) + (isLeft ? 0 : this.actionObj.clone.getBoundingClientRect().width - cellOffsetWidth);
407
+ this.actionObj.cellWidth) + (isLeft ? 0 : util.getElementWidth(this.actionObj.clone) - cellOffsetWidth);
408
408
  cellIndex = Math.floor(offsetWidth / this.actionObj.cellWidth);
409
409
  }
410
410
  isLastCell = cellIndex === tdCollections.length;
@@ -423,7 +423,7 @@ var Resize = /** @class */ (function (_super) {
423
423
  }
424
424
  else {
425
425
  if (!isLeft) {
426
- offset += this.actionObj.clone.getBoundingClientRect().width;
426
+ offset += util.getElementWidth(this.actionObj.clone);
427
427
  }
428
428
  var spanMinutes = Math.ceil((this.actionObj.slotInterval / this.actionObj.cellWidth) *
429
429
  (offset - Math.floor(offset / this.actionObj.cellWidth) * this.actionObj.cellWidth));
@@ -435,9 +435,9 @@ var Resize = /** @class */ (function (_super) {
435
435
  }
436
436
  else {
437
437
  var cloneIndex = closest(this.actionObj.clone, 'td').cellIndex;
438
- var originalWidth = Math.ceil((isLeft ? this.actionObj.element.getBoundingClientRect().width : 0) /
438
+ var originalWidth = Math.ceil((isLeft ? util.getElementWidth(this.actionObj.element) : 0) /
439
439
  this.actionObj.cellWidth) * this.actionObj.cellWidth;
440
- var noOfDays = Math.ceil((this.actionObj.clone.getBoundingClientRect().width - originalWidth) /
440
+ var noOfDays = Math.ceil((util.getElementWidth(this.actionObj.clone) - originalWidth) /
441
441
  this.actionObj.cellWidth);
442
442
  var tr = closest(this.actionObj.clone, 'tr');
443
443
  var dayIndex = isLeft ? cloneIndex - noOfDays : cloneIndex + noOfDays - 1;
@@ -500,23 +500,24 @@ var Resize = /** @class */ (function (_super) {
500
500
  var slotInterval = (this.actionObj.cellWidth / this.actionObj.slotInterval) * this.actionObj.interval;
501
501
  var pageWidth = isLeft ? (this.actionObj.X - this.actionObj.pageX) : (this.actionObj.pageX - this.actionObj.X);
502
502
  var targetWidth = isTimelineView ?
503
- (this.actionObj.element.getBoundingClientRect().width / this.actionObj.cellWidth) * this.actionObj.cellWidth :
504
- this.parent.currentView === 'Month' ? this.actionObj.element.getBoundingClientRect().width :
505
- Math.ceil(this.actionObj.element.getBoundingClientRect().width / this.actionObj.cellWidth) * this.actionObj.cellWidth;
503
+ (util.getElementWidth(this.actionObj.element) / this.actionObj.cellWidth) * this.actionObj.cellWidth :
504
+ this.parent.currentView === 'Month' ? util.getElementWidth(this.actionObj.element) :
505
+ Math.ceil(util.getElementWidth(this.actionObj.element) / this.actionObj.cellWidth) * this.actionObj.cellWidth;
506
506
  var offsetWidth = targetWidth + (Math.ceil(pageWidth / this.actionObj.cellWidth) * this.actionObj.cellWidth);
507
507
  var left = (this.parent.enableRtl) ? parseInt(this.actionObj.element.style.right, 10) : this.actionObj.clone.offsetLeft;
508
508
  if (isTimeViews) {
509
509
  offsetWidth = targetWidth + (Math.ceil(pageWidth / slotInterval) * slotInterval);
510
510
  if (!isLeft) {
511
511
  var roundedLeft = (+parseFloat(this.actionObj.element.style[this.parent.enableRtl ? 'right' : 'left'])).toFixed(1);
512
- if (roundedLeft !== left.toFixed(1)) {
512
+ var roundedWidth = Math.round(targetWidth / slotInterval) * slotInterval;
513
+ if (roundedLeft !== left.toFixed(1) || roundedWidth !== targetWidth) {
513
514
  offsetWidth = (Math.round((left + offsetWidth) / slotInterval) * slotInterval) - left;
514
515
  }
515
516
  }
516
517
  this.actionObj.event[this.parent.eventFields.isAllDay] = false;
517
518
  }
518
519
  var width = !isLeft && ((offsetWidth + this.actionObj.clone.offsetLeft > this.scrollArgs.width)) ?
519
- this.actionObj.clone.getBoundingClientRect().width : (offsetWidth < this.actionObj.cellWidth) ? offsetWidth : offsetWidth;
520
+ util.getElementWidth(this.actionObj.clone) : (offsetWidth < this.actionObj.cellWidth) ? offsetWidth : offsetWidth;
520
521
  if (this.parent.enableRtl) {
521
522
  var rightValue = isTimelineView ? parseInt(this.actionObj.element.style.right, 10) :
522
523
  -(offsetWidth - this.actionObj.cellWidth);
@@ -530,7 +531,7 @@ var Resize = /** @class */ (function (_super) {
530
531
  }
531
532
  rightValue = rightValue >= this.scrollArgs.width ? this.scrollArgs.width - this.actionObj.cellWidth : rightValue;
532
533
  styles.right = formatUnit(rightValue);
533
- width = width + rightValue > this.scrollArgs.width ? this.actionObj.clone.getBoundingClientRect().width : width;
534
+ width = width + rightValue > this.scrollArgs.width ? util.getElementWidth(this.actionObj.clone) : width;
534
535
  }
535
536
  else {
536
537
  var offsetLeft = isLeft ? this.actionObj.element.offsetLeft - (this.actionObj.X - this.actionObj.pageX) :
@@ -538,12 +539,12 @@ var Resize = /** @class */ (function (_super) {
538
539
  if (isTimelineView) {
539
540
  offsetLeft = isLeft ? offsetLeft : parseInt(this.actionObj.clone.style.left, 10);
540
541
  if (this.parent.enableRtl) {
541
- offsetLeft = !isLeft ? (this.actionObj.pageX < this.actionObj.X - this.actionObj.clone.getBoundingClientRect().width)
542
+ offsetLeft = !isLeft ? (this.actionObj.pageX < this.actionObj.X - util.getElementWidth(this.actionObj.clone))
542
543
  ? parseInt(this.actionObj.clone.style.right, 10) : offsetLeft : offsetLeft;
543
544
  }
544
545
  else {
545
- offsetLeft = isLeft ? (this.actionObj.pageX > this.actionObj.X + this.actionObj.clone.getBoundingClientRect().width &&
546
- this.actionObj.clone.getBoundingClientRect().width === this.actionObj.cellWidth) ?
546
+ offsetLeft = isLeft ? (this.actionObj.pageX > this.actionObj.X + util.getElementWidth(this.actionObj.clone) &&
547
+ util.getElementWidth(this.actionObj.clone) === this.actionObj.cellWidth) ?
547
548
  parseInt(this.actionObj.clone.style.left, 10) : offsetLeft : offsetLeft;
548
549
  }
549
550
  }
@@ -559,10 +560,10 @@ var Resize = /** @class */ (function (_super) {
559
560
  }
560
561
  else {
561
562
  offsetLeft = 0;
562
- width = this.actionObj.clone.getBoundingClientRect().width;
563
+ width = util.getElementWidth(this.actionObj.clone);
563
564
  }
564
565
  }
565
- var cloneWidth = Math.ceil(this.actionObj.clone.getBoundingClientRect().width / this.actionObj.cellWidth) *
566
+ var cloneWidth = Math.ceil(util.getElementWidth(this.actionObj.clone) / this.actionObj.cellWidth) *
566
567
  this.actionObj.cellWidth;
567
568
  if (isLeft) {
568
569
  styles.left = formatUnit(isTimelineView ? offsetLeft : isLeft ? leftValue < 0 ? -offsetLeft :
@@ -55,6 +55,10 @@ var VirtualScroll = /** @class */ (function () {
55
55
  this.renderedLength = conTable.querySelector('tbody').children.length;
56
56
  virtual.style.height = (conTable.offsetHeight + (this.parent.resourceBase.expandedResources.length - (this.renderedLength)) *
57
57
  conTable.offsetHeight / this.renderedLength) + 'px';
58
+ var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
59
+ if ((conWrap.scrollHeight - conWrap.scrollTop) < conWrap.offsetHeight * this.bufferCount) {
60
+ virtual.style.height = parseInt(virtual.style.height) + (conWrap.offsetHeight * this.bufferCount) + 'px';
61
+ }
58
62
  }
59
63
  else {
60
64
  virtual.style.height = '';
@@ -521,6 +521,7 @@ export interface UIStateArgs {
521
521
  isBlock?: boolean;
522
522
  isCustomMonth?: boolean;
523
523
  isPreventTimezone?: boolean;
524
+ isPreventEventRefresh?: boolean;
524
525
  }
525
526
  /**
526
527
  * @private
@@ -1457,9 +1457,10 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
1457
1457
  *
1458
1458
  * @function setResourceCollections
1459
1459
  * @param {ResourcesModel[]} resourceCol Accepts the resource collections in ResourcesModel type
1460
+ * @param {boolean} isEventDataRefresh Accepts the boolean to refresh the appointment data source from remote or local
1460
1461
  * @returns {void}
1461
1462
  */
1462
- setResourceCollections(resourceCol: ResourcesModel[]): void;
1463
+ setResourceCollections(resourceCol: ResourcesModel[], isEventDataRefresh?: boolean): void;
1463
1464
  /**
1464
1465
  * Current View could be change based on the provided parameters.
1465
1466
  *
@@ -1708,6 +1709,8 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
1708
1709
  getEventDetails(element: Element): Record<string, any>;
1709
1710
  /**
1710
1711
  * To check whether the given time range slots are available for event creation or already occupied by other events.
1712
+ * This method currently focuses on validating appointments within the current view date range.
1713
+ * However, it does not extend this availability check to recurrence occurrences outside of the current date range.
1711
1714
  *
1712
1715
  * @function isSlotAvailable
1713
1716
  * @param {Date | Object} startTime Denotes the start time of the slot.
@@ -1992,9 +1992,14 @@ var Schedule = /** @class */ (function (_super) {
1992
1992
  *
1993
1993
  * @function setResourceCollections
1994
1994
  * @param {ResourcesModel[]} resourceCol Accepts the resource collections in ResourcesModel type
1995
+ * @param {boolean} isEventDataRefresh Accepts the boolean to refresh the appointment data source from remote or local
1995
1996
  * @returns {void}
1996
1997
  */
1997
- Schedule.prototype.setResourceCollections = function (resourceCol) {
1998
+ Schedule.prototype.setResourceCollections = function (resourceCol, isEventDataRefresh) {
1999
+ if (isEventDataRefresh === void 0) { isEventDataRefresh = true; }
2000
+ if (!isEventDataRefresh && this.uiStateValues) {
2001
+ this.uiStateValues.isPreventEventRefresh = true;
2002
+ }
1998
2003
  this.setProperties({ resources: resourceCol }, false);
1999
2004
  };
2000
2005
  /**
@@ -2114,6 +2119,8 @@ var Schedule = /** @class */ (function (_super) {
2114
2119
  this.iCalendarExportModule.initializeCalendarExport(fileName, customData);
2115
2120
  }
2116
2121
  else {
2122
+ console.warn('[WARNING] :: Module "ICalendarExport" is not available in Schedule component!' +
2123
+ ' You either misspelled the module name or forgot to load it.');
2117
2124
  throw Error('Inject ICalendarExport module');
2118
2125
  }
2119
2126
  };
@@ -2130,6 +2137,8 @@ var Schedule = /** @class */ (function (_super) {
2130
2137
  this.iCalendarImportModule.initializeCalendarImport(fileContent);
2131
2138
  }
2132
2139
  else {
2140
+ console.warn('[WARNING] :: Module "ICalendarImport" is not available in Schedule component!' +
2141
+ ' You either misspelled the module name or forgot to load it.');
2133
2142
  throw Error('Inject ICalendarImport module');
2134
2143
  }
2135
2144
  };
@@ -2175,6 +2184,8 @@ var Schedule = /** @class */ (function (_super) {
2175
2184
  this.excelExportModule.initializeExcelExport(excelExportOptions);
2176
2185
  }
2177
2186
  else {
2187
+ console.warn('[WARNING] :: Module "ExcelExport" is not available in Schedule component!' +
2188
+ ' You either misspelled the module name or forgot to load it.');
2178
2189
  throw Error('Inject ExcelExport module');
2179
2190
  }
2180
2191
  };
@@ -2191,6 +2202,8 @@ var Schedule = /** @class */ (function (_super) {
2191
2202
  this.printModule.print(printOptions);
2192
2203
  }
2193
2204
  else {
2205
+ console.warn('[WARNING] :: Module "Print" is not available in Schedule component!' +
2206
+ ' You either misspelled the module name or forgot to load it.');
2194
2207
  throw Error('Inject Print module');
2195
2208
  }
2196
2209
  };
@@ -2474,6 +2487,8 @@ var Schedule = /** @class */ (function (_super) {
2474
2487
  };
2475
2488
  /**
2476
2489
  * To check whether the given time range slots are available for event creation or already occupied by other events.
2490
+ * This method currently focuses on validating appointments within the current view date range.
2491
+ * However, it does not extend this availability check to recurrence occurrences outside of the current date range.
2477
2492
  *
2478
2493
  * @function isSlotAvailable
2479
2494
  * @param {Date | Object} startTime Denotes the start time of the slot.
@@ -238,3 +238,24 @@ export declare function isIPadDevice(): boolean;
238
238
  * @returns {string} Returns the output string
239
239
  */
240
240
  export declare function capitalizeFirstWord(inputString: string, type: string): string;
241
+ /**
242
+ * Method to get element cell width
243
+ *
244
+ * @param {HTMLElement} element Accepts the DOM element
245
+ * @returns {number} Returns the width of the given element
246
+ */
247
+ export declare function getElementWidth(element: HTMLElement): number;
248
+ /**
249
+ * Method to get element cell Height
250
+ *
251
+ * @param {HTMLElement} element Accepts the DOM element
252
+ * @returns {number} Returns the Height of the given element
253
+ */
254
+ export declare function getElementHeight(element: HTMLElement): number;
255
+ /**
256
+ * Method to get element cell Top
257
+ *
258
+ * @param {HTMLElement} element Accepts the DOM element
259
+ * @returns {number} Returns the top value of the given element
260
+ */
261
+ export declare function getElementTop(element: HTMLElement): number;
@@ -20,7 +20,7 @@ export function getElementHeightFromClass(container, elementClass) {
20
20
  el.style.visibility = 'hidden';
21
21
  el.style.position = 'absolute';
22
22
  container.appendChild(el);
23
- height = el.getBoundingClientRect().height;
23
+ height = getElementHeight(el);
24
24
  remove(el);
25
25
  return height;
26
26
  }
@@ -37,7 +37,7 @@ export function getElementWidthFromClass(container, elementClass) {
37
37
  el.style.visibility = 'hidden';
38
38
  el.style.position = 'absolute';
39
39
  container.appendChild(el);
40
- width = el.getBoundingClientRect().width;
40
+ width = getElementWidth(el);
41
41
  remove(el);
42
42
  return width;
43
43
  }
@@ -425,3 +425,30 @@ export function capitalizeFirstWord(inputString, type) {
425
425
  }
426
426
  return inputString;
427
427
  }
428
+ /**
429
+ * Method to get element cell width
430
+ *
431
+ * @param {HTMLElement} element Accepts the DOM element
432
+ * @returns {number} Returns the width of the given element
433
+ */
434
+ export function getElementWidth(element) {
435
+ return document.body.style.transform.includes('scale') ? element.offsetWidth : element.getBoundingClientRect().width;
436
+ }
437
+ /**
438
+ * Method to get element cell Height
439
+ *
440
+ * @param {HTMLElement} element Accepts the DOM element
441
+ * @returns {number} Returns the Height of the given element
442
+ */
443
+ export function getElementHeight(element) {
444
+ return document.body.style.transform.includes('scale') ? element.offsetHeight : element.getBoundingClientRect().height;
445
+ }
446
+ /**
447
+ * Method to get element cell Top
448
+ *
449
+ * @param {HTMLElement} element Accepts the DOM element
450
+ * @returns {number} Returns the top value of the given element
451
+ */
452
+ export function getElementTop(element) {
453
+ return document.body.style.transform.includes('scale') ? element.offsetTop : element.getBoundingClientRect().top;
454
+ }
@@ -89,7 +89,6 @@ export declare class EventBase {
89
89
  getPageCoordinates(e: MouseEvent & TouchEvent): (MouseEvent & TouchEvent) | Touch;
90
90
  renderSpannedIcon(element: HTMLElement, spanEvent: Record<string, any>): void;
91
91
  addCellHeight(selector: string, eventHeight: number, eventGap: number, headerHeight: number, indHeight: number, isScrollUpdate?: boolean): void;
92
- getCellWidth(element: HTMLElement): number;
93
92
  private unWireEvents;
94
93
  destroy(): void;
95
94
  }
@@ -1354,9 +1354,6 @@ var EventBase = /** @class */ (function () {
1354
1354
  }
1355
1355
  }
1356
1356
  };
1357
- EventBase.prototype.getCellWidth = function (element) {
1358
- return document.body.style.transform.includes('scale') ? parseFloat(window.getComputedStyle(element).width) : element.getBoundingClientRect().width;
1359
- };
1360
1357
  EventBase.prototype.unWireEvents = function () {
1361
1358
  var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));
1362
1359
  for (var _i = 0, appElements_1 = appElements; _i < appElements_1.length; _i++) {
@@ -108,7 +108,7 @@ var InlineEdit = /** @class */ (function () {
108
108
  var allDayElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_APPOINTMENT_CLASS));
109
109
  var allDayLevel = 0;
110
110
  if (allDayElements.length > 0) {
111
- allDayLevel = Math.floor(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).getBoundingClientRect().height /
111
+ allDayLevel = Math.floor(util.getElementHeight(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS)) /
112
112
  allDayElements[0].offsetHeight) - 1;
113
113
  }
114
114
  verticalEvent.allDayLevel = allDayLevel;
@@ -175,8 +175,8 @@ var MonthEvent = /** @class */ (function (_super) {
175
175
  });
176
176
  }
177
177
  var cellDetail = this.workCells[this.parent.activeView.isTimelineView() ? 0 : this.workCells.length - 1];
178
- this.cellWidth = this.parent.eventBase.getCellWidth(cellDetail);
179
- this.cellHeight = cellDetail.getBoundingClientRect().height;
178
+ this.cellWidth = util.getElementWidth(cellDetail);
179
+ this.cellHeight = util.getElementHeight(cellDetail);
180
180
  this.dateRender = dateRender;
181
181
  var filteredDates = this.getRenderedDates(dateRender);
182
182
  this.getSlotDates(workDays || this.parent.activeViewOptions.workDays);
@@ -38,7 +38,7 @@ var TimelineEvent = /** @class */ (function (_super) {
38
38
  _this.eventContainers = [].slice.call(_this.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));
39
39
  var tr = [].slice.call(_this.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr'));
40
40
  _this.dayLength = tr.length === 0 ? 0 : tr[0].children.length;
41
- _this.content = _this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);
41
+ _this.content = _this.parent.element.querySelector('.' + cls.SCHEDULE_TABLE_CLASS + '.' + cls.CONTENT_TABLE_CLASS);
42
42
  return _this;
43
43
  }
44
44
  TimelineEvent.prototype.getSlotDates = function () {
@@ -48,7 +48,7 @@ var TimelineEvent = /** @class */ (function (_super) {
48
48
  this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {
49
49
  this.renderType = 'day';
50
50
  var workCell = this.content.querySelector('.' + cls.WORK_CELLS_CLASS);
51
- this.cellWidth = workCell.getBoundingClientRect().width / +(workCell.getAttribute('colspan') || 1);
51
+ this.cellWidth = util.getElementWidth(workCell) / +(workCell.getAttribute('colspan') || 1);
52
52
  this.slotsPerDay = 1;
53
53
  }
54
54
  else {
@@ -204,14 +204,14 @@ var TimelineEvent = /** @class */ (function (_super) {
204
204
  this.wireAppointmentEvents(appointmentElement, event);
205
205
  if (this.parent.rowAutoHeight) {
206
206
  var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
207
- var conWidth = conWrap.getBoundingClientRect().width;
207
+ var conWidth = util.getElementWidth(conWrap);
208
208
  var isWithoutScroll = conWrap.offsetHeight === conWrap.clientHeight &&
209
209
  conWrap.offsetWidth === conWrap.clientWidth;
210
210
  this.renderEventElement(event, appointmentElement, cellTd);
211
211
  var firstChild = this.getFirstChild(resIndex);
212
212
  this.updateCellHeight(firstChild, height);
213
213
  if (isWithoutScroll &&
214
- (conWrap.offsetWidth > conWrap.clientWidth || conWidth !== conWrap.getBoundingClientRect().width)) {
214
+ (conWrap.offsetWidth > conWrap.clientWidth || conWidth !== util.getElementWidth(conWrap))) {
215
215
  this.adjustAppointments(conWidth);
216
216
  }
217
217
  }
@@ -330,7 +330,7 @@ var TimelineEvent = /** @class */ (function (_super) {
330
330
  TimelineEvent.prototype.adjustAppointments = function (conWidth) {
331
331
  var _this = this;
332
332
  var tr = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr');
333
- var actualCellWidth = this.workCells[0].getBoundingClientRect().width;
333
+ var actualCellWidth = util.getElementWidth(this.workCells[0]);
334
334
  this.cellWidth = actualCellWidth / +(this.workCells[0].getAttribute('colspan') || 1);
335
335
  var currentPercentage = (actualCellWidth * tr.children.length) / (conWidth / 100);
336
336
  var apps = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));
@@ -113,7 +113,7 @@ var VerticalEvent = /** @class */ (function (_super) {
113
113
  this.resources = this.parent.resourceBase.renderedResources;
114
114
  }
115
115
  this.cellHeight =
116
- parseFloat(this.parent.element.querySelector('.e-content-wrap tbody tr').getBoundingClientRect().height.toFixed(2));
116
+ parseFloat(util.getElementHeight(this.parent.element.querySelector('.e-content-wrap tbody tr')).toFixed(2));
117
117
  this.dateRender[0] = this.parent.activeView.renderDates;
118
118
  if (this.parent.activeViewOptions.group.resources.length > 0) {
119
119
  for (var i = 0, len = this.resources.length; i < len; i++) {
@@ -89,7 +89,7 @@ var YearEvent = /** @class */ (function (_super) {
89
89
  YearEvent.prototype.timelineYearViewEvents = function () {
90
90
  var _this = this;
91
91
  var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')');
92
- this.cellWidth = this.parent.eventBase.getCellWidth(workCell);
92
+ this.cellWidth = util.getElementWidth(workCell);
93
93
  this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS));
94
94
  var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
95
95
  this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);
@@ -247,7 +247,7 @@ var YearEvent = /** @class */ (function (_super) {
247
247
  var contentTable = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
248
248
  var isVerticalScrollbarAvail = contentTable.offsetWidth > contentTable.clientWidth;
249
249
  var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);
250
- this.cellWidth = workCell.getBoundingClientRect().width;
250
+ this.cellWidth = util.getElementWidth(workCell);
251
251
  this.cellHeader = 0;
252
252
  var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
253
253
  this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);
@@ -292,7 +292,7 @@ var YearEvent = /** @class */ (function (_super) {
292
292
  appWrapper.forEach(function (appWrap, cellIndex) {
293
293
  var td = row.querySelector("td:nth-child(" + (cellIndex + 1) + ")");
294
294
  var app = [].slice.call(appWrap.children);
295
- var width = td.getBoundingClientRect().width;
295
+ var width = util.getElementWidth(td);
296
296
  var left = td.offsetLeft;
297
297
  if (_this.parent.enableRtl) {
298
298
  var right_1 = conTable_1.offsetWidth - left - td.offsetWidth;
@@ -1357,6 +1357,17 @@ var QuickPopups = /** @class */ (function () {
1357
1357
  instance.destroy();
1358
1358
  }
1359
1359
  }
1360
+ if (popupName === 'quickPopup') {
1361
+ var input = popup.element.querySelector('input.' + cls.SUBJECT_CLASS);
1362
+ if (input) {
1363
+ input.remove();
1364
+ }
1365
+ var form = this.quickPopup.element.querySelector('form.' + cls.FORM_CLASS);
1366
+ if (form) {
1367
+ util.removeChildren(form);
1368
+ form.remove();
1369
+ }
1370
+ }
1360
1371
  };
1361
1372
  QuickPopups.prototype.refreshQuickDialog = function () {
1362
1373
  this.destroyQuickDialog();