@syncfusion/ej2-gantt 20.2.38 → 20.2.44

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 (70) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/ej2-gantt.umd.min.js +2 -2
  3. package/dist/ej2-gantt.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-gantt.es2015.js +115 -46
  5. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  6. package/dist/es6/ej2-gantt.es5.js +115 -46
  7. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  8. package/dist/global/ej2-gantt.min.js +2 -2
  9. package/dist/global/ej2-gantt.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +18 -18
  12. package/src/gantt/actions/cell-edit.js +3 -0
  13. package/src/gantt/actions/context-menu.js +1 -1
  14. package/src/gantt/actions/critical-path.js +2 -8
  15. package/src/gantt/actions/edit.js +3 -2
  16. package/src/gantt/actions/rowdragdrop.js +8 -2
  17. package/src/gantt/base/date-processor.js +9 -3
  18. package/src/gantt/base/gantt-chart.d.ts +4 -0
  19. package/src/gantt/base/gantt-chart.js +36 -4
  20. package/src/gantt/base/gantt.d.ts +1 -0
  21. package/src/gantt/base/gantt.js +46 -26
  22. package/src/gantt/base/tree-grid.js +1 -0
  23. package/src/gantt/renderer/chart-rows.js +6 -0
  24. package/src/gantt/renderer/tooltip.js +1 -1
  25. package/styles/bootstrap-dark.css +4 -4
  26. package/styles/bootstrap.css +4 -4
  27. package/styles/bootstrap4.css +4 -4
  28. package/styles/bootstrap5-dark.css +4 -4
  29. package/styles/bootstrap5.css +4 -4
  30. package/styles/fabric-dark.css +4 -4
  31. package/styles/fabric.css +4 -4
  32. package/styles/fluent-dark.css +4 -4
  33. package/styles/fluent.css +4 -4
  34. package/styles/gantt/_layout.scss +9 -19
  35. package/styles/gantt/_theme.scss +1 -19
  36. package/styles/gantt/bootstrap-dark.css +4 -4
  37. package/styles/gantt/bootstrap.css +4 -4
  38. package/styles/gantt/bootstrap4.css +4 -4
  39. package/styles/gantt/bootstrap5-dark.css +4 -4
  40. package/styles/gantt/bootstrap5.css +4 -4
  41. package/styles/gantt/fabric-dark.css +4 -4
  42. package/styles/gantt/fabric.css +4 -4
  43. package/styles/gantt/fluent-dark.css +4 -4
  44. package/styles/gantt/fluent.css +4 -4
  45. package/styles/gantt/highcontrast-light.css +4 -4
  46. package/styles/gantt/highcontrast.css +4 -4
  47. package/styles/gantt/icons/_bootstrap-dark.scss +3 -3
  48. package/styles/gantt/icons/_bootstrap.scss +3 -3
  49. package/styles/gantt/icons/_bootstrap4.scss +5 -5
  50. package/styles/gantt/icons/_bootstrap5.scss +3 -3
  51. package/styles/gantt/icons/_fabric-dark.scss +3 -3
  52. package/styles/gantt/icons/_fabric.scss +3 -3
  53. package/styles/gantt/icons/_fluent.scss +3 -3
  54. package/styles/gantt/icons/_fusionnew.scss +3 -3
  55. package/styles/gantt/icons/_highcontrast.scss +3 -3
  56. package/styles/gantt/icons/_material-dark.scss +3 -3
  57. package/styles/gantt/icons/_material.scss +3 -3
  58. package/styles/gantt/icons/_material3.scss +3 -3
  59. package/styles/gantt/icons/_tailwind-dark.scss +3 -3
  60. package/styles/gantt/icons/_tailwind.scss +3 -3
  61. package/styles/gantt/material-dark.css +4 -4
  62. package/styles/gantt/material.css +4 -4
  63. package/styles/gantt/tailwind-dark.css +4 -4
  64. package/styles/gantt/tailwind.css +4 -4
  65. package/styles/highcontrast-light.css +4 -4
  66. package/styles/highcontrast.css +4 -4
  67. package/styles/material-dark.css +4 -4
  68. package/styles/material.css +4 -4
  69. package/styles/tailwind-dark.css +4 -4
  70. package/styles/tailwind.css +4 -4
