@syncfusion/ej2-gantt 19.4.56 → 20.1.47

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 (80) hide show
  1. package/CHANGELOG.md +10 -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 +167 -70
  5. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  6. package/dist/es6/ej2-gantt.es5.js +185 -78
  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 +2 -1
  13. package/src/gantt/actions/dialog-edit.js +2 -1
  14. package/src/gantt/actions/edit.js +11 -2
  15. package/src/gantt/actions/rowdragdrop.js +37 -15
  16. package/src/gantt/base/date-processor.js +0 -1
  17. package/src/gantt/base/gantt-chart.js +9 -4
  18. package/src/gantt/base/gantt.js +2 -2
  19. package/src/gantt/base/splitter.js +1 -0
  20. package/src/gantt/base/tree-grid.js +3 -1
  21. package/src/gantt/renderer/chart-rows.js +36 -24
  22. package/src/gantt/renderer/connector-line.js +22 -18
  23. package/src/gantt/renderer/event-marker.js +1 -0
  24. package/src/gantt/renderer/nonworking-day.js +13 -6
  25. package/src/gantt/renderer/timeline.d.ts +1 -0
  26. package/src/gantt/renderer/timeline.js +37 -1
  27. package/src/gantt/renderer/tooltip.js +10 -3
  28. package/styles/bootstrap-dark.css +37 -10
  29. package/styles/bootstrap.css +37 -10
  30. package/styles/bootstrap4.css +37 -10
  31. package/styles/bootstrap5-dark.css +53 -19
  32. package/styles/bootstrap5.css +53 -19
  33. package/styles/fabric-dark.css +34 -7
  34. package/styles/fabric.css +37 -10
  35. package/styles/fluent-dark.css +1942 -0
  36. package/styles/fluent-dark.scss +1 -0
  37. package/styles/fluent.css +1942 -0
  38. package/styles/fluent.scss +1 -0
  39. package/styles/gantt/_bootstrap-dark-definition.scss +10 -2
  40. package/styles/gantt/_bootstrap-definition.scss +11 -3
  41. package/styles/gantt/_bootstrap4-definition.scss +10 -2
  42. package/styles/gantt/_bootstrap5-definition.scss +17 -9
  43. package/styles/gantt/_fabric-dark-definition.scss +8 -0
  44. package/styles/gantt/_fabric-definition.scss +10 -2
  45. package/styles/gantt/_fluent-dark-definition.scss +1 -0
  46. package/styles/gantt/_fluent-definition.scss +21 -13
  47. package/styles/gantt/_highcontrast-definition.scss +9 -1
  48. package/styles/gantt/_highcontrast-light-definition.scss +9 -1
  49. package/styles/gantt/_layout.scss +53 -2
  50. package/styles/gantt/_material-dark-definition.scss +9 -1
  51. package/styles/gantt/_material-definition.scss +10 -2
  52. package/styles/gantt/_tailwind-definition.scss +13 -5
  53. package/styles/gantt/_theme.scss +2 -5
  54. package/styles/gantt/bootstrap-dark.css +37 -10
  55. package/styles/gantt/bootstrap.css +37 -10
  56. package/styles/gantt/bootstrap4.css +37 -10
  57. package/styles/gantt/bootstrap5-dark.css +53 -19
  58. package/styles/gantt/bootstrap5.css +53 -19
  59. package/styles/gantt/fabric-dark.css +34 -7
  60. package/styles/gantt/fabric.css +37 -10
  61. package/styles/gantt/fluent-dark.css +1942 -0
  62. package/styles/gantt/fluent-dark.scss +22 -0
  63. package/styles/gantt/fluent.css +1942 -0
  64. package/styles/gantt/fluent.scss +22 -0
  65. package/styles/gantt/highcontrast-light.css +34 -7
  66. package/styles/gantt/highcontrast.css +34 -7
  67. package/styles/gantt/icons/_fluent-dark.scss +1 -0
  68. package/styles/gantt/icons/_fluent.scss +1 -1
  69. package/styles/gantt/icons/_tailwind-dark.scss +28 -29
  70. package/styles/gantt/icons/_tailwind.scss +26 -27
  71. package/styles/gantt/material-dark.css +37 -10
  72. package/styles/gantt/material.css +37 -10
  73. package/styles/gantt/tailwind-dark.css +70 -99
  74. package/styles/gantt/tailwind.css +70 -99
  75. package/styles/highcontrast-light.css +34 -7
  76. package/styles/highcontrast.css +34 -7
  77. package/styles/material-dark.css +37 -10
  78. package/styles/material.css +37 -10
  79. package/styles/tailwind-dark.css +70 -99
  80. package/styles/tailwind.css +70 -99
@@ -483,7 +483,6 @@ class DateProcessor {
483
483
  tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);
484
484
  }
