@syncfusion/ej2-gantt 23.2.7 → 24.1.41

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 (112) hide show
  1. package/CHANGELOG.md +0 -10
  2. package/dist/ej2-gantt.min.js +2 -2
  3. package/dist/ej2-gantt.umd.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-gantt.es2015.js +2939 -324
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +2993 -358
  8. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  9. package/dist/global/ej2-gantt.min.js +2 -2
  10. package/dist/global/ej2-gantt.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +21 -21
  13. package/src/gantt/actions/cell-edit.js +7 -3
  14. package/src/gantt/actions/chart-scroll.d.ts +9 -1
  15. package/src/gantt/actions/chart-scroll.js +111 -3
  16. package/src/gantt/actions/connector-line-edit.js +8 -1
  17. package/src/gantt/actions/context-menu.js +2 -2
  18. package/src/gantt/actions/day-markers.d.ts +2 -1
  19. package/src/gantt/actions/dependency.js +2 -2
  20. package/src/gantt/actions/dialog-edit.d.ts +24 -0
  21. package/src/gantt/actions/dialog-edit.js +383 -1
  22. package/src/gantt/actions/edit.js +68 -21
  23. package/src/gantt/actions/keyboard.js +5 -1
  24. package/src/gantt/actions/pdf-export.js +12 -4
  25. package/src/gantt/actions/rowdragdrop.js +20 -9
  26. package/src/gantt/actions/selection.js +6 -3
  27. package/src/gantt/actions/taskbar-edit.d.ts +14 -0
  28. package/src/gantt/actions/taskbar-edit.js +517 -82
  29. package/src/gantt/actions/toolbar.js +4 -1
  30. package/src/gantt/base/css-constants.d.ts +2 -0
  31. package/src/gantt/base/css-constants.js +2 -0
  32. package/src/gantt/base/enum.d.ts +22 -0
  33. package/src/gantt/base/gantt-chart.js +63 -21
  34. package/src/gantt/base/gantt-model.d.ts +9 -1
  35. package/src/gantt/base/gantt.d.ts +11 -1
  36. package/src/gantt/base/gantt.js +46 -18
  37. package/src/gantt/base/interface.d.ts +135 -3
  38. package/src/gantt/base/splitter.js +6 -0
  39. package/src/gantt/base/task-processor.d.ts +1 -1
  40. package/src/gantt/base/task-processor.js +37 -9
  41. package/src/gantt/export/export-helper.d.ts +12 -0
  42. package/src/gantt/export/export-helper.js +316 -9
  43. package/src/gantt/export/pdf-base/pdf-grid-table.js +14 -1
  44. package/src/gantt/export/pdf-base/pdf-style/gantt-theme.js +36 -0
  45. package/src/gantt/export/pdf-connector-line.js +137 -32
  46. package/src/gantt/export/pdf-event-marker.d.ts +10 -0
  47. package/src/gantt/export/pdf-event-marker.js +57 -0
  48. package/src/gantt/export/pdf-gantt.d.ts +2 -0
  49. package/src/gantt/export/pdf-gantt.js +30 -10
  50. package/src/gantt/export/pdf-taskbar.d.ts +23 -2
  51. package/src/gantt/export/pdf-taskbar.js +771 -43
  52. package/src/gantt/export/pdf-timeline.d.ts +9 -0
  53. package/src/gantt/export/pdf-timeline.js +98 -20
  54. package/src/gantt/models/column.d.ts +12 -0
  55. package/src/gantt/renderer/chart-rows.d.ts +1 -1
  56. package/src/gantt/renderer/chart-rows.js +29 -16
  57. package/src/gantt/renderer/connector-line.js +8 -5
  58. package/src/gantt/renderer/edit-tooltip.js +3 -0
  59. package/src/gantt/renderer/event-marker.js +4 -1
  60. package/src/gantt/renderer/nonworking-day.js +18 -5
  61. package/src/gantt/renderer/timeline.d.ts +9 -0
  62. package/src/gantt/renderer/timeline.js +164 -21
  63. package/styles/bootstrap-dark.css +77 -16
  64. package/styles/bootstrap.css +78 -17
  65. package/styles/bootstrap4.css +78 -17
  66. package/styles/bootstrap5-dark.css +78 -17
  67. package/styles/bootstrap5.css +78 -17
  68. package/styles/fabric-dark.css +78 -17
  69. package/styles/fabric.css +78 -17
  70. package/styles/fluent-dark.css +78 -17
  71. package/styles/fluent.css +78 -17
  72. package/styles/gantt/_bootstrap-dark-definition.scss +7 -2
  73. package/styles/gantt/_bootstrap-definition.scss +7 -2
  74. package/styles/gantt/_bootstrap4-definition.scss +7 -2
  75. package/styles/gantt/_bootstrap5-definition.scss +7 -2
  76. package/styles/gantt/_fabric-dark-definition.scss +7 -2
  77. package/styles/gantt/_fabric-definition.scss +7 -2
  78. package/styles/gantt/_fluent-definition.scss +7 -2
  79. package/styles/gantt/_fusionnew-definition.scss +6 -2
  80. package/styles/gantt/_highcontrast-definition.scss +7 -2
  81. package/styles/gantt/_highcontrast-light-definition.scss +7 -2
  82. package/styles/gantt/_layout.scss +92 -20
  83. package/styles/gantt/_material-dark-definition.scss +7 -2
  84. package/styles/gantt/_material-definition.scss +7 -2
  85. package/styles/gantt/_material3-definition.scss +7 -2
  86. package/styles/gantt/_tailwind-definition.scss +6 -1
  87. package/styles/gantt/_theme.scss +11 -0
  88. package/styles/gantt/bootstrap-dark.css +77 -16
  89. package/styles/gantt/bootstrap.css +78 -17
  90. package/styles/gantt/bootstrap4.css +78 -17
  91. package/styles/gantt/bootstrap5-dark.css +78 -17
  92. package/styles/gantt/bootstrap5.css +78 -17
  93. package/styles/gantt/fabric-dark.css +78 -17
  94. package/styles/gantt/fabric.css +78 -17
  95. package/styles/gantt/fluent-dark.css +78 -17
  96. package/styles/gantt/fluent.css +78 -17
  97. package/styles/gantt/highcontrast-light.css +78 -17
  98. package/styles/gantt/highcontrast.css +78 -17
  99. package/styles/gantt/material-dark.css +78 -17
  100. package/styles/gantt/material.css +78 -17
  101. package/styles/gantt/material3-dark.css +77 -16
  102. package/styles/gantt/material3.css +77 -16
  103. package/styles/gantt/tailwind-dark.css +78 -17
  104. package/styles/gantt/tailwind.css +78 -17
  105. package/styles/highcontrast-light.css +78 -17
  106. package/styles/highcontrast.css +78 -17
  107. package/styles/material-dark.css +78 -17
  108. package/styles/material.css +78 -17
  109. package/styles/material3-dark.css +77 -16
  110. package/styles/material3.css +77 -16
  111. package/styles/tailwind-dark.css +78 -17
  112. package/styles/tailwind.css +78 -17