@@ -366,7 +366,7 @@ class DateProcessor {
366
366
  if (hour < this.parent.defaultStartTime) {
367
367
  this.setTime(this.parent.defaultStartTime, cloneDate);
368
368
  }
369
- else if (hour >= this.parent.defaultEndTime) {
369
+ else if (hour > this.parent.defaultEndTime) {
370
370
  cloneDate.setDate(cloneDate.getDate() + 1);
371
371
  this.setTime(this.parent.defaultStartTime, cloneDate);
372
372
  }
@@ -400,7 +400,7 @@ class DateProcessor {
400
400
  if (hour > this.parent.defaultEndTime) {
401
401
  this.setTime(this.parent.defaultEndTime, cloneDate);
402
402
  }
403
- else if (hour <= this.parent.defaultStartTime && !ganttProp.isMilestone) {
403
+ else if (hour <= this.parent.defaultStartTime && !isNullOrUndefined(ganttProp) && !ganttProp.isMilestone) {
404
404
  cloneDate.setDate(cloneDate.getDate() - 1);
405
405
  this.setTime(this.parent.defaultEndTime, cloneDate);
406
406
  }
@@ -1466,7 +1466,13 @@ class DateProcessor {
1466
1466
  }
1467
1467
  sortDates(taskRange);
1468
1468
  if (!minStartDate || !maxEndDate) {
1469
- minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;
1469
+ if (!minStartDate) {
1470
+ minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;
1471
+ minStartDate.setHours(0, 0, 0, 0);
1472
+ }
1473
+ else {
1474
+ minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;
1475
+ }
1470
1476
  maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));
1471
1477
  maxEndDate.setDate(maxEndDate.getDate() + 20);
1472
1478
  }
@@ -4816,7 +4822,7 @@ class GanttChart {
4816
4822
  * @private
4817
4823
  */
4818
4824
  expandedGanttRow(args) {
4819
- if (isNullOrUndefined(args['gridRow'])) {
4825
+ if ((isNullOrUndefined(args['gridRow']) || isNullOrUndefined(args['chartRow'])) && this.parent.enableVirtualization) {
4820
4826
  return;
4821
4827
  }
4822
4828
  const record = getValue('data', args);
@@ -5026,6 +5032,23 @@ class GanttChart {
5026
5032
  $target.closest('.e-chart-row') ? $target.closest('.e-chart-row').rowIndex : -1;
5027
5033
  const isTab = (e.action === 'tab') ? true : false;
5028
5034
  const nextElement = this.getNextElement($target, isTab, isInEditedState);
5035
+ this.tempNextElement = nextElement;
5036
+ if (!isNullOrUndefined(nextElement['cellIndex'])) {
5037
+ if (this.parent.allowRowDragAndDrop) {
5038
+ this.childrenIndex = nextElement['cellIndex'];
5039
+ this.nextElementIndex = nextElement['cellIndex'] - 1;
5040
+ }
5041
+ else {
5042
+ this.childrenIndex = nextElement['cellIndex'];
5043
+ this.nextElementIndex = nextElement['cellIndex'];
5044
+ }
5045
+ if (!this.parent.ganttColumns[this.nextElementIndex]['allowEditing'] && this.parent.ganttColumns[this.nextElementIndex]['field'] !== this.parent.taskFields.id) {
5046
+ this.isEditableElement = true;
5047
+ }
5048
+ else {
5049
+ this.isEditableElement = false;
5050
+ }
5051
+ }
5029
5052
  if (nextElement === 'noNextRow') {
5030
5053
  this.manageFocus($target, 'remove', true);
5031
5054
  return;
@@ -5044,7 +5067,7 @@ class GanttChart {
5044
5067
  if (isTab) {
5045
5068
  if (this.parent.editSettings.allowNextRowEdit) {
5046
5069
  const rowData = this.parent.currentViewData[this.focusedRowIndex];
5047
- const columnName = this.parent.ganttColumns[nextElement.getAttribute('aria-colindex')].field;
5070
+ const columnName = this.parent.ganttColumns[nextElement.getAttribute('data-colindex')].field;
5048
5071
  if (rowData.hasChildRecords) {
5049
5072
  if (columnName === this.parent.taskFields.endDate || columnName ===
5050
5073
  this.parent.taskFields.duration || columnName === this.parent.taskFields.dependency ||
@@ -5058,7 +5081,9 @@ class GanttChart {
5058
5081
  }
5059
5082
  else {
5060
5083
  this.parent.treeGrid.grid.notify('key-pressed', e);
5061
- this.parent.treeGrid.editCell(this.focusedRowIndex, columnName); // eslint-disable-line
5084
+ if (isInEditedState) {
5085
+ this.parent.treeGrid.editCell(this.focusedRowIndex, columnName); // eslint-disable-line
5086
+ }
5062
5087
  }
5063
5088
  }
5064
5089
  else {
@@ -5073,7 +5098,8 @@ class GanttChart {
5073
5098
  this.parent.treeGrid.grid.notify('key-pressed', e);
5074
5099
  }
5075
5100
  }
5076
- if (!isNullOrUndefined(isInEditedState) && !this.parent.editModule.cellEditModule.isCellEdit) {
5101
+ if (!(this.parent.editModule && this.parent.editModule.cellEditModule
5102
+ && !isNullOrUndefined(this.parent.editModule.cellEditModule.editedColumn))) {
5077
5103
  if (nextElement) {
5078
5104
  if ($target.classList.contains('e-rowcell')) {
5079
5105
  this.manageFocus($target, 'remove', false);
@@ -5277,6 +5303,18 @@ class GanttChart {
5277
5303
  childElement = element;
5278
5304
  }
5279
5305
  }
5306
+ if (element.classList.contains('e-right-label-temp-container') || element.classList.contains('e-left-label-temp-container') || element.classList.contains('e-indicator-span')) {
5307
+ if (focus === 'add') {
5308
+ element.setAttribute('tabIndex', '0');
5309
+ addClass([element], 'e-active-container');
5310
+ element.focus();
5311
+ }
5312
+ else {
5313
+ removeClass([element], 'e-active-container');
5314
+ element.setAttribute('tabIndex', '-1');
5315
+ element.blur();
5316
+ }
5317
+ }
5280
5318
  if (focus === 'add' && !isNullOrUndefined(childElement)) {
5281
5319
  element.setAttribute('tabIndex', '0');
5282
5320
  addClass([childElement], 'e-active-container');
@@ -6909,6 +6947,7 @@ class GanttTreeGrid {
6909
6947
  }
6910
6948
  composeProperties() {
6911
6949
  this.parent.treeGrid.showColumnMenu = this.parent.showColumnMenu;
6950
+ this.parent.treeGrid.enableCollapseAll = this.parent.collapseAllParentTasks;
6912
6951
  this.parent.treeGrid.columnMenuItems = this.parent.columnMenuItems;
6913
6952
  this.parent.treeGrid.childMapping = isNullOrUndefined(this.parent.taskFields.child) ? '' : this.parent.taskFields.child;
6914
6953
  this.parent.treeGrid.treeColumnIndex = this.parent.treeColumnIndex;
@@ -9639,6 +9678,12 @@ class ChartRows extends DateProcessor {
9639
9678
  }
9640
9679
  const dataId = this.parent.viewType === 'ProjectView' ? data.ganttProperties.taskId : data.ganttProperties.rowUniqueID;
9641
9680
  this.parent.treeGrid.grid.setRowData(dataId, data);
9681
+ let nextEditableElement = this.parent.ganttChartModule.tempNextElement;
9682
+ if (this.parent.ganttChartModule.isEditableElement && nextEditableElement) {
9683
+ this.parent.treeGrid.grid.focusModule.focus();
9684
+ addClass([this.parent.treeGrid.getRows()[tr['ariaRowIndex']].children[this.parent.ganttChartModule.childrenIndex]], 'e-focused');
9685
+ this.parent.ganttChartModule.tempNextElement = null;
9686
+ }
9642
9687
  const row = this.parent.treeGrid.grid.getRowObjectFromUID(this.parent.treeGrid.grid.getDataRows()[index].getAttribute('data-uid'));
9643
9688
  row.data = data;
9644
9689
  }
@@ -11829,7 +11874,7 @@ class Tooltip$1 {
11829
11874
  if (ganttData) {
11830
11875
  data = ganttData.ganttProperties;
11831
11876
  taskName = !isNullOrUndefined(data.taskName) ? '<tr class = "e-gantt-tooltip-rowcell"><td colspan="3">' +
11832
- data.taskName + '</td></tr>' : '';
11877
+ (this.parent.disableHtmlEncode ? data.taskName.replace(/</g, "&lt;").replace(/>/g, "&gt;") : data.taskName) + '</td></tr>' : '';
11833
11878
  }
11834
11879
  switch (elementType) {
11835
11880
  case 'milestone':
@@ -12695,6 +12740,16 @@ let Gantt = class Gantt extends Component {
12695
12740
  this.renderChartVerticalLines();
12696
12741
  }
12697
12742
  }
12743
+ removeCriticalPathStyles() {
12744
+ const ganttChartElement = this.ganttChartModule.chartElement;
12745
+ removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
12746
+ removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), criticalChildProgressBarInnerDiv);
12747
+ removeClass(ganttChartElement.querySelectorAll('.e-milestone-top'), criticalMilestoneTop);
12748
+ removeClass(ganttChartElement.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
12749
+ removeClass(this.element.querySelectorAll('.e-line'), criticalConnectorLine);
12750
+ removeClass(this.element.querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
12751
+ removeClass(this.element.querySelectorAll('.e-connector-line-left-arrow'), criticalConnectorLineLeftArrow);
12752
+ }
12698
12753
  wireEvents() {
12699
12754
  if (this.allowKeyboard) {
12700
12755
  this.keyboardModule = new KeyboardEvents(this.element, {
@@ -12857,139 +12912,140 @@ let Gantt = class Gantt extends Component {
12857
12912
  * @private
12858
12913
  */
12859
12914
  getZoomingLevels() {
12915
+ const _WeekStartDay = this.timelineSettings.weekStartDay;
12860
12916
  const zoomingLevels = [
12861
12917
  {
12862
12918
  topTier: { unit: 'Year', format: 'yyyy', count: 50 },
12863
12919
  bottomTier: { unit: 'Year', format: 'yyyy', count: 10 }, timelineUnitSize: 99, level: 0,
12864
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12920
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12865
12921
  },
12866
12922
  {
12867
12923
  topTier: { unit: 'Year', format: 'yyyy', count: 20 },
12868
12924
  bottomTier: { unit: 'Year', format: 'yyyy', count: 5 }, timelineUnitSize: 99, level: 1,
12869
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12925
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12870
12926
  },
12871
12927
  {
12872
12928
  topTier: { unit: 'Year', format: 'yyyy', count: 5 },
12873
12929
  bottomTier: { unit: 'Year', format: 'yyyy', count: 1 }, timelineUnitSize: 99, level: 2,
12874
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12930
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12875
12931
  },
12876
12932
  {
12877
12933
  topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },
12878
12934
  bottomTier: {
12879
12935
  unit: 'Month', formatter: this.displayHalfValue, count: 6
12880
12936
  }, timelineUnitSize: 66, level: 3,
12881
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12937
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12882
12938
  },
12883
12939
  {
12884
12940
  topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },
12885
12941
  bottomTier: {
12886
12942
  unit: 'Month', formatter: this.displayHalfValue, count: 6
12887
12943
  }, timelineUnitSize: 99, level: 4,
12888
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12944
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12889
12945
  },
12890
12946
  {
12891
12947
  topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },
12892
12948
  bottomTier: {
12893
12949
  unit: 'Month', formatter: this.displayQuarterValue, count: 3
12894
12950
  }, timelineUnitSize: 66, level: 5,
12895
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12951
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12896
12952
  },
12897
12953
  {
12898
12954
  topTier: { unit: 'Year', format: 'yyyy', count: 1 },
12899
12955
  bottomTier: {
12900
12956
  unit: 'Month', formatter: this.displayQuarterValue, count: 3
12901
12957
  }, timelineUnitSize: 99, level: 6,
12902
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12958
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12903
12959
  },
12904
12960
  {
12905
12961
  topTier: { unit: 'Year', format: 'yyyy', count: 1 },
12906
12962
  bottomTier: { unit: 'Month', format: 'MMM yyyy', count: 1 }, timelineUnitSize: 99, level: 7,
12907
- timelineViewMode: 'Year', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12963
+ timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12908
12964
  },
12909
12965
  {
12910
12966
  topTier: { unit: 'Month', format: 'MMM, yy', count: 1 },
12911
12967
  bottomTier: { unit: 'Week', format: 'dd', count: 1 }, timelineUnitSize: 33, level: 8,
12912
- timelineViewMode: 'Month', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12968
+ timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12913
12969
  },
12914
12970
  {
12915
12971
  topTier: { unit: 'Month', format: 'MMM, yyyy', count: 1 },
12916
12972
  bottomTier: { unit: 'Week', format: 'dd MMM', count: 1 }, timelineUnitSize: 66, level: 9,
12917
- timelineViewMode: 'Month', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12973
+ timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12918
12974
  },
12919
12975
  {
12920
12976
  topTier: { unit: 'Month', format: 'MMM, yyyy', count: 1 },
12921
12977
  bottomTier: { unit: 'Week', format: 'dd MMM', count: 1 }, timelineUnitSize: 99, level: 10,
12922
- timelineViewMode: 'Month', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12978
+ timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12923
12979
  },
12924
12980
  {
12925
12981
  topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },
12926
12982
  bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 33, level: 11,
12927
- timelineViewMode: 'Week', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12983
+ timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12928
12984
  },
12929
12985
  {
12930
12986
  topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },
12931
12987
  bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 66, level: 12,
12932
- timelineViewMode: 'Week', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12988
+ timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12933
12989
  },
12934
12990
  {
12935
12991
  topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },
12936
12992
  bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 99, level: 13,
12937
- timelineViewMode: 'Week', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12993
+ timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12938
12994
  },
12939
12995
  {
12940
12996
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12941
12997
  bottomTier: { unit: 'Hour', format: 'hh a', count: 12 }, timelineUnitSize: 66, level: 14,
12942
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12998
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12943
12999
  },
12944
13000
  {
12945
13001
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12946
13002
  bottomTier: { unit: 'Hour', format: 'hh a', count: 12 }, timelineUnitSize: 99, level: 15,
12947
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13003
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12948
13004
  },
12949
13005
  {
12950
13006
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12951
13007
  bottomTier: { unit: 'Hour', format: 'hh a', count: 6 }, timelineUnitSize: 66, level: 16,
12952
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13008
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12953
13009
  },
12954
13010
  {
12955
13011
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12956
13012
  bottomTier: { unit: 'Hour', format: 'hh a', count: 6 }, timelineUnitSize: 99, level: 17,
12957
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13013
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12958
13014
  },
12959
13015
  {
12960
13016
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12961
13017
  bottomTier: { unit: 'Hour', format: 'hh a', count: 2 }, timelineUnitSize: 66, level: 18,
12962
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13018
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12963
13019
  },
12964
13020
  {
12965
13021
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12966
13022
  bottomTier: { unit: 'Hour', format: 'hh a', count: 2 }, timelineUnitSize: 99, level: 19,
12967
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13023
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12968
13024
  },
12969
13025
  {
12970
13026
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12971
13027
  bottomTier: { unit: 'Hour', format: 'hh a', count: 1 }, timelineUnitSize: 66, level: 20,
12972
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13028
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12973
13029
  },
12974
13030
  {
12975
13031
  topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },
12976
13032
  bottomTier: { unit: 'Hour', format: 'hh a', count: 1 }, timelineUnitSize: 99, level: 21,
12977
- timelineViewMode: 'Day', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13033
+ timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12978
13034
  },
12979
13035
  {
12980
13036
  topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },
12981
13037
  bottomTier: { unit: 'Minutes', format: 'mm', count: 30 }, timelineUnitSize: 66, level: 22,
12982
- timelineViewMode: 'Hour', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13038
+ timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12983
13039
  },
12984
13040
  {
12985
13041
  topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },
12986
13042
  bottomTier: { unit: 'Minutes', format: 'mm', count: 15 }, timelineUnitSize: 66, level: 23,
12987
- timelineViewMode: 'Hour', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13043
+ timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12988
13044
  },
12989
13045
  {
12990
13046
  topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },
12991
13047
  bottomTier: { unit: 'Minutes', format: 'mm', count: 1 }, timelineUnitSize: 66, level: 24,
12992
- timelineViewMode: 'Hour', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true
13048
+ timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true
12993
13049
  }
12994
13050
  ];
12995
13051
  return zoomingLevels;
@@ -13234,9 +13290,18 @@ let Gantt = class Gantt extends Component {
13234
13290
  }
13235
13291
  break;
13236
13292
  case 'timezone':
13237
- case 'enableCriticalPath':
13238
13293
  this.dataOperation.checkDataBinding(true);
13239
13294
  break;
13295
+ case 'enableCriticalPath':
13296
+ if (this.enableCriticalPath && this.criticalPathModule) {
13297
+ this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
13298
+ let criticalModule = this.criticalPathModule;
13299
+ this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
13300
+ }
13301
+ else {
13302
+ this.removeCriticalPathStyles();
13303
+ }
13304
+ break;
13240
13305
  case 'filterSettings':
13241
13306
  this.treeGrid.filterSettings = getActualProperties(this.filterSettings);
13242
13307
  this.treeGrid.dataBind();
@@ -15773,6 +15838,9 @@ class CellEdit {
15773
15838
  this.parent.editModule.endEditAction(args);
15774
15839
  }
15775
15840
  this.isCellEdit = false;
15841
+ if (!isNullOrUndefined(this.parent.editModule.cellEditModule.editedColumn)) {
15842
+ this.parent.editModule.cellEditModule.editedColumn = null;
15843
+ }
15776
15844
  if (!isNullOrUndefined(this.parent.toolbarModule)) {
15777
15845
  this.parent.toolbarModule.refreshToolbarItems();
15778
15846
  }
@@ -21281,7 +21349,7 @@ class Edit$2 {
21281
21349
  if (column.field === this.parent.taskFields.id) {
21282
21350
  this.updateIDColumnEditParams(column);
21283
21351
  }
21284
- else if (column.field === this.parent.taskFields.progress) {
21352
+ else if (column.field === this.parent.taskFields.progress && isNullOrUndefined(column.edit)) {
21285
21353
  this.updateProgessColumnEditParams(column);
21286
21354
  }
21287
21355
  else if (column.field === this.parent.taskFields.resourceInfo) {
@@ -23244,6 +23312,7 @@ class Edit$2 {
23244
23312
  eventArgs.modifiedRecords = args.updatedRecordCollection;
23245
23313
  eventArgs.modifiedTaskData = getTaskData(args.updatedRecordCollection, null, null, this.parent);
23246
23314
  setValue('action', args.action, eventArgs);
23315
+ this.parent.isOnDelete = false;
23247
23316
  this.parent.trigger('actionComplete', eventArgs);
23248
23317
  this.deletedTaskDetails = [];
23249
23318
  this.parent.initiateEditAction(false);
@@ -23859,7 +23928,7 @@ class Edit$2 {
23859
23928
  else {
23860
23929
  if (this.parent.viewType === 'ProjectView') {
23861
23930
  if ((rowPosition === 'Top' || rowPosition === 'Bottom') ||
23862
- ((rowPosition === 'Above' || rowPosition === 'Below' || rowPosition === 'Child') && !args.data.parentItem)) {
23931
+ ((rowPosition === 'Above' || rowPosition === 'Below' || rowPosition === 'Child') || isNullOrUndefined(rowPosition) && !args.data.parentItem)) {
23863
23932
  if (args.data instanceof Array) {
23864
23933
  this.updateRealDataSource(args.data, rowPosition);
23865
23934
  }
@@ -27188,10 +27257,7 @@ class CriticalPath {
27188
27257
  /* eslint-disable-next-line */
27189
27258
  criticalConnectorLine(criticalPathIds, collection, condition, collectionTaskId) {
27190
27259
  const ganttChartElement = this.parent.ganttChartModule.chartElement;
27191
- removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
27192
- removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), criticalChildProgressBarInnerDiv);
27193
- removeClass(ganttChartElement.querySelectorAll('.e-milestone-top'), criticalMilestoneTop);
27194
- removeClass(ganttChartElement.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
27260
+ this.parent.removeCriticalPathStyles();
27195
27261
  for (let i = 0; i < criticalPathIds.length; i++) {
27196
27262
  let criticalData;
27197
27263
  if (this.parent.viewType === 'ProjectView') {
@@ -27226,9 +27292,6 @@ class CriticalPath {
27226
27292
  }
27227
27293
  }
27228
27294
  }
27229
- removeClass(this.parent.element.querySelectorAll('.e-line'), criticalConnectorLine);
27230
- removeClass(this.parent.element.querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
27231
- removeClass(this.parent.element.querySelectorAll('.e-connector-line-left-arrow'), criticalConnectorLineLeftArrow);
27232
27295
  if (collection.length !== 0) {
27233
27296
  let index = 0;
27234
27297
  let currentdata;
@@ -27557,7 +27620,7 @@ class ContextMenu$2 {
27557
27620
  let rowIndex = -1;
27558
27621
  if (args.gridRow) {
27559
27622
  // eslint-disable-next-line
27560
- rowIndex = parseInt(args.gridRow.getAttribute('aria-rowindex'), 0);
27623
+ rowIndex = parseInt(args.gridRow.getAttribute('data-rowindex'), 0);
27561
27624
  }
27562
27625
  else if (args.chartRow) {
27563
27626
  // eslint-disable-next-line
@@ -28186,7 +28249,7 @@ class RowDD$1 {
28186
28249
  ganttDragelem.remove();
28187
28250
  }
28188
28251
  const gridRow = closest(args.target, '.e-row');
28189
- const dropIndex = gridRow ? parseInt(gridRow.getAttribute('aria-rowindex'), 10) : args.dropIndex;
28252
+ const dropIndex = gridRow ? parseInt(gridRow.getAttribute('data-rowindex'), 10) : args.dropIndex;
28190
28253
  args.dropIndex = dropIndex;
28191
28254
  args.dropRecord = this.parent.updatedRecords[args.dropIndex];
28192
28255
  this.parent.trigger('rowDrop', args);
@@ -28495,6 +28558,7 @@ class RowDD$1 {
28495
28558
  const proxy = this.parent;
28496
28559
  let tempDataSource;
28497
28560
  let idx;
28561
+ const ganttFields = this.parent.taskFields;
28498
28562
  if (this.parent.dataSource instanceof DataManager) {
28499
28563
  tempDataSource = getValue('dataOperation.dataArray', this.parent);
28500
28564
  }
@@ -28503,7 +28567,12 @@ class RowDD$1 {
28503
28567
  }
28504
28568
  if (tempDataSource.length > 0 && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem)) {
28505
28569
  for (let i = 0; i < Object.keys(tempDataSource).length; i++) {
28506
- if (tempDataSource[i][this.parent.taskFields.child] === droppedRecord.taskData[this.parent.taskFields.child]) {
28570
+ if (!isNullOrUndefined(droppedRecord.taskData[ganttFields.child]) &&
28571
+ tempDataSource[i][ganttFields.child] === droppedRecord.taskData[ganttFields.child]) {
28572
+ idx = i;
28573
+ }
28574
+ else if (isNullOrUndefined(droppedRecord.taskData[ganttFields.child]) &&
28575
+ droppedRecord.taskData[ganttFields.id] === tempDataSource[i][ganttFields.id]) {
28507
28576
  idx = i;
28508
28577
  }
28509
28578
  }