485
485
  else {
486
- // eslint-disable-next-line
487
486
  if (!isNullOrUndefined(ganttProperties.startDate) && !isNullOrUndefined(ganttProperties.endDate) &&
488
487
  (ganttProperties.startDate).getTime() === (ganttProperties.endDate).getTime() && !isNullOrUndefined(ganttData.taskData[this.parent.taskFields.milestone])) {
489
488
  tDuration = 1;
@@ -4082,6 +4081,7 @@ class GanttChart {
4082
4081
  this.chartTimelineContainer = null;
4083
4082
  this.rangeViewContainer =
4084
4083
  createElement('div', { className: rangeContainer });
4084
+ this.rangeViewContainer.setAttribute("role", "RangeContainer");
4085
4085
  this.virtualRender = new VirtualContentRenderer(this.parent);
4086
4086
  this.addEventListener();
4087
4087
  }
@@ -4240,6 +4240,7 @@ class GanttChart {
4240
4240
  renderTimelineContainer() {
4241
4241
  this.chartTimelineContainer =
4242
4242
  createElement('div', { className: timelineHeaderContainer });
4243
+ this.chartTimelineContainer.setAttribute("role", "TimelineHeader");
4243
4244
  this.chartElement.appendChild(this.chartTimelineContainer);
4244
4245
  }
4245
4246
  /**
@@ -4291,8 +4292,7 @@ class GanttChart {
4291
4292
  else {
4292
4293
  this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';
4293
4294
  }
4294
- }
4295
- //let element: HTMLElement = this.chartTimelineContainer.querySelector('.' + cls.timelineHeaderTableContainer);
4295
+ } //let element: HTMLElement = this.chartTimelineContainer.querySelector('.' + cls.timelineHeaderTableContainer);
4296
4296
  this.chartBodyContent.style.width = formatUnit(this.parent.timelineModule.totalTimelineWidth);
4297
4297
  this.setVirtualHeight();
4298
4298
  this.parent.notify('updateHeight', {});
@@ -4470,7 +4470,7 @@ class GanttChart {
4470
4470
  const target = e.target;
4471
4471
  const isOnTaskbarElement = e.target.classList.contains(taskBarMainContainer)
4472
4472
  || closest(e.target, '.' + taskBarMainContainer);
4473
- if (closest(target, '.e-gantt-parent-taskbar')) {
4473
+ if (closest(target, '.e-gantt-parent-taskbar') && !this.parent.editSettings.allowEditing) {
4474
4474
  this.chartExpandCollapseRequest(e);
4475
4475
  }
4476
4476
  else if (!isOnTaskbarElement && this.parent.autoFocusTasks) {
@@ -4992,6 +4992,10 @@ class GanttChart {
4992
4992
  $target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar')) {
4993
4993
  e.preventDefault();
4994
4994
  }
4995
+ if (isTab && $target.classList.contains('e-rowdragdrop')) {
4996
+ this.parent.treeGrid.grid.notify('key-pressed', e);
4997
+ return;
4998
+ }
4995
4999
  if ($target.classList.contains('e-rowcell') && (nextElement && nextElement.classList.contains('e-rowcell')) ||
4996
5000
  $target.classList.contains('e-headercell')) { // eslint-disable-line
4997
5001
  if (isTab) {
@@ -5034,7 +5038,7 @@ class GanttChart {
5034
5038
  else {
5035
5039
  this.manageFocus($target, 'remove', true);
5036
5040
  }
5037
- if (nextElement.classList.contains('e-rowcell')) {
5041
+ if (nextElement.classList.contains('e-rowcell') && $target.nextElementSibling) {
5038
5042
  if (!$target.classList.contains('e-rowcell')) {
5039
5043
  this.parent.treeGrid.grid.notify('key-pressed', e);
5040
5044
  const fmodule = getValue('focusModule', this.parent.treeGrid.grid);
@@ -6113,6 +6117,40 @@ class Timeline {
6113
6117
  } while ((startDate < endDate));
6114
6118
  return parentTh;
6115
6119
  }
6120
+ updateTimelineAfterZooming(endDate, resized) {
6121
+ let timeDiff;
6122
+ let perDayWidth;
6123
+ let totWidth;
6124
+ let contentElement = document.getElementsByClassName('e-chart-scroll-container e-content')[0];
6125
+ if (!isNullOrUndefined(contentElement)) {
6126
+ let contentWidth = contentElement['offsetWidth'];
6127
+ let contentHeight = contentElement['offsetHeight'];
6128
+ let scrollHeight = document.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];
6129
+ timeDiff = Math.abs(this.timelineStartDate.getTime() - endDate.getTime());
6130
+ timeDiff = timeDiff / (1000 * 3600 * 24);
6131
+ if (this.bottomTier === 'None') {
6132
+ perDayWidth = this.getPerDayWidth(this.customTimelineSettings.timelineUnitSize, this.customTimelineSettings.topTier.count, this.topTier);
6133
+ }
6134
+ else {
6135
+ perDayWidth = this.getPerDayWidth(this.customTimelineSettings.timelineUnitSize, this.customTimelineSettings.bottomTier.count, this.bottomTier);
6136
+ }
6137
+ if (contentHeight < scrollHeight) {
6138
+ totWidth = (perDayWidth * timeDiff) + 17;
6139
+ }
6140
+ else {
6141
+ totWidth = (perDayWidth * timeDiff);
6142
+ }
6143
+ if (contentWidth >= totWidth) {
6144
+ let widthDiff = contentWidth - totWidth;
6145
+ widthDiff = Math.round(widthDiff / perDayWidth);
6146
+ endDate.setDate(endDate.getDate() + widthDiff);
6147
+ this.parent.timelineModule.timelineEndDate = endDate;
6148
+ if (resized) {
6149
+ this.parent.updateProjectDates(this.timelineStartDate, this.timelineEndDate, this.parent.isTimelineRoundOff);
6150
+ }
6151
+ }
6152
+ }
6153
+ }
6116
6154
  getTimelineRoundOffEndDate(date) {
6117
6155
  const tierMode = this.topTier === 'None' ? this.bottomTier : this.topTier;
6118
6156
  const endDate = new Date(date.toString());
@@ -6127,6 +6165,9 @@ class Timeline {
6127
6165
  endDate.setHours(24, 0, 0, 0);
6128
6166
  }
6129
6167
  }
6168
+ if (this.isZooming || this.parent.isLoad) {
6169
+ this.updateTimelineAfterZooming(endDate, false);
6170
+ }
6130
6171
  return endDate;
6131
6172
  }
6132
6173
  /**
@@ -6196,7 +6237,6 @@ class Timeline {
6196
6237
  }
6197
6238
  return increment;
6198
6239
  }
6199
- ;
6200
6240
  /**
6201
6241
  * Method to find header cell was weekend or not
6202
6242
  *
@@ -6775,6 +6815,8 @@ class GanttTreeGrid {
6775
6815
  renderTreeGrid() {
6776
6816
  this.composeProperties();
6777
6817
  this.bindEvents();
6818
+ const root = 'root';
6819
+ this.parent.treeGrid[root] = this.parent[root] ? this.parent[root] : this.parent;
6778
6820
  this.parent.treeGrid.appendTo(this.treeGridElement);
6779
6821
  this.wireEvents();
6780
6822
  }
@@ -6838,7 +6880,7 @@ class GanttTreeGrid {
6838
6880
  const scrollWidth = this.getScrollbarWidth();
6839
6881
  const isMobile = /Android|Mac|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
6840
6882
  if (scrollWidth !== 0) {
6841
- content.style.cssText += 'width: calc(100% + ' + scrollWidth + 'px);';
6883
+ content.style.cssText += 'width: calc(100% + ' + (scrollWidth + 1) + 'px);';
6842
6884
  }
6843
6885
  else {
6844
6886
  content.classList.add('e-gantt-scroll-padding');
@@ -7864,7 +7906,7 @@ class ChartRows extends DateProcessor {
7864
7906
  this.milestoneHeight = 0;
7865
7907
  this.milesStoneRadius = 0;
7866
7908
  this.baselineTop = 0;
7867
- this.baselineHeight = 3;
7909
+ this.baselineHeight = 8;
7868
7910
  this.touchLeftConnectorpoint = '';
7869
7911
  this.touchRightConnectorpoint = '';
7870
7912
  this.dropSplit = false;
@@ -7946,7 +7988,7 @@ class ChartRows extends DateProcessor {
7946
7988
  * @private
7947
7989
  */
7948
7990
  getIndicatorNode(indicator) {
7949
- const templateString = '<label class="' + label + ' ' + taskIndicatorDiv + '" style="line-height:'
7991
+ const templateString = '<label class="' + label + ' ' + taskIndicatorDiv + '" role="LabelIndicator" style="line-height:'
7950
7992
  + (this.parent.rowHeight) + 'px;' +
7951
7993
  'left:' + this.getIndicatorleft(indicator.date) + 'px;"><i class="' + indicator.iconClass + '"></i> </label>';
7952
7994
  return this.createDivElement(templateString);
@@ -8019,9 +8061,9 @@ class ChartRows extends DateProcessor {
8019
8061
  }
8020
8062
  else {
8021
8063
  taskLabel$$1 = '<span class="' + taskLabel + '" style="line-height:' +
8022
- (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.viewType === 'ResourceView' ? 'left;' : ';') +
8023
- 'display:' + (this.parent.viewType === 'ResourceView' ? 'inline-flex;' : ';') +
8024
- 'width:' + (this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
8064
+ (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? 'text-align: left;' : '') +
8065
+ +(this.parent.viewType === 'ResourceView' ? 'display:inline-flex;' : '') +
8066
+ +(this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
8025
8067
  this.taskBarHeight + 'px;">' + labelString + '</span>';
8026
8068
  }
8027
8069
  }
@@ -8438,7 +8480,7 @@ class ChartRows extends DateProcessor {
8438
8480
  */
8439
8481
  getTaskBaselineNode() {
8440
8482
  const data = this.templateData;
8441
- const template = '<div class="' + baselineBar + ' ' + '" style="margin-top:' + this.baselineTop +
8483
+ const template = '<div class="' + baselineBar + ' ' + '" role="BaselineBar" style="margin-top:' + this.baselineTop +
8442
8484
  'px;left:' + data.ganttProperties.baselineLeft + 'px;' +
8443
8485
  'width:' + data.ganttProperties.baselineWidth + 'px;height:' +
8444
8486
  this.baselineHeight + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + '"></div>';
@@ -8452,9 +8494,10 @@ class ChartRows extends DateProcessor {
8452
8494
  */
8453
8495
  getMilestoneBaselineNode() {
8454
8496
  const data = this.templateData;
8497
+ let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
8455
8498
  const template = '<div class="' + baselineMilestoneContainer + ' ' + '" style="' +
8456
8499
  'left:' + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
8457
- 'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + 2) +
8500
+ 'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) +
8458
8501
  'px">' + '<div class="' + baselineMilestoneDiv + '">' + '<div class="' + baselineMilestoneDiv +
8459
8502
  ' ' + baselineMilestoneTop + '" ' +
8460
8503
  'style="top:' + (-this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
@@ -8482,7 +8525,9 @@ class ChartRows extends DateProcessor {
8482
8525
  */
8483
8526
  getLeftLabelNode(i) {
8484
8527
  const leftLabelNode = this.leftLabelContainer();
8485
- leftLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('left'));
8528
+ if (this.generateTaskLabelAriaLabel('left') !== "") {
8529
+ leftLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('left'));
8530
+ }
8486
8531
  let leftLabelTemplateNode = null;
8487
8532
  if (this.leftTaskLabelTemplateFunction) {
8488
8533
  leftLabelTemplateNode = this.leftTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'LeftLabelTemplate', this.getTemplateID('LeftLabelTemplate'), false, undefined, leftLabelNode[0], this.parent.treeGrid['root']);
@@ -8504,9 +8549,10 @@ class ChartRows extends DateProcessor {
8504
8549
  return leftLabelNode;
8505
8550
  }
8506
8551
  getLableText(labelString, labelDiv) {
8552
+ let leftLabelHeight = this.parent.renderBaseline ? ((this.parent.rowHeight - this.taskBarHeight) / 2) : this.taskBarMarginTop;
8507
8553
  const templateString = createElement('div', {
8508
8554
  className: labelDiv, styles: 'height:' + (this.taskBarHeight) + 'px;' +
8509
- 'margin-top:' + this.taskBarMarginTop + 'px;'
8555
+ 'margin-top:' + leftLabelHeight + 'px;'
8510
8556
  });
8511
8557
  const spanElem = createElement('span', { className: label });
8512
8558
  const property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';
@@ -8525,7 +8571,9 @@ class ChartRows extends DateProcessor {
8525
8571
  */
8526
8572
  getRightLabelNode(i) {
8527
8573
  const rightLabelNode = this.rightLabelContainer();
8528
- rightLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('right'));
8574
+ if (this.generateTaskLabelAriaLabel('right') !== "") {
8575
+ rightLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('right'));
8576
+ }
8529
8577
  let rightLabelTemplateNode = null;
8530
8578
  if (this.rightTaskLabelTemplateFunction) {
8531
8579
  rightLabelTemplateNode = this.rightTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'RightLabelTemplate', this.getTemplateID('RightLabelTemplate'), false, undefined, rightLabelNode[0], this.parent.treeGrid['root']);
@@ -8638,8 +8686,10 @@ class ChartRows extends DateProcessor {
8638
8686
  else {
8639
8687
  labelDiv = this.createDivElement('<span class="' +
8640
8688
  taskLabel + '" style="line-height:' +
8641
- (this.taskBarHeight - 1) + 'px; display:' + (this.parent.viewType === 'ResourceView' ? 'inline-flex;' : ';') + 'width:' +
8642
- (this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : ';') + 'px; height:' +
8689
+ (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? 'display:inline-flex;' : '') +
8690
+ (this.parent.viewType === 'ResourceView' ? 'width:' + (data.ganttProperties.width - 10) : '') + 'px; height:' +
8691
+ (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? 'display: inline-flex;' : '') +
8692
+ (this.parent.viewType === 'ResourceView' ? 'width:' + (data.ganttProperties.width - 10) : '') + 'px; height:' +
8643
8693
  this.taskBarHeight + 'px;">' + labelString + '</span>');
8644
8694
  }
8645
8695
  progressBarInnerDiv[0].appendChild([].slice.call(labelDiv)[0]);
@@ -8668,10 +8718,10 @@ class ChartRows extends DateProcessor {
8668
8718
  const className = (this.parent.gridLines === 'Horizontal' || this.parent.gridLines === 'Both') ?
8669
8719
  'e-chart-row-border' : '';
8670
8720
  table.innerHTML = '<tr class="' + this.getRowClassName(this.templateData) + ' ' + chartRow + '"' +
8671
- 'style="display:' + this.getExpandDisplayProp(this.templateData) + ';height:' +
8721
+ 'role="ChartRow" style="display:' + this.getExpandDisplayProp(this.templateData) + ';height:' +
8672
8722
  this.parent.rowHeight + 'px;">' +
8673
8723
  '<td class="' + chartRowCell + ' ' + className
8674
- + '" style="width:' + this.parent.timelineModule.totalTimelineWidth + 'px;"></td></tr>';
8724
+ + '" role="ChartCell" style="width:' + this.parent.timelineModule.totalTimelineWidth + 'px;"></td></tr>';
8675
8725
  return table.childNodes;
8676
8726
  }
8677
8727
  /**
@@ -8736,7 +8786,7 @@ class ChartRows extends DateProcessor {
8736
8786
  }
8737
8787
  leftLabelContainer() {
8738
8788
  const template = '<div class="' + ((this.leftTaskLabelTemplateFunction) ? leftLabelTempContainer :
8739
- leftLabelContainer) + ' ' + '" tabindex="-1" style="height:' +
8789
+ leftLabelContainer) + ' ' + '" tabindex="-1" role="LeftLabel" style="height:' +
8740
8790
  (this.parent.rowHeight - 2) + 'px;width:' + this.taskNameWidth(this.templateData) + '"></div>';
8741
8791
  return this.createDivElement(template);
8742
8792
  }
@@ -8748,7 +8798,7 @@ class ChartRows extends DateProcessor {
8748
8798
  const template = '<div class="' + taskBarMainContainer + ' ' +
8749
8799
  this.parent.getUnscheduledTaskClass(data.ganttProperties) + ' ' +
8750
8800
  ((data.ganttProperties.cssClass) ? data.ganttProperties.cssClass : '') + '" ' +
8751
- ' tabindex="-1" style="' + ((data.ganttProperties.isMilestone && !manualParent) ?
8801
+ ' tabindex="-1" role="TaskBar" style="' + ((data.ganttProperties.isMilestone && !manualParent) ?
8752
8802
  ('width:' + this.milestoneHeight + 'px;height:' +
8753
8803
  this.milestoneHeight + 'px;margin-top:' + this.milestoneMarginTop + 'px;left:' + (data.ganttProperties.left -
8754
8804
  (this.milestoneHeight / 2)) + 'px;') : ('width:' + data.ganttProperties.width +
@@ -8759,26 +8809,26 @@ class ChartRows extends DateProcessor {
8759
8809
  }
8760
8810
  rightLabelContainer() {
8761
8811
  const template = '<div class="' + ((this.rightTaskLabelTemplateFunction) ? rightLabelTempContainer :
8762
- rightLabelContainer) + '" ' + ' tabindex="-1" style="left:' + this.getRightLabelLeft(this.templateData) + 'px;height:'
8812
+ rightLabelContainer) + '" ' + ' tabindex="-1" role="RightLabel" style="left:' + this.getRightLabelLeft(this.templateData) + 'px; height:'
8763
8813
  + (this.parent.rowHeight - 2) + 'px;"></div>';
8764
8814
  return this.createDivElement(template);
8765
8815
  }
8766
8816
  childTaskbarLeftResizer() {
8767
8817
  const lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);
8768
8818
  const template = '<div class="' + taskBarLeftResizer + ' ' + icon + '"' +
8769
- ' style="left:' + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
8819
+ ' role="LeftResizer" style="left:' + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
8770
8820
  return this.createDivElement(template);
8771
8821
  }
8772
8822
  childTaskbarRightResizer() {
8773
8823
  const rResizerLeft = this.parent.isAdaptive ? -2 : -10;
8774
8824
  const template = '<div class="' + taskBarRightResizer + ' ' + icon + '"' +
8775
- ' style="left:' + (this.templateData.ganttProperties.width + rResizerLeft) + 'px;' +
8825
+ ' role="RightResizer" style="left:' + (this.templateData.ganttProperties.width + rResizerLeft) + 'px;' +
8776
8826
  'height:' + (this.taskBarHeight) + 'px;"></div>';
8777
8827
  return this.createDivElement(template);
8778
8828
  }
8779
8829
  childTaskbarProgressResizer() {
8780
8830
  const template = '<div class="' + childProgressResizer + '"' +
8781
- ' style="left:' + (this.templateData.ganttProperties.progressWidth - 6) + 'px;margin-top:' +
8831
+ ' role="ProgressResizer" style="left:' + (this.templateData.ganttProperties.progressWidth - 6) + 'px;margin-top:' +
8782
8832
  (this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
8783
8833
  '><div class="' + progressHandlerElement + '"></div>' +
8784
8834
  '<div class="' + progressBarHandlerAfter + '"></div></div>';
@@ -8976,10 +9026,13 @@ class ChartRows extends DateProcessor {
8976
9026
  * @private
8977
9027
  */
8978
9028
  initChartHelperPrivateVariable() {
9029
+ let taskbarHeightValue = this.parent.renderBaseline ? 0.45 : 0.62;
9030
+ let taskBarMarginTopValue = this.parent.renderBaseline ? 4 : 2;
9031
+ let milestoneHeightValue = this.parent.renderBaseline ? 1.13 : 0.82;
8979
9032
  this.baselineColor = !isNullOrUndefined(this.parent.baselineColor) &&
8980
9033
  this.parent.baselineColor !== '' ? this.parent.baselineColor : null;
8981
9034
  this.taskBarHeight = isNullOrUndefined(this.parent.taskbarHeight) || this.parent.taskbarHeight >= this.parent.rowHeight ?
8982
- Math.floor(this.parent.rowHeight * 0.62) : this.parent.taskbarHeight; // 0.62 -- Standard Ratio.
9035
+ Math.floor(this.parent.rowHeight * taskbarHeightValue) : this.parent.taskbarHeight; // 0.62 -- Standard Ratio.
8983
9036
  if (this.parent.renderBaseline) {
8984
9037
  let height;
8985
9038
  if ((this.taskBarHeight + this.baselineHeight) <= this.parent.rowHeight) {
@@ -8990,11 +9043,11 @@ class ChartRows extends DateProcessor {
8990
9043
  }
8991
9044
  this.taskBarHeight = height;
8992
9045
  }
8993
- this.milestoneHeight = Math.floor(this.taskBarHeight * 0.82); // 0.82 -- Standard Ratio.
8994
- this.taskBarMarginTop = Math.floor((this.parent.rowHeight - this.taskBarHeight) / 2);
9046
+ this.milestoneHeight = Math.floor(this.taskBarHeight * milestoneHeightValue); // 0.82 -- Standard Ratio.
9047
+ this.taskBarMarginTop = Math.floor((this.parent.rowHeight - this.taskBarHeight) / taskBarMarginTopValue);
8995
9048
  this.milestoneMarginTop = Math.floor((this.parent.rowHeight - this.milestoneHeight) / 2);
8996
9049
  this.milesStoneRadius = Math.floor((this.milestoneHeight) / 2);
8997
- this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 1);
9050
+ this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 4);
8998
9051
  this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 8;
8999
9052
  this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2));
9000
9053
  }
@@ -9188,6 +9241,7 @@ class ChartRows extends DateProcessor {
9188
9241
  const indicators = this.templateData.ganttProperties.indicators;
9189
9242
  for (let indicatorIndex = 0; indicatorIndex < indicators.length; indicatorIndex++) {
9190
9243
  taskIndicatorNode = this.getIndicatorNode(indicators[indicatorIndex]);
9244
+ taskIndicatorNode[0].setAttribute('aria-label', indicators[indicatorIndex].name);
9191
9245
  if (indicators[indicatorIndex].name.indexOf('$') > -1 || indicators[indicatorIndex].name.indexOf('#') > -1) {
9192
9246
  taskIndicatorTextFunction = this.templateCompiler(indicators[indicatorIndex].name);
9193
9247
  taskIndicatorTextNode = taskIndicatorTextFunction(extend({ index: i }, this.templateData), this.parent, 'indicatorLabelText');
@@ -10406,7 +10460,7 @@ class ConnectorLine {
10406
10460
  for (let i = 0; i < childNodes.length; i++) {
10407
10461
  const innerChild = childNodes[i].childNodes;
10408
10462
  for (let j = 0; j < innerChild.length; j++) {
10409
- const ariaString = this.parent.connectorLineModule.generateAriaLabel(ariaConnector[i]);
10463
+ const ariaString = 'Connector Line ' + this.parent.connectorLineModule.generateAriaLabel(ariaConnector[i]);
10410
10464
  innerChild[j].setAttribute('aria-label', ariaString);
10411
10465
  }
10412
10466
  }
@@ -10663,7 +10717,11 @@ class ConnectorLine {
10663
10717
  let connectorContainer = '';
10664
10718
  const isVirtual = this.parent.virtualScrollModule && this.parent.enableVirtualization;
10665
10719
  const connectorLine$$1 = this.getPosition(data, this.getParentPosition(data), height);
10666
- const heightValue = isVirtual ? connectorLine$$1.height : height;
10720
+ let isMilestoneValue = 0;
10721
+ if (this.parent.renderBaseline) {
10722
+ isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;
10723
+ }
10724
+ const heightValue = isVirtual ? connectorLine$$1.height : (height + isMilestoneValue);
10667
10725
  if (this.getParentPosition(data)) {
10668
10726
  connectorContainer = '<div id="ConnectorLine' + data.connectorLineId + '" style="background-color:black">';
10669
10727
  let div = '<div class="' + connectorLineContainer +
@@ -10691,7 +10749,7 @@ class ConnectorLine {
10691
10749
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
10692
10750
  if (this.getParentPosition(data) === 'FSType1') {
10693
10751
  div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10694
- ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10752
+ ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10695
10753
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType1">';
10696
10754
  div = div + eLine;
10697
10755
  div = div + 'left:' + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
@@ -10712,7 +10770,7 @@ class ConnectorLine {
10712
10770
  }
10713
10771
  if (this.getParentPosition(data) === 'FSType2') {
10714
10772
  div = div + 'left:' + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((data.parentIndex * data.rowHeight) +
10715
- this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10773
+ this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10716
10774
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType2">';
10717
10775
  div = div + eLine;
10718
10776
  div = div + 'left:' + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
@@ -10743,7 +10801,7 @@ class ConnectorLine {
10743
10801
  }
10744
10802
  if (this.getParentPosition(data) === 'FSType3') {
10745
10803
  div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10746
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1))) + 'px;' +
10804
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10747
10805
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType3">';
10748
10806
  div = div + rightArrow;
10749
10807
  div = div + 'left:10px;' + this.getBorderStyles('left', 10) +
@@ -10773,7 +10831,7 @@ class ConnectorLine {
10773
10831
  }
10774
10832
  if (this.getParentPosition(data) === 'FSType4') {
10775
10833
  div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10776
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10834
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10777
10835
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType4">';
10778
10836
  div = div + rightArrow;
10779
10837
  div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
@@ -10799,7 +10857,7 @@ class ConnectorLine {
10799
10857
  }
10800
10858
  if (this.getParentPosition(data) === 'SSType4') {
10801
10859
  div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10802
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10860
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10803
10861
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType4">';
10804
10862
  div = div + rightArrow;
10805
10863
  div = div + 'left:' + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
@@ -10812,7 +10870,7 @@ class ConnectorLine {
10812
10870
  }
10813
10871
  if (this.getParentPosition(data) === 'SSType3') {
10814
10872
  div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10815
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10873
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10816
10874
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType3">';
10817
10875
  div = div + rightArrow;
10818
10876
  div = div + 'left:10px;' + duplicateStingTwo;
@@ -10825,7 +10883,7 @@ class ConnectorLine {
10825
10883
  }
10826
10884
  if (this.getParentPosition(data) === 'SSType2') {
10827
10885
  div = div + 'left:' + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10828
- ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1))) + 'px;' +
10886
+ ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10829
10887
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType2">';
10830
10888
  div = div + eLine;
10831
10889
  div = div + 'width:' + (setInnerChildWidthSSType2 + 1) + 'px;' +
@@ -10846,7 +10904,7 @@ class ConnectorLine {
10846
10904
  if (this.getParentPosition(data) === 'SSType1') {
10847
10905
  div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10848
10906
  ((data.parentIndex * data.rowHeight) +
10849
- this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1))) + 'px;' +
10907
+ this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10850
10908
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType1">';
10851
10909
  div = div + eLine;
10852
10910
  div = div + 'width:' + (data.parentLeft - data.childLeft + 21) + 'px;' +
@@ -10863,7 +10921,7 @@ class ConnectorLine {
10863
10921
  }
10864
10922
  if (this.getParentPosition(data) === 'FFType1') {
10865
10923
  div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10866
- ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1))) + 'px;' +
10924
+ ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10867
10925
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType1">';
10868
10926
  div = div + eLine;
10869
10927
  div = div + 'left:' + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
@@ -10887,7 +10945,7 @@ class ConnectorLine {
10887
10945
  }
10888
10946
  if (this.getParentPosition(data) === 'FFType2') {
10889
10947
  div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10890
- ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1))) + 'px;' +
10948
+ ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10891
10949
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType2">';
10892
10950
  div = div + eLine;
10893
10951
  div = div + (isMilestoneParent ? 'left:-1px;' : '') + 'width:' +
@@ -10913,7 +10971,7 @@ class ConnectorLine {
10913
10971
  }
10914
10972
  if (this.getParentPosition(data) === 'FFType3') {
10915
10973
  div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10916
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10974
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10917
10975
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType3">';
10918
10976
  div = div + duplicateStingOne;
10919
10977
  div = div + eLine;
@@ -10936,7 +10994,7 @@ class ConnectorLine {
10936
10994
  }
10937
10995
  if (this.getParentPosition(data) === 'FFType4') {
10938
10996
  div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10939
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
10997
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10940
10998
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType4">';
10941
10999
  div = div + leftArrow;
10942
11000
  div = div + ('left:' + ((data.childLeft + data.childWidth) -
@@ -10965,7 +11023,7 @@ class ConnectorLine {
10965
11023
  }
10966
11024
  if (this.getParentPosition(data) === 'SFType4') {
10967
11025
  div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10968
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;width:1px;' +
11026
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;width:1px;' +
10969
11027
  'height:' + heightValue + 'px;position:absolute" data-connectortype="SFType4">';
10970
11028
  div = div + duplicateStingFour + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
10971
11029
  'border-bottom-width:' + (5 + this.lineStroke) +
@@ -10993,7 +11051,7 @@ class ConnectorLine {
10993
11051
  }
10994
11052
  if (this.getParentPosition(data) === 'SFType3') {
10995
11053
  div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
10996
- ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
11054
+ ((data.childIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
10997
11055
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType3">';
10998
11056
  div = div + duplicateStingOne;
10999
11057
  div = div + eLine;
@@ -11011,7 +11069,7 @@ class ConnectorLine {
11011
11069
  }
11012
11070
  if (this.getParentPosition(data) === 'SFType1') {
11013
11071
  div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11014
- ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1))) + 'px;' +
11072
+ ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11015
11073
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType1">';
11016
11074
  div = div + eLine;
11017
11075
  div = div + 'width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
@@ -11036,7 +11094,7 @@ class ConnectorLine {
11036
11094
  }
11037
11095
  if (this.getParentPosition(data) === 'SFType2') {
11038
11096
  div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11039
- ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1))) + 'px;' +
11097
+ ((data.parentIndex * data.rowHeight) + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11040
11098
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType2">';
11041
11099
  div = div + eLine;
11042
11100
  div = div + 'left:' + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
@@ -11278,6 +11336,7 @@ class Splitter$1 {
11278
11336
  this.splitterObject.paneSettings[1].size = null;
11279
11337
  this.splitterObject.paneSettings[1].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionChart);
11280
11338
  }
11339
+ this.parent.timelineModule.updateTimelineAfterZooming(this.parent.timelineModule.timelineEndDate, true);
11281
11340
  callBackPromise.resolve(splitterResizedArgs);
11282
11341
  });
11283
11342
  return callBackPromise;
@@ -11559,6 +11618,7 @@ class Tooltip$1 {
11559
11618
  * @returns {void} .
11560
11619
  */
11561
11620
  updateTooltipPosition(args) {
11621
+ args.element.style.visibility = 'visible';
11562
11622
  if (isNullOrUndefined(this.tooltipMouseEvent) || args.target.classList.contains('e-notes-info')) {
11563
11623
  return;
11564
11624
  }
@@ -11588,7 +11648,6 @@ class Tooltip$1 {
11588
11648
  tooltipPositionY = tooltipPositionY + 10;
11589
11649
  }
11590
11650
  args.element.style.top = tooltipPositionY + 'px';
11591
- args.element.style.visibility = 'visible';
11592
11651
  }
11593
11652
  /**
11594
11653
  * Method to get mouse pointor position
@@ -11630,9 +11689,16 @@ class Tooltip$1 {
11630
11689
  switch (elementType) {
11631
11690
  case 'milestone':
11632
11691
  {
11633
- const sDate = !isNullOrUndefined(data.startDate) ? '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
11692
+ let milestoneStartDate;
11693
+ if (args.target.className.includes('e-baseline-gantt-milestone') && !isNullOrUndefined(data.baselineStartDate)) {
11694
+ milestoneStartDate = data.baselineStartDate;
11695
+ }
11696
+ else if (!isNullOrUndefined(data.startDate)) {
11697
+ milestoneStartDate = data.startDate;
11698
+ }
11699
+ const sDate = !isNullOrUndefined(milestoneStartDate) ? '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
11634
11700
  '<td class = "e-gantt-tooltip-value">' +
11635
- this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat()) + '</td></tr>' : '';
11701
+ this.parent.getFormatedDate(milestoneStartDate, this.parent.getDateFormat()) + '</td></tr>' : '';
11636
11702
  content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
11637
11703
  taskName + sDate + '</tbody></table>';
11638
11704
  break;
@@ -12850,7 +12916,7 @@ let Gantt = class Gantt extends Component {
12850
12916
  gridHeight = 'calc(100% - ' + timelineContainer + 'px)';
12851
12917
  // eslint-disable-next-line
12852
12918
  this.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
12853
- if (!isNullOrUndefined(this.toolbarModule)) {
12919
+ if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {
12854
12920
  this.splitterElement.style.height = 'calc(100% - ' + this.toolbarModule.element.offsetHeight + 'px)';
12855
12921
  }
12856
12922
  else {
@@ -13385,7 +13451,7 @@ let Gantt = class Gantt extends Component {
13385
13451
  */
13386
13452
  updateGridLineContainerHeight() {
13387
13453
  if (this.chartVerticalLineContainer) {
13388
- this.chartVerticalLineContainer.style.height = formatUnit(this.getContentHeight());
13454
+ this.chartVerticalLineContainer.style.height = formatUnit(this.contentHeight);
13389
13455
  }
13390
13456
  }
13391
13457
  /**
@@ -15293,7 +15359,8 @@ class CellEdit {
15293
15359
  args.cancel = true;
15294
15360
  return;
15295
15361
  }
15296
- if (data.hasChildRecords && (field === taskSettings.endDate || field === taskSettings.duration
15362
+ if (data.hasChildRecords && ((field === taskSettings.endDate && ((!isNullOrUndefined(data['isManual']) &&
15363
+ data['isManual'] == false) || this.parent.taskMode == 'Auto')) || field === taskSettings.duration
15297
15364
  || field === taskSettings.dependency || field === taskSettings.progress
15298
15365
  || field === taskSettings.work || field === 'taskType')) {
15299
15366
  args.cancel = true;
@@ -19389,7 +19456,8 @@ class DialogEdit {
19389
19456
  disabled = true;
19390
19457
  }
19391
19458
  if (this.editedRecord.hasChildRecords) {
19392
- if (column.field === this.parent.taskFields.endDate || column.field === this.parent.taskFields.duration ||
19459
+ if ((column.field === this.parent.taskFields.endDate && ((!isNullOrUndefined(this.editedRecord['isManual']) &&
19460
+ this.editedRecord['isManual'] == false) || this.parent.taskMode == 'Auto')) || column.field === this.parent.taskFields.duration ||
19393
19461
  column.field === this.parent.taskFields.progress || column.field === this.parent.taskFields.work ||
19394
19462
  column.field === 'taskType') {
19395
19463
  disabled = true;
@@ -23191,14 +23259,20 @@ class Edit$2 {
23191
23259
  }
23192
23260
  else {
23193
23261
  childIndex = parentItem.childRecords.length;
23194
- } /*Child collection update*/
23262
+ }
23263
+ /*Child collection update*/
23195
23264
  parentItem.childRecords.splice(childIndex, 0, record);
23196
23265
  if ((this.parent.dataSource instanceof DataManager &&
23197
23266
  isNullOrUndefined(parentItem.taskData[this.parent.taskFields.parentID])) ||
23198
23267
  !isNullOrUndefined(this.parent.dataSource)) {
23199
23268
  const child = this.parent.taskFields.child;
23200
23269
  if (parentItem.taskData[child] && parentItem.taskData[child].length > 0) {
23201
- parentItem.taskData[child].splice(childIndex, 0, record.taskData);
23270
+ if (rowPosition === 'Above' || rowPosition === 'Below') {
23271
+ parentItem.taskData[child].splice(childIndex, 0, record.taskData);
23272
+ }
23273
+ else {
23274
+ parentItem.taskData[child].push(record.taskData);
23275
+ }
23202
23276
  }
23203
23277
  else {
23204
23278
  parentItem.taskData[child] = [];
@@ -23654,6 +23728,9 @@ class Edit$2 {
23654
23728
  }
23655
23729
  this.addSuccess(args);
23656
23730
  args = this.constructTaskAddedEventArgs(cAddedRecord, args.modifiedRecords, 'add');
23731
+ if (this.dialogModule.isAddNewResource && !this.parent.isEdit && this.parent.taskFields.work) {
23732
+ this.parent.dataOperation.updateWorkWithDuration(cAddedRecord[0]);
23733
+ }
23657
23734
  this.parent.trigger('actionComplete', args);
23658
23735
  if (this.dialogModule.dialog && !this.dialogModule.dialogObj.isDestroyed) {
23659
23736
  this.dialogModule.dialogObj.hide();
@@ -25763,6 +25840,7 @@ class NonWorkingDay {
25763
25840
  this.nonworkingContainer = createElement('div', {
25764
25841
  className: nonworkingContainer
25765
25842
  });
25843
+ this.nonworkingContainer.setAttribute("role", "NonWorkingDays");
25766
25844
  this.parent.ganttChartModule.chartBodyContent.appendChild(this.nonworkingContainer);
25767
25845
  }
25768
25846
  }
@@ -25800,8 +25878,11 @@ class NonWorkingDay {
25800
25878
  let toDate;
25801
25879
  const container = createElement('div');
25802
25880
  const height = this.parent.contentHeight;
25803
- const scrollElement = this.parent.ganttChartModule.scrollElement;
25804
- const viewportHeight = parseInt(scrollElement.style.height, 10);
25881
+ let toolbarHeight = 0;
25882
+ if (!isNullOrUndefined(this.parent.toolbarModule)) {
25883
+ toolbarHeight = this.parent.toolbarModule.element.offsetHeight;
25884
+ }
25885
+ const viewportHeight = this.parent.ganttHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;
25805
25886
  for (let i = 0; i < this.parent.holidays.length; i++) {
25806
25887
  if (this.parent.holidays[i].from && this.parent.holidays[i].to) {
25807
25888
  fromDate = this.parent.dateValidationModule.getDateFromFormat(this.parent.holidays[i].from);
@@ -25894,9 +25975,12 @@ class NonWorkingDay {
25894
25975
  return container;
25895
25976
  }
25896
25977
  updateHolidayLabelHeight() {
25897
- const height = this.parent.contentHeight;
25898
- const scrollElement = this.parent.ganttChartModule.scrollElement;
25899
- const viewportHeight = parseInt(scrollElement.style.height, 10);
25978
+ const height = this.parent.getContentHeight();
25979
+ let toolbarHeight = 0;
25980
+ if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {
25981
+ toolbarHeight = this.parent.toolbarModule.element.offsetHeight;
25982
+ }
25983
+ const viewportHeight = this.parent.ganttHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;
25900
25984
  const top = (viewportHeight < height) ? viewportHeight / 2 : height / 2;
25901
25985
  const labels = this.holidayContainer.querySelectorAll('.' + holidayLabel);
25902
25986
  for (let i = 0; i < labels.length; i++) {
@@ -25952,6 +26036,7 @@ class EventMarker$1 {
25952
26036
  this.eventMarkersContainer = createElement('div', {
25953
26037
  className: eventMarkersContainer
25954
26038
  });
26039
+ this.eventMarkersContainer.setAttribute("role", "EventMarker");
25955
26040
  this.parent.ganttChartModule.chartBodyContent.appendChild(this.eventMarkersContainer);
25956
26041
  }
25957
26042
  this.eventMarkersContainer.innerHTML = '';
@@ -27122,19 +27207,31 @@ class RowDD$1 {
27122
27207
  let data = gObj.flatData;
27123
27208
  let startIndex;
27124
27209
  let endIndex;
27210
+ let ganttData = this.parent.dataSource;
27211
+ let uniqueTaskID = this.parent.taskFields.id;
27125
27212
  if (draggedRecord.index < droppedRecord.index) {
27126
27213
  startIndex = draggedRecord.index;
27127
- endIndex = droppedRecord.index;
27214
+ for (let i = 0; i < ganttData.length; i++) {
27215
+ let currentData = this.parent.currentViewData.filter(function (e) {
27216
+ return e[uniqueTaskID] === ganttData[i][uniqueTaskID];
27217
+ })[0];
27218
+ if (currentData.index > droppedRecord.index) {
27219
+ endIndex = currentData.index;
27220
+ break;
27221
+ }
27222
+ }
27128
27223
  }
27129
27224
  else {
27130
27225
  startIndex = droppedRecord.index;
27131
- let rootChildRecord = draggedRecord;
27132
- if (rootChildRecord.childRecords.length > 0) {
27133
- do {
27134
- rootChildRecord = rootChildRecord.childRecords[rootChildRecord.childRecords.length - 1];
27135
- } while (rootChildRecord.childRecords.length > 0);
27226
+ for (let i = 0; i < ganttData.length; i++) {
27227
+ let currentData = this.parent.currentViewData.filter(function (e) {
27228
+ return e[uniqueTaskID] === ganttData[i][uniqueTaskID];
27229
+ })[0];
27230
+ if (currentData.index > draggedRecord.index) {
27231
+ endIndex = currentData.index;
27232
+ break;
27233
+ }
27136
27234
  }
27137
- endIndex = rootChildRecord.index;
27138
27235
  }
27139
27236
  for (let i = startIndex; i <= endIndex; i++) {
27140
27237
  if (!isNullOrUndefined(data[i])) {