@@ -22,6 +22,11 @@ var Timeline = /** @class */ (function () {
22
22
  this.isZoomToFit = false;
23
23
  this.topTierCollection = [];
24
24
  this.bottomTierCollection = [];
25
+ this.pdfExportTopTierCollection = [];
26
+ this.pdfExportBottomTierCollection = [];
27
+ this.restrictRender = true;
28
+ this.performedTimeSpanAction = false;
29
+ this.isZoomedToFit = false;
25
30
  this.parent = ganttObj;
26
31
  this.initProperties();
27
32
  }
@@ -102,6 +107,7 @@ var Timeline = /** @class */ (function () {
102
107
  */
103
108
  Timeline.prototype.processZooming = function (isZoomIn) {
104
109
  this.isZoomToFit = false;
110
+ this.isZoomedToFit = false;
105
111
  if (!this.parent['isProjectDateUpdated']) {
106
112
  this.parent.dateValidationModule.calculateProjectDates();
107
113
  }
@@ -209,6 +215,13 @@ var Timeline = /** @class */ (function () {
209
215
  this.parent.hideSpinner();
210
216
  }
211
217
  }
218
+ var tier = this.topTier === 'None' ? 'bottomTier' : 'topTier';
219
+ if (this.parent.enableTimelineVirtualization && (!this.parent.pdfExportModule || this.parent.pdfExportModule && !this.parent.pdfExportModule.isPdfExport)) {
220
+ this.wholeTimelineWidth = this.calculateWidthBetweenTwoDate(tier, this.parent.timelineModule.timelineStartDate, this.parent.timelineModule.timelineEndDate);
221
+ this.parent.element.querySelectorAll(".e-chart-scroll-container")[0].querySelector(".e-virtualtrack")['style'].width = this.wholeTimelineWidth + 'px';
222
+ this.parent.element.querySelectorAll(".e-timeline-header-container")[0].querySelector(".e-virtualtrack")['style'].width = this.wholeTimelineWidth + 'px';
223
+ this.parent.ganttChartModule.updateWidthAndHeight();
224
+ }
212
225
  };
213
226
  /**
214
227
  * To perform the zoom to fit operation in Gantt.
@@ -219,6 +232,7 @@ var Timeline = /** @class */ (function () {
219
232
  Timeline.prototype.processZoomToFit = function () {
220
233
  this.isZoomToFit = true;
221
234
  this.isZooming = false;
235
+ this.isZoomedToFit = true;
222
236
  if (!this.parent.zoomingProjectStartDate) {
223
237
  this.parent.zoomingProjectStartDate = this.parent.cloneProjectStartDate;
224
238
  this.parent.zoomingProjectEndDate = this.parent.cloneProjectEndDate;
@@ -627,6 +641,28 @@ var Timeline = /** @class */ (function () {
627
641
  this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;
628
642
  }
629
643
  };
644
+ Timeline.prototype.dateByLeftValue = function (left, isMilestone, property) {
645
+ var pStartDate = new Date(this.parent.timelineModule.timelineStartDate.toString());
646
+ var milliSecondsPerPixel = (24 * 60 * 60 * 1000) / this.parent.perDayWidth;
647
+ pStartDate.setTime(pStartDate.getTime() + (left * milliSecondsPerPixel));
648
+ /* To render the milestone in proper date while editing */
649
+ if (isMilestone && !isNullOrUndefined(property.predecessorsName) && property.predecessorsName !== '') {
650
+ pStartDate.setDate(pStartDate.getDate() - 1);
651
+ this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, pStartDate);
652
+ pStartDate = this.parent.dateValidationModule.checkStartDate(pStartDate, property, true);
653
+ }
654
+ var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.topTier :
655
+ this.parent.timelineModule.bottomTier;
656
+ if (tierMode !== 'Hour' && tierMode !== 'Minutes') {
657
+ if (this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && !this.parent.isInDst(pStartDate)) {
658
+ pStartDate.setTime(pStartDate.getTime() + (60 * 60 * 1000));
659
+ }
660
+ else if (!this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && this.parent.isInDst(pStartDate)) {
661
+ pStartDate.setTime(pStartDate.getTime() - (60 * 60 * 1000));
662
+ }
663
+ }
664
+ return pStartDate;
665
+ };
630
666
  /**
631
667
  * To create timeline header template.
632
668
  *
@@ -639,32 +675,109 @@ var Timeline = /** @class */ (function () {
639
675
  var div;
640
676
  var table;
641
677
  var thead;
678
+ var virtualTableDiv;
679
+ var virtualTrackDiv;
642
680
  var loopCount = this.isSingleTier ? 1 : 2;
643
681
  var tier = this.topTier === 'None' ? 'bottomTier' : 'topTier';
644
- this.updateTimelineHeaderHeight();
645
682
  this.topTierCollection = [];
646
683
  this.bottomTierCollection = [];
647
- for (var count = 0; count < loopCount; count++) {
648
- table = createElement('table', { className: cls.timelineHeaderTableContainer, styles: 'display: block;' });
649
- thead = createElement('thead', { className: cls.timelineHeaderTableBody, styles: 'display:block; border-collapse:collapse' });
650
- tr = createElement('tr', { innerHTML: this.createTimelineTemplate(tier) });
651
- if (!this.parent.pdfExportModule || (this.parent.pdfExportModule && !this.parent.pdfExportModule.isPdfExport) || (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps && !this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth)) {
652
- td = createElement('th');
684
+ if (this.restrictRender == true) {
685
+ this.updateTimelineHeaderHeight();
686
+ this.wholeTimelineWidth = this.calculateWidthBetweenTwoDate(tier, this.parent.timelineModule.timelineStartDate, this.parent.timelineModule.timelineEndDate);
687
+ }
688
+ if (this.parent.enableTimelineVirtualization && (this.wholeTimelineWidth > this.parent.element.offsetWidth * 3)) {
689
+ for (var count = 0; count < loopCount; count++) {
690
+ table = createElement('table', { className: cls.timelineHeaderTableContainer, styles: 'display: block;' });
691
+ table.setAttribute('role', 'presentation');
692
+ thead = createElement('thead', { className: cls.timelineHeaderTableBody, styles: 'display:block; border-collapse:collapse' });
693
+ tr = createElement('tr', { innerHTML: this.createTimelineTemplate(tier) });
694
+ td = createElement('td');
695
+ div = createElement('div', { styles: 'width: 20px' });
696
+ virtualTableDiv = createElement('div', { className: cls.virtualTable });
697
+ virtualTrackDiv = createElement('div', { className: cls.virtualTrack });
698
+ td.appendChild(div);
699
+ tr.appendChild(td);
700
+ virtualTableDiv.appendChild(tr);
701
+ thead.appendChild(virtualTableDiv);
702
+ thead.appendChild(virtualTrackDiv);
703
+ table.appendChild(thead);
704
+ this.parent.ganttChartModule.chartTimelineContainer.appendChild(table);
705
+ tier = 'bottomTier';
706
+ tr = null;
707
+ this.restrictRender = false;
708
+ }
709
+ if (this.parent.height === "Auto" || this.parent.timelineModule.isSingleTier) {
710
+ var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];
711
+ this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
712
+ if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-gridcontent')[0])) {
713
+ this.parent.treeGrid.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
714
+ }
715
+ }
716
+ this.timelineVirtualizationStyles();
717
+ }
718
+ else {
719
+ for (var count = 0; count < loopCount; count++) {
720
+ table = createElement('table', { className: cls.timelineHeaderTableContainer, styles: 'display: block;' });
721
+ table.setAttribute('role', 'presentation');
722
+ thead = createElement('thead', { className: cls.timelineHeaderTableBody, styles: 'display:block; border-collapse:collapse' });
723
+ tr = createElement('tr', { innerHTML: this.createTimelineTemplate(tier) });
724
+ td = createElement('td');
653
725
  div = createElement('div', { styles: 'width: 20px' });
654
726
  td.appendChild(div);
655
727
  tr.appendChild(td);
656
728
  thead.appendChild(tr);
657
729
  table.appendChild(thead);
658
730
  this.parent.ganttChartModule.chartTimelineContainer.appendChild(table);
731
+ tier = 'bottomTier';
732
+ tr = null;
733
+ }
734
+ if (this.parent.height === "Auto" || this.parent.timelineModule.isSingleTier) {
735
+ var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];
736
+ this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
737
+ if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-gridcontent')[0])) {
738
+ this.parent.treeGrid.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
739
+ }
659
740
  }
660
- tier = 'bottomTier';
661
- tr = null;
662
741
  }
663
- if (this.parent.height === "Auto" || this.parent.timelineModule.isSingleTier) {
664
- var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];
665
- this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
666
- if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-gridcontent')[0])) {
667
- this.parent.treeGrid.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
742
+ };
743
+ Timeline.prototype.timelineVirtualizationStyles = function () {
744
+ var translateXValue = 0;
745
+ var translateYValue = 0;
746
+ var trackWidth = this.wholeTimelineWidth;
747
+ if (this.parent.enableTimelineVirtualization) {
748
+ //e-content styles updating
749
+ translateXValue = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(this.parent.ganttChartModule.scrollObject.element.scrollLeft)
750
+ && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0) ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : 0;
751
+ if (this.parent.enableRtl) {
752
+ translateXValue = -(translateXValue);
753
+ }
754
+ var contentVirtualTable = this.parent.element.querySelectorAll(".e-chart-scroll-container")[0].querySelector(".e-virtualtable");
755
+ contentVirtualTable.style.transform = "translate(" + translateXValue + "px, " + translateYValue + "px)";
756
+ var contentVirtualTrack = this.parent.element.querySelectorAll(".e-chart-scroll-container")[0].querySelector(".e-virtualtrack");
757
+ contentVirtualTrack.style.position = "relative";
758
+ contentVirtualTrack.style.width = trackWidth + 'px';
759
+ //timeline styles updating
760
+ if (this.parent.ganttChartModule.scrollObject['isSetScrollLeft']) {
761
+ var virtualTableStylesT = this.parent.element.querySelectorAll(".e-timeline-header-table-container")[0].querySelector(".e-virtualtable");
762
+ var virtualTableStylesB = this.parent.element.querySelectorAll(".e-timeline-header-table-container")[1].querySelector(".e-virtualtable");
763
+ virtualTableStylesT.style.transform = "translate(" + translateXValue + "px, " + translateYValue + "px)";
764
+ virtualTableStylesB.style.transform = "translate(" + translateXValue + "px, " + translateYValue + "px)";
765
+ }
766
+ var virtualTrackStylesT = this.parent.element.querySelectorAll(".e-timeline-header-table-container")[0].querySelector(".e-virtualtrack");
767
+ var virtualTrackStylesB = this.parent.element.querySelectorAll(".e-timeline-header-table-container")[1].querySelector(".e-virtualtrack");
768
+ virtualTrackStylesT.style.position = "relative";
769
+ virtualTrackStylesB.style.position = "relative";
770
+ virtualTrackStylesT.style.width = trackWidth + 'px';
771
+ virtualTrackStylesB.style.width = trackWidth + 'px';
772
+ //dependency viewer styles updating
773
+ var dependencyViewer = this.parent.connectorLineModule.svgObject;
774
+ dependencyViewer['style'].width = trackWidth + 'px';
775
+ // timeline header container width updating
776
+ var timelineHeader = this.parent.element.querySelector('.' + cls.timelineHeaderContainer);
777
+ timelineHeader['style'].width = 'calc(100% - ' + 17 + 'px)';
778
+ if (this.parent.timelineModule.isZooming || this.parent.timelineModule.isZoomToFit) {
779
+ this.parent.ganttChartModule.scrollElement.scrollLeft = 0;
780
+ this.parent.ganttChartModule.scrollObject.updateChartElementStyles();
668
781
  }
669
782
  }
670
783
  };
@@ -874,7 +987,12 @@ var Timeline = /** @class */ (function () {
874
987
  dateString = dateString.slice(1);
875
988
  }
876
989
  else {
877
- dateString = dateString.slice(0, 1);
990
+ if (this.parent.locale === 'ar') {
991
+ dateString = dateString;
992
+ }
993
+ else {
994
+ dateString = dateString.slice(0, 1);
995
+ }
878
996
  }
879
997
  }
880
998
  else {
@@ -915,9 +1033,14 @@ var Timeline = /** @class */ (function () {
915
1033
  parent.timelineModule.customTimelineSettings.bottomTier.count;
916
1034
  var increment;
917
1035
  var newTime;
918
- var startDate = new Date(this.parent.timelineModule.timelineStartDate.toString());
1036
+ var leftValueForStartDate = (this.parent.enableTimelineVirtualization && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0)
1037
+ ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : null;
1038
+ var startDate = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(leftValueForStartDate))
1039
+ ? new Date((this.dateByLeftValue(leftValueForStartDate)).toString()) : new Date(this.parent.timelineModule.timelineStartDate.toString());
919
1040
  var endDate = new Date(this.timelineRoundOffEndDate.toString());
920
1041
  var scheduleDateCollection = [];
1042
+ var width = 0;
1043
+ var WidthForVirtualTable = this.parent.element.offsetWidth * 3;
921
1044
  do {
922
1045
  // PDf export collection
923
1046
  var timelineCell = {};
@@ -947,8 +1070,20 @@ var Timeline = /** @class */ (function () {
947
1070
  parentTh = parentTh + parentTr;
948
1071
  var tierCollection = tier === 'topTier' ? this.topTierCollection : this.bottomTierCollection;
949
1072
  timelineCell.endDate = new Date(startDate.getTime());
950
- tierCollection.push(timelineCell);
951
- } while ((startDate < endDate));
1073
+ if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.enableTimelineVirtualization) {
1074
+ if (tier == 'topTier') {
1075
+ this.pdfExportTopTierCollection.push(timelineCell);
1076
+ }
1077
+ else {
1078
+ this.pdfExportBottomTierCollection.push(timelineCell);
1079
+ }
1080
+ }
1081
+ else {
1082
+ tierCollection.push(timelineCell);
1083
+ }
1084
+ width += timelineCell.width;
1085
+ this.weekendEndDate = timelineCell.endDate >= endDate ? endDate : timelineCell.endDate;
1086
+ } while ((this.parent.enableTimelineVirtualization && (!this.parent.pdfExportModule || this.parent.pdfExportModule && !this.parent.pdfExportModule.isPdfExport)) ? (width < WidthForVirtualTable) && (startDate < endDate) : (startDate < endDate));
952
1087
  return parentTh;
953
1088
  };
954
1089
  Timeline.prototype.updateTimelineAfterZooming = function (endDate, resized) {
@@ -1434,9 +1569,10 @@ var Timeline = /** @class */ (function () {
1434
1569
  var validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
1435
1570
  var isChanged = void 0;
1436
1571
  var taskbarModule = this.parent.editModule.taskbarEditModule;
1437
- if (!isNullOrUndefined(maxStartLeft) && ((!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)
1572
+ if (!isNullOrUndefined(maxStartLeft) && (((!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)
1438
1573
  && taskbarModule.taskBarEditAction !== 'ProgressResizing' &&
1439
- taskbarModule.taskBarEditAction !== 'RightResizing' && taskbarModule.taskBarEditAction !== 'LeftResizing')) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
1574
+ taskbarModule.taskBarEditAction !== 'RightResizing' && taskbarModule.taskBarEditAction !== 'LeftResizing')) || ((taskbarModule)
1575
+ && isNullOrUndefined(taskbarModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
1440
1576
  isChanged = 'prevTimeSpan';
1441
1577
  minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
1442
1578
  }
@@ -1486,13 +1622,16 @@ var Timeline = /** @class */ (function () {
1486
1622
  }
1487
1623
  var args = this.timeSpanActionEvent('actionBegin', type, isFrom);
1488
1624
  if (!args.cancel) {
1625
+ this.restrictRender = true;
1626
+ this.performedTimeSpanAction = true;
1627
+ var previousScrollLeft = this.parent.ganttChartModule.scrollElement.scrollLeft;
1489
1628
  this.parent.updateProjectDates(args.projectStartDate, args.ProjectEndDate, args.isTimelineRoundOff, isFrom);
1490
1629
  if (type === 'prevTimeSpan' && isFrom === 'publicMethod') {
1491
1630
  this.parent.ganttChartModule.updateScrollLeft(0);
1492
1631
  this.parent.timelineModule.isZoomToFit = false;
1493
1632
  }
1494
1633
  else if (type === 'nextTimeSpan' && isFrom === 'publicMethod') {
1495
- this.parent.ganttChartModule.updateScrollLeft(this.parent.timelineModule.totalTimelineWidth);
1634
+ this.parent.ganttChartModule.updateScrollLeft(this.parent.enableTimelineVirtualization ? this.wholeTimelineWidth : this.totalTimelineWidth);
1496
1635
  this.parent.timelineModule.isZoomToFit = false;
1497
1636
  }
1498
1637
  else if (type === 'nextTimeSpan' && isFrom === 'TaskbarEditing') {
@@ -1500,6 +1639,10 @@ var Timeline = /** @class */ (function () {
1500
1639
  this.parent.element.querySelector('.e-timeline-header-container').scrollLeft = currentScrollLeft;
1501
1640
  this.parent.timelineModule.isZoomToFit = false;
1502
1641
  }
1642
+ if (isFrom === 'TaskbarEditing' && this.parent.enableTimelineVirtualization && this.wholeTimelineWidth > this.parent.element.offsetWidth * 3) {
1643
+ this.parent.ganttChartModule.scrollObject.setScrollLeft(previousScrollLeft);
1644
+ this.parent.ganttChartModule.scrollObject.updateContent();
1645
+ }
1503
1646
  this.parent.timelineModule.timeSpanActionEvent('actionComplete', type, isFrom);
1504
1647
  }
1505
1648
  else {
@@ -264,6 +264,22 @@
264
264
  content: "\e85f";
265
265
  }
266
266
 
267
+ .e-bigger .e-gantt .e-gantt-chart .e-taskbar-left-resizer,
268
+ .e-bigger .e-gantt .e-gantt-chart .e-taskbar-right-resizer {
269
+ display: inline-block;
270
+ position: absolute;
271
+ top: 0;
272
+ width: 25px;
273
+ z-index: 4;
274
+ }
275
+ .e-bigger .e-gantt .e-gantt-chart .e-left-resize-gripper,
276
+ .e-bigger .e-gantt .e-gantt-chart .e-right-resize-gripper {
277
+ -ms-flex-align: center;
278
+ align-items: center;
279
+ cursor: ew-resize;
280
+ display: -ms-inline-flexbox;
281
+ display: inline-flex;
282
+ }
267
283
  .e-bigger .e-gantt .e-gantt-chart .e-timeline-header-container {
268
284
  height: 64px;
269
285
  }
@@ -343,7 +359,8 @@
343
359
  padding: 16px 4px 16px 16px !important; /* stylelint-disable-line declaration-no-important */
344
360
  }
345
361
  .e-bigger .e-gantt .e-dialog .e-dlg-header-content .e-btn.e-dlg-closeicon-btn {
346
- left: 0 !important;
362
+ left: -11px;
363
+ top: 3px;
347
364
  }
348
365
  .e-bigger .e-gantt .e-dialog .e-btn .e-btn-icon.e-icon-dlg-close {
349
366
  font-size: 12px !important;
@@ -355,8 +372,8 @@
355
372
  .e-bigger .e-gantt .e-dialog .e-footer-content .e-btn {
356
373
  margin-left: 12px;
357
374
  }
358
- .e-bigger .e-gantt .e-dialog .e-dlg-header {
359
- line-height: 28px;
375
+ .e-bigger .e-gantt .e-dialog .e-dlg-header:not(.e-gantt-adaptive-dialog .e-dialog .e-dlg-header) {
376
+ line-height: 37px;
360
377
  }
361
378
  .e-bigger .e-gantt .e-grid .e-flmenu-valuediv {
362
379
  padding: 16px 0 0 !important;
@@ -370,6 +387,7 @@
370
387
  }
371
388
  .e-bigger .e-gantt-dialog .e-dialog {
372
389
  border-radius: 6px;
390
+ width: 556px !important;
373
391
  }
374
392
  .e-bigger .e-gantt-dialog .e-tab .e-tab-header .e-toolbar-item .e-tab-wrap {
375
393
  padding: 0 16px !important; /* stylelint-disable-line declaration-no-important */
@@ -450,6 +468,16 @@
450
468
  .e-bigger .e-gantt-dialog .e-input-group-icon.e-date-icon {
451
469
  min-width: 36px !important; /* stylelint-disable-line declaration-no-important */
452
470
  }
471
+ .e-bigger .e-gantt-dialog .e-gantt-adaptive-dialog .e-dialog {
472
+ position: absolute !important; /* stylelint-disable-line declaration-no-important */
473
+ left: 0 !important; /* stylelint-disable-line declaration-no-important */
474
+ }
475
+ .e-bigger .e-gantt-dialog .e-gantt-adaptive-dialog .e-dialog .e-dlg-header-content {
476
+ padding: 16px !important; /* stylelint-disable-line declaration-no-important */
477
+ }
478
+ .e-bigger .e-gantt-dialog .e-gantt-adaptive-dialog .e-dialog td {
479
+ width: 100% !important; /* stylelint-disable-line declaration-no-important */
480
+ }
453
481
  .e-bigger .e-predecessor-tooltip .e-arrow-tip-outer.e-tip-bottom {
454
482
  border-top: 8px solid #000;
455
483
  }
@@ -675,9 +703,6 @@
675
703
  .e-gantt .e-gantt-tree-grid-pane .e-gridcontent .e-content {
676
704
  overflow-x: scroll !important; /* stylelint-disable-line declaration-no-important */
677
705
  }
678
- .e-gantt .e-gantt-tree-grid-pane .e-gridcontent .e-gantt-frozen {
679
- overflow-x: hidden !important; /* stylelint-disable-line declaration-no-important */
680
- }
681
706
  .e-gantt .e-gantt-tree-grid-pane .e-gridcontent .e-content.e-gantt-scroll-padding {
682
707
  width: calc(100% + 17px);
683
708
  }
@@ -800,7 +825,7 @@
800
825
  box-sizing: border-box;
801
826
  }
802
827
  .e-gantt .e-gantt-chart .e-zero-spacing {
803
- border-spacing: 0;
828
+ border-spacing: 0.25px;
804
829
  }
805
830
  .e-gantt .e-gantt-chart .e-chart-row:first-child .e-chart-row-border {
806
831
  border-top: 0;
@@ -830,9 +855,6 @@
830
855
  vertical-align: middle;
831
856
  z-index: 3;
832
857
  }
833
- .e-gantt .e-gantt-chart .e-taskbar-main-container:hover {
834
- z-index: 4;
835
- }
836
858
  .e-gantt .e-gantt-chart .e-taskbar-main-container.e-gantt-multi-taskbar:hover {
837
859
  z-index: 4;
838
860
  }
@@ -1309,7 +1331,7 @@
1309
1331
  border-spacing: 0;
1310
1332
  }
1311
1333
  .e-gantt-dialog .e-item {
1312
- height: 241px;
1334
+ height: 100%;
1313
1335
  }
1314
1336
  .e-gantt-dialog .e-dependent-div {
1315
1337
  border-bottom-width: 0px;
@@ -1368,6 +1390,9 @@
1368
1390
  .e-gantt-dialog > .e-dlg-content {
1369
1391
  padding: 0 !important; /* stylelint-disable-line declaration-no-important */
1370
1392
  }
1393
+ .e-gantt-dialog .e-dlg-header {
1394
+ line-height: 30px;
1395
+ }
1371
1396
  .e-gantt-dialog .e-dlg-header-content {
1372
1397
  border-bottom: 0 !important; /* stylelint-disable-line declaration-no-important */
1373
1398
  }
@@ -1375,6 +1400,10 @@
1375
1400
  border-radius: 6px 6px 0px 0px;
1376
1401
  padding-bottom: 20px;
1377
1402
  }
1403
+ .e-gantt-dialog .e-dlg-header-content .e-btn.e-dlg-closeicon-btn {
1404
+ left: -11px;
1405
+ top: 2px !important;
1406
+ }
1378
1407
  .e-gantt-dialog .e-dlg-header-content .e-btn.e-dlg-closeicon-btn {
1379
1408
  border-radius: 50%;
1380
1409
  height: auto !important; /* stylelint-disable-line declaration-no-important */
@@ -1440,13 +1469,14 @@
1440
1469
  font-size: 14px;
1441
1470
  }
1442
1471
 
1443
- .e-bigger .e-gantt .e-gantt-chart .e-timeline-single-header-outer-div {
1444
- height: 64px !important; /* stylelint-disable-line declaration-no-important */
1472
+ .e-bigger .e-filter-popup .e-control .e-dialog .e-lib .e-popup .e-popup-open .e-excelfilter .e-gantt,
1473
+ .e-bigger .e-gantt .e-excelfilter .e-dialog .e-dlg-content {
1474
+ padding: 0 18px 0 0 !important; /* stylelint-disable-line declaration-no-important */
1445
1475
  }
1446
1476
 
1447
- .e-bigger .e-timeline-single-header-cell {
1448
- height: 64px !important; /* stylelint-disable-line declaration-no-important */
1449
- line-height: 64px !important; /* stylelint-disable-line declaration-no-important */
1477
+ .e-bigger .e-filter-popup .e-control .e-dialog .e-lib .e-popup .e-popup-open .e-excelfilter .e-gantt,
1478
+ .e-bigger .e-gantt .e-contextmenu-wrapper ul {
1479
+ padding: 0 !important; /* stylelint-disable-line declaration-no-important */
1450
1480
  }
1451
1481
 
1452
1482
  .e-gantt-tooltip-label {
@@ -1561,6 +1591,29 @@
1561
1591
  z-index: 1;
1562
1592
  }
1563
1593
 
1594
+ .e-gantt .e-gantt-chart .e-chart-root-container .e-content td.e-chart-row-cell.e-droptop {
1595
+ border-top: 1px solid #0070f0;
1596
+ border-width: 1px 0 0;
1597
+ }
1598
+
1599
+ .e-gantt .e-gantt-chart .e-chart-root-container .e-content td.e-chart-row-cell.e-dropbottom {
1600
+ border-bottom: 1px solid #0070f0;
1601
+ box-shadow: #0070f0;
1602
+ }
1603
+
1604
+ .e-gantt .e-gantt-chart .e-chart-root-container .e-content td.e-chart-row-cell.e-childborder {
1605
+ border-bottom: 1px solid #0070f0;
1606
+ border-top: 1px solid #0070f0;
1607
+ box-shadow: #0070f0;
1608
+ }
1609
+
1610
+ @media (max-width: 767px) {
1611
+ .e-bigger .e-gantt .e-dialog .e-edit-form-column:nth-child(odd), .e-bigger .e-gantt .e-dialog .e-edit-form-column:nth-child(even) {
1612
+ float: none;
1613
+ padding: 16px 12px 0 16px;
1614
+ width: 100%;
1615
+ }
1616
+ }
1564
1617
  /*! Gantt theme */
1565
1618
  .e-gantt .e-gantt-splitter {
1566
1619
  border-color: #484848;
@@ -1613,6 +1666,13 @@
1613
1666
  background: #484848;
1614
1667
  opacity: 1;
1615
1668
  }
1669
+ .e-gantt .e-gantt-tree-grid-pane .e-grid td.e-active.e-leftfreeze,
1670
+ .e-gantt .e-gantt-tree-grid-pane .e-grid td.e-active.e-unfreeze,
1671
+ .e-gantt .e-gantt-tree-grid-pane .e-grid td.e-active.e-rightfreeze,
1672
+ .e-gantt .e-gantt-tree-grid-pane .e-grid td.e-active.e-fixedfreeze {
1673
+ background: #484848;
1674
+ opacity: 1;
1675
+ }
1616
1676
  .e-gantt .e-taskbar-resize-div {
1617
1677
  border-color: #0070f0;
1618
1678
  }
@@ -1929,6 +1989,7 @@
1929
1989
  }
1930
1990
  .e-gantt-dialog .e-dlg-header {
1931
1991
  color: #fff;
1992
+ position: relative;
1932
1993
  }
1933
1994
  .e-gantt-dialog .e-dlg-header-content {
1934
1995
  background: #0070f0;