@syncfusion/ej2-gantt 20.3.61 → 20.4.38

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 (105) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +5 -0
  3. package/dist/ej2-gantt.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js +2 -2
  5. package/dist/ej2-gantt.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-gantt.es2015.js +1412 -476
  7. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  8. package/dist/es6/ej2-gantt.es5.js +1438 -484
  9. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  10. package/dist/global/ej2-gantt.min.js +2 -2
  11. package/dist/global/ej2-gantt.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +19 -18
  14. package/src/gantt/actions/chart-scroll.d.ts +5 -1
  15. package/src/gantt/actions/chart-scroll.js +39 -1
  16. package/src/gantt/actions/connector-line-edit.js +2 -0
  17. package/src/gantt/actions/context-menu.js +36 -5
  18. package/src/gantt/actions/critical-path.d.ts +2 -2
  19. package/src/gantt/actions/critical-path.js +23 -16
  20. package/src/gantt/actions/dialog-edit.js +37 -14
  21. package/src/gantt/actions/edit.d.ts +1 -0
  22. package/src/gantt/actions/edit.js +156 -34
  23. package/src/gantt/actions/excel-export.js +13 -0
  24. package/src/gantt/actions/filter.js +3 -0
  25. package/src/gantt/actions/keyboard.js +1 -0
  26. package/src/gantt/actions/pdf-export.js +12 -0
  27. package/src/gantt/actions/rowdragdrop.js +8 -2
  28. package/src/gantt/actions/taskbar-edit.js +140 -43
  29. package/src/gantt/actions/toolbar.js +21 -1
  30. package/src/gantt/base/date-processor.js +1 -1
  31. package/src/gantt/base/gantt-chart.js +31 -3
  32. package/src/gantt/base/gantt-model.d.ts +25 -2
  33. package/src/gantt/base/gantt.d.ts +64 -21
  34. package/src/gantt/base/gantt.js +396 -26
  35. package/src/gantt/base/interface.d.ts +0 -4
  36. package/src/gantt/base/splitter.js +12 -2
  37. package/src/gantt/base/task-processor.js +4 -3
  38. package/src/gantt/base/tree-grid.js +37 -0
  39. package/src/gantt/base/utils.js +1 -0
  40. package/src/gantt/export/pdf-connector-line.js +185 -187
  41. package/src/gantt/models/loading-indicator-model.d.ts +20 -0
  42. package/src/gantt/models/loading-indicator.d.ts +18 -0
  43. package/src/gantt/models/loading-indicator.js +34 -0
  44. package/src/gantt/models/models.d.ts +2 -0
  45. package/src/gantt/models/models.js +1 -0
  46. package/src/gantt/renderer/chart-rows.js +75 -30
  47. package/src/gantt/renderer/connector-line.js +100 -97
  48. package/src/gantt/renderer/edit-tooltip.js +22 -3
  49. package/src/gantt/renderer/event-marker.js +15 -2
  50. package/src/gantt/renderer/nonworking-day.js +4 -2
  51. package/src/gantt/renderer/timeline.js +21 -1
  52. package/src/gantt/renderer/tooltip.js +1 -0
  53. package/styles/bootstrap-dark.css +179 -12
  54. package/styles/bootstrap.css +179 -12
  55. package/styles/bootstrap4.css +178 -10
  56. package/styles/bootstrap5-dark.css +178 -10
  57. package/styles/bootstrap5.css +178 -10
  58. package/styles/fabric-dark.css +179 -12
  59. package/styles/fabric.css +179 -12
  60. package/styles/fluent-dark.css +180 -10
  61. package/styles/fluent.css +180 -10
  62. package/styles/gantt/_bootstrap-dark-definition.scss +6 -2
  63. package/styles/gantt/_bootstrap-definition.scss +6 -3
  64. package/styles/gantt/_bootstrap4-definition.scss +6 -3
  65. package/styles/gantt/_bootstrap5-definition.scss +6 -3
  66. package/styles/gantt/_fabric-dark-definition.scss +6 -3
  67. package/styles/gantt/_fabric-definition.scss +6 -3
  68. package/styles/gantt/_fluent-definition.scss +6 -3
  69. package/styles/gantt/_fusionnew-definition.scss +6 -3
  70. package/styles/gantt/_highcontrast-definition.scss +7 -4
  71. package/styles/gantt/_highcontrast-light-definition.scss +6 -3
  72. package/styles/gantt/_layout.scss +234 -21
  73. package/styles/gantt/_material-dark-definition.scss +6 -3
  74. package/styles/gantt/_material-definition.scss +6 -3
  75. package/styles/gantt/_material3-definition.scss +6 -3
  76. package/styles/gantt/_tailwind-definition.scss +6 -3
  77. package/styles/gantt/_theme.scss +17 -8
  78. package/styles/gantt/bootstrap-dark.css +179 -12
  79. package/styles/gantt/bootstrap.css +179 -12
  80. package/styles/gantt/bootstrap4.css +178 -10
  81. package/styles/gantt/bootstrap5-dark.css +178 -10
  82. package/styles/gantt/bootstrap5.css +178 -10
  83. package/styles/gantt/fabric-dark.css +179 -12
  84. package/styles/gantt/fabric.css +179 -12
  85. package/styles/gantt/fluent-dark.css +180 -10
  86. package/styles/gantt/fluent.css +180 -10
  87. package/styles/gantt/highcontrast-light.css +178 -10
  88. package/styles/gantt/highcontrast.css +179 -12
  89. package/styles/gantt/icons/_bootstrap-dark.scss +1 -1
  90. package/styles/gantt/icons/_bootstrap.scss +1 -1
  91. package/styles/gantt/icons/_fabric-dark.scss +1 -1
  92. package/styles/gantt/icons/_fabric.scss +1 -1
  93. package/styles/gantt/icons/_highcontrast.scss +1 -1
  94. package/styles/gantt/icons/_material-dark.scss +1 -1
  95. package/styles/gantt/icons/_material.scss +1 -1
  96. package/styles/gantt/material-dark.css +177 -12
  97. package/styles/gantt/material.css +179 -12
  98. package/styles/gantt/tailwind-dark.css +178 -10
  99. package/styles/gantt/tailwind.css +178 -10
  100. package/styles/highcontrast-light.css +178 -10
  101. package/styles/highcontrast.css +179 -12
  102. package/styles/material-dark.css +177 -12
  103. package/styles/material.css +179 -12
  104. package/styles/tailwind-dark.css +178 -10
  105. package/styles/tailwind.css +178 -10
@@ -149,6 +149,7 @@ function updateDates(record, parent) {
149
149
  function formatString(str, args) {
150
150
  let regx;
151
151
  for (let i = 0; i < args.length; i++) {
152
+ // eslint-disable-next-line detect-non-literal-regexp
152
153
  regx = new RegExp('\\{' + (i) + '\\}', 'gm');
153
154
  str = str.replace(regx, args[i].toString());
154
155
  }
@@ -487,7 +488,7 @@ class DateProcessor {
487
488
  tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);
488
489
  }
489
490
  else {
490
- if (!isNullOrUndefined(ganttProperties.startDate) && !isNullOrUndefined(ganttProperties.endDate) &&
491
+ if ((!isNullOrUndefined(this.parent.taskFields.milestone)) && (!isNullOrUndefined(ganttProperties.startDate)) && !isNullOrUndefined(ganttProperties.endDate) &&
491
492
  (ganttProperties.startDate).getTime() === (ganttProperties.endDate).getTime() && !isNullOrUndefined(ganttData.taskData[this.parent.taskFields.milestone])) {
492
493
  tDuration = 1;
493
494
  }
@@ -1850,7 +1851,6 @@ class TaskProcessor extends DateProcessor {
1850
1851
  this.parent.setRecordValue('parentId', data[taskSettings.parentID], ganttProperties, true);
1851
1852
  }
1852
1853
  this.addCustomFieldValue(data, ganttData);
1853
- ganttData.checkboxState = 'uncheck';
1854
1854
  this.parent.setRecordValue('isAutoSchedule', autoSchedule, ganttProperties, true);
1855
1855
  this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);
1856
1856
  this.parent.setRecordValue('isMilestone', false, ganttProperties, true);
@@ -2041,8 +2041,10 @@ class TaskProcessor extends DateProcessor {
2041
2041
  taskData.push(this.setSegmentTaskData(segment, segments[i]));
2042
2042
  }
2043
2043
  this.parent.setRecordValue('duration', sumOfDuration, data.ganttProperties, true);
2044
- this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);
2045
- if (!isNullOrUndefined(taskSettings.endDate)) {
2044
+ if (!isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {
2045
+ this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);
2046
+ }
2047
+ if (!isNullOrUndefined(taskSettings.endDate) && !isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {
2046
2048
  this.parent.setRecordValue(this.parent.taskFields.endDate, ganttSegments[ganttSegments.length - 1].endDate, data, true);
2047
2049
  }
2048
2050
  this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, taskData, data);
@@ -3959,6 +3961,8 @@ class ChartScroll {
3959
3961
  addEventListeners() {
3960
3962
  this.parent.on('grid-scroll', this.gridScrollHandler, this);
3961
3963
  EventHandler.add(this.element, 'scroll', this.onScroll, this);
3964
+ this.parent.treeGrid.grid.on('showGanttShimmer', this.updateShimmer, this);
3965
+ this.parent.treeGrid.grid.on('removeGanttShimmer', this.removeShimmer, this);
3962
3966
  }
3963
3967
  /**
3964
3968
  * Unbind events
@@ -3968,6 +3972,8 @@ class ChartScroll {
3968
3972
  removeEventListeners() {
3969
3973
  EventHandler.remove(this.element, 'scroll', this.onScroll);
3970
3974
  this.parent.off('grid-scroll', this.gridScrollHandler);
3975
+ this.parent.treeGrid.grid.off('showGanttShimmer', this.updateShimmer);
3976
+ this.parent.treeGrid.grid.off('removeGanttShimmer', this.removeShimmer);
3971
3977
  }
3972
3978
  /**
3973
3979
  *
@@ -4013,6 +4019,27 @@ class ChartScroll {
4013
4019
  this.parent.chartVerticalLineContainer.style.top = formatUnit(scrollTop);
4014
4020
  }
4015
4021
  }
4022
+ removeShimmer() {
4023
+ let parent = this.parent;
4024
+ setTimeout(function () {
4025
+ parent.hideMaskRow();
4026
+ }, 0);
4027
+ }
4028
+ ;
4029
+ updateShimmer() {
4030
+ let parent = this.parent;
4031
+ setTimeout(function () {
4032
+ parent.showMaskRow();
4033
+ }, 0);
4034
+ }
4035
+ updateSpinner() {
4036
+ let parent = this.parent;
4037
+ this.parent.showSpinner();
4038
+ window.clearTimeout(this.isScrolling);
4039
+ this.isScrolling = setTimeout(function () {
4040
+ parent.hideSpinner();
4041
+ }, 200);
4042
+ }
4016
4043
  /**
4017
4044
  * Scroll event handler
4018
4045
  *
@@ -4038,6 +4065,16 @@ class ChartScroll {
4038
4065
  scrollArgs.scrollDirection = 'Horizontal';
4039
4066
  scrollArgs.action = 'HorizontalScroll';
4040
4067
  }
4068
+ if ((scrollArgs.scrollDirection != 'Horizontal' && !isNullOrUndefined(scrollArgs.scrollDirection)) && this.parent.enableVirtualization === true && (this.parent.isToolBarClick
4069
+ || isNullOrUndefined(this.parent.isToolBarClick))) {
4070
+ this.parent.isVirtualScroll = true;
4071
+ if (this.parent.showIndicator || isNullOrUndefined(this.parent.showIndicator)) {
4072
+ if (!this.parent.enableVirtualMaskRow && this.parent.enableVirtualization && this.parent.loadingIndicator.indicatorType === "Spinner") {
4073
+ this.updateSpinner();
4074
+ }
4075
+ }
4076
+ }
4077
+ this.parent.isToolBarClick = true;
4041
4078
  scrollArgs.requestType = 'scroll';
4042
4079
  this.parent.trigger('actionComplete', scrollArgs);
4043
4080
  }
@@ -4078,7 +4115,10 @@ class ChartScroll {
4078
4115
  * @param {number} scrollLeft - To set scroll left for scroll container
4079
4116
  * @returns {void} .
4080
4117
  */
4081
- setScrollLeft(scrollLeft) {
4118
+ setScrollLeft(scrollLeft, leftSign) {
4119
+ if (leftSign) {
4120
+ scrollLeft = leftSign == -1 && this.parent.enableRtl ? -scrollLeft : scrollLeft;
4121
+ }
4082
4122
  this.element.scrollLeft = scrollLeft;
4083
4123
  this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;
4084
4124
  this.previousScroll.left = this.element.scrollLeft;
@@ -4225,6 +4265,21 @@ class GanttChart {
4225
4265
  this.parent.predecessorModule.createConnectorLinesCollection();
4226
4266
  }
4227
4267
  this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);
4268
+ for (let i = 0; i < this.parent.chartRowsModule.ganttChartTableBody.children.length; i++) {
4269
+ if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4]) {
4270
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');
4271
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[2].setAttribute('tabindex', '-1');
4272
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4].setAttribute('tabindex', '-1');
4273
+ }
4274
+ else {
4275
+ if (this.parent.viewType === 'ProjectView') {
4276
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');
4277
+ }
4278
+ else if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0]) {
4279
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0].setAttribute('tabindex', '-1');
4280
+ }
4281
+ }
4282
+ }
4228
4283
  if (this.parent.enableCriticalPath) {
4229
4284
  let crtiticalModule = this.parent.criticalPathModule;
4230
4285
  this.parent.criticalPathModule.criticalConnectorLine(crtiticalModule.criticalPathCollection, crtiticalModule.detailPredecessorCollection, this.parent.enableCriticalPath, crtiticalModule.predecessorCollectionTaskIds);
@@ -4288,13 +4343,15 @@ class GanttChart {
4288
4343
  for (let i = 0; i < rangeCollection.length; i++) {
4289
4344
  const height = this.getRangeHeight(currentRecord);
4290
4345
  const leftDiv = createElement('div', {
4291
- className: rangeChildContainer + ' ' + 'e-leftarc', styles: `left:${rangeCollection[i].left}px;
4346
+ className: rangeChildContainer + ' ' + 'e-leftarc', styles: (this.parent.enableRtl ? 'right:' : 'left:') +
4347
+ `${(this.parent.enableRtl ? rangeCollection[i].left + rangeCollection[i].width - 5 : rangeCollection[i].left)}px;
4292
4348
  top: ${Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2)}px;
4293
4349
  height: ${height + 1}px; border-right: 0px`
4294
4350
  });
4295
4351
  const rightDiv = createElement('div', {
4296
4352
  className: rangeChildContainer + ' ' + 'e-rightarc',
4297
- styles: `left:${rangeCollection[i].left + rangeCollection[i].width - 5}px;
4353
+ styles: (this.parent.enableRtl ? 'right:' : 'left:') + `${(this.parent.enableRtl ? rangeCollection[i].left :
4354
+ rangeCollection[i].left + rangeCollection[i].width - 5)}px;
4298
4355
  top: ${Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2)}px; height: ${height + 1}px;
4299
4356
  border-left: 0px`
4300
4357
  });
@@ -4311,6 +4368,10 @@ class GanttChart {
4311
4368
  renderTimelineContainer() {
4312
4369
  this.chartTimelineContainer =
4313
4370
  createElement('div', { className: timelineHeaderContainer });
4371
+ if (this.parent.enableRtl) {
4372
+ this.chartTimelineContainer.style.borderLeftWidth = '1px';
4373
+ this.chartTimelineContainer.style.borderRightWidth = '0px';
4374
+ }
4314
4375
  this.chartTimelineContainer.setAttribute("role", "presentation");
4315
4376
  this.chartElement.appendChild(this.chartTimelineContainer);
4316
4377
  }
@@ -4483,7 +4544,7 @@ class GanttChart {
4483
4544
  scrollLeft = this.scrollElement.scrollWidth <= scrollLeft ? this.scrollElement.scrollWidth : scrollLeft;
4484
4545
  if ((this.scrollElement.offsetWidth + this.parent.ganttChartModule.scrollElement.scrollLeft) < scrollLeft
4485
4546
  || (this.scrollElement.scrollLeft > scrollLeft)) {
4486
- this.scrollObject.setScrollLeft(scrollLeft - 50);
4547
+ this.scrollObject.setScrollLeft(scrollLeft - 50, this.parent.enableRtl ? -1 : 0);
4487
4548
  }
4488
4549
  // this.parent.ganttChartModule.scrollObject.updateLeftPosition();
4489
4550
  }
@@ -4541,6 +4602,13 @@ class GanttChart {
4541
4602
  }
4542
4603
  this.parent.notify('chartMouseUp', e);
4543
4604
  if (this.parent.showActiveElement) {
4605
+ this.parent.showIndicator = true;
4606
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
4607
+ this.parent.hideMaskRow();
4608
+ }
4609
+ else {
4610
+ this.parent.hideSpinner();
4611
+ }
4544
4612
  if (this.focusedElement && !e.target.classList.contains('e-split-bar')) {
4545
4613
  this.focusedElement.tabIndex = this.focusedElement.tabIndex === 0 ? -1 : this.focusedElement.tabIndex;
4546
4614
  removeClass([this.focusedElement], 'e-active-container');
@@ -4787,7 +4855,7 @@ class GanttChart {
4787
4855
  this.parent.predecessorModule.createConnectorLinesCollection();
4788
4856
  this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);
4789
4857
  if (this.parent.enableCriticalPath && this.parent.criticalPathModule) {
4790
- let criticalModule = this.parent.criticalPathModule;
4858
+ const criticalModule = this.parent.criticalPathModule;
4791
4859
  criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
4792
4860
  }
4793
4861
  }
@@ -5546,6 +5614,12 @@ class Timeline {
5546
5614
  cancel: false
5547
5615
  };
5548
5616
  this.parent.trigger('actionBegin', args);
5617
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
5618
+ this.parent.showMaskRow();
5619
+ }
5620
+ else {
5621
+ this.parent.showSpinner();
5622
+ }
5549
5623
  if (!args.cancel) {
5550
5624
  newTimeline = args.timeline;
5551
5625
  this.changeTimelineSettings(newTimeline);
@@ -5586,6 +5660,12 @@ class Timeline {
5586
5660
  timeline: this.parent.currentZoomingLevel
5587
5661
  };
5588
5662
  this.parent.trigger('actionComplete', args);
5663
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
5664
+ this.parent.hideMaskRow();
5665
+ }
5666
+ else {
5667
+ this.parent.hideSpinner();
5668
+ }
5589
5669
  }
5590
5670
  }
5591
5671
  /**
@@ -5651,6 +5731,12 @@ class Timeline {
5651
5731
  this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin', this.parent.controlId + '_zoomout'], true);
5652
5732
  }
5653
5733
  this.parent.trigger('actionBegin', args);
5734
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
5735
+ this.parent.showMaskRow();
5736
+ }
5737
+ else {
5738
+ this.parent.showSpinner();
5739
+ }
5654
5740
  this.changeTimelineSettings(newTimeline);
5655
5741
  }
5656
5742
  bottomTierCellWidthCalc(mode, zoomLevel, date) {
@@ -6757,7 +6843,9 @@ class Timeline {
6757
6843
  const validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);
6758
6844
  const validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
6759
6845
  let isChanged;
6760
- if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) || (!isNullOrUndefined(this.parent.editModule.taskbarEditModule)) && (!isNullOrUndefined(this.parent.editModule.taskbarEditModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
6846
+ if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) ||
6847
+ (!isNullOrUndefined(this.parent.editModule.taskbarEditModule)) &&
6848
+ (!isNullOrUndefined(this.parent.editModule.taskbarEditModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
6761
6849
  isChanged = 'prevTimeSpan';
6762
6850
  minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
6763
6851
  }
@@ -6996,9 +7084,12 @@ class GanttTreeGrid {
6996
7084
  this.parent.treeGrid.showColumnMenu = this.parent.showColumnMenu;
6997
7085
  this.parent.treeGrid.enableCollapseAll = this.parent.collapseAllParentTasks;
6998
7086
  this.parent.treeGrid.columnMenuItems = this.parent.columnMenuItems;
7087
+ this.parent.treeGrid.enableRtl = this.parent.enableRtl;
6999
7088
  this.parent.treeGrid.childMapping = isNullOrUndefined(this.parent.taskFields.child) ? '' : this.parent.taskFields.child;
7000
7089
  this.parent.treeGrid.treeColumnIndex = this.parent.treeColumnIndex;
7001
7090
  this.parent.treeGrid.columns = this.treeGridColumns;
7091
+ this.parent.treeGrid.loadingIndicator = this.parent.loadingIndicator;
7092
+ this.parent.treeGrid.enableVirtualMaskRow = this.parent.enableVirtualMaskRow;
7002
7093
  if (this.parent.dataSource instanceof Object && isCountRequired(this.parent)) {
7003
7094
  // In order to bind the observable data at load time, hasChildMapping is necessary to be mapped.
7004
7095
  this.parent.treeGrid.hasChildMapping = 'isParent';
@@ -7092,6 +7183,14 @@ class GanttTreeGrid {
7092
7183
  dataBound(args) {
7093
7184
  this.ensureScrollBar();
7094
7185
  this.parent.treeDataBound(args);
7186
+ if (this.parent.isVirtualScroll) {
7187
+ if ((this.parent.enableVirtualMaskRow && this.parent.enableVirtualization) ||
7188
+ (this.parent.enableVirtualization && !this.parent.enableVirtualMaskRow && this.parent.loadingIndicator.indicatorType === "Shimmer") ||
7189
+ (this.parent.loadingIndicator.indicatorType === "Shimmer")) {
7190
+ this.parent.hideMaskRow();
7191
+ }
7192
+ this.parent.isVirtualScroll = false;
7193
+ }
7095
7194
  this.prevCurrentView = extend([], [], this.parent.currentViewData, true);
7096
7195
  }
7097
7196
  dataStateChange(args) {
@@ -7126,6 +7225,12 @@ class GanttTreeGrid {
7126
7225
  const collapsedArgs = this.createExpandCollapseArgs(args);
7127
7226
  this.parent.ganttChartModule.collapsedGanttRow(collapsedArgs);
7128
7227
  }
7228
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7229
+ this.parent.hideMaskRow();
7230
+ }
7231
+ else {
7232
+ this.parent.hideSpinner();
7233
+ }
7129
7234
  }
7130
7235
  expanded(args) {
7131
7236
  if (!this.parent.ganttChartModule.isExpandCollapseFromChart && !this.parent.isExpandCollapseLevelMethod) {
@@ -7134,6 +7239,12 @@ class GanttTreeGrid {
7134
7239
  this.parent.ganttChartModule.expandedGanttRow(expandedArgs);
7135
7240
  }
7136
7241
  }
7242
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7243
+ this.parent.hideMaskRow();
7244
+ }
7245
+ else {
7246
+ this.parent.hideSpinner();
7247
+ }
7137
7248
  }
7138
7249
  actionBegin(args) {
7139
7250
  this.parent.notify('actionBegin', args);
@@ -7142,6 +7253,14 @@ class GanttTreeGrid {
7142
7253
  setValue('doubleClickTarget', null, this.parent.treeGrid.editModule);
7143
7254
  }
7144
7255
  this.parent.trigger('actionBegin', args);
7256
+ if (args.requestType != "virtualscroll" && args.type != "edit" && args.requestType != "beginEdit") {
7257
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7258
+ this.parent.showMaskRow();
7259
+ }
7260
+ else {
7261
+ this.parent.showSpinner();
7262
+ }
7263
+ }
7145
7264
  } // eslint-disable-next-line
7146
7265
  created(args) {
7147
7266
  this.updateKeyConfigSettings();
@@ -7210,6 +7329,12 @@ class GanttTreeGrid {
7210
7329
  this.parent.addDeleteRecord = false;
7211
7330
  }
7212
7331
  this.parent.trigger('actionComplete', updatedArgs);
7332
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7333
+ this.parent.hideMaskRow();
7334
+ }
7335
+ else {
7336
+ this.parent.hideSpinner();
7337
+ }
7213
7338
  }
7214
7339
  updateKeyConfigSettings() {
7215
7340
  delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.delete;
@@ -7479,7 +7604,7 @@ class GanttTreeGrid {
7479
7604
  */
7480
7605
  composeIDColumn(column) {
7481
7606
  const isProjectView = this.parent.viewType === 'ProjectView';
7482
- let lengthDataSource = this.parent.dataSource['length'];
7607
+ const lengthDataSource = this.parent.dataSource['length'];
7483
7608
  let taskIDName;
7484
7609
  column.isPrimaryKey = isProjectView ? true : false;
7485
7610
  column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('id');
@@ -8092,6 +8217,21 @@ __decorate$16([
8092
8217
  Property(null)
8093
8218
  ], ResourceFields.prototype, "group", void 0);
8094
8219
 
8220
+ var __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8221
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8222
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8223
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8224
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
8225
+ };
8226
+ /**
8227
+ * Configures the Loading Indicator of the Gantt.
8228
+ */
8229
+ class LoadingIndicator extends ChildProperty {
8230
+ }
8231
+ __decorate$17([
8232
+ Property('Spinner')
8233
+ ], LoadingIndicator.prototype, "indicatorType", void 0);
8234
+
8095
8235
  /**
8096
8236
  * Export all generated models for complex settings
8097
8237
  */
@@ -8190,7 +8330,7 @@ class ChartRows extends DateProcessor {
8190
8330
  getIndicatorNode(indicator) {
8191
8331
  const templateString = '<label class="' + label + ' ' + taskIndicatorDiv + '"style="line-height:'
8192
8332
  + (this.parent.rowHeight) + 'px;' +
8193
- 'left:' + this.getIndicatorleft(indicator.date) + 'px;"><i class="' + indicator.iconClass + '"></i> </label>';
8333
+ (this.parent.enableRtl ? 'right:' : 'left:') + this.getIndicatorleft(indicator.date) + 'px;"><i class="' + indicator.iconClass + '"></i> </label>';
8194
8334
  return this.createDivElement(templateString);
8195
8335
  }
8196
8336
  /**
@@ -8216,6 +8356,13 @@ class ChartRows extends DateProcessor {
8216
8356
  getChildTaskbarNode(i, rootElement) {
8217
8357
  let childTaskbarNode = null;
8218
8358
  const data = this.templateData;
8359
+ let direction;
8360
+ if (this.parent.enableRtl) {
8361
+ direction = 'right:';
8362
+ }
8363
+ else {
8364
+ direction = 'left:';
8365
+ }
8219
8366
  if (this.childTaskbarTemplateFunction) {
8220
8367
  childTaskbarNode = this.childTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'TaskbarTemplate', this.getTemplateID('TaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
8221
8368
  }
@@ -8258,14 +8405,15 @@ class ChartRows extends DateProcessor {
8258
8405
  }
8259
8406
  if (isNaN(parseInt(labelString))) {
8260
8407
  taskLabel$$1 = '<span class="' + taskLabel + '" style="line-height:' +
8261
- (this.taskBarHeight - 1) + 'px; text-align: left;' +
8408
+ (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.enableRtl ? 'right;' : 'left;') +
8262
8409
  'display:' + 'inline-block;' +
8263
8410
  'width:' + (data.ganttProperties.width - 10) + 'px; height:' +
8264
8411
  this.taskBarHeight + 'px;">' + labelString + '</span>';
8265
8412
  }
8266
8413
  else {
8267
8414
  taskLabel$$1 = '<span class="' + taskLabel + '" style="line-height:' +
8268
- (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? 'text-align: left;' : '') +
8415
+ (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? ('text-align:' +
8416
+ (this.parent.enableRtl ? 'right;' : 'left;')) : '') +
8269
8417
  +(this.parent.viewType === 'ResourceView' ? 'display:inline-flex;' : '') +
8270
8418
  +(this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
8271
8419
  this.taskBarHeight + 'px;">' + labelString + '</span>';
@@ -8277,17 +8425,17 @@ class ChartRows extends DateProcessor {
8277
8425
  (data.ganttProperties.startDate && !data.ganttProperties.endDate && !data.ganttProperties.duration) ? ('<div class="' + childProgressBarInnerDiv + ' ' + traceChildTaskBar + ' ' +
8278
8426
  unscheduledTaskbarLeft + ' ' + (data.ganttProperties.isAutoSchedule ?
8279
8427
  '' : manualChildTaskBar) + '"' +
8280
- 'style="left:' + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8428
+ 'style="' + direction + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8281
8429
  (data.ganttProperties.endDate && !data.ganttProperties.startDate && !data.ganttProperties.duration) ?
8282
8430
  ('<div class="' + childProgressBarInnerDiv + ' ' + traceChildTaskBar + ' ' +
8283
8431
  unscheduledTaskbarRight + ' ' + (data.ganttProperties.isAutoSchedule ?
8284
8432
  '' : manualChildTaskBar) + '"' +
8285
- 'style="left:' + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8433
+ 'style="' + direction + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8286
8434
  (data.ganttProperties.duration && !data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
8287
8435
  ('<div class="' + childProgressBarInnerDiv + ' ' + traceChildTaskBar + ' ' +
8288
8436
  unscheduledTaskbar + ' ' + (data.ganttProperties.isAutoSchedule ?
8289
8437
  '' : manualChildTaskBar) + '"' +
8290
- 'style="left:' + data.ganttProperties.left + 'px; width:' + data.ganttProperties.width + 'px;' +
8438
+ 'style="' + direction + data.ganttProperties.left + 'px; width:' + data.ganttProperties.width + 'px;' +
8291
8439
  ' height:' + this.taskBarHeight + 'px;"></div>') : '';
8292
8440
  if (data.ganttProperties.startDate && data.ganttProperties.endDate && data.ganttProperties.duration &&
8293
8441
  (isNullOrUndefined(data.ganttProperties.segments) || (!isNullOrUndefined(data.ganttProperties.segments) &&
@@ -8315,6 +8463,13 @@ class ChartRows extends DateProcessor {
8315
8463
  childTaskbarNode = this.createDivElement(template);
8316
8464
  }
8317
8465
  }
8466
+ if (this.parent.enableRtl && childTaskbarNode[0] && childTaskbarNode[0].querySelector('.e-task-label')) {
8467
+ childTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';
8468
+ childTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';
8469
+ if (childTaskbarNode[0].querySelector('.e-gantt-child-progressbar')) {
8470
+ childTaskbarNode[0].querySelector('.e-gantt-child-progressbar').style.textAlign = 'left';
8471
+ }
8472
+ }
8318
8473
  return childTaskbarNode;
8319
8474
  }
8320
8475
  splitTaskbar(data, labelString) {
@@ -8334,7 +8489,7 @@ class ChartRows extends DateProcessor {
8334
8489
  //split taskbar
8335
8490
  '<div class="' + childTaskBarInnerDiv + ' ' + segmentPosition + ' ' + traceChildTaskBar + ' ' +
8336
8491
  ' e-segmented-taskbar' +
8337
- '"style="width:' + segment.width + 'px;position: absolute; left:' + segment.left + 'px;height:' +
8492
+ '"style="width:' + segment.width + 'px;position: absolute;' + (this.parent.enableRtl ? 'right:' : 'left:') + segment.left + 'px;height:' +
8338
8493
  (this.taskBarHeight) + 'px; overflow:' + progressBarVisible + ';" data-segment-index = "' + i + '" aria-label = "' +
8339
8494
  this.generateSpiltTaskAriaLabel(segment, data.ganttProperties) + '"> ' +
8340
8495
  this.getSplitTaskbarLeftResizerNode() +
@@ -8342,7 +8497,7 @@ class ChartRows extends DateProcessor {
8342
8497
  '<div class="' + childProgressBarInnerDiv + ' ' + traceChildProgressBar + ' ' +
8343
8498
  '" style="border-style:' + (segment.progressWidth ? 'solid;' : 'none;') +
8344
8499
  'display:' + (segment.progressWidth >= 0 ? 'block;' : 'none;') +
8345
- 'width:' + segment.progressWidth + 'px;height:100%;' +
8500
+ 'width:' + segment.progressWidth + 'px;height:100%;' + 'text-align:' + (this.parent.enableRtl ? 'left;' : 'right;') +
8346
8501
  'border-top-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;' +
8347
8502
  'border-bottom-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;">' +
8348
8503
  // progress label
@@ -8359,19 +8514,20 @@ class ChartRows extends DateProcessor {
8359
8514
  getSplitTaskbarLeftResizerNode() {
8360
8515
  const lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);
8361
8516
  const template = '<div class="' + taskBarLeftResizer + ' ' + icon + '"' +
8362
- ' style="left:' + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
8517
+ ' style="' + (this.parent.enableRtl ? 'right:' : 'left:') + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
8363
8518
  return template;
8364
8519
  }
8365
8520
  getSplitTaskbarRightResizerNode(segment) {
8366
8521
  const rResizerLeft = this.parent.isAdaptive ? -2 : -10;
8367
8522
  const template = '<div class="' + taskBarRightResizer + ' ' + icon + '"' +
8368
- ' style="left:' + (segment.width + rResizerLeft) + 'px;' +
8523
+ ' style="' + (this.parent.enableRtl ? 'right:' : 'left:') + (segment.width + rResizerLeft) + 'px;' +
8369
8524
  'height:' + (this.taskBarHeight) + 'px;"></div>';
8370
8525
  return template;
8371
8526
  }
8372
8527
  getSplitProgressResizerNode(segment) {
8528
+ let width = this.parent.enableRtl ? (segment.progressWidth + 8) : (segment.progressWidth - 6);
8373
8529
  const template = '<div class="' + childProgressResizer + '"' +
8374
- ' style="left:' + (segment.progressWidth - 6) + 'px;margin-top:' +
8530
+ ' style="' + (this.parent.enableRtl ? 'right:' : 'left:') + width + 'px;margin-top:' +
8375
8531
  (this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
8376
8532
  '><div class="' + progressHandlerElement + '"></div>' +
8377
8533
  '<div class="' + progressBarHandlerAfter + '"></div></div>';
@@ -8501,6 +8657,12 @@ class ChartRows extends DateProcessor {
8501
8657
  }
8502
8658
  }
8503
8659
  this.parent.trigger('actionComplete', args);
8660
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
8661
+ this.parent.hideMaskRow();
8662
+ }
8663
+ else {
8664
+ this.parent.hideSpinner();
8665
+ }
8504
8666
  setValue('isEdit', false, this.parent.contextMenuModule);
8505
8667
  setValue('isEdit', false, this.parent);
8506
8668
  }
@@ -8705,7 +8867,7 @@ class ChartRows extends DateProcessor {
8705
8867
  getTaskBaselineNode() {
8706
8868
  const data = this.templateData;
8707
8869
  const template = '<div class="' + baselineBar + ' ' + '" role="term" style="margin-top:' + this.baselineTop +
8708
- 'px;left:' + data.ganttProperties.baselineLeft + 'px;' +
8870
+ 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + data.ganttProperties.baselineLeft + 'px;' +
8709
8871
  'width:' + data.ganttProperties.baselineWidth + 'px;height:' +
8710
8872
  this.baselineHeight + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + '"></div>';
8711
8873
  return this.createDivElement(template);
@@ -8720,7 +8882,7 @@ class ChartRows extends DateProcessor {
8720
8882
  const data = this.templateData;
8721
8883
  let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
8722
8884
  const template = '<div class="' + baselineMilestoneContainer + ' ' + '" style="' +
8723
- 'left:' + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
8885
+ (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
8724
8886
  'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) +
8725
8887
  'px">' + '<div class="' + baselineMilestoneDiv + '">' + '<div class="' + baselineMilestoneDiv +
8726
8888
  ' ' + baselineMilestoneTop + '" ' +
@@ -8770,6 +8932,10 @@ class ChartRows extends DateProcessor {
8770
8932
  }
8771
8933
  leftLabelNode[0].appendChild([].slice.call(leftLabelTemplateNode)[0]);
8772
8934
  }
8935
+ if (this.parent.enableRtl) {
8936
+ leftLabelNode[0].style.paddingLeft = '25px';
8937
+ leftLabelNode[0].style.paddingRight = '0px';
8938
+ }
8773
8939
  return leftLabelNode;
8774
8940
  }
8775
8941
  getLableText(labelString, labelDiv) {
@@ -8816,6 +8982,10 @@ class ChartRows extends DateProcessor {
8816
8982
  }
8817
8983
  rightLabelNode[0].appendChild([].slice.call(rightLabelTemplateNode)[0]);
8818
8984
  }
8985
+ if (this.parent.enableRtl) {
8986
+ rightLabelNode[0].style.marginLeft = '0px';
8987
+ rightLabelNode[0].style.paddingRight = '25px';
8988
+ }
8819
8989
  return rightLabelNode;
8820
8990
  }
8821
8991
  getManualTaskbar() {
@@ -8835,17 +9005,18 @@ class ChartRows extends DateProcessor {
8835
9005
  taskbarHeight * 2 + 'px;border-left-width:' + taskbarHeight / 5 +
8836
9006
  'px; border-bottom:' + taskbarHeight / 5 + 'px solid transparent;"></div>');
8837
9007
  const template = '<div class="' + manualParentMainContainer + '"' +
8838
- 'style=left:' + (data.ganttProperties.left - data.ganttProperties.autoLeft) + 'px;' +
9008
+ 'style=' + (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.left - data.ganttProperties.autoLeft) + 'px;' +
8839
9009
  'width:' + data.ganttProperties.width + 'px;' +
8840
9010
  'height:' + taskbarHeight + 'px;>' + innerDiv + ((data.ganttProperties.startDate && data.ganttProperties.endDate &&
8841
9011
  data.ganttProperties.duration) || data.ganttProperties.duration ? '<div class="e-gantt-manualparenttaskbar-left" style=' +
8842
- '"height:' + taskbarHeight + 'px;border-left-width:' + taskbarHeight / 5 +
9012
+ (this.parent.enableRtl ? 'margin-right:0px;' : '') + '"height:' + taskbarHeight + 'px;border-left-width:' + taskbarHeight / 5 +
8843
9013
  'px; border-bottom:' + taskbarHeight / 5 + 'px solid transparent;"></div>' +
8844
- '<div class="e-gantt-manualparenttaskbar-right" style=' +
8845
- 'left:' + (data.ganttProperties.width - taskbarHeight / 5) + 'px;height:' +
9014
+ '<div class="e-gantt-manualparenttaskbar-right" style=' + (this.parent.enableRtl ? 'margin-right:-8px;' : '') +
9015
+ (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.width - taskbarHeight / 5) + 'px;height:' +
8846
9016
  (taskbarHeight) + 'px;border-right-width:' + taskbarHeight / 5 + 'px;border-bottom:' +
8847
9017
  taskbarHeight / 5 + 'px solid transparent;>' + '</div></div>' : '');
8848
- const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="position:absolute;left:' +
9018
+ const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="position:absolute;' +
9019
+ (this.parent.enableRtl ? 'right:' : 'left:') +
8849
9020
  (data.ganttProperties.left - data.ganttProperties.autoLeft - (this.milestoneHeight / 2)) +
8850
9021
  'px;width:' + (this.milesStoneRadius * 2) +
8851
9022
  'px;">' + '<div class="' + manualParentMilestoneTop + '" style="border-right-width:' +
@@ -8906,7 +9077,7 @@ class ChartRows extends DateProcessor {
8906
9077
  }
8907
9078
  if (isNaN(parseInt(labelString))) {
8908
9079
  labelDiv = '<span class="' + taskLabel + '" style="line-height:' +
8909
- (this.taskBarHeight - 1) + 'px; text-align: left;' +
9080
+ (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.enableRtl ? 'right;' : 'left;') +
8910
9081
  'display:' + 'inline-block;' +
8911
9082
  'width:' + (data.ganttProperties.width - 10) + 'px; height:' +
8912
9083
  this.taskBarHeight + 'px;">' + labelString + '</span>';
@@ -8944,6 +9115,13 @@ class ChartRows extends DateProcessor {
8944
9115
  parentTaskbarNode = data.ganttProperties.isMilestone ?
8945
9116
  this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;
8946
9117
  }
9118
+ if (this.parent.enableRtl && parentTaskbarNode[0] && parentTaskbarNode[0].querySelector('.e-task-label')) {
9119
+ parentTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';
9120
+ parentTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';
9121
+ if (parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar')) {
9122
+ parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar').style.textAlign = 'left';
9123
+ }
9124
+ }
8947
9125
  return parentTaskbarNode;
8948
9126
  }
8949
9127
  /**
@@ -9039,35 +9217,36 @@ class ChartRows extends DateProcessor {
9039
9217
  ((data.ganttProperties.cssClass) ? data.ganttProperties.cssClass : '') + '" ' +
9040
9218
  ' tabindex="-1" role="term" style="' + ((data.ganttProperties.isMilestone && !manualParent) ?
9041
9219
  ('width:' + this.milestoneHeight + 'px;height:' +
9042
- this.milestoneHeight + 'px;margin-top:' + this.milestoneMarginTop + 'px;left:' + (data.ganttProperties.left -
9220
+ this.milestoneHeight + 'px;margin-top:' + this.milestoneMarginTop + 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.left -
9043
9221
  (this.milestoneHeight / 2)) + 'px;') : ('width:' + data.ganttProperties.width +
9044
- 'px;margin-top:' + this.taskBarMarginTop + 'px;left:' + (!data.hasChildRecords || data.ganttProperties.isAutoSchedule ?
9222
+ 'px;margin-top:' + this.taskBarMarginTop + 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + (!data.hasChildRecords || data.ganttProperties.isAutoSchedule ?
9045
9223
  data.ganttProperties.left : data.ganttProperties.autoLeft) + 'px;height:' +
9046
9224
  this.taskBarHeight + 'px;cursor:' + (data.ganttProperties.isAutoSchedule ? 'move;' : 'auto;'))) + '"></div>';
9047
9225
  return this.createDivElement(template);
9048
9226
  }
9049
9227
  rightLabelContainer() {
9050
9228
  const template = '<div class="' + ((this.rightTaskLabelTemplateFunction) ? rightLabelTempContainer :
9051
- rightLabelContainer) + '" ' + ' tabindex="-1" role="term" style="left:' + this.getRightLabelLeft(this.templateData) + 'px; height:'
9229
+ rightLabelContainer) + '" ' + ' tabindex="-1" role="term" style="' + (this.parent.enableRtl ? 'right:' : 'left:') + this.getRightLabelLeft(this.templateData) + 'px; height:'
9052
9230
  + (this.parent.rowHeight - 2) + 'px;"></div>';
9053
9231
  return this.createDivElement(template);
9054
9232
  }
9055
9233
  childTaskbarLeftResizer() {
9056
9234
  const lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);
9057
9235
  const template = '<div class="' + taskBarLeftResizer + ' ' + icon + '"' +
9058
- 'style="left:' + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
9236
+ 'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
9059
9237
  return this.createDivElement(template);
9060
9238
  }
9061
9239
  childTaskbarRightResizer() {
9062
9240
  const rResizerLeft = this.parent.isAdaptive ? -2 : -10;
9063
9241
  const template = '<div class="' + taskBarRightResizer + ' ' + icon + '"' +
9064
- 'style="left:' + (this.templateData.ganttProperties.width + rResizerLeft) + 'px;' +
9242
+ 'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + (this.templateData.ganttProperties.width + rResizerLeft) + 'px;' +
9065
9243
  'height:' + (this.taskBarHeight) + 'px;"></div>';
9066
9244
  return this.createDivElement(template);
9067
9245
  }
9068
9246
  childTaskbarProgressResizer() {
9247
+ let width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);
9069
9248
  const template = '<div class="' + childProgressResizer + '"' +
9070
- 'style="left:' + (this.templateData.ganttProperties.progressWidth - 6) + 'px;margin-top:' +
9249
+ 'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + width + 'px;margin-top:' +
9071
9250
  (this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
9072
9251
  '><div class="' + progressHandlerElement + '"></div>' +
9073
9252
  '<div class="' + progressBarHandlerAfter + '"></div></div>';
@@ -9089,7 +9268,7 @@ class ChartRows extends DateProcessor {
9089
9268
  ((data.ganttProperties.isMilestone) ? ('margin-top:' + pointerTop + 'px;left:' + mileStoneLeft +
9090
9269
  'px;') : (marginTop + ';left:' + pointerLeft + 'px;')) + '">' +
9091
9270
  '<div class="' + connectorPointLeft + ' ' + this.parent.getUnscheduledTaskClass(data.ganttProperties) +
9092
- '" style="width: ' + this.connectorPointWidth + 'px;' +
9271
+ '" style="width: ' + this.connectorPointWidth + 'px;' + (this.parent.enableRtl ? 'margin-right:2px;' : '') +
9093
9272
  'height: ' + this.connectorPointWidth + 'px;">' + this.touchLeftConnectorpoint + '</div></div>';
9094
9273
  return this.createDivElement(template);
9095
9274
  }
@@ -9362,8 +9541,14 @@ class ChartRows extends DateProcessor {
9362
9541
  else {
9363
9542
  for (let i = 0; i < this.parent.currentViewData.length; i++) {
9364
9543
  const tempTemplateData = this.parent.currentViewData[i];
9365
- if (this.parent.viewType === 'ResourceView' && !tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
9366
- collapsedResourceRecord.push(tempTemplateData);
9544
+ if (this.parent.viewType === 'ResourceView') {
9545
+ if (this.parent.editModule && this.parent.editModule.isResourceTaskDeleted) {
9546
+ this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
9547
+ this.parent.editModule.isResourceTaskDeleted = false;
9548
+ }
9549
+ if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
9550
+ collapsedResourceRecord.push(tempTemplateData);
9551
+ }
9367
9552
  }
9368
9553
  const tRow = this.getGanttChartRow(i, tempTemplateData);
9369
9554
  this.ganttChartTableBody.appendChild(tRow);
@@ -9407,7 +9592,7 @@ class ChartRows extends DateProcessor {
9407
9592
  taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));
9408
9593
  taskbarContainerNode[0].setAttribute('rowUniqueId', this.templateData.ganttProperties.rowUniqueID);
9409
9594
  const connectorLineLeftNode = this.getLeftPointNode();
9410
- if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType == 'ProjectView') || !this.templateData.hasChildRecords) {
9595
+ if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords) {
9411
9596
  taskbarContainerNode[0].appendChild([].slice.call(connectorLineLeftNode)[0]);
9412
9597
  }
9413
9598
  if (this.templateData.hasChildRecords) {
@@ -9491,7 +9676,7 @@ class ChartRows extends DateProcessor {
9491
9676
  ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();
9492
9677
  }
9493
9678
  }
9494
- if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType == 'ProjectView') || !this.templateData.hasChildRecords) {
9679
+ if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords) {
9495
9680
  const connectorLineRightNode = this.getRightPointNode();
9496
9681
  taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);
9497
9682
  }
@@ -10777,19 +10962,8 @@ class ConnectorLine {
10777
10962
  */
10778
10963
  createConnectorLineObject(parentGanttData, childGanttData, predecessor) {
10779
10964
  const connectorObj = {};
10780
- let updatedRecords;
10781
- if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport) {
10782
- if (this.parent.pdfExportModule['helper']['exportProps'].exportType &&
10783
- this.parent.pdfExportModule['helper']['exportProps'].exportType === 'CurrentViewData') {
10784
- updatedRecords = this.expandedRecords;
10785
- }
10786
- else {
10787
- updatedRecords = this.parent.flatData;
10788
- }
10789
- }
10790
- else {
10791
- updatedRecords = this.expandedRecords;
10792
- }
10965
+ const updatedRecords = this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport ?
10966
+ this.parent.flatData : this.expandedRecords;
10793
10967
  const parentIndex = updatedRecords.indexOf(parentGanttData);
10794
10968
  const childIndex = updatedRecords.indexOf(childGanttData);
10795
10969
  const parentGanttRecord = parentGanttData.ganttProperties;
@@ -10855,6 +11029,9 @@ class ConnectorLine {
10855
11029
  }
10856
11030
  }
10857
11031
  this.parent.ganttChartModule.chartBodyContent.appendChild(this.dependencyViewContainer);
11032
+ for (let i = 0; i < this.dependencyViewContainer.children.length; i++) {
11033
+ this.dependencyViewContainer.children[i].children[0].setAttribute('tabindex', '-1');
11034
+ }
10858
11035
  }
10859
11036
  /**
10860
11037
  * To get parent position.
@@ -11173,85 +11350,96 @@ class ConnectorLine {
11173
11350
  connectorContainer = '<div id="ConnectorLine' + data.connectorLineId + '" style="background-color:black">';
11174
11351
  let div = '<div class="' + connectorLineContainer +
11175
11352
  '" tabindex="-1" style="';
11353
+ let direction = this.parent.enableRtl ? 'right:' : 'left:';
11176
11354
  const eLine = '<div class="' + connectorLine + '" style="' +
11177
11355
  (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11178
- const rightArrow = '<div class="' + connectorLineRightArrow + '" style="' +
11179
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11180
- const leftArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
11181
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11182
- const duplicateStingOne = leftArrow + (isMilestone ? 'left:0px;' : '') +
11183
- this.getBorderStyles('right', 10) +
11356
+ let rightArrow;
11357
+ let leftArrow;
11358
+ if (this.parent.enableRtl) {
11359
+ leftArrow = '<div class="' + connectorLineRightArrow + '" style="' +
11360
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11361
+ rightArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
11362
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11363
+ }
11364
+ else {
11365
+ rightArrow = '<div class="' + connectorLineRightArrow + '" style="' +
11366
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11367
+ leftArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
11368
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11369
+ }
11370
+ const duplicateStingOne = leftArrow + (isMilestone ? (this.parent.enableRtl ? 'right:0px;' : 'left:0px;') : '') +
11371
+ this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10) +
11184
11372
  'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11185
11373
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
11186
- const duplicateStingTwo = this.getBorderStyles('left', 10) +
11374
+ const duplicateStingTwo = this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11187
11375
  'top:' + (-6) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11188
11376
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
11189
11377
  const duplicateStingThree = this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>' + eLine +
11190
11378
  'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11191
11379
  this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
11192
- const duplicateStingFour = leftArrow + 'left:' +
11380
+ const duplicateStingFour = leftArrow + (this.parent.enableRtl ? 'right:' : 'left:') +
11193
11381
  (((data.childLeft + data.childWidth) - (data.parentLeft)) + 10) + 'px;' +
11194
- this.getBorderStyles('right', 10);
11382
+ this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10);
11195
11383
  const duplicateStingFive = 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;' +
11196
11384
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11197
11385
  if (this.getParentPosition(data) === 'FSType1') {
11198
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11386
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11199
11387
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11200
11388
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType1">';
11201
11389
  div = div + eLine;
11202
- div = div + 'left:' + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
11390
+ div = div + direction + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
11203
11391
  ((((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10) + 1) :
11204
11392
  (((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10)) + 'px;' +
11205
11393
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11206
11394
  div = div + eLine;
11207
- div = div + 'left:' + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;' +
11395
+ div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;' +
11208
11396
  'width:0px;' + this.getBorderStyles('right', this.lineStroke) +
11209
11397
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
11210
11398
  div = div + eLine;
11211
- div = div + 'left:' + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
11399
+ div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
11212
11400
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11213
11401
  div = div + rightArrow;
11214
- div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11215
- this.getBorderStyles('left', 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
11402
+ div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11403
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
11216
11404
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11217
11405
  }
11218
11406
  if (this.getParentPosition(data) === 'FSType2') {
11219
- div = div + 'left:' + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((data.parentIndex * data.rowHeight) + addTop +
11407
+ div = div + direction + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((data.parentIndex * data.rowHeight) + addTop +
11220
11408
  this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11221
11409
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType2">';
11222
11410
  div = div + eLine;
11223
- div = div + 'left:' + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
11411
+ div = div + direction + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
11224
11412
  (isMilestoneParent ? 11 : 10) + 'px;' +
11225
11413
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11226
11414
  div = div + eLine;
11227
- div = div + 'left:' + (data.parentWidth + 10 - this.lineStroke) + 'px;' +
11415
+ div = div + direction + (data.parentWidth + 10 - this.lineStroke) + 'px;' +
11228
11416
  this.getBorderStyles('left', this.lineStroke) + 'width:0px;' +
11229
11417
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
11230
11418
  div = div + eLine;
11231
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 20)) + 'px;' +
11419
+ div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 20)) + 'px;' +
11232
11420
  'width:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + 30) + 'px;' +
11233
11421
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11234
11422
  div = div + eLine;
11235
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft +
11423
+ div = div + direction + (data.parentWidth - (((data.parentLeft +
11236
11424
  data.parentWidth) - data.childLeft) + 20)) + 'px;width:0px;' +
11237
11425
  this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) +
11238
11426
  this.getBorderStyles('left', this.lineStroke) + 'position:relative;"></div>';
11239
11427
  div = div + eLine;
11240
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft +
11428
+ div = div + direction + (data.parentWidth - (((data.parentLeft +
11241
11429
  data.parentWidth) - data.childLeft) + 20)) + 'px;width:10px;' +
11242
11430
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11243
11431
  div = div + rightArrow;
11244
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
11245
- this.getBorderStyles('left', 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11432
+ div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
11433
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11246
11434
  'border-top-width:' + (5 + this.lineStroke) + 'px;top:' + (-6 - this.lineStroke) +
11247
11435
  'px;width:0;height:0;position:relative;"></div></div>';
11248
11436
  }
11249
11437
  if (this.getParentPosition(data) === 'FSType3') {
11250
- div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11438
+ div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11251
11439
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11252
11440
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType3">';
11253
11441
  div = div + rightArrow;
11254
- div = div + 'left:10px;' + this.getBorderStyles('left', 10) +
11442
+ div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11255
11443
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) + 'px;' +
11256
11444
  'top:' + (-6) + 'px;width:0;height:0;position:relative;"></div>';
11257
11445
  div = div + eLine;
@@ -11265,49 +11453,49 @@ class ConnectorLine {
11265
11453
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
11266
11454
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
11267
11455
  div = div + eLine;
11268
- div = div + 'left:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
11456
+ div = div + direction + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
11269
11457
  'px;width:0px;' + 'height:' + (this.getconnectorLineGap(data) - this.lineStroke) + 'px;' +
11270
11458
  this.getBorderStyles('left', this.lineStroke) + 'position:relative;' +
11271
11459
  'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
11272
11460
  div = div + eLine;
11273
- div = div + (isMilestoneParent ? 'left:' + (((data.parentLeft +
11274
- data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : 'left:' +
11461
+ div = div + (isMilestoneParent ? direction + (((data.parentLeft +
11462
+ data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : direction +
11275
11463
  (((data.parentLeft + data.parentWidth) - data.childLeft) + 20) + 'px;width:10px;') +
11276
11464
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
11277
11465
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div></div>';
11278
11466
  }
11279
11467
  if (this.getParentPosition(data) === 'FSType4') {
11280
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11468
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11281
11469
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11282
11470
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType4">';
11283
11471
  div = div + rightArrow;
11284
- div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11285
- this.getBorderStyles('left', 10) + 'top:' + (-6) + 'px;' +
11472
+ div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11473
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6) + 'px;' +
11286
11474
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
11287
11475
  (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
11288
11476
  div = div + eLine;
11289
- div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth) - 20) +
11477
+ div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth) - 20) +
11290
11478
  'px;top:' + (-(6 + (5 + this.lineStroke) + Math.round(this.lineStroke / 2))) + 'px;width:10px;' +
11291
11479
  this.getBorderStyles('top', this.lineStroke) +
11292
11480
  'position:relative;"></div>';
11293
11481
  div = div + eLine;
11294
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;left:' +
11482
+ div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' + direction +
11295
11483
  (data.childLeft - (data.parentLeft + data.parentWidth) - 20) + 'px;width:0px;' +
11296
11484
  this.getBorderStyles('left', this.lineStroke) +
11297
11485
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
11298
11486
  div = div + eLine;
11299
- div = div + (isMilestoneParent ? 'left:-1px;' : '') + 'top:' +
11487
+ div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'top:' +
11300
11488
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
11301
11489
  (isMilestoneParent ? ((data.childLeft - (data.parentLeft + data.parentWidth + 20) + 1) + this.lineStroke) :
11302
11490
  ((data.childLeft - (data.parentLeft + data.parentWidth + 20)) + this.lineStroke)) + 'px;' +
11303
11491
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11304
11492
  }
11305
11493
  if (this.getParentPosition(data) === 'SSType4') {
11306
- div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11494
+ div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11307
11495
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11308
11496
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType4">';
11309
11497
  div = div + rightArrow;
11310
- div = div + 'left:' + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
11498
+ div = div + direction + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
11311
11499
  div = div + eLine;
11312
11500
  div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:' +
11313
11501
  (data.childLeft - data.parentLeft) + 'px;' + duplicateStingThree;
@@ -11316,11 +11504,11 @@ class ConnectorLine {
11316
11504
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11317
11505
  }
11318
11506
  if (this.getParentPosition(data) === 'SSType3') {
11319
- div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11507
+ div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11320
11508
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11321
11509
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType3">';
11322
11510
  div = div + rightArrow;
11323
- div = div + 'left:10px;' + duplicateStingTwo;
11511
+ div = div + direction + '10px;' + duplicateStingTwo;
11324
11512
  div = div + eLine;
11325
11513
  div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:10px;' + duplicateStingThree;
11326
11514
  div = div + eLine;
@@ -11329,7 +11517,7 @@ class ConnectorLine {
11329
11517
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11330
11518
  }
11331
11519
  if (this.getParentPosition(data) === 'SSType2') {
11332
- div = div + 'left:' + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11520
+ div = div + direction + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11333
11521
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11334
11522
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType2">';
11335
11523
  div = div + eLine;
@@ -11342,14 +11530,14 @@ class ConnectorLine {
11342
11530
  div = div + 'width:' + setInnerElementWidthSSType2 + 'px;' +
11343
11531
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11344
11532
  div = div + rightArrow;
11345
- div = div + 'left:' + setInnerElementWidthSSType2 + 'px;' +
11346
- this.getBorderStyles('left', 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11533
+ div = div + direction + setInnerElementWidthSSType2 + 'px;' +
11534
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11347
11535
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
11348
11536
  (5 + this.lineStroke) + 'px;width:0;' +
11349
11537
  'height:0;position:relative;"></div></div>';
11350
11538
  }
11351
11539
  if (this.getParentPosition(data) === 'SSType1') {
11352
- div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11540
+ div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11353
11541
  ((data.parentIndex * data.rowHeight) + addTop +
11354
11542
  this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11355
11543
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType1">';
@@ -11362,114 +11550,114 @@ class ConnectorLine {
11362
11550
  div = div + eLine;
11363
11551
  div = div + 'width:10px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11364
11552
  div = div + rightArrow;
11365
- div = div + 'left:10px;' + this.getBorderStyles('left', 10) +
11553
+ div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11366
11554
  'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11367
11555
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11368
11556
  }
11369
11557
  if (this.getParentPosition(data) === 'FFType1') {
11370
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11558
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11371
11559
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11372
11560
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType1">';
11373
11561
  div = div + eLine;
11374
- div = div + 'left:' + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
11562
+ div = div + direction + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
11375
11563
  (data.childLeft + data.childWidth)) - 1) : ((data.parentLeft + data.parentWidth) -
11376
11564
  (data.childLeft + data.childWidth))) + 'px;' +
11377
11565
  'width:' + (isMilestoneParent ? (21 + this.lineStroke) : (20 + this.lineStroke)) + 'px;' +
11378
11566
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11379
11567
  div = div + eLine;
11380
- div = div + 'left:' + (((data.parentLeft + data.parentWidth) -
11568
+ div = div + direction + (((data.parentLeft + data.parentWidth) -
11381
11569
  (data.childLeft + data.childWidth)) + 20) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11382
11570
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
11383
11571
  div = div + eLine;
11384
- div = div + 'left:' + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
11572
+ div = div + direction + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
11385
11573
  (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (16 + this.lineStroke)) :
11386
11574
  (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (10 + this.lineStroke))) + 'px;' +
11387
11575
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11388
11576
  div = div + leftArrow;
11389
- div = div + (isMilestone ? 'left:0px;' : '') + this.getBorderStyles('right', 10) +
11577
+ div = div + (isMilestone ? direction + '0px;' : '') + this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) +
11390
11578
  'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11391
11579
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11392
11580
  }
11393
11581
  if (this.getParentPosition(data) === 'FFType2') {
11394
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11582
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11395
11583
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11396
11584
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType2">';
11397
11585
  div = div + eLine;
11398
- div = div + (isMilestoneParent ? 'left:-1px;' : '') + 'width:' +
11586
+ div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'width:' +
11399
11587
  (isMilestoneParent ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) +
11400
11588
  (21 + this.lineStroke)) : (((data.childLeft + data.childWidth) -
11401
11589
  (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke))) + 'px;' +
11402
11590
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11403
11591
  div = div + eLine;
11404
- div = div + 'left:' + (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 20) +
11592
+ div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 20) +
11405
11593
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11406
11594
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) +
11407
11595
  'position:relative;"></div>';
11408
11596
  div = div + eLine;
11409
- div = div + 'left:' + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
11597
+ div = div + direction + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
11410
11598
  (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 10)) + 'px;' +
11411
11599
  'width:' + (isMilestone ? (16 + this.lineStroke) : (10 + this.lineStroke)) + 'px;' +
11412
11600
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11413
11601
  div = div + leftArrow;
11414
- div = div + 'left:' + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
11415
- this.getBorderStyles('right', 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11602
+ div = div + direction + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
11603
+ this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11416
11604
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) +
11417
11605
  'px;width:0;height:0;position:relative;"></div></div>';
11418
11606
  }
11419
11607
  if (this.getParentPosition(data) === 'FFType3') {
11420
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11608
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11421
11609
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11422
11610
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType3">';
11423
11611
  div = div + duplicateStingOne;
11424
11612
  div = div + eLine;
11425
- div = div + (isMilestone ? ('left:4px;width:' +
11613
+ div = div + (isMilestone ? (direction + '4px;width:' +
11426
11614
  (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 16)) :
11427
- ('left:10px;width:' + (((data.parentLeft + data.parentWidth) -
11615
+ (direction + '10px;width:' + (((data.parentLeft + data.parentWidth) -
11428
11616
  (data.childLeft + data.childWidth)) + 10))) + 'px;top:' + (-(6 + (5 + this.lineStroke) +
11429
11617
  (this.lineStroke / 2))) + 'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11430
11618
  div = div + eLine;
11431
- div = div + 'left:' + (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 20) +
11619
+ div = div + direction + (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 20) +
11432
11620
  'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
11433
11621
  'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11434
11622
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
11435
11623
  div = div + eLine;
11436
- div = div + (isMilestoneParent ? ('left:' + (((data.parentLeft + data.parentWidth) -
11437
- (data.childLeft + data.childWidth)) - 1) + 'px;width:21') : ('left:' + ((data.parentLeft + data.parentWidth) -
11624
+ div = div + (isMilestoneParent ? (direction + (((data.parentLeft + data.parentWidth) -
11625
+ (data.childLeft + data.childWidth)) - 1) + 'px;width:21') : (direction + ((data.parentLeft + data.parentWidth) -
11438
11626
  (data.childLeft + data.childWidth)) + 'px;width:20')) +
11439
11627
  'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
11440
11628
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11441
11629
  }
11442
11630
  if (this.getParentPosition(data) === 'FFType4') {
11443
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11631
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11444
11632
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11445
11633
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType4">';
11446
11634
  div = div + leftArrow;
11447
- div = div + ('left:' + ((data.childLeft + data.childWidth) -
11635
+ div = div + (direction + ((data.childLeft + data.childWidth) -
11448
11636
  (data.parentLeft + data.parentWidth))) + 'px;' +
11449
- this.getBorderStyles('right', 10) + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
11637
+ this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
11450
11638
  'border-bottom-width:' + (5 + this.lineStroke) +
11451
11639
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
11452
11640
  'position:relative;"></div>';
11453
11641
  div = div + eLine;
11454
- div = div + (isMilestone ? ('left:' + (((data.childLeft + data.childWidth) -
11642
+ div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
11455
11643
  (data.parentLeft + data.parentWidth)) + 4) +
11456
- 'px;width:' + (16 + this.lineStroke)) : ('left:' + (((data.childLeft + data.childWidth) -
11644
+ 'px;width:' + (16 + this.lineStroke)) : (direction + (((data.childLeft + data.childWidth) -
11457
11645
  (data.parentLeft + data.parentWidth)) + 10) + 'px;width:' + (10 + this.lineStroke))) +
11458
11646
  'px;' + duplicateStingFive;
11459
11647
  div = div + eLine;
11460
- div = div + 'left:' + (((data.childLeft + data.childWidth) -
11648
+ div = div + direction + (((data.childLeft + data.childWidth) -
11461
11649
  (data.parentLeft + data.parentWidth)) + 20) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) +
11462
11650
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11463
11651
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
11464
11652
  div = div + eLine;
11465
- div = div + (isMilestoneParent ? ('left:-1px;width:' + (((data.childLeft + data.childWidth) -
11653
+ div = div + (isMilestoneParent ? (direction + '-1px;width:' + (((data.childLeft + data.childWidth) -
11466
11654
  (data.parentLeft + data.parentWidth)) + (21 + this.lineStroke))) : ('width:' + (((data.childLeft + data.childWidth) -
11467
11655
  (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke)))) + 'px;top:' +
11468
11656
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
11469
11657
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11470
11658
  }
11471
11659
  if (this.getParentPosition(data) === 'SFType4') {
11472
- div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11660
+ div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11473
11661
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;width:1px;' +
11474
11662
  'height:' + heightValue + 'px;position:absolute" data-connectortype="SFType4">';
11475
11663
  div = div + duplicateStingFour + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
@@ -11477,11 +11665,11 @@ class ConnectorLine {
11477
11665
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
11478
11666
  'position:relative;"></div>';
11479
11667
  div = div + eLine;
11480
- div = div + 'left:' + (isMilestone ? ((((data.childLeft + data.childWidth) - (data.parentLeft)) + (14 + this.lineStroke)) +
11668
+ div = div + direction + (isMilestone ? ((((data.childLeft + data.childWidth) - (data.parentLeft)) + (14 + this.lineStroke)) +
11481
11669
  'px;width:16') : ((((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' +
11482
11670
  (10 + this.lineStroke))) + 'px;' + duplicateStingFive;
11483
11671
  div = div + eLine;
11484
- div = div + 'left:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) + 'px;top:' +
11672
+ div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) + 'px;top:' +
11485
11673
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11486
11674
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - (this.lineStroke - 1))) + 'position:relative;"></div>';
11487
11675
  div = div + eLine;
@@ -11497,25 +11685,25 @@ class ConnectorLine {
11497
11685
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11498
11686
  }
11499
11687
  if (this.getParentPosition(data) === 'SFType3') {
11500
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11688
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11501
11689
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11502
11690
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType3">';
11503
11691
  div = div + duplicateStingOne;
11504
11692
  div = div + eLine;
11505
- div = div + (isMilestone ? 'left:4px;width:' + (16 + this.lineStroke) : 'left:10px;width:' +
11693
+ div = div + (isMilestone ? direction + '4px;width:' + (16 + this.lineStroke) : direction + '10px;width:' +
11506
11694
  (10 + this.lineStroke)) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2) - 1)) + 'px;' +
11507
11695
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11508
11696
  div = div + eLine;
11509
- div = div + 'left:20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
11697
+ div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
11510
11698
  this.getBorderStyles('left', this.lineStroke) +
11511
11699
  this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
11512
11700
  div = div + eLine;
11513
- div = div + 'left:20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
11701
+ div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
11514
11702
  ((data.parentLeft - (data.childLeft + data.childWidth + 20)) + this.lineStroke) + 'px;' +
11515
11703
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11516
11704
  }
11517
11705
  if (this.getParentPosition(data) === 'SFType1') {
11518
- div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11706
+ div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11519
11707
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11520
11708
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType1">';
11521
11709
  div = div + eLine;
@@ -11527,12 +11715,12 @@ class ConnectorLine {
11527
11715
  div = div + 'width:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
11528
11716
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11529
11717
  div = div + eLine;
11530
- div = div + 'left:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) +
11718
+ div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) +
11531
11719
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11532
11720
  this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
11533
11721
  div = div + eLine;
11534
- div = div + (isMilestone ? ('left:' + (((data.childLeft + data.childWidth) -
11535
- (data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : ('left:' +
11722
+ div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
11723
+ (data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : (direction +
11536
11724
  (((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' + (10 + this.lineStroke))) + 'px;' +
11537
11725
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11538
11726
  div = div + duplicateStingFour + 'top:' + (-6 - this.lineStroke) + 'px;' +
@@ -11540,23 +11728,23 @@ class ConnectorLine {
11540
11728
  (5 + this.lineStroke) + 'px;position:relative;"></div></div>';
11541
11729
  }
11542
11730
  if (this.getParentPosition(data) === 'SFType2') {
11543
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11731
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11544
11732
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11545
11733
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType2">';
11546
11734
  div = div + eLine;
11547
- div = div + 'left:' + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11735
+ div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11548
11736
  'px;width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11549
11737
  div = div + eLine;
11550
- div = div + 'left:' + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11738
+ div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11551
11739
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11552
11740
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
11553
11741
  div = div + eLine;
11554
- div = div + (isMilestone ? ('left:4px;width:' + (((data.parentLeft) - (data.childLeft + data.childWidth))
11555
- - (14 - this.lineStroke))) : ('left:10px;width:' + (((data.parentLeft) -
11742
+ div = div + (isMilestone ? (direction + '4px;width:' + (((data.parentLeft) - (data.childLeft + data.childWidth))
11743
+ - (14 - this.lineStroke))) : (direction + '10px;width:' + (((data.parentLeft) -
11556
11744
  (data.childLeft + data.childWidth)) - (20 - this.lineStroke)))) +
11557
11745
  'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11558
11746
  div = div + leftArrow;
11559
- div = div + 'left:0px;' + this.getBorderStyles('right', 10) +
11747
+ div = div + direction + '0px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11560
11748
  'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
11561
11749
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11562
11750
  }
@@ -11743,12 +11931,19 @@ class Splitter$1 {
11743
11931
  this.parent.splitterElement = createElement('div', { className: splitter });
11744
11932
  this.parent.treeGridPane = createElement('div', { className: treeGridPane });
11745
11933
  this.parent.chartPane = createElement('div', { className: ganttChartPane });
11746
- this.parent.splitterElement.appendChild(this.parent.treeGridPane);
11747
- this.parent.splitterElement.appendChild(this.parent.chartPane);
11934
+ if (this.parent.enableRtl) {
11935
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
11936
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
11937
+ }
11938
+ else {
11939
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
11940
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
11941
+ }
11748
11942
  this.splitterObject = new Splitter({
11749
11943
  height: null,
11750
11944
  width: this.parent.ganttWidth.toString(),
11751
11945
  enablePersistence: this.parent.enablePersistence,
11946
+ enableRtl: this.parent.enableRtl,
11752
11947
  separatorSize: this.parent.splitterSettings.separatorSize,
11753
11948
  paneSettings: [
11754
11949
  {
@@ -11762,6 +11957,9 @@ class Splitter$1 {
11762
11957
  ],
11763
11958
  orientation: 'Horizontal',
11764
11959
  resizeStart: (args) => {
11960
+ if (this.parent.contextMenuModule && this.parent.contextMenuModule.isOpen) {
11961
+ this.parent.contextMenuModule.contextMenu.close();
11962
+ }
11765
11963
  const leftPane = args.pane[0];
11766
11964
  const rightPane = args.pane[1];
11767
11965
  this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';
@@ -11923,6 +12121,7 @@ class Tooltip$1 {
11923
12121
  '.e-taskbar-left-resizer, .e-taskbar-right-resizer, .e-baseline-gantt-milestone, .e-gantt-manualparenttaskbar';
11924
12122
  this.toolTipObj.position = 'BottomCenter';
11925
12123
  this.toolTipObj.openDelay = 700;
12124
+ this.toolTipObj.enableRtl = this.parent.enableRtl;
11926
12125
  this.toolTipObj.enableHtmlSanitizer = false;
11927
12126
  this.toolTipObj.cssClass = ganttTooltip;
11928
12127
  this.toolTipObj.animation = { open: { effect: 'None', delay: 0 }, close: { effect: 'None', delay: 0 } };
@@ -12562,6 +12761,7 @@ class FocusModule {
12562
12761
  const top = containerPosition.top + (containerPosition.height / 2);
12563
12762
  const left = containerPosition.left + (containerPosition.width / 2);
12564
12763
  this.setActiveElement(e.target);
12764
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
12565
12765
  contextMenu.open(top, left);
12566
12766
  e.preventDefault();
12567
12767
  break;
@@ -12651,6 +12851,8 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
12651
12851
  let Gantt = class Gantt extends Component {
12652
12852
  constructor(options, element) {
12653
12853
  super(options, element);
12854
+ this.showIndicator = true;
12855
+ this.singleTier = 0;
12654
12856
  /** @hidden */
12655
12857
  this.isCancelled = false;
12656
12858
  /** @hidden */
@@ -12845,7 +13047,7 @@ let Gantt = class Gantt extends Component {
12845
13047
  /**
12846
13048
  * To check whether the date is in DST.
12847
13049
  *
12848
- * @param {Date} date .
13050
+ * @param {Date} date - Defines the date to check whether it is DST.
12849
13051
  * @returns {boolean} .
12850
13052
  * @private
12851
13053
  */
@@ -12936,9 +13138,348 @@ let Gantt = class Gantt extends Component {
12936
13138
  }
12937
13139
  this.splitterModule.renderSplitter();
12938
13140
  this.notify('renderPanels', null);
12939
- this.showSpinner();
13141
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
13142
+ this.showMaskRow();
13143
+ }
13144
+ else {
13145
+ this.showSpinner();
13146
+ }
12940
13147
  this.dataOperation.checkDataBinding();
12941
13148
  }
13149
+ hideMaskRow() {
13150
+ let isTablePresent = this.element.querySelectorAll('.e-masked-table').length;
13151
+ if (!isNullOrUndefined(this.contentMaskTable) && isTablePresent != 0) {
13152
+ const maskTable = this.contentMaskTable;
13153
+ remove(maskTable);
13154
+ this.contentMaskTable = null;
13155
+ }
13156
+ isTablePresent = this.element.querySelectorAll('.e-masked-table').length;
13157
+ if (!isNullOrUndefined(this.headerMaskTable) && isTablePresent != 0) {
13158
+ const maskTable = this.headerMaskTable;
13159
+ remove(maskTable);
13160
+ this.headerMaskTable = null;
13161
+ }
13162
+ while ((this.element.querySelectorAll('.e-table-background')).length != 0) {
13163
+ this.element.querySelectorAll('.e-table-background')[0].remove();
13164
+ }
13165
+ while ((this.element.querySelectorAll('.e-temp-timeline')).length != 0) {
13166
+ this.element.querySelectorAll('.e-temp-timeline')[0].remove();
13167
+ }
13168
+ if (this.element.querySelectorAll('.' + timelineHeaderTableContainer).length != 0) {
13169
+ for (var i = 0; i < this.singleTier; i++) {
13170
+ if (!isNullOrUndefined(this.element.querySelectorAll('.' + timelineHeaderTableContainer)[i])) {
13171
+ this.element.querySelectorAll('.' + timelineHeaderTableContainer)[i]['style'].visibility = "visible";
13172
+ }
13173
+ }
13174
+ }
13175
+ if (!isNullOrUndefined(this.element.querySelector('.' + timelineHeaderContainer))) {
13176
+ this.element.querySelector('.' + timelineHeaderContainer)['style'].position = "relative";
13177
+ }
13178
+ if (!isNullOrUndefined(this.element.getElementsByClassName(chartBodyContent)[0])) {
13179
+ this.element.getElementsByClassName(chartBodyContent)[0]['style'].visibility = "visible";
13180
+ }
13181
+ }
13182
+ showMaskRow() {
13183
+ const ganttHeader = this.chartPane.childNodes[0].childNodes[0];
13184
+ this.scrollLeftValue = this.chartPane.childNodes[0].childNodes[0]['scrollLeft'];
13185
+ const ganttContent = this.chartPane.childNodes[0].childNodes[1];
13186
+ if (!this.contentMaskTable) {
13187
+ if (ganttContent) {
13188
+ let content$$1 = ganttContent;
13189
+ this.renderBackGround(content$$1);
13190
+ if (this.element.querySelectorAll('.' + timelineHeaderTableContainer).length != 0) {
13191
+ this.singleTier = this.timelineModule.isSingleTier ? 1 : 2;
13192
+ for (var i = 0; i < this.singleTier; i++) {
13193
+ this.element.querySelectorAll('.' + timelineHeaderTableContainer)[i]['style'].visibility = "hidden";
13194
+ }
13195
+ }
13196
+ if (this.singleTier === 0) {
13197
+ this.singleTier = 2;
13198
+ }
13199
+ this.element.getElementsByClassName(chartBodyContent)[0]['style'].visibility = "hidden";
13200
+ this.contentMaskTable = this.contentMaskTable = this.createMaskTable(content$$1);
13201
+ }
13202
+ if (ganttHeader) {
13203
+ this.element.querySelector('.' + timelineHeaderContainer)['style'].position = "static";
13204
+ let content$$1 = ganttHeader;
13205
+ this.renderHeaderBackground(content$$1);
13206
+ this.headerMaskTable = this.headerMaskTable = this.createMaskTable(content$$1);
13207
+ }
13208
+ }
13209
+ }
13210
+ renderHeaderBackground(element) {
13211
+ const parentElement = element;
13212
+ const timelineHeight = element.getBoundingClientRect().height;
13213
+ const header = closest(parentElement, '.' + timelineHeaderContainer) ? true : false;
13214
+ if (header) {
13215
+ const div = this.createElement('div', { className: 'e-table-background' });
13216
+ const tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13217
+ style: 'height: ' + timelineHeight + 'px;'
13218
+ } });
13219
+ let backgroundLines = 0;
13220
+ let containerWidth = Math.round(element.getBoundingClientRect().width);
13221
+ for (let i = 0; i < 3; i++) {
13222
+ if (this.enableRtl) {
13223
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13224
+ style: 'left: ' + (containerWidth -= ((160))) + 'px; top:0px;'
13225
+ } }));
13226
+ }
13227
+ else {
13228
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13229
+ style: 'left: ' + (backgroundLines += ((160))) + 'px; top:0px;'
13230
+ } }));
13231
+ }
13232
+ }
13233
+ parentElement.insertBefore(div, parentElement.firstChild);
13234
+ }
13235
+ }
13236
+ renderBackGround(element) {
13237
+ const parentElement = element;
13238
+ const timelineHeight = element.getBoundingClientRect().height;
13239
+ const content$$1 = closest(parentElement, '.' + chartBodyContainer) ? true : false;
13240
+ if (content$$1) {
13241
+ const div = this.createElement('div', { className: 'e-table-background' });
13242
+ const tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13243
+ style: 'height: ' + timelineHeight + 'px;'
13244
+ } });
13245
+ let backgroundLines = 0;
13246
+ let containerWidth = Math.round(element.getBoundingClientRect().width);
13247
+ for (let i = 0; i < 3; i++) {
13248
+ if (this.enableRtl) {
13249
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13250
+ style: 'left: ' + (containerWidth -= (160)) + 'px;z-index:1;'
13251
+ } }));
13252
+ }
13253
+ else {
13254
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13255
+ style: 'left: ' + (backgroundLines += (160)) + 'px;z-index:1;'
13256
+ } }));
13257
+ }
13258
+ }
13259
+ parentElement.insertBefore(div, parentElement.firstChild);
13260
+ }
13261
+ }
13262
+ createMaskTable(element) {
13263
+ const parentElement = element;
13264
+ const shimmerContainerHeight = element.getBoundingClientRect().height;
13265
+ const header = closest(parentElement, '.' + timelineHeaderContainer) ? true : false;
13266
+ let maskTable;
13267
+ if (header) {
13268
+ maskTable = this.createEmptyTimeLineTable(shimmerContainerHeight);
13269
+ maskTable.style.position = 'sticky';
13270
+ maskTable.style.left = 0 + 'px';
13271
+ if (this.enableRtl) {
13272
+ maskTable.style.removeProperty('left');
13273
+ }
13274
+ }
13275
+ else {
13276
+ maskTable = this.createEmptyMaskTable(shimmerContainerHeight);
13277
+ maskTable.style.position = 'absolute';
13278
+ maskTable.style.zIndex = 1;
13279
+ }
13280
+ if (!header) {
13281
+ maskTable.style.height = element.getBoundingClientRect().height + 'px';
13282
+ parentElement.insertBefore(maskTable, parentElement.firstChild);
13283
+ }
13284
+ else {
13285
+ maskTable.style.height = element.getBoundingClientRect().height + 'px';
13286
+ let div = this.createElement('div', { className: 'e-temp-timeline' });
13287
+ div.style.width = 614 + 'px';
13288
+ div.style.position = 'sticky';
13289
+ if (this.enableRtl) {
13290
+ div.style['margin-right'] = Math.abs(this.scrollLeftValue) + 'px';
13291
+ }
13292
+ else {
13293
+ div.style['margin-left'] = this.scrollLeftValue + 'px';
13294
+ }
13295
+ div.appendChild(maskTable);
13296
+ parentElement.insertBefore(div, parentElement.firstChild);
13297
+ }
13298
+ return maskTable;
13299
+ }
13300
+ createEmptyTimeLineTable(timelineHeight) {
13301
+ const table = this.createElement('table', { className: 'e-table e-masked-table' });
13302
+ const tbody = this.createElement('tbody', { className: 'e-masked-tbody' });
13303
+ let row = [];
13304
+ const duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13305
+ style: 'height: ' + timelineHeight / 2 + 'px;'
13306
+ } });
13307
+ for (let i = 0; i < this.singleTier; i++) {
13308
+ row.push(duplicateRow.cloneNode(true));
13309
+ }
13310
+ this.topBottomHeader = 0;
13311
+ for (let i = 0; i < row.length; i++) {
13312
+ tbody.appendChild(this.applyTimelineMaskRow(row[i]));
13313
+ this.topBottomHeader = this.topBottomHeader + 1;
13314
+ }
13315
+ table.appendChild(tbody);
13316
+ table.style.width = 100 + '%';
13317
+ return table;
13318
+ }
13319
+ applyTimelineMaskRow(row) {
13320
+ const maskRow = row;
13321
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13322
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13323
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13324
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13325
+ for (let i = 0; i < maskRow.childNodes.length - 1; i++) {
13326
+ maskRow.childNodes[i]['style']['width'] = 166 + 'px';
13327
+ }
13328
+ const maskCells = [].slice.call(maskRow.childNodes);
13329
+ for (let i = 0; i < maskCells.length; i++) {
13330
+ const maskCell = maskCells[i];
13331
+ switch (this.topBottomHeader) {
13332
+ case 0:
13333
+ if (this.enableRtl) {
13334
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-timelineHeader"></span>';
13335
+ maskCell.children[0]['style'].left = -20 + 'px';
13336
+ }
13337
+ else {
13338
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-timelineHeader"></span>';
13339
+ }
13340
+ break;
13341
+ case 1:
13342
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13343
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13344
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13345
+ const innerMaskCells = [].slice.call(maskCell.childNodes);
13346
+ for (let i = 0; i < innerMaskCells.length; i++) {
13347
+ const htmlInner = innerMaskCells[i];
13348
+ if (i === 0) {
13349
+ if (this.enableRtl) {
13350
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML"></span>';
13351
+ htmlInner.children[0]['style'].left = -14 + 'px';
13352
+ }
13353
+ else {
13354
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML"></span>';
13355
+ }
13356
+ }
13357
+ else if (i === 1) {
13358
+ if (this.enableRtl) {
13359
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML1"></span>';
13360
+ htmlInner.children[0]['style'].left = -30 + 'px';
13361
+ }
13362
+ else {
13363
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML1"></span>';
13364
+ }
13365
+ }
13366
+ else {
13367
+ if (this.enableRtl) {
13368
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML2"></span>';
13369
+ htmlInner.children[0]['style'].left = -60 + 'px';
13370
+ }
13371
+ else {
13372
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML2"></span>';
13373
+ }
13374
+ }
13375
+ }
13376
+ break;
13377
+ }
13378
+ }
13379
+ return maskRow;
13380
+ }
13381
+ createEmptyMaskTable(timelineHeight) {
13382
+ const table = this.createElement('table', { className: 'e-table e-masked-table' });
13383
+ const tbody = this.createElement('tbody', { className: 'e-masked-tbody' });
13384
+ let row = [];
13385
+ const duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13386
+ style: 'height: ' + timelineHeight / 7 + 'px;'
13387
+ } });
13388
+ this.columnLoop = 0;
13389
+ for (let i = 0; i < 6; i++) {
13390
+ row.push(duplicateRow.cloneNode(true));
13391
+ }
13392
+ for (let j = 0; j < row.length; j++) {
13393
+ if (this.columnLoop < 4) {
13394
+ this.columnLoop = this.columnLoop + 1;
13395
+ }
13396
+ else if (this.columnLoop === 4) {
13397
+ this.columnLoop = 1;
13398
+ }
13399
+ tbody.appendChild(this.applyMaskRow(row[j]));
13400
+ }
13401
+ table.appendChild(tbody);
13402
+ table.style.width = 100 + '%';
13403
+ let div = this.createElement('div', { className: 'e-temp-container' });
13404
+ div.style.width = 'calc(100% - ' + 17 + 'px)';
13405
+ div.style.overflow = 'hidden';
13406
+ div.appendChild(table);
13407
+ return div;
13408
+ }
13409
+ applyMaskRow(row) {
13410
+ const maskRow = row;
13411
+ if (this.columnLoop < 4) {
13412
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
13413
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
13414
+ }
13415
+ else {
13416
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
13417
+ }
13418
+ const maskCells = [].slice.call(maskRow.childNodes);
13419
+ for (let i = 0; i < maskCells.length; i++) {
13420
+ const maskCell = maskCells[i];
13421
+ switch (this.columnLoop) {
13422
+ case 1:
13423
+ if (i === 0) {
13424
+ if (this.enableRtl) {
13425
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell01"></span>';
13426
+ maskCell.children[0]['style'].left = -14 + 'px';
13427
+ }
13428
+ else {
13429
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell01"></span>';
13430
+ }
13431
+ }
13432
+ else {
13433
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell02"></span>';
13434
+ }
13435
+ break;
13436
+ case 2:
13437
+ if (i === 0) {
13438
+ if (this.enableRtl) {
13439
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell03"></span>';
13440
+ maskCell.children[0]['style'].left = -14 + 'px';
13441
+ }
13442
+ else {
13443
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell03"></span>';
13444
+ }
13445
+ }
13446
+ else {
13447
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell04"></span>';
13448
+ }
13449
+ break;
13450
+ case 3:
13451
+ if (i === 0) {
13452
+ if (this.enableRtl) {
13453
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell05"></span>';
13454
+ maskCell.children[0]['style'].left = -64 + 'px';
13455
+ }
13456
+ else {
13457
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell05"></span>';
13458
+ }
13459
+ }
13460
+ else {
13461
+ if (this.enableRtl) {
13462
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell06"></span>';
13463
+ maskCell.children[0]['style'].left = -192 + 'px';
13464
+ }
13465
+ else {
13466
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell06"></span>';
13467
+ }
13468
+ }
13469
+ break;
13470
+ case 4:
13471
+ if (this.enableRtl) {
13472
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell07"></span>';
13473
+ maskCell.children[0]['style'].left = -388 + 'px';
13474
+ }
13475
+ else {
13476
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell07"></span>';
13477
+ }
13478
+ break;
13479
+ }
13480
+ }
13481
+ return maskRow;
13482
+ }
12942
13483
  /**
12943
13484
  * Method used to show spinner.
12944
13485
  *
@@ -12964,7 +13505,7 @@ let Gantt = class Gantt extends Component {
12964
13505
  this.timelineModule.calculateZoomingLevelsPerDayWidth(); // To calculate the perDaywidth
12965
13506
  }
12966
13507
  /**
12967
- * @param {boolean} isChange .
13508
+ * @param {boolean} isChange -Defines whether task data is changed.
12968
13509
  * @returns {void} .
12969
13510
  * @private
12970
13511
  */
@@ -13064,7 +13605,7 @@ let Gantt = class Gantt extends Component {
13064
13605
  /**
13065
13606
  * Method for updating row height value in connector line collections
13066
13607
  *
13067
- * @param {IConnectorLineObject[]} collection .
13608
+ * @param {IConnectorLineObject[]} collection -Defines the CollectorLine collection.
13068
13609
  * @returns {void} .
13069
13610
  * @private
13070
13611
  */
@@ -13100,7 +13641,7 @@ let Gantt = class Gantt extends Component {
13100
13641
  this.currentViewData = this.treeGrid.getCurrentViewRecords().slice();
13101
13642
  }
13102
13643
  /**
13103
- * @param {IGanttData} records .
13644
+ * @param {IGanttData} records -Defines the delete record collections.
13104
13645
  * @returns {IGanttData} .
13105
13646
  * @private
13106
13647
  */
@@ -13112,7 +13653,7 @@ let Gantt = class Gantt extends Component {
13112
13653
  return updatedRecord;
13113
13654
  }
13114
13655
  /**
13115
- * @param {object} args .
13656
+ * @param {object} args -Update the gantt element content height.
13116
13657
  * @returns {void} .
13117
13658
  * @private
13118
13659
  */
@@ -13463,7 +14004,12 @@ let Gantt = class Gantt extends Component {
13463
14004
  this.treeGrid.height = '100%';
13464
14005
  this.notify('tree-grid-created', {});
13465
14006
  this.createGanttPopUpElement();
13466
- this.hideSpinner();
14007
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
14008
+ this.hideMaskRow();
14009
+ }
14010
+ else {
14011
+ this.hideSpinner();
14012
+ }
13467
14013
  setValue('isGanttCreated', true, args);
13468
14014
  this.renderComplete();
13469
14015
  }
@@ -13475,6 +14021,11 @@ let Gantt = class Gantt extends Component {
13475
14021
  this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
13476
14022
  }
13477
14023
  this.notify('recordsUpdated', {});
14024
+ for (let i = 0; i < document.getElementsByClassName('e-timeline-header-table-container').length; i++) {
14025
+ for (let j = 0; j < document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children.length; j++) {
14026
+ document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children[j].children[0].setAttribute('tabindex', '-1');
14027
+ }
14028
+ }
13478
14029
  if (this.enableCriticalPath && this.criticalPathModule) {
13479
14030
  let criticalModule = this.criticalPathModule;
13480
14031
  this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
@@ -13506,8 +14057,8 @@ let Gantt = class Gantt extends Component {
13506
14057
  /**
13507
14058
  * Called internally, if any of the property value changed.
13508
14059
  *
13509
- * @param {GanttModel} newProp .
13510
- * @param {GanttModel} oldProp .
14060
+ * @param {GanttModel} newProp - Defines the New GanttModel.
14061
+ * @param {GanttModel} oldProp - Defines the old GanttModel.
13511
14062
  * @returns {void} .
13512
14063
  * @private
13513
14064
  */
@@ -13569,6 +14120,12 @@ let Gantt = class Gantt extends Component {
13569
14120
  this.dataOperation.checkDataBinding(true);
13570
14121
  break;
13571
14122
  case 'enableCriticalPath':
14123
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
14124
+ this.hideMaskRow();
14125
+ }
14126
+ else {
14127
+ this.hideSpinner();
14128
+ }
13572
14129
  if (this.enableCriticalPath && this.criticalPathModule) {
13573
14130
  this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
13574
14131
  let criticalModule = this.criticalPathModule;
@@ -14115,7 +14672,7 @@ let Gantt = class Gantt extends Component {
14115
14672
  thWidth = thElements[n].style.width;
14116
14673
  const divElement = createElement('div', {
14117
14674
  className: 'e-line-container-cell',
14118
- styles: 'left:' + leftPos + 'px'
14675
+ styles: (this.enableRtl ? 'right:' + (leftPos + 1) : 'left:' + leftPos) + 'px'
14119
14676
  });
14120
14677
  containerDiv.appendChild(divElement);
14121
14678
  }
@@ -14250,12 +14807,18 @@ let Gantt = class Gantt extends Component {
14250
14807
  }
14251
14808
  /**
14252
14809
  *
14253
- * @param {object} args .
14810
+ * @param {object} args -Defines the edited event args.
14254
14811
  * @returns {void} .
14255
14812
  * @private
14256
14813
  */
14257
14814
  actionBeginTask(args) {
14258
14815
  this.trigger('actionBegin', args);
14816
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
14817
+ this.showMaskRow();
14818
+ }
14819
+ else {
14820
+ this.showSpinner();
14821
+ }
14259
14822
  }
14260
14823
  /**
14261
14824
  * To move horizontal scroll bar of Gantt to specific date.
@@ -14291,7 +14854,7 @@ let Gantt = class Gantt extends Component {
14291
14854
  if (!isNullOrUndefined(left)) {
14292
14855
  left = this.ganttChartModule.scrollElement.scrollWidth <= left ?
14293
14856
  this.ganttChartModule.scrollElement.scrollWidth : left;
14294
- this.ganttChartModule.scrollObject.setScrollLeft(left);
14857
+ this.ganttChartModule.scrollObject.setScrollLeft(left, this.enableRtl ? -1 : 0);
14295
14858
  }
14296
14859
  if (!isNullOrUndefined(top)) {
14297
14860
  top = this.ganttChartModule.scrollElement.scrollHeight <= top ? this.ganttChartModule.scrollElement.scrollHeight : top;
@@ -14324,8 +14887,8 @@ let Gantt = class Gantt extends Component {
14324
14887
  /**
14325
14888
  * Get parent task by clone parent item.
14326
14889
  *
14327
- * @param {IGanttData} ganttRecord .
14328
- * @param {number} level .
14890
+ * @param {IGanttData} ganttRecord -Defines the Gantt record.
14891
+ * @param {number} level -Defines the selected record level.
14329
14892
  * @returns {IGanttData} .
14330
14893
  * @hidden
14331
14894
  */
@@ -14438,7 +15001,7 @@ let Gantt = class Gantt extends Component {
14438
15001
  /**
14439
15002
  * To update timeline at start point with one unit.
14440
15003
  *
14441
- * @param {string} mode .
15004
+ * @param {string} mode - Render previous span of Timeline.
14442
15005
  * @returns {void} .
14443
15006
  * @public
14444
15007
  */
@@ -14448,7 +15011,7 @@ let Gantt = class Gantt extends Component {
14448
15011
  /**
14449
15012
  * To update timeline at end point with one unit.
14450
15013
  *
14451
- * @param {string} mode .
15014
+ * @param {string} mode - Render next span of Timeline.
14452
15015
  * @returns {void} .
14453
15016
  * @public
14454
15017
  */
@@ -14522,7 +15085,7 @@ let Gantt = class Gantt extends Component {
14522
15085
  /**
14523
15086
  * Method to clear edited collections in gantt set edit flag value
14524
15087
  *
14525
- * @param {boolean} isStart .
15088
+ * @param {boolean} isStart -Defines whether to initiate edit action.
14526
15089
  * @returns {void} .
14527
15090
  * @private
14528
15091
  */
@@ -14795,8 +15358,8 @@ let Gantt = class Gantt extends Component {
14795
15358
  /**
14796
15359
  * To update existing taskId with new unique Id.
14797
15360
  *
14798
- * @param {number | string} currentId .
14799
- * @param {number | string} newId .
15361
+ * @param {number | string} currentId - Defines the current Id of the record.
15362
+ * @param {number | string} newId - Defines the new Id of the record.
14800
15363
  * @returns {void} .
14801
15364
  */
14802
15365
  updateTaskId(currentId, newId) {
@@ -14898,9 +15461,9 @@ let Gantt = class Gantt extends Component {
14898
15461
  /**
14899
15462
  * Reorder the rows based on given indexes and position
14900
15463
  *
14901
- * @param {number[]} fromIndexes .
14902
- * @param {number} toIndex .
14903
- * @param {string} position .
15464
+ * @param {number[]} fromIndexes - Defines the Dragged record index.
15465
+ * @param {number} toIndex - Defines the Dropped record index.
15466
+ * @param {string} position -Defines the position of the dropped row.
14904
15467
  * @returns {void} .
14905
15468
  */
14906
15469
  reorderRows(fromIndexes, toIndex, position) {
@@ -15075,7 +15638,7 @@ let Gantt = class Gantt extends Component {
15075
15638
  /**
15076
15639
  * Method to get class name for unscheduled tasks
15077
15640
  *
15078
- * @param {ITaskData} ganttProp .
15641
+ * @param {ITaskData} ganttProp -Defines the Gantt propertie.
15079
15642
  * @returns {boolean} .
15080
15643
  * @private
15081
15644
  */
@@ -15149,7 +15712,7 @@ let Gantt = class Gantt extends Component {
15149
15712
  const clientTop = document.documentElement.clientTop || document.body.clientTop || 0;
15150
15713
  const clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
15151
15714
  const top = box.top + scrollTop - clientTop;
15152
- const left = box.left + scrollLeft - clientLeft;
15715
+ const left = this.enableRtl ? box.right + scrollLeft - clientLeft : box.left + scrollLeft - clientLeft;
15153
15716
  return { top: Math.round(top), left: Math.round(left), width: box.width, height: box.height };
15154
15717
  }
15155
15718
  /**
@@ -15421,7 +15984,7 @@ let Gantt = class Gantt extends Component {
15421
15984
  /**
15422
15985
  * To change the mode of a record.
15423
15986
  *
15424
- * @param {object} data .
15987
+ * @param {object} data - Use to change the TaskMode either manual, auto or custom.
15425
15988
  * @returns {void} .
15426
15989
  */
15427
15990
  changeTaskMode(data) {
@@ -15493,6 +16056,12 @@ __decorate([
15493
16056
  __decorate([
15494
16057
  Property(true)
15495
16058
  ], Gantt.prototype, "disableHtmlEncode", void 0);
16059
+ __decorate([
16060
+ Complex({}, LoadingIndicator)
16061
+ ], Gantt.prototype, "loadingIndicator", void 0);
16062
+ __decorate([
16063
+ Property(true)
16064
+ ], Gantt.prototype, "enableVirtualMaskRow", void 0);
15496
16065
  __decorate([
15497
16066
  Property(true)
15498
16067
  ], Gantt.prototype, "autoFocusTasks", void 0);
@@ -16518,6 +17087,7 @@ class EditTooltip {
16518
17087
  this.toolTipObj = new Tooltip({
16519
17088
  opensOn: opensOn,
16520
17089
  position: 'TopRight',
17090
+ enableRtl: this.parent.enableRtl,
16521
17091
  mouseTrail: mouseTrail,
16522
17092
  cssClass: ganttTooltip,
16523
17093
  target: target ? target : null,
@@ -16567,12 +17137,15 @@ class EditTooltip {
16567
17137
  this.parent.tooltipModule.toolTipObj.close();
16568
17138
  this.updateTooltip(segmentIndex);
16569
17139
  if (this.taskbarEdit.connectorSecondAction === 'ConnectorPointLeftDrag') {
17140
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
16570
17141
  this.toolTipObj.open(this.taskbarEdit.connectorSecondElement.querySelector('.' + connectorPointLeft));
16571
17142
  }
16572
17143
  else if (this.taskbarEdit.connectorSecondAction === 'ConnectorPointRightDrag') {
17144
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
16573
17145
  this.toolTipObj.open(this.taskbarEdit.connectorSecondElement.querySelector('.' + connectorPointRight));
16574
17146
  }
16575
17147
  else {
17148
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
16576
17149
  this.toolTipObj.open(this.taskbarEdit.taskBarEditElement);
16577
17150
  }
16578
17151
  }
@@ -16605,14 +17178,29 @@ class EditTooltip {
16605
17178
  this.toolTipObj.content = this.getTooltipText(segmentIndex);
16606
17179
  this.toolTipObj.refresh(this.taskbarEdit.taskBarEditElement);
16607
17180
  if (this.taskbarEdit.taskBarEditAction === 'LeftResizing') {
16608
- this.toolTipObj.offsetX = -taskWidth;
17181
+ if (this.parent.enableRtl) {
17182
+ this.toolTipObj.offsetX = 0;
17183
+ }
17184
+ else {
17185
+ this.toolTipObj.offsetX = -taskWidth;
17186
+ }
16609
17187
  }
16610
17188
  else if (this.taskbarEdit.taskBarEditAction === 'RightResizing' ||
16611
17189
  this.taskbarEdit.taskBarEditAction === 'ParentResizing') {
16612
- this.toolTipObj.offsetX = 0;
17190
+ if (this.parent.enableRtl) {
17191
+ this.toolTipObj.offsetX = -taskWidth;
17192
+ }
17193
+ else {
17194
+ this.toolTipObj.offsetX = 0;
17195
+ }
16613
17196
  }
16614
17197
  else if (this.taskbarEdit.taskBarEditAction === 'ProgressResizing') {
16615
- this.toolTipObj.offsetX = -(taskWidth - progressWidth);
17198
+ if (this.parent.enableRtl) {
17199
+ this.toolTipObj.offsetX = -(progressWidth);
17200
+ }
17201
+ else {
17202
+ this.toolTipObj.offsetX = -(taskWidth - progressWidth);
17203
+ }
16616
17204
  }
16617
17205
  else if (this.taskbarEdit.taskBarEditAction === 'MilestoneDrag') {
16618
17206
  this.toolTipObj.offsetX = -(this.parent.chartRowsModule.milestoneHeight / 2);
@@ -17118,8 +17706,14 @@ class TaskbarEdit extends DateProcessor {
17118
17706
  const e = this.getCoordinate(event);
17119
17707
  if (e.pageX || e.pageY) {
17120
17708
  const containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
17121
- this.mouseDownX = (e.pageX - containerPosition.left) +
17122
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
17709
+ if (this.parent.enableRtl) {
17710
+ this.mouseDownX = Math.abs(e.pageX - (containerPosition.left +
17711
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
17712
+ }
17713
+ else {
17714
+ this.mouseDownX = (e.pageX - containerPosition.left) +
17715
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
17716
+ }
17123
17717
  this.tooltipPositionX = this.mouseDownX;
17124
17718
  this.mouseDownY = e.pageY - containerPosition.top +
17125
17719
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
@@ -17163,8 +17757,14 @@ class TaskbarEdit extends DateProcessor {
17163
17757
  }
17164
17758
  const containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
17165
17759
  const e = this.getCoordinate(event);
17166
- this.mouseMoveX = e.pageX - containerPosition.left +
17167
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
17760
+ if (this.parent.enableRtl) {
17761
+ this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
17762
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
17763
+ }
17764
+ else {
17765
+ this.mouseMoveX = e.pageX - containerPosition.left +
17766
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
17767
+ }
17168
17768
  this.mouseMoveY = e.pageY - containerPosition.top +
17169
17769
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
17170
17770
  this.dragMouseLeave = false;
@@ -17180,6 +17780,17 @@ class TaskbarEdit extends DateProcessor {
17180
17780
  args.requestType = 'mergeSegment';
17181
17781
  }
17182
17782
  this.parent.trigger('actionBegin', args, (arg) => {
17783
+ if (args.taskBarEditAction === "ConnectorPointRightDrag" || args.taskBarEditAction === "ConnectorPointLeftDrag"
17784
+ || args.taskBarEditAction === "LeftResizing" || args.taskBarEditAction === "RightResizing"
17785
+ || args.taskBarEditAction === "ProgressResizing" || args.taskBarEditAction === "ChildDrag" || args.taskBarEditAction === "ParentDrag" || args.taskBarEditAction === "MilestoneDrag" || args.taskBarEditAction === "ManualParentDrag") {
17786
+ this.parent.showIndicator = false;
17787
+ }
17788
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer" && this.parent.showIndicator) {
17789
+ this.parent.showMaskRow();
17790
+ }
17791
+ else if (this.parent.showIndicator) {
17792
+ this.parent.showSpinner();
17793
+ }
17183
17794
  if (arg.cancel === false) {
17184
17795
  this.taskBarEditingAction(event, false);
17185
17796
  }
@@ -17261,8 +17872,14 @@ class TaskbarEdit extends DateProcessor {
17261
17872
  const containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
17262
17873
  const e = this.getCoordinate(event);
17263
17874
  if (e.pageX || e.pageY) {
17264
- this.mouseMoveX = e.pageX - containerPosition.left +
17265
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
17875
+ if (this.parent.enableRtl) {
17876
+ this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
17877
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
17878
+ }
17879
+ else {
17880
+ this.mouseMoveX = e.pageX - containerPosition.left +
17881
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
17882
+ }
17266
17883
  this.tooltipPositionX = this.mouseMoveX;
17267
17884
  this.mouseMoveY = e.pageY - containerPosition.top +
17268
17885
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
@@ -17273,8 +17890,15 @@ class TaskbarEdit extends DateProcessor {
17273
17890
  if ((this.taskBarEditRecord.ganttProperties.width > 3 && !(this.taskBarEditAction === 'ProgressResizing' &&
17274
17891
  (this.taskBarEditRecord.ganttProperties.progress === 0 || this.taskBarEditRecord.ganttProperties.progress === 100))) ||
17275
17892
  isConnectorLineEdit) {
17276
- const mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +
17277
- containerPosition.left;
17893
+ let mouseX = 0;
17894
+ if (this.parent.enableRtl) {
17895
+ mouseX = Math.abs(Math.abs(this.mouseMoveX) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left) +
17896
+ containerPosition.left);
17897
+ }
17898
+ else {
17899
+ mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +
17900
+ containerPosition.left;
17901
+ }
17278
17902
  const mouseY = this.mouseMoveY - this.parent.ganttChartModule.scrollObject.previousScroll.top +
17279
17903
  containerPosition.top;
17280
17904
  if ((mouseX + 20) >
@@ -17282,6 +17906,12 @@ class TaskbarEdit extends DateProcessor {
17282
17906
  this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
17283
17907
  this.startScrollTimer('right');
17284
17908
  }
17909
+ else if ((mouseX + 40) >
17910
+ containerPosition.left + this.parent.ganttChartModule.chartBodyContainer.offsetWidth && this.parent.enableRtl && this.parent.ganttChartModule.scrollObject.previousScroll.left == 0) {
17911
+ this.parent.ganttChartModule.scrollObject.previousScroll.left = -1;
17912
+ this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
17913
+ this.startScrollTimer('right');
17914
+ }
17285
17915
  else if ((mouseX - 20) < containerPosition.left) {
17286
17916
  this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
17287
17917
  this.startScrollTimer('left');
@@ -17312,7 +17942,12 @@ class TaskbarEdit extends DateProcessor {
17312
17942
  */
17313
17943
  startScrollTimer(direction) {
17314
17944
  this.stopScrollTimer();
17945
+ let leftSign = 0;
17315
17946
  this.scrollTimer = window.setInterval(() => {
17947
+ if (Math.sign(this.timerCount) == -1) {
17948
+ leftSign = -1;
17949
+ this.timerCount = Math.abs(this.timerCount);
17950
+ }
17316
17951
  if (direction === 'right') {
17317
17952
  this.timerCount = (this.timerCount + 1) >= this.parent.timelineModule.totalTimelineWidth ?
17318
17953
  this.parent.timelineModule.totalTimelineWidth : (this.timerCount + 1);
@@ -17327,7 +17962,7 @@ class TaskbarEdit extends DateProcessor {
17327
17962
  this.parent.ganttChartModule.scrollObject.setScrollTop(this.timerCount);
17328
17963
  }
17329
17964
  else {
17330
- this.parent.ganttChartModule.scrollObject.setScrollLeft(this.timerCount);
17965
+ this.parent.ganttChartModule.scrollObject.setScrollLeft(this.timerCount, leftSign);
17331
17966
  }
17332
17967
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag'
17333
17968
  || this.taskBarEditAction === 'ConnectorPointRightDrag') {
@@ -18023,6 +18658,7 @@ class TaskbarEdit extends DateProcessor {
18023
18658
  */
18024
18659
  setItemPosition() {
18025
18660
  const item = this.taskBarEditRecord.ganttProperties;
18661
+ let position = this.parent.enableRtl ? "right" : "left";
18026
18662
  const segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;
18027
18663
  const width = this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone ?
18028
18664
  this.parent.chartRowsModule.milestoneHeight : item.width;
@@ -18054,11 +18690,16 @@ class TaskbarEdit extends DateProcessor {
18054
18690
  if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)
18055
18691
  && (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {
18056
18692
  this.taskBarEditElement.style.width = (segment.width) + 'px';
18057
- this.taskBarEditElement.style.left = (segment.left) + 'px';
18693
+ if (this.parent.enableRtl) {
18694
+ this.taskBarEditElement.style.right = (segment.left) + 'px';
18695
+ }
18696
+ else {
18697
+ this.taskBarEditElement.style.left = (segment.left) + 'px';
18698
+ }
18058
18699
  }
18059
18700
  taskBarMainContainer$$1.style.width = (width) + 'px';
18060
- taskBarMainContainer$$1.style.left = (item.left) + 'px';
18061
18701
  leftLabelContainer$$1.style.width = (item.left) + 'px';
18702
+ taskBarMainContainer$$1.style.setProperty(position, (item.left) + 'px');
18062
18703
  if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {
18063
18704
  const parent = this.taskBarEditElement.parentElement;
18064
18705
  const segmentedTasks = parent.getElementsByClassName('e-segmented-taskbar');
@@ -18066,31 +18707,42 @@ class TaskbarEdit extends DateProcessor {
18066
18707
  const segment = item.segments[i];
18067
18708
  const segmentElement = segmentedTasks[i];
18068
18709
  segmentElement.style.width = (segment.width) + 'px';
18069
- segmentElement.style.left = (segment.left) + 'px';
18710
+ if (this.parent.enableRtl) {
18711
+ segmentElement.style.right = (segment.left) + 'px';
18712
+ }
18713
+ else {
18714
+ segmentElement.style.left = (segment.left) + 'px';
18715
+ }
18070
18716
  }
18071
18717
  }
18072
18718
  if (!isNullOrUndefined(rightLabelContainer$$1)) {
18073
- rightLabelContainer$$1.style.left = (item.left + width) + 'px';
18719
+ rightLabelContainer$$1.style.setProperty(position, (item.left + width) + 'px');
18074
18720
  }
18075
18721
  }
18076
18722
  if (traceConnectorPointRight) {
18077
- traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';
18723
+ if (this.parent.enableRtl) {
18724
+ traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width - 2)) + 'px';
18725
+ }
18726
+ else {
18727
+ traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';
18728
+ }
18078
18729
  }
18079
18730
  if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {
18080
- taskBarMainContainer$$1.style.left = (item.left - (width / 2)) + 'px';
18731
+ taskBarMainContainer$$1.style.setProperty(position, (item.left - (width / 2)) + 'px');
18081
18732
  leftLabelContainer$$1.style.width = (item.left - (width / 2)) + 'px';
18082
18733
  if (!isNullOrUndefined(rightLabelContainer$$1)) {
18083
- rightLabelContainer$$1.style.left = (item.left + (width / 2)) + 'px';
18734
+ rightLabelContainer$$1.style.setProperty(position, (item.left + (width / 2)) + 'px');
18084
18735
  }
18085
18736
  }
18086
18737
  else if (this.taskBarEditAction === 'ProgressResizing') {
18087
18738
  if (this.segmentIndex === -1) {
18088
- traceChildTaskBar$$1.style.left = (item.left + item.progressWidth - 10) + 'px';
18739
+ traceChildTaskBar$$1.style.setProperty(position, (item.left + item.progressWidth - 10) + 'px');
18089
18740
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
18090
18741
  traceChildProgressBar$$1.style.width = item.progressWidth + 'px';
18091
18742
  traceChildProgressBar$$1.style.borderBottomRightRadius = this.progressBorderRadius + 'px';
18092
18743
  traceChildProgressBar$$1.style.borderTopRightRadius = this.progressBorderRadius + 'px';
18093
- childProgressResizer$$1.style.left = item.progressWidth - 8 + 'px';
18744
+ const width = this.parent.enableRtl ? item.progressWidth + 8 : item.progressWidth - 8;
18745
+ childProgressResizer$$1.style.setProperty(position, width + 'px');
18094
18746
  }
18095
18747
  }
18096
18748
  else {
@@ -18098,16 +18750,17 @@ class TaskbarEdit extends DateProcessor {
18098
18750
  traceChildProgressBar$$1.style.width = item.segments[this.segmentIndex].progressWidth + 'px';
18099
18751
  traceChildProgressBar$$1.style.borderBottomRightRadius = this.progressBorderRadius + 'px';
18100
18752
  traceChildProgressBar$$1.style.borderTopRightRadius = this.progressBorderRadius + 'px';
18101
- childProgressResizer$$1.style.left = item.segments[this.segmentIndex].progressWidth - 8 + 'px';
18753
+ const width = this.parent.enableRtl ? item.segments[this.segmentIndex].progressWidth + 8 : item.segments[this.segmentIndex].progressWidth - 8;
18754
+ childProgressResizer$$1.style.setProperty(position, width + 'px');
18102
18755
  }
18103
18756
  }
18104
18757
  else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar$$1)) {
18105
18758
  traceChildTaskBar$$1.style.width = (width) + 'px';
18106
18759
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
18107
18760
  traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
18108
- taskBarRightResizer$$1.style.left = rightResizer + 'px';
18761
+ taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
18109
18762
  if (!isNullOrUndefined(childProgressResizer$$1)) {
18110
- childProgressResizer$$1.style.left = (item.progressWidth - 10) + 'px';
18763
+ childProgressResizer$$1.style.setProperty(position, item.progressWidth - 10 + 'px');
18111
18764
  }
18112
18765
  }
18113
18766
  }
@@ -18121,27 +18774,27 @@ class TaskbarEdit extends DateProcessor {
18121
18774
  }
18122
18775
  else if (this.taskBarEditAction === 'ParentResizing') {
18123
18776
  manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';
18124
- manualParentRight.style.left = (item.width - manualParentLeft.offsetLeft) + 'px';
18777
+ manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');
18125
18778
  }
18126
18779
  else if (this.taskBarEditAction === 'ManualParentDrag') {
18127
- manualParentTaskbar.style.left = (item.left - item.autoLeft) + 'px';
18780
+ manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');
18128
18781
  }
18129
18782
  else {
18130
18783
  if (!isNullOrUndefined(traceChildTaskBar$$1) && !segmentedTaskBarContainer) {
18131
18784
  traceChildTaskBar$$1.style.width = (width) + 'px';
18132
18785
  }
18133
18786
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
18134
- taskBarRightResizer$$1.style.left = rightResizer + 'px';
18787
+ taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
18135
18788
  traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
18136
18789
  if (!isNullOrUndefined(childProgressResizer$$1)) {
18137
- childProgressResizer$$1.style.left = item.progressWidth - 10 + 'px';
18790
+ childProgressResizer$$1.style.setProperty(position, item.progressWidth - 10 + 'px');
18138
18791
  }
18139
18792
  }
18140
18793
  if (segmentedTaskBarContainer) {
18141
- taskBarRightResizer$$1.style.left = rightResizer + 'px';
18794
+ taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
18142
18795
  traceChildProgressBar$$1.style.width = (segment.progressWidth) + 'px';
18143
18796
  if (!isNullOrUndefined(childProgressResizer$$1)) {
18144
- childProgressResizer$$1.style.left = segment.progressWidth - 10 + 'px';
18797
+ childProgressResizer$$1.style.setProperty(position, segment.progressWidth - 10 + 'px');
18145
18798
  }
18146
18799
  }
18147
18800
  }
@@ -18363,25 +19016,51 @@ class TaskbarEdit extends DateProcessor {
18363
19016
  const y2 = this.mouseMoveY;
18364
19017
  const length = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
18365
19018
  const angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
18366
- const transform = 'rotate(' + angle + 'deg)';
19019
+ const transform = 'rotate(' + (this.parent.enableRtl ? -angle : angle) + 'deg)';
18367
19020
  let left;
19021
+ let width = 0;
19022
+ if (!isNullOrUndefined(document.querySelectorAll(".e-chart-row")[0])) {
19023
+ width = document.querySelectorAll(".e-chart-row")[0].offsetWidth;
19024
+ }
18368
19025
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {
18369
- left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -
18370
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
19026
+ if (this.parent.enableRtl) {
19027
+ left = ((width - (this.elementOffsetLeft + (this.parent.chartRowsModule.connectorPointWidth / 2)))) -
19028
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
19029
+ }
19030
+ else {
19031
+ left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -
19032
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
19033
+ }
18371
19034
  }
18372
19035
  if (this.taskBarEditAction === 'ConnectorPointRightDrag') {
18373
- left = (this.elementOffsetLeft + this.elementOffsetWidth) +
18374
- (this.parent.chartRowsModule.connectorPointWidth / 2) - this.parent.ganttChartModule.scrollObject.previousScroll.left;
19036
+ if (this.parent.enableRtl) {
19037
+ left = (width - (this.elementOffsetLeft + this.elementOffsetWidth +
19038
+ (this.parent.chartRowsModule.connectorPointWidth / 2))) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
19039
+ }
19040
+ else {
19041
+ left = (this.elementOffsetLeft + this.elementOffsetWidth) +
19042
+ (this.parent.chartRowsModule.connectorPointWidth / 2) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
19043
+ }
18375
19044
  }
18376
19045
  const top = ((this.elementOffsetTop) + (this.elementOffsetHeight / 2) +
18377
19046
  this.parent.ganttChartModule.chartBodyContainer.offsetTop) - this.parent.ganttChartModule.scrollObject.previousScroll.top;
18378
19047
  this.removeFalseLine(false);
18379
19048
  this.falseLine = createElement('div', {
18380
19049
  className: falseLine, id: 'ganttfalseline' + this.parent.element.id,
18381
- styles: 'transform-origin: 0% 100%;right: auto;position: absolute;transform:' + transform + ';' +
19050
+ styles: 'position: absolute;transform:' + transform + ';' +
18382
19051
  'border-top-width: 1px;border-top-style: dashed;z-index: 5;width:' + (length - 3) + 'px;' +
18383
- 'left:' + left + 'px;top:' + top + 'px;'
19052
+ 'top:' + top + 'px;'
18384
19053
  });
19054
+ if (this.parent.enableRtl) {
19055
+ this.falseLine.style.left = 'auto';
19056
+ this.falseLine.style.right = left + 'px';
19057
+ this.falseLine.style.transformOrigin = '100% 0%';
19058
+ }
19059
+ else {
19060
+ this.falseLine.style.right = 'auto';
19061
+ this.falseLine.style.left = left + 'px';
19062
+ this.falseLine.style.transformOrigin = '0% 100%';
19063
+ }
18385
19064
  this.parent.ganttChartModule.chartBodyContainer.appendChild(this.falseLine);
18386
19065
  }
18387
19066
  /**
@@ -18466,19 +19145,19 @@ class TaskbarEdit extends DateProcessor {
18466
19145
  const element = target;
18467
19146
  const uniqueId = this.parent.viewType === 'ResourceView' ? fromItem.taskId : fromItem.rowUniqueID;
18468
19147
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {
18469
- predecessor = uniqueId + 'S';
19148
+ predecessor = uniqueId + (this.parent.enableRtl ? 'F' : 'S');
18470
19149
  }
18471
19150
  else if (this.taskBarEditAction === 'ConnectorPointRightDrag') {
18472
- predecessor = uniqueId + 'F';
19151
+ predecessor = uniqueId + (this.parent.enableRtl ? 'S' : 'F');
18473
19152
  }
18474
19153
  if (this.connectorSecondAction) {
18475
19154
  if (this.connectorSecondAction === 'ConnectorPointLeftDrag') {
18476
- predecessor += 'S';
18477
- currentTarget = 'start';
19155
+ predecessor += this.parent.enableRtl ? 'F' : 'S';
19156
+ currentTarget = this.parent.enableRtl ? 'finish' : 'start';
18478
19157
  }
18479
19158
  else if (this.connectorSecondAction === 'ConnectorPointRightDrag') {
18480
- predecessor += 'F';
18481
- currentTarget = 'finish';
19159
+ predecessor += this.parent.enableRtl ? 'S' : 'F';
19160
+ currentTarget = this.parent.enableRtl ? 'start' : 'finish';
18482
19161
  }
18483
19162
  }
18484
19163
  if (isNullOrUndefined(toItem)) {
@@ -18502,6 +19181,12 @@ class TaskbarEdit extends DateProcessor {
18502
19181
  args.isValidLink = isValidLink;
18503
19182
  args.requestType = 'ValidateDependency';
18504
19183
  this.parent.trigger('actionBegin', args);
19184
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer" && args.requestType != "ValidateDependency") {
19185
+ this.parent.showMaskRow();
19186
+ }
19187
+ else if (args.requestType != "ValidateDependency") {
19188
+ this.parent.showSpinner();
19189
+ }
18505
19190
  args.isValidLink = !isValidLink && args.isValidLink ? false : args.isValidLink;
18506
19191
  if (args.isValidLink) {
18507
19192
  if (!this.editTooltip.toolTipObj && !this.parent.isAdaptive) {
@@ -18895,18 +19580,18 @@ class DialogEdit {
18895
19580
  if (!isNullOrUndefined(taskId)) {
18896
19581
  if (!isNullOrUndefined(taskId['ganttProperties'])) {
18897
19582
  if (typeof taskId['ganttProperties']['taskId'] === 'string') {
18898
- this.numericOrString = "stringedit";
19583
+ this.numericOrString = 'stringedit';
18899
19584
  }
18900
19585
  else {
18901
- this.numericOrString = "numericedit";
19586
+ this.numericOrString = 'numericedit';
18902
19587
  }
18903
19588
  }
18904
19589
  if (isNullOrUndefined(taskId['ganttProperties']) && !isNullOrUndefined(taskId)) {
18905
19590
  if (isNaN(Number(taskId)) || this.parent.columnByField[this.parent.taskFields.id].editType === "stringedit") {
18906
- this.numericOrString = "stringedit";
19591
+ this.numericOrString = 'stringedit';
18907
19592
  }
18908
19593
  else {
18909
- this.numericOrString = "numericedit";
19594
+ this.numericOrString = 'numericedit';
18910
19595
  }
18911
19596
  }
18912
19597
  }
@@ -18948,6 +19633,7 @@ class DialogEdit {
18948
19633
  dialogModel.animationSettings = { effect: 'None' };
18949
19634
  dialogModel.header = this.localeObj.getConstant(this.isEdit ? 'editDialogTitle' : 'addDialogTitle');
18950
19635
  dialogModel.isModal = true;
19636
+ dialogModel.enableRtl = this.parent.enableRtl;
18951
19637
  dialogModel.allowDragging = this.parent.isAdaptive ? false : true;
18952
19638
  dialogModel.showCloseIcon = true;
18953
19639
  const position = this.parent.isAdaptive ? { X: 'top', Y: 'left' } : { X: 'center', Y: 'center' };
@@ -18958,8 +19644,8 @@ class DialogEdit {
18958
19644
  dialogModel.close = this.dialogClose.bind(this);
18959
19645
  dialogModel.closeOnEscape = true;
18960
19646
  dialogModel.beforeClose = function (args) {
18961
- if (args.closedBy == "escape") {
18962
- if (args.event.name == "key-pressed" && args.event.target.nodeName == 'INPUT') {
19647
+ if (args.closedBy === "escape") {
19648
+ if (args.event.name === "key-pressed" && args.event.target.nodeName === 'INPUT') {
18963
19649
  args.cancel = true;
18964
19650
  }
18965
19651
  }
@@ -19129,6 +19815,7 @@ class DialogEdit {
19129
19815
  const length = dialogSettings.length;
19130
19816
  tabModel.items = tabItems;
19131
19817
  tabModel.locale = this.parent.locale;
19818
+ tabModel.enableRtl = this.parent.enableRtl;
19132
19819
  this.beforeOpenArgs.tabModel = tabModel;
19133
19820
  let index = 0;
19134
19821
  if (length > 0) {
@@ -19208,6 +19895,12 @@ class DialogEdit {
19208
19895
  cancel: this.beforeOpenArgs.cancel
19209
19896
  };
19210
19897
  this.parent.trigger('actionBegin', this.beforeOpenArgs, (arg) => {
19898
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
19899
+ this.parent.showMaskRow();
19900
+ }
19901
+ else {
19902
+ this.parent.showSpinner();
19903
+ }
19211
19904
  this.renderTabItems();
19212
19905
  if (!arg.cancel) {
19213
19906
  tabModel.selected = this.tabSelectedEvent.bind(this);
@@ -19230,6 +19923,12 @@ class DialogEdit {
19230
19923
  cancel: false
19231
19924
  };
19232
19925
  this.parent.trigger('actionComplete', actionCompleteArgs, (actionCompleteArg) => {
19926
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
19927
+ this.parent.hideMaskRow();
19928
+ }
19929
+ else {
19930
+ this.parent.hideSpinner();
19931
+ }
19233
19932
  if (actionCompleteArg.cancel) {
19234
19933
  this.resetValues();
19235
19934
  }
@@ -19312,7 +20011,8 @@ class DialogEdit {
19312
20011
  {
19313
20012
  const checkboxModel = {
19314
20013
  label: column.headerText,
19315
- locale: locale
20014
+ locale: locale,
20015
+ enableRtl: this.parent.enableRtl
19316
20016
  };
19317
20017
  fieldsModel[column.field] = checkboxModel;
19318
20018
  break;
@@ -19321,6 +20021,7 @@ class DialogEdit {
19321
20021
  case 'stringedit':
19322
20022
  {
19323
20023
  const textBox = common;
20024
+ textBox.enableRtl = this.parent.enableRtl;
19324
20025
  if (column.field === ganttObj.columnMapping.duration || column.field === ganttObj.columnMapping.id || column.field === ganttObj.columnMapping.startDate ||
19325
20026
  column.field === ganttObj.columnMapping.endDate) {
19326
20027
  textBox.change = (args) => {
@@ -19333,6 +20034,7 @@ class DialogEdit {
19333
20034
  case 'numericedit':
19334
20035
  {
19335
20036
  const numeric = common;
20037
+ numeric.enableRtl = this.parent.enableRtl;
19336
20038
  if (taskSettings.progress === column.field) {
19337
20039
  numeric.min = 0;
19338
20040
  numeric.max = 100;
@@ -19349,6 +20051,7 @@ class DialogEdit {
19349
20051
  {
19350
20052
  const datePickerObj = common;
19351
20053
  datePickerObj.format = this.parent.getDateFormat();
20054
+ datePickerObj.enableRtl = this.parent.enableRtl;
19352
20055
  datePickerObj.strictMode = true;
19353
20056
  datePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;
19354
20057
  if (column.field === ganttObj.columnMapping.startDate ||
@@ -19365,6 +20068,7 @@ class DialogEdit {
19365
20068
  {
19366
20069
  const dateTimePickerObj = common;
19367
20070
  dateTimePickerObj.format = this.parent.getDateFormat();
20071
+ dateTimePickerObj.enableRtl = this.parent.enableRtl;
19368
20072
  dateTimePickerObj.strictMode = true;
19369
20073
  dateTimePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;
19370
20074
  if (column.field === ganttObj.columnMapping.startDate ||
@@ -19387,6 +20091,7 @@ class DialogEdit {
19387
20091
  common[dataKey] = types;
19388
20092
  common[fieldsKey] = { value: 'Value' };
19389
20093
  const dropDownListObj = common;
20094
+ dropDownListObj.enableRtl = this.parent.enableRtl;
19390
20095
  dropDownListObj.change = (args) => {
19391
20096
  if (column.field === taskSettings.manual) {
19392
20097
  this.editedRecord.ganttProperties.isAutoSchedule = !args.value;
@@ -19758,8 +20463,8 @@ class DialogEdit {
19758
20463
  break;
19759
20464
  case 'duration':
19760
20465
  gridColumn = {
19761
- field: fields[i], headerText: this.localeObj.getConstant(fields[i]), editType: 'stringedit', width: '100px',
19762
- edit: {
20466
+ field: fields[i], headerText: this.localeObj.getConstant(fields[i]), editType: 'stringedit',
20467
+ width: '100px', edit: {
19763
20468
  write: (args) => {
19764
20469
  let inputTextModel;
19765
20470
  if (!isNullOrUndefined(this.beforeOpenArgs[generalTabString])) {
@@ -19820,7 +20525,7 @@ class DialogEdit {
19820
20525
  inputValue = dialog.querySelector('#' + ganttId + 'SegmentsTabContainer' + columnName)
19821
20526
  .ej2_instances[0];
19822
20527
  }
19823
- if (inputValue.value.toString() !== tempValue.toString()) {
20528
+ if ((!isNullOrUndefined(inputValue.value)) && (inputValue.value.toString() !== tempValue.toString())) {
19824
20529
  inputValue.value = tempValue;
19825
20530
  inputValue.dataBind();
19826
20531
  }
@@ -20154,7 +20859,7 @@ class DialogEdit {
20154
20859
  break;
20155
20860
  }
20156
20861
  }
20157
- if (typeof (stringOrNumber) === "string") {
20862
+ if (typeof (stringOrNumber) === 'string') {
20158
20863
  disabled = false;
20159
20864
  }
20160
20865
  else {
@@ -20169,7 +20874,7 @@ class DialogEdit {
20169
20874
  }
20170
20875
  if (this.editedRecord.hasChildRecords) {
20171
20876
  if ((column.field === this.parent.taskFields.endDate && ((!isNullOrUndefined(this.editedRecord['isManual']) &&
20172
- this.editedRecord['isManual'] == false) || this.parent.taskMode == 'Auto')) || column.field === this.parent.taskFields.duration ||
20877
+ this.editedRecord['isManual'] === false) || this.parent.taskMode === 'Auto')) || column.field === this.parent.taskFields.duration ||
20173
20878
  column.field === this.parent.taskFields.progress || column.field === this.parent.taskFields.work ||
20174
20879
  column.field === this.parent.taskFields.type) {
20175
20880
  disabled = true;
@@ -20224,6 +20929,7 @@ class DialogEdit {
20224
20929
  dataSource: new DataManager(this.idCollection),
20225
20930
  popupHeight: '180px',
20226
20931
  allowCustom: false,
20932
+ enableRtl: this.parent.enableRtl,
20227
20933
  fields: { value: 'text' },
20228
20934
  value: args.rowData[field],
20229
20935
  change: (arg) => {
@@ -20491,7 +21197,7 @@ class DialogEdit {
20491
21197
  do {
20492
21198
  if (currentFlatData.parentItem) {
20493
21199
  currentFlatData = this.parent.flatData[this.parent.ids.indexOf(currentFlatData.parentItem.taskId)];
20494
- if (currentFlatData.uniqueID == this.beforeOpenArgs.rowData['uniqueID']) {
21200
+ if (currentFlatData.uniqueID === this.beforeOpenArgs.rowData['uniqueID']) {
20495
21201
  this.isValidData = false;
20496
21202
  break;
20497
21203
  }
@@ -20743,7 +21449,9 @@ class DialogEdit {
20743
21449
  }
20744
21450
  }
20745
21451
  if (this.isEdit) {
20746
- this.updateScheduleProperties(this.editedRecord, this.rowData);
21452
+ if (!isCustom) {
21453
+ this.updateScheduleProperties(this.editedRecord, this.rowData);
21454
+ }
20747
21455
  ganttObj.editModule.validateUpdateValues(tasksData, this.rowData, true);
20748
21456
  }
20749
21457
  }
@@ -21398,6 +22106,7 @@ class ConnectorLineEdit {
21398
22106
  const validationDialog = new Dialog({
21399
22107
  header: 'Validate Editing',
21400
22108
  isModal: true,
22109
+ enableRtl: this.parent.enableRtl,
21401
22110
  visible: false,
21402
22111
  width: '50%',
21403
22112
  showCloseIcon: true,
@@ -21769,6 +22478,7 @@ class ConnectorLineEdit {
21769
22478
  this.confirmPredecessorDialog = new Dialog({
21770
22479
  width: '320px',
21771
22480
  isModal: true,
22481
+ enableRtl: this.parent.enableRtl,
21772
22482
  content: this.parent.localeObj.getConstant('confirmPredecessorDelete'),
21773
22483
  buttons: [
21774
22484
  {
@@ -21816,6 +22526,7 @@ class Edit$2 {
21816
22526
  this.taskbarMoved = false;
21817
22527
  this.predecessorUpdated = false;
21818
22528
  this.isBreakLoop = false;
22529
+ this.isResourceTaskDeleted = false;
21819
22530
  /**
21820
22531
  * @private
21821
22532
  */
@@ -21890,6 +22601,7 @@ class Edit$2 {
21890
22601
  const editParam = {
21891
22602
  min: 0,
21892
22603
  decimals: 0,
22604
+ enableRtl: this.parent.enableRtl,
21893
22605
  validateDecimalOnType: true,
21894
22606
  format: 'n0',
21895
22607
  showSpinButton: false
@@ -21905,6 +22617,7 @@ class Edit$2 {
21905
22617
  updateProgessColumnEditParams(column) {
21906
22618
  const editParam = {
21907
22619
  min: 0,
22620
+ enableRtl: this.parent.enableRtl,
21908
22621
  decimals: 0,
21909
22622
  validateDecimalOnType: true,
21910
22623
  max: 100,
@@ -21962,6 +22675,7 @@ class Edit$2 {
21962
22675
  editor = new MultiSelect({
21963
22676
  dataSource: new DataManager(this.parent.resources),
21964
22677
  fields: { text: resourceSettings.name, value: resourceSettings.id },
22678
+ enableRtl: this.parent.enableRtl,
21965
22679
  mode: 'CheckBox',
21966
22680
  showDropDownIcon: true,
21967
22681
  popupHeight: '350px',
@@ -22022,6 +22736,7 @@ class Edit$2 {
22022
22736
  this.parent.treeGridModule.currentEditRow = {};
22023
22737
  editor = new DropDownList({
22024
22738
  dataSource: new DataManager(types),
22739
+ enableRtl: this.parent.enableRtl,
22025
22740
  fields: { value: 'Value' },
22026
22741
  popupHeight: '350px',
22027
22742
  value: getValue('taskType', args.rowData.ganttProperties)
@@ -22906,7 +23621,6 @@ class Edit$2 {
22906
23621
  * @private
22907
23622
  */
22908
23623
  initiateSaveAction(args) {
22909
- this.parent.showSpinner();
22910
23624
  let eventArgs = {};
22911
23625
  eventArgs.requestType = 'beforeSave';
22912
23626
  eventArgs.data = args.data;
@@ -22920,6 +23634,12 @@ class Edit$2 {
22920
23634
  eventArgs.action = 'DrawConnectorLine';
22921
23635
  }
22922
23636
  this.parent.trigger('actionBegin', eventArgs, (eventArg) => {
23637
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
23638
+ this.parent.showMaskRow();
23639
+ }
23640
+ else {
23641
+ this.parent.showSpinner();
23642
+ }
22923
23643
  if (eventArg.cancel) {
22924
23644
  this.reUpdatePreviousRecords();
22925
23645
  this.parent.chartRowsModule.refreshRecords([args.data]);
@@ -22953,6 +23673,52 @@ class Edit$2 {
22953
23673
  });
22954
23674
  }
22955
23675
  dmSuccess(e, args) {
23676
+ let eLength = e['length'];
23677
+ for (let i = 0; i < eLength; i++) {
23678
+ let rec = e[i];
23679
+ let _aLength = Object.keys(rec).length;
23680
+ for (let j = 0, _a = Object.keys(rec); j < _aLength; j++) {
23681
+ let key = _a[j];
23682
+ this.parent.editedRecords[i][key] = rec[key];
23683
+ this.parent.editedRecords[i].taskData[key] = rec[key];
23684
+ }
23685
+ if (this.parent.taskFields.id !== null) {
23686
+ this.parent.editedRecords[i].ganttProperties["taskId"] = rec[this.parent.taskFields.id];
23687
+ }
23688
+ if (this.parent.taskFields.name !== null) {
23689
+ this.parent.editedRecords[i].ganttProperties["taskName"] = rec[this.parent.taskFields.name];
23690
+ }
23691
+ if (this.parent.taskFields.startDate !== null) {
23692
+ this.parent.editedRecords[i].ganttProperties["startDate"] = rec[this.parent.taskFields.startDate];
23693
+ }
23694
+ if (this.parent.taskFields.endDate !== null) {
23695
+ this.parent.editedRecords[i].ganttProperties["endDate"] = rec[this.parent.taskFields.endDate];
23696
+ }
23697
+ if (this.parent.taskFields.duration !== null) {
23698
+ this.parent.editedRecords[i].ganttProperties["duration"] = parseInt(rec[this.parent.taskFields.duration]);
23699
+ }
23700
+ if (this.parent.taskFields.durationUnit !== null) {
23701
+ this.parent.editedRecords[i].ganttProperties["durationUnit"] = rec[this.parent.taskFields.durationUnit];
23702
+ }
23703
+ if (this.parent.taskFields.progress !== null) {
23704
+ this.parent.editedRecords[i].ganttProperties["progress"] = rec[this.parent.taskFields.progress];
23705
+ }
23706
+ if (this.parent.taskFields.dependency !== null) {
23707
+ this.parent.editedRecords[i].ganttProperties["dependency"] = rec[this.parent.taskFields.dependency];
23708
+ }
23709
+ if (this.parent.taskFields.parentID !== null) {
23710
+ this.parent.editedRecords[i].ganttProperties["parentID"] = rec[this.parent.taskFields.parentID];
23711
+ }
23712
+ if (this.parent.taskFields.baselineEndDate !== null) {
23713
+ this.parent.editedRecords[i].ganttProperties["baselineEndDate"] = rec[this.parent.taskFields.baselineEndDate];
23714
+ }
23715
+ if (this.parent.taskFields.baselineStartDate !== null) {
23716
+ this.parent.editedRecords[i].ganttProperties["baselineStartDate"] = rec[this.parent.taskFields.baselineStartDate];
23717
+ }
23718
+ if (this.parent.taskFields.resourceInfo !== null) {
23719
+ this.parent.editedRecords[i].ganttProperties["resources"] = rec[this.parent.taskFields.resourceInfo];
23720
+ }
23721
+ }
22956
23722
  this.saveSuccess(args);
22957
23723
  }
22958
23724
  dmFailure(e, args) {
@@ -22971,7 +23737,7 @@ class Edit$2 {
22971
23737
  const ids = data.ganttProperties.sharedTaskUniqueIds;
22972
23738
  for (let i = 0; i < ids.length; i++) {
22973
23739
  const editRecord = this.parent.flatData[this.parent.ids.indexOf(ids[i].toString())];
22974
- if (editRecord.uniqueID !== data.uniqueID) {
23740
+ if (editRecord && editRecord.uniqueID !== data.uniqueID) {
22975
23741
  this.updateGanttProperties(data, editRecord);
22976
23742
  this.parent.setRecordValue('taskData', data.taskData, editRecord, true);
22977
23743
  this.parent.dataOperation.updateTaskData(editRecord);
@@ -23045,6 +23811,12 @@ class Edit$2 {
23045
23811
  criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
23046
23812
  }
23047
23813
  this.parent.trigger('actionComplete', eventArgs);
23814
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
23815
+ this.parent.hideMaskRow();
23816
+ }
23817
+ else {
23818
+ this.parent.hideSpinner();
23819
+ }
23048
23820
  }
23049
23821
  else {
23050
23822
  this.taskbarEditModule.dependencyCancel = false;
@@ -23066,12 +23838,12 @@ class Edit$2 {
23066
23838
  for (let index = 0; index < currentLength; index++) {
23067
23839
  const recordIndex = [];
23068
23840
  let resourceID = parseInt(currentResource[index][this.parent.resourceFields.id], 10).toString();
23069
- if (resourceID === "NaN") {
23841
+ if (resourceID === 'NaN') {
23070
23842
  resourceID = currentResource[index][this.parent.resourceFields.id];
23071
23843
  }
23072
23844
  for (let i = 0; i < prevResource.length; i++) {
23073
23845
  let prevResourceID = parseInt(prevResource[i][this.parent.resourceFields.id], 10).toString();
23074
- if (prevResourceID === "NaN") {
23846
+ if (prevResourceID === 'NaN') {
23075
23847
  prevResourceID = prevResource[i][this.parent.resourceFields.id];
23076
23848
  }
23077
23849
  if (prevResourceID === resourceID) {
@@ -23132,12 +23904,6 @@ class Edit$2 {
23132
23904
  }
23133
23905
  if (!isNullOrUndefined(unassignedTasks)) {
23134
23906
  this.addNewRecord(updateRecord, unassignedTasks);
23135
- const updatedData = this.parent.currentViewData.filter((data) => {
23136
- return (data.ganttProperties.taskId === updateRecord.ganttProperties.taskId &&
23137
- (data.hasChildRecords === updateRecord.hasChildRecords));
23138
- })[0];
23139
- updateRecord.parentItem = updatedData.parentItem;
23140
- updateRecord.parentUniqueID = updatedData.parentUniqueID;
23141
23907
  }
23142
23908
  else {
23143
23909
  // Block for create the unassigned task.
@@ -23152,6 +23918,12 @@ class Edit$2 {
23152
23918
  const parentRecord = this.parent.flatData[this.parent.flatData.length - 1];
23153
23919
  this.addNewRecord(updateRecord, parentRecord);
23154
23920
  }
23921
+ const updatedData = this.parent.currentViewData.filter((data) => {
23922
+ return (data.ganttProperties.taskId === updateRecord.ganttProperties.taskId &&
23923
+ (data.hasChildRecords === updateRecord.hasChildRecords));
23924
+ })[0];
23925
+ updateRecord.parentItem = updatedData.parentItem;
23926
+ updateRecord.parentUniqueID = updatedData.parentUniqueID;
23155
23927
  }
23156
23928
  addRecordAsBottom(cAddedRecord) {
23157
23929
  const recordIndex1 = this.parent.flatData.length;
@@ -23358,6 +24130,7 @@ class Edit$2 {
23358
24130
  width: '320px',
23359
24131
  isModal: true,
23360
24132
  visible: false,
24133
+ enableRtl: this.parent.enableRtl,
23361
24134
  content: this.parent.localeObj.getConstant('confirmDelete'),
23362
24135
  buttons: [
23363
24136
  {
@@ -23410,15 +24183,17 @@ class Edit$2 {
23410
24183
  const deleteRecords = [];
23411
24184
  for (let i = 0; i < selectedRecords.length; i++) {
23412
24185
  if (selectedRecords[i].parentItem) {
23413
- const data = selectedRecords[i];
23414
- const ids = data.ganttProperties.sharedTaskUniqueIds;
23415
- for (let j = 0; j < ids.length; j++) {
23416
- if (this.parent.ids.indexOf(ids[j].toString()) !== -1) {
23417
- deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(ids[j].toString())]);
24186
+ if (selectedRecords[i].ganttProperties.sharedTaskUniqueIds.length === 1) {
24187
+ const data = selectedRecords[i];
24188
+ const ids = data.ganttProperties.sharedTaskUniqueIds;
24189
+ for (let j = 0; j < ids.length; j++) {
24190
+ if (this.parent.ids.indexOf(ids[j].toString()) !== -1) {
24191
+ deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(ids[j].toString())]);
24192
+ }
24193
+ }
24194
+ if (this.parent.ids.indexOf(data.ganttProperties.rowUniqueID) !== -1) {
24195
+ deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(data.ganttProperties.rowUniqueID)]);
23418
24196
  }
23419
- }
23420
- if (this.parent.ids.indexOf(data.ganttProperties.rowUniqueID) !== -1) {
23421
- deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(data.ganttProperties.rowUniqueID)]);
23422
24197
  }
23423
24198
  }
23424
24199
  else {
@@ -23544,8 +24319,9 @@ class Edit$2 {
23544
24319
  if (this.deletedTaskDetails.indexOf(deleteRecord) !== -1) {
23545
24320
  continue;
23546
24321
  }
24322
+ const parentTask = this.parent.getParentTask(deleteRecord.parentItem);
23547
24323
  if (deleteRecord.parentItem) {
23548
- const childRecord = this.parent.getParentTask(deleteRecord.parentItem).childRecords;
24324
+ const childRecord = parentTask.childRecords;
23549
24325
  const filteredRecord = childRecord.length === 1 ?
23550
24326
  childRecord : childRecord.filter((data) => {
23551
24327
  return !data.isDelete;
@@ -23555,7 +24331,12 @@ class Edit$2 {
23555
24331
  }
23556
24332
  }
23557
24333
  const predecessor = deleteRecord.ganttProperties.predecessor;
23558
- if (predecessor && predecessor.length) {
24334
+ let canDeletePredecessor = true;
24335
+ if (this.parent.viewType === 'ResourceView' && parentTask && parentTask.ganttProperties.taskName !==
24336
+ this.parent.localeObj.getConstant('unassignedTask')) {
24337
+ canDeletePredecessor = false;
24338
+ }
24339
+ if (predecessor && predecessor.length && canDeletePredecessor) {
23559
24340
  this.removePredecessorOnDelete(deleteRecord);
23560
24341
  }
23561
24342
  this.deletedTaskDetails.push(deleteRecord);
@@ -23704,7 +24485,13 @@ class Edit$2 {
23704
24485
  continue;
23705
24486
  }
23706
24487
  const predecessor = childRecord.ganttProperties.predecessor;
23707
- if (predecessor && predecessor.length) {
24488
+ let canDeletePredecessor = true;
24489
+ const parentTask = this.parent.getParentTask(childRecord.parentItem);
24490
+ if (this.parent.viewType === 'ResourceView' && parentTask && parentTask.ganttProperties.taskName !==
24491
+ this.parent.localeObj.getConstant('unassignedTask')) {
24492
+ canDeletePredecessor = false;
24493
+ }
24494
+ if (predecessor && predecessor.length && canDeletePredecessor) {
23708
24495
  this.removePredecessorOnDelete(childRecord);
23709
24496
  }
23710
24497
  this.deletedTaskDetails.push(childRecord);
@@ -23755,6 +24542,12 @@ class Edit$2 {
23755
24542
  eventArgs.modifiedRecords = args.updatedRecordCollection;
23756
24543
  eventArgs.modifiedTaskData = getTaskData(args.updatedRecordCollection, null, null, this.parent);
23757
24544
  this.parent.trigger('actionBegin', eventArgs, (eventArg) => {
24545
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
24546
+ this.parent.showMaskRow();
24547
+ }
24548
+ else {
24549
+ this.parent.showSpinner();
24550
+ }
23758
24551
  if (eventArg.cancel) {
23759
24552
  const deleteRecords = this.deletedTaskDetails;
23760
24553
  for (let d = 0; d < deleteRecords.length; d++) {
@@ -23833,6 +24626,14 @@ class Edit$2 {
23833
24626
  this.parent.ids.splice(flatIndex, 1);
23834
24627
  if (this.parent.viewType === 'ResourceView') {
23835
24628
  this.parent.getTaskIds().splice(flatIndex, 1);
24629
+ this.isResourceTaskDeleted = true;
24630
+ if (!deleteRecord.hasChildRecords) {
24631
+ deleteRecord.ganttProperties.resourceInfo = null;
24632
+ delete deleteRecord.ganttProperties.resourceNames;
24633
+ deleteRecord[this.parent.taskFields.resourceInfo] = null;
24634
+ deleteRecord.ganttProperties.sharedTaskUniqueIds = [];
24635
+ delete deleteRecord.taskData[this.parent.taskFields.resourceInfo];
24636
+ }
23836
24637
  }
23837
24638
  }
23838
24639
  if (deleteRecord.level === 0 && treeGridParentIndex !== -1) {
@@ -23881,9 +24682,12 @@ class Edit$2 {
23881
24682
  const unassignedTask = this.parent.flatData.filter((data) => {
23882
24683
  return data.ganttProperties.taskName === this.parent.localeObj.getConstant('unassignedTask');
23883
24684
  })[0];
23884
- const isDuplicate = unassignedTask.childRecords.filter((data) => {
23885
- return data.ganttProperties.taskId === updateUnAssignedResources[i].ganttProperties.taskId;
23886
- });
24685
+ let isDuplicate = [];
24686
+ if (unassignedTask) {
24687
+ isDuplicate = unassignedTask.childRecords.filter((data) => {
24688
+ return data.ganttProperties.taskId === updateUnAssignedResources[i].ganttProperties.taskId;
24689
+ });
24690
+ }
23887
24691
  const parentTask = this.parent.getParentTask(updateUnAssignedResources[i].parentItem);
23888
24692
  if (parentTask && parentTask.ganttProperties.taskName !==
23889
24693
  this.parent.localeObj.getConstant('unassignedTask') && isDuplicate.length === 0) {
@@ -23892,9 +24696,9 @@ class Edit$2 {
23892
24696
  this.parent.dataOperation.updateParentItems(updateUnAssignedResources[i].parentItem);
23893
24697
  }
23894
24698
  }
23895
- else if (!parentTask && isDuplicate.length === 0) {
24699
+ else if (!parentTask && (!isDuplicate || isDuplicate.length === 0)) {
23896
24700
  this.checkWithUnassignedTask(updateUnAssignedResources[i]);
23897
- if (updateUnAssignedResources[i].parentItem) {
24701
+ if (updateUnAssignedResources[i].parentItem && unassignedTask) {
23898
24702
  this.parent.dataOperation.updateParentItems(updateUnAssignedResources[i].parentItem);
23899
24703
  }
23900
24704
  }
@@ -23903,7 +24707,12 @@ class Edit$2 {
23903
24707
  this.parent.trigger('actionComplete', eventArgs);
23904
24708
  this.deletedTaskDetails = [];
23905
24709
  this.parent.initiateEditAction(false);
23906
- this.parent.hideSpinner();
24710
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
24711
+ this.parent.hideMaskRow();
24712
+ }
24713
+ else {
24714
+ this.parent.hideSpinner();
24715
+ }
23907
24716
  }
23908
24717
  /**
23909
24718
  *
@@ -24357,9 +25166,9 @@ class Edit$2 {
24357
25166
  for (let i = 0; i < this.parent.modifiedRecords.length; i++) {
24358
25167
  const originalData = this.parent.modifiedRecords[i];
24359
25168
  let treeIndex = this.parent.allowRowDragAndDrop ? 1 : 0;
24360
- let uniqueTaskID = this.parent.taskFields.id;
24361
- var originalIndex = this.parent.currentViewData.findIndex((data) => {
24362
- return (data[uniqueTaskID] == originalData[uniqueTaskID]);
25169
+ const uniqueTaskID = this.parent.taskFields.id;
25170
+ let originalIndex = this.parent.currentViewData.findIndex((data) => {
25171
+ return (data[uniqueTaskID] === originalData[uniqueTaskID]);
24363
25172
  });
24364
25173
  if (this.parent.treeGrid.getRows()[originalIndex]) {
24365
25174
  this.parent.treeGrid.renderModule.cellRender({
@@ -24479,8 +25288,13 @@ class Edit$2 {
24479
25288
  }
24480
25289
  let args = {};
24481
25290
  args = this.constructTaskAddedEventArgs(cAddedRecord, this.parent.editedRecords, 'beforeAdd');
24482
- this.parent.showSpinner();
24483
25291
  this.parent.trigger('actionBegin', args, (args) => {
25292
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25293
+ this.parent.showMaskRow();
25294
+ }
25295
+ else {
25296
+ this.parent.showSpinner();
25297
+ }
24484
25298
  if (!isNullOrUndefined(args.data[tempTaskID])) {
24485
25299
  if (args.data[tempTaskID] != args.data['ganttProperties']['taskId']) {
24486
25300
  args.data['ganttProperties']['taskId'] = args.data[tempTaskID];
@@ -24684,7 +25498,7 @@ class Edit$2 {
24684
25498
  switch (rowPosition) {
24685
25499
  case 'Top':
24686
25500
  case 'Bottom':
24687
- if (this.parent.viewType === "ResourceView") {
25501
+ if (this.parent.viewType === 'ResourceView') {
24688
25502
  level = 1;
24689
25503
  }
24690
25504
  else {
@@ -24767,6 +25581,12 @@ class Edit$2 {
24767
25581
  this.parent.dataOperation.updateWorkWithDuration(cAddedRecord[0]);
24768
25582
  }
24769
25583
  this.parent.trigger('actionComplete', args);
25584
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25585
+ this.parent.hideMaskRow();
25586
+ }
25587
+ else {
25588
+ this.parent.hideSpinner();
25589
+ }
24770
25590
  if (this.dialogModule.dialog && !this.dialogModule.dialogObj.isDestroyed) {
24771
25591
  this.dialogModule.dialogObj.hide();
24772
25592
  }
@@ -24925,6 +25745,12 @@ class Edit$2 {
24925
25745
  cancel: false
24926
25746
  };
24927
25747
  this.parent.trigger('actionBegin', actionArgs, (actionArg) => {
25748
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25749
+ this.parent.showMaskRow();
25750
+ }
25751
+ else {
25752
+ this.parent.showSpinner();
25753
+ }
24928
25754
  if (!actionArg.cancel) {
24929
25755
  this.reArrangeRows(args, isByMethod);
24930
25756
  }
@@ -25096,6 +25922,12 @@ class Edit$2 {
25096
25922
  }
25097
25923
  }
25098
25924
  this.parent.trigger('actionComplete', args);
25925
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25926
+ this.parent.hideMaskRow();
25927
+ }
25928
+ else {
25929
+ this.parent.hideSpinner();
25930
+ }
25099
25931
  this.parent.editedRecords = [];
25100
25932
  }
25101
25933
  refreshDataSource() {
@@ -25607,6 +26439,7 @@ class Filter$1 {
25607
26439
  const flValInput = createElement('input', { className: 'flm-input' });
25608
26440
  args.target.appendChild(flValInput);
25609
26441
  dropDateInstance = new DatePicker({ placeholder: this.parent.localeObj.getConstant('enterValue'), format: format });
26442
+ dropDateInstance.enableRtl = this.parent.enableRtl;
25610
26443
  dropDateInstance.appendTo(flValInput);
25611
26444
  },
25612
26445
  write: (args) => {
@@ -25629,6 +26462,7 @@ class Filter$1 {
25629
26462
  const flValInput = createElement('input', { className: 'flm-input' });
25630
26463
  args.target.appendChild(flValInput);
25631
26464
  dropInstance = new DateTimePicker({ placeholder: this.parent.localeObj.getConstant('enterValue'), format: format });
26465
+ dropInstance.enableRtl = this.parent.enableRtl;
25632
26466
  dropInstance.appendTo(flValInput);
25633
26467
  },
25634
26468
  write: (args) => {
@@ -25650,6 +26484,7 @@ class Filter$1 {
25650
26484
  flValInput.setAttribute('placeholder', this.parent.localeObj.getConstant('enterValue'));
25651
26485
  args.target.appendChild(flValInput);
25652
26486
  textBoxInstance = new TextBox();
26487
+ textBoxInstance.enableRtl = this.parent.enableRtl;
25653
26488
  textBoxInstance.appendTo(flValInput);
25654
26489
  },
25655
26490
  write: (args) => {
@@ -26438,6 +27273,14 @@ class Toolbar$3 {
26438
27273
  this.parent.localeObj.getConstant('tasks') : ''),
26439
27274
  align: this.parent.isAdaptive ? 'Right' : 'Left'
26440
27275
  };
27276
+ if (this.parent.enableRtl) {
27277
+ if (item === 'PrevTimeSpan') {
27278
+ this.predefinedItems[item].prefixIcon = 'e-nexttimespan';
27279
+ }
27280
+ if (item === 'NextTimeSpan') {
27281
+ this.predefinedItems[item].prefixIcon = 'e-prevtimespan';
27282
+ }
27283
+ }
26441
27284
  }
26442
27285
  const searchLocalText = this.parent.localeObj.getConstant('search');
26443
27286
  if (this.parent.isAdaptive) {
@@ -26469,6 +27312,7 @@ class Toolbar$3 {
26469
27312
  const items = this.getItems();
26470
27313
  this.toolbar = new Toolbar$1({
26471
27314
  items: items,
27315
+ enableRtl: this.parent.enableRtl,
26472
27316
  clicked: this.toolbarClickHandler.bind(this),
26473
27317
  height: this.parent.isAdaptive ? 48 : 'auto'
26474
27318
  });
@@ -26487,6 +27331,7 @@ class Toolbar$3 {
26487
27331
  this.searchElement = this.element.querySelector('#' + this.parent.element.id + '_searchbar');
26488
27332
  const textObj = new TextBox({
26489
27333
  placeholder: this.parent.localeObj.getConstant('search'),
27334
+ enableRtl: this.parent.enableRtl,
26490
27335
  floatLabelType: 'Never',
26491
27336
  showClearButton: true
26492
27337
  });
@@ -26602,7 +27447,16 @@ class Toolbar$3 {
26602
27447
  toolbarClickHandler(arg) {
26603
27448
  const gObj = this.parent;
26604
27449
  const gID = this.id;
27450
+ this.parent.isToolBarClick = false;
26605
27451
  extend(arg, { cancel: false });
27452
+ if (arg.item['properties'].id === this.parent.element.id + "_pdfexport" || arg.item['properties'].id === this.parent.element.id + "_critical-path") {
27453
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
27454
+ this.parent.showMaskRow();
27455
+ }
27456
+ else {
27457
+ this.parent.showSpinner();
27458
+ }
27459
+ }
26606
27460
  gObj.trigger(toolbarClick, arg, (args) => {
26607
27461
  if (args.cancel) {
26608
27462
  return;
@@ -26804,7 +27658,8 @@ class Toolbar$3 {
26804
27658
  else {
26805
27659
  disableItems.push(gID + '_update', gID + '_cancel');
26806
27660
  for (let t = 0; t < toolbarItems.length; t++) {
26807
- if (enableItems.indexOf(toolbarItems[t].id) === -1 && disableItems.indexOf(toolbarItems[t].id) === -1) {
27661
+ if (enableItems.indexOf(toolbarItems[t].id) === -1 &&
27662
+ disableItems.indexOf(toolbarItems[t].id) === -1) {
26808
27663
  enableItems.push(toolbarItems[t].id);
26809
27664
  }
26810
27665
  }
@@ -26959,8 +27814,9 @@ class NonWorkingDay {
26959
27814
  const width = (this.parent.holidays[i].from && this.parent.holidays[i].to) ?
26960
27815
  this.parent.dataOperation.getTaskWidth(fromDate, toDate) : this.parent.perDayWidth;
26961
27816
  const left = this.parent.dataOperation.getTaskLeft(fromDate, false);
27817
+ const align = this.parent.enableRtl ? `right:${left}px;` : `left:${left}px;`;
26962
27818
  const holidayDiv = createElement('div', {
26963
- className: holidayElement, styles: `left:${left}px; width:${width}px; height:100%;`
27819
+ className: holidayElement, styles: `${align} width:${width}px; height:100%;`
26964
27820
  });
26965
27821
  const spanTop = (viewportHeight < height) ? viewportHeight / 2 : height / 2;
26966
27822
  const spanElement = createElement('span', {
@@ -27029,8 +27885,9 @@ class NonWorkingDay {
27029
27885
  this.weekendWidthUpdated = true;
27030
27886
  }
27031
27887
  }
27888
+ const align = this.parent.enableRtl ? `right:${left}px;` : `left:${left}px;`;
27032
27889
  const weekendDiv = createElement('div', {
27033
- className: weekend, styles: `left:${left}px;width:${width}px;height:100%;`
27890
+ className: weekend, styles: `${align} width:${width}px;height:100%;`
27034
27891
  });
27035
27892
  container.appendChild(weekendDiv);
27036
27893
  }
@@ -27102,7 +27959,7 @@ class EventMarker$1 {
27102
27959
  this.eventMarkersContainer = createElement('div', {
27103
27960
  className: eventMarkersContainer
27104
27961
  });
27105
- this.eventMarkersContainer.setAttribute("role", "term");
27962
+ this.eventMarkersContainer.setAttribute('role', 'term');
27106
27963
  this.parent.ganttChartModule.chartBodyContent.appendChild(this.eventMarkersContainer);
27107
27964
  }
27108
27965
  this.eventMarkersContainer.innerHTML = '';
@@ -27135,8 +27992,15 @@ class EventMarker$1 {
27135
27992
  let rightArrow;
27136
27993
  for (let i = 0; i < this.parent.eventMarkers.length; i++) {
27137
27994
  left = this.parent.dataOperation.getTaskLeft(this.parent.dateValidationModule.getDateFromFormat(this.parent.eventMarkers[i].day, true), false);
27995
+ let align;
27996
+ if (this.parent.enableRtl) {
27997
+ align = `right:${left}px;`;
27998
+ }
27999
+ else {
28000
+ align = `left:${left}px;`;
28001
+ }
27138
28002
  eventMarkerElement = createElement('div', {
27139
- className: eventMarkersChild, styles: `left:${left}px; height:100%;`,
28003
+ className: eventMarkersChild, styles: `${align} height:100%;`,
27140
28004
  id: 'stripline' + i
27141
28005
  });
27142
28006
  if (this.parent.eventMarkers[i].label) {
@@ -27145,6 +28009,12 @@ class EventMarker$1 {
27145
28009
  });
27146
28010
  const property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';
27147
28011
  spanElement[property] = this.parent.eventMarkers[i].label;
28012
+ if (this.parent.enableRtl) {
28013
+ spanElement.style.right = '5px';
28014
+ }
28015
+ else {
28016
+ spanElement.style.left = '5px';
28017
+ }
27148
28018
  eventMarkerElement.appendChild(spanElement);
27149
28019
  rightArrow = createElement('div', {
27150
28020
  className: 'e-gantt-right-arrow'
@@ -27321,8 +28191,8 @@ class CriticalPath {
27321
28191
  predecessorIndex = modelIds.indexOf(checkBeyondEnddate[k].toString());
27322
28192
  }
27323
28193
  else {
27324
- let currentRecords = this.parent.currentViewData.filter((data) => {
27325
- return parseInt(data.ganttProperties.taskId) == checkBeyondEnddate[k];
28194
+ const currentRecords = this.parent.currentViewData.filter((data) => {
28195
+ return parseInt(data.ganttProperties.taskId) === checkBeyondEnddate[k];
27326
28196
  });
27327
28197
  for (let i = 0; i < currentRecords.length; i++) {
27328
28198
  if (!currentRecords[i].hasChildRecords && currentRecords[i].ganttProperties.endDate >= this.maxEndDate) {
@@ -27355,10 +28225,10 @@ class CriticalPath {
27355
28225
  const individualPredecessorLength = totalPredecessorsCollection[x].ganttProperties.predecessor.length;
27356
28226
  const taskid = ((totalPredecessorsCollection[x].ganttProperties.taskId));
27357
28227
  for (let y = 0; y < individualPredecessorLength; y++) {
27358
- if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) != "string") {
28228
+ if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) != 'string') {
27359
28229
  tempTaskId = parseInt((predecessor[y].from), 10);
27360
28230
  }
27361
- else if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) === "string") {
28231
+ else if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) === 'string') {
27362
28232
  tempTaskId = predecessor[y].from;
27363
28233
  }
27364
28234
  else {
@@ -27381,15 +28251,16 @@ class CriticalPath {
27381
28251
  toPredecessor = toPredecessor + ',' + predecessor[y].type;
27382
28252
  }
27383
28253
  else {
27384
- to = to + ',' + predecessor[y].to + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
28254
+ to = to + ',' + predecessor[y].to + ':' + predecessor[y].offset +
28255
+ predecessor[y].offsetUnit;
27385
28256
  toPredecessor = toPredecessor + ',' + predecessor[y].type;
27386
28257
  }
27387
28258
  }
27388
28259
  }
27389
- if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) != "string") {
28260
+ if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) != 'string') {
27390
28261
  tempTaskId = parseInt((predecessor[y].to), 10);
27391
28262
  }
27392
- else if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) === "string") {
28263
+ else if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) === 'string') {
27393
28264
  tempTaskId = predecessor[y].to;
27394
28265
  }
27395
28266
  else {
@@ -27402,7 +28273,8 @@ class CriticalPath {
27402
28273
  fromPredecessor = predecessor[y].type;
27403
28274
  }
27404
28275
  else {
27405
- from = predecessor[y].from + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
28276
+ from = predecessor[y].from + ':' + predecessor[y].offset +
28277
+ predecessor[y].offsetUnit;
27406
28278
  fromPredecessor = predecessor[y].type;
27407
28279
  }
27408
28280
  }
@@ -27412,7 +28284,8 @@ class CriticalPath {
27412
28284
  fromPredecessor = fromPredecessor + ',' + predecessor[y].type;
27413
28285
  }
27414
28286
  else {
27415
- from = from + ',' + predecessor[y].from + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
28287
+ from = from + ',' + predecessor[y].from + ':' + predecessor[y].offset +
28288
+ predecessor[y].offsetUnit;
27416
28289
  fromPredecessor = fromPredecessor + ',' + predecessor[y].type;
27417
28290
  }
27418
28291
  }
@@ -27539,7 +28412,8 @@ class CriticalPath {
27539
28412
  }
27540
28413
  }
27541
28414
  // execute if the current calculated slack value is less than the previous slack value.
27542
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
28415
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
28416
+ collection[fromTaskIdIndex]['slack'] !== 0) {
27543
28417
  // execute if the offset value is not given.
27544
28418
  if (fromDateArray1.length <= 1) {
27545
28419
  if (collection[totaskId]['slack'] + dateDifference < 0) {
@@ -27589,7 +28463,8 @@ class CriticalPath {
27589
28463
  }
27590
28464
  }
27591
28465
  //It execute while already the slack value is set and it is higher than the datedifference.
27592
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
28466
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
28467
+ collection[fromTaskIdIndex]['slack'] !== 0) {
27593
28468
  if (fromDateArray1.length <= 1) {
27594
28469
  if (collection[totaskId]['slack'] + dateDifference < 0) {
27595
28470
  collection[fromTaskIdIndex]['slack'] = 0;
@@ -27617,7 +28492,8 @@ class CriticalPath {
27617
28492
  if (isNullOrUndefined(collection[fromTaskIdIndex]['slack'])) {
27618
28493
  collection[fromTaskIdIndex]['slack'] = dateDifference;
27619
28494
  }
27620
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
28495
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
28496
+ collection[fromTaskIdIndex]['slack'] !== 0) {
27621
28497
  collection[fromTaskIdIndex]['slack'] = dateDifference;
27622
28498
  }
27623
28499
  }
@@ -27628,7 +28504,8 @@ class CriticalPath {
27628
28504
  // calculate slack value for the task contains predecessor connection in "finish to finish".
27629
28505
  if (fromDataPredecessor[i] === 'FF') {
27630
28506
  // execute if the previous task is from finish to start or finish to finish state.
27631
- if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1 || collection[totaskId]['fs'] === -1) {
28507
+ if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1 ||
28508
+ collection[totaskId]['fs'] === -1) {
27632
28509
  if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1) {
27633
28510
  prevTaskEnddate = toIdFlatData.endDate;
27634
28511
  ffslack = collection[totaskId]['slack'];
@@ -27931,7 +28808,7 @@ class CriticalPath {
27931
28808
  }
27932
28809
  else {
27933
28810
  let currentRecords = this.parent.currentViewData.filter((data) => {
27934
- return (data.ganttProperties.taskId).toString() == criticalPathIds[i].toString();
28811
+ return (data.ganttProperties.taskId).toString() === criticalPathIds[i].toString();
27935
28812
  });
27936
28813
  for (let i = 0; i < currentRecords.length; i++) {
27937
28814
  if (currentRecords[i].ganttProperties.isCritical || currentRecords[i].ganttProperties.endDate >= this.maxEndDate) {
@@ -27945,13 +28822,13 @@ class CriticalPath {
27945
28822
  const columnFields = this.parent.taskFields;
27946
28823
  if (criticalData.parentItem) {
27947
28824
  const parentRecord = this.parent.currentViewData.filter((data) => {
27948
- return criticalData.parentItem.uniqueID == data.uniqueID;
28825
+ return criticalData.parentItem.uniqueID === data.uniqueID;
27949
28826
  });
27950
28827
  const parentIndex = this.parent.currentViewData.indexOf(parentRecord[0]);
27951
28828
  const parentElement = this.parent.getRowByIndex(parentIndex);
27952
28829
  let parentTaskbarElement = parentElement.querySelectorAll('.e-taskbar-main-container');
27953
28830
  for (let i = 0; i < parentTaskbarElement.length; i++) {
27954
- if (parentTaskbarElement[i].getAttribute('rowuniqueid') == criticalData['rowUniqueID']) {
28831
+ if (parentTaskbarElement[i].getAttribute('rowuniqueid') === criticalData['rowUniqueID']) {
27955
28832
  addClass(parentTaskbarElement[i].querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
27956
28833
  }
27957
28834
  }
@@ -28097,6 +28974,7 @@ class ContextMenu$2 {
28097
28974
  this.contextMenu = new ContextMenu$1({
28098
28975
  items: this.getMenuItems(),
28099
28976
  locale: this.parent.locale,
28977
+ enableRtl: this.parent.enableRtl,
28100
28978
  target: target,
28101
28979
  animationSettings: { effect: 'None' },
28102
28980
  select: this.contextMenuItemClick.bind(this),
@@ -28237,6 +29115,12 @@ class ContextMenu$2 {
28237
29115
  };
28238
29116
  // eslint-disable-next-line
28239
29117
  this.parent.trigger('actionBegin', eventArgs, (eventArgs) => {
29118
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29119
+ this.parent.showMaskRow();
29120
+ }
29121
+ else {
29122
+ this.parent.showSpinner();
29123
+ }
28240
29124
  this.parent.chartRowsModule.splitTask(this.rowData[taskSettings.id], currentClickedDate);
28241
29125
  });
28242
29126
  }
@@ -28257,6 +29141,12 @@ class ContextMenu$2 {
28257
29141
  target: this.targetElement
28258
29142
  };
28259
29143
  this.parent.trigger('actionBegin', eventArgs, (eventArgs) => {
29144
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29145
+ this.parent.showMaskRow();
29146
+ }
29147
+ else {
29148
+ this.parent.showSpinner();
29149
+ }
28260
29150
  if (eventArgs.cancel === false) {
28261
29151
  this.parent.chartRowsModule.mergeTask(this.rowData[taskSettings.id], segmentIndexes);
28262
29152
  }
@@ -28265,12 +29155,30 @@ class ContextMenu$2 {
28265
29155
  // eslint-disable-next-line
28266
29156
  getClickedDate(element) {
28267
29157
  // context menu click position
28268
- const ganttElementPosition = this.parent.getOffsetRect(this.parent.element);
29158
+ let ganttElementPositionLeft;
28269
29159
  // task left position
28270
- const pageLeft = ganttElementPosition.left + this.parent.ganttChartModule.chartElement.offsetLeft +
28271
- this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft;
28272
- // difference from task start date to current click position.
28273
- const currentTaskDifference = this.clickedPosition - pageLeft;
29160
+ if (this.parent.enableRtl) {
29161
+ const box = this.parent.element.getBoundingClientRect();
29162
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft ||
29163
+ document.body.scrollLeft;
29164
+ const clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
29165
+ ganttElementPositionLeft = box.left + scrollLeft - clientLeft;
29166
+ }
29167
+ else {
29168
+ ganttElementPositionLeft = this.parent.getOffsetRect(this.parent.element).left;
29169
+ }
29170
+ let pageLeft;
29171
+ let currentTaskDifference;
29172
+ if (this.parent.enableRtl) {
29173
+ pageLeft = Math.abs(ganttElementPositionLeft + this.parent.ganttChartModule.chartElement.offsetWidth -
29174
+ this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft);
29175
+ currentTaskDifference = Math.abs(this.clickedPosition - pageLeft);
29176
+ }
29177
+ else {
29178
+ pageLeft = ganttElementPositionLeft + this.parent.ganttChartModule.chartElement.offsetLeft +
29179
+ this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft;
29180
+ currentTaskDifference = this.clickedPosition - pageLeft;
29181
+ }
28274
29182
  let splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.perDayWidth);
28275
29183
  const startDate = this.rowData.ganttProperties.startDate;
28276
29184
  if (!isNullOrUndefined(this.parent.timelineSettings.bottomTier) && this.parent.timelineSettings.bottomTier.unit === 'Hour') {
@@ -28780,6 +29688,12 @@ class ExcelExport$1 {
28780
29688
  bindEvents() {
28781
29689
  this.parent.treeGrid.beforeExcelExport = (args) => {
28782
29690
  this.parent.trigger('beforeExcelExport', args);
29691
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29692
+ this.parent.showMaskRow();
29693
+ }
29694
+ else {
29695
+ this.parent.showSpinner();
29696
+ }
28783
29697
  };
28784
29698
  this.parent.treeGrid.excelQueryCellInfo = (args) => {
28785
29699
  this.parent.trigger('excelQueryCellInfo', args);
@@ -28789,6 +29703,12 @@ class ExcelExport$1 {
28789
29703
  };
28790
29704
  this.parent.treeGrid.excelExportComplete = (args) => {
28791
29705
  this.parent.trigger('excelExportComplete', args);
29706
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29707
+ this.parent.hideMaskRow();
29708
+ }
29709
+ else {
29710
+ this.parent.hideSpinner();
29711
+ }
28792
29712
  };
28793
29713
  }
28794
29714
  }
@@ -28971,6 +29891,12 @@ class RowDD$1 {
28971
29891
  if (!args.cancel) {
28972
29892
  args.requestType = 'beforeDrop';
28973
29893
  this.parent.trigger('actionBegin', args);
29894
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29895
+ this.parent.showMaskRow();
29896
+ }
29897
+ else {
29898
+ this.parent.showSpinner();
29899
+ }
28974
29900
  if (!args.cancel) {
28975
29901
  this.dropRows(args, true); // method to update the data collections based on drop action
28976
29902
  args.cancel = true;
@@ -29068,15 +29994,15 @@ class RowDD$1 {
29068
29994
  }
29069
29995
  }
29070
29996
  if (!this.parent.enableVirtualization) {
29071
- let data = gObj.flatData;
29997
+ const data = gObj.flatData;
29072
29998
  let startIndex;
29073
29999
  let endIndex;
29074
- let ganttData = this.parent.dataSource;
29075
- let uniqueTaskID = this.parent.taskFields.id;
30000
+ const ganttData = this.parent.dataSource;
30001
+ const uniqueTaskID = this.parent.taskFields.id;
29076
30002
  if (draggedRecord.index < droppedRecord.index) {
29077
30003
  startIndex = draggedRecord.index;
29078
30004
  for (let i = 0; i < ganttData.length; i++) {
29079
- let currentData = this.parent.currentViewData.filter(function (e) {
30005
+ const currentData = this.parent.currentViewData.filter(function (e) {
29080
30006
  return e[uniqueTaskID] === ganttData[i][uniqueTaskID];
29081
30007
  })[0];
29082
30008
  if (currentData && currentData.index > droppedRecord.index) {
@@ -29088,7 +30014,7 @@ class RowDD$1 {
29088
30014
  else {
29089
30015
  startIndex = droppedRecord.index;
29090
30016
  for (let i = 0; i < ganttData.length; i++) {
29091
- let currentData = this.parent.currentViewData.filter(function (e) {
30017
+ const currentData = this.parent.currentViewData.filter(function (e) {
29092
30018
  return e[uniqueTaskID] === ganttData[i][uniqueTaskID];
29093
30019
  })[0];
29094
30020
  if (currentData && currentData.index > draggedRecord.index) {
@@ -29101,7 +30027,7 @@ class RowDD$1 {
29101
30027
  if (!isNullOrUndefined(data[i])) {
29102
30028
  data[i].index = i;
29103
30029
  if (!isNullOrUndefined(data[i].parentItem)) {
29104
- let updatedParent = data.filter((e) => {
30030
+ const updatedParent = data.filter((e) => {
29105
30031
  return e.uniqueID === data[i].parentUniqueID;
29106
30032
  })[0];
29107
30033
  data[i].parentItem.index = updatedParent.index;
@@ -29179,7 +30105,7 @@ class RowDD$1 {
29179
30105
  }
29180
30106
  let validateRecords;
29181
30107
  if (toParent.uniqueID === draggedParent.uniqueID || (draggedParent.parentItem &&
29182
- toParent.uniqueID == this.parent.flatData[this.parent.ids.indexOf(draggedParent.parentItem.taskId)].uniqueID)) {
30108
+ toParent.uniqueID === this.parent.flatData[this.parent.ids.indexOf(draggedParent.parentItem.taskId)].uniqueID)) {
29183
30109
  validateRecords = this.parent.currentViewData.filter((data) => {
29184
30110
  if ((data.ganttProperties.predecessor && data.ganttProperties.predecessor.length > 0)) {
29185
30111
  for (let i = 0; i < data.ganttProperties.predecessor.length; i++) {
@@ -29597,7 +30523,7 @@ class RowDD$1 {
29597
30523
  }
29598
30524
  let idx;
29599
30525
  const ganttData = dataSource.length > 0 && this.parent.viewType !== 'ResourceView' ?
29600
- dataSource : this.parent.flatData;
30526
+ dataSource : this.parent.updatedRecords;
29601
30527
  for (let i = 0; i < ganttData.length; i++) {
29602
30528
  if (this.parent.viewType === 'ResourceView') {
29603
30529
  if (ganttData[i].ganttProperties.rowUniqueID === deletedRow.ganttProperties.rowUniqueID) {
@@ -32946,217 +33872,215 @@ class PdfGanttPredecessor {
32946
33872
  let childPageData;
32947
33873
  let parentY = 0;
32948
33874
  let childY = 0;
32949
- if (childTask && parentTask) {
32950
- switch (this.type) {
32951
- case 'FS':
32952
- if (childTask.startPage > -1 && parentTask.endPage > -1) {
32953
- startPage = pages[parentTask.endPage];
32954
- endPage = pages[childTask.startPage];
32955
- parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
32956
- childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
32957
- if (this.parentIndex < this.childIndex) {
32958
- if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
32959
- predecessorType = 'FSType1';
32960
- }
32961
- else {
32962
- predecessorType = 'FSType2';
32963
- }
33875
+ switch (this.type) {
33876
+ case 'FS':
33877
+ if (childTask.startPage > -1 && parentTask.endPage > -1) {
33878
+ startPage = pages[parentTask.endPage];
33879
+ endPage = pages[childTask.startPage];
33880
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33881
+ childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33882
+ if (this.parentIndex < this.childIndex) {
33883
+ if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
33884
+ predecessorType = 'FSType1';
32964
33885
  }
32965
33886
  else {
32966
- if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
32967
- predecessorType = 'FSType3';
32968
- }
32969
- else {
32970
- predecessorType = 'FSType4';
32971
- }
33887
+ predecessorType = 'FSType2';
32972
33888
  }
32973
33889
  }
32974
33890
  else {
32975
- return;
33891
+ if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
33892
+ predecessorType = 'FSType3';
33893
+ }
33894
+ else {
33895
+ predecessorType = 'FSType4';
33896
+ }
32976
33897
  }
32977
- break;
32978
- case 'SF':
32979
- if (childTask.endPage > -1 && parentTask.startPage > -1) {
32980
- startPage = pages[parentTask.startPage];
32981
- endPage = pages[childTask.endPage];
32982
- parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
32983
- childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
32984
- if (this.parentIndex < this.childIndex) {
32985
- if (this.parentLeft > this.childLeft + this.childWidth) {
32986
- predecessorType = 'SFType1';
32987
- }
32988
- else {
32989
- predecessorType = 'SFType2';
32990
- }
33898
+ }
33899
+ else {
33900
+ return;
33901
+ }
33902
+ break;
33903
+ case 'SF':
33904
+ if (childTask.endPage > -1 && parentTask.startPage > -1) {
33905
+ startPage = pages[parentTask.startPage];
33906
+ endPage = pages[childTask.endPage];
33907
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33908
+ childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33909
+ if (this.parentIndex < this.childIndex) {
33910
+ if (this.parentLeft > this.childLeft + this.childWidth) {
33911
+ predecessorType = 'SFType1';
32991
33912
  }
32992
33913
  else {
32993
- if (this.parentLeft > this.childLeft + this.childWidth) {
32994
- predecessorType = 'SFType3';
32995
- }
32996
- else {
32997
- predecessorType = 'SFType4';
32998
- }
33914
+ predecessorType = 'SFType2';
32999
33915
  }
33000
33916
  }
33001
33917
  else {
33002
- return;
33918
+ if (this.parentLeft > this.childLeft + this.childWidth) {
33919
+ predecessorType = 'SFType3';
33920
+ }
33921
+ else {
33922
+ predecessorType = 'SFType4';
33923
+ }
33003
33924
  }
33004
- break;
33005
- case 'FF':
33006
- if (childTask.endPage > -1 && parentTask.endPage > -1) {
33007
- startPage = pages[parentTask.endPage];
33008
- endPage = pages[childTask.endPage];
33009
- parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33010
- childPageData = pdfGantt.pdfPageDetail[childTask.endPage - pdfGantt.chartPageIndex];
33011
- if (this.parentIndex < this.childIndex) {
33012
- if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
33013
- predecessorType = 'FFType1';
33014
- }
33015
- else {
33016
- predecessorType = 'FFType2';
33017
- }
33925
+ }
33926
+ else {
33927
+ return;
33928
+ }
33929
+ break;
33930
+ case 'FF':
33931
+ if (childTask.endPage > -1 && parentTask.endPage > -1) {
33932
+ startPage = pages[parentTask.endPage];
33933
+ endPage = pages[childTask.endPage];
33934
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33935
+ childPageData = pdfGantt.pdfPageDetail[childTask.endPage - pdfGantt.chartPageIndex];
33936
+ if (this.parentIndex < this.childIndex) {
33937
+ if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
33938
+ predecessorType = 'FFType1';
33018
33939
  }
33019
33940
  else {
33020
- if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
33021
- predecessorType = 'FFType3';
33022
- }
33023
- else {
33024
- predecessorType = 'FFType4';
33025
- }
33941
+ predecessorType = 'FFType2';
33026
33942
  }
33027
33943
  }
33028
33944
  else {
33029
- return;
33945
+ if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
33946
+ predecessorType = 'FFType3';
33947
+ }
33948
+ else {
33949
+ predecessorType = 'FFType4';
33950
+ }
33030
33951
  }
33031
- break;
33032
- case 'SS':
33033
- if (childTask.startPage > -1 && parentTask.startPage > -1) {
33034
- startPage = pages[parentTask.startPage];
33035
- endPage = pages[childTask.startPage];
33036
- parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
33037
- childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33038
- if (this.parentIndex < this.childIndex) {
33039
- if (this.parentLeft >= this.childLeft) {
33040
- predecessorType = 'SSType1';
33041
- }
33042
- else {
33043
- predecessorType = 'SSType2';
33044
- }
33952
+ }
33953
+ else {
33954
+ return;
33955
+ }
33956
+ break;
33957
+ case 'SS':
33958
+ if (childTask.startPage > -1 && parentTask.startPage > -1) {
33959
+ startPage = pages[parentTask.startPage];
33960
+ endPage = pages[childTask.startPage];
33961
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
33962
+ childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33963
+ if (this.parentIndex < this.childIndex) {
33964
+ if (this.parentLeft >= this.childLeft) {
33965
+ predecessorType = 'SSType1';
33045
33966
  }
33046
33967
  else {
33047
- if (this.parentLeft >= this.childLeft) {
33048
- predecessorType = 'SSType3';
33049
- }
33050
- else {
33051
- predecessorType = 'SSType4';
33052
- }
33968
+ predecessorType = 'SSType2';
33053
33969
  }
33054
33970
  }
33055
33971
  else {
33056
- return;
33972
+ if (this.parentLeft >= this.childLeft) {
33973
+ predecessorType = 'SSType3';
33974
+ }
33975
+ else {
33976
+ predecessorType = 'SSType4';
33977
+ }
33057
33978
  }
33058
- break;
33059
- }
33060
- let midPoint = Math.round((this.parent.rowHeight - 1) / 2.0);
33061
- midPoint = pixelToPoint(midPoint);
33062
- /* eslint-disable-next-line */
33063
- let point1, point2, point3, point4, point5, point6;
33064
- point1 = point2 = point3 = point4 = point5 = point6 = new PointF();
33065
- const parentTaskpoint = Object.assign({}, parentTask.taskStartPoint);
33066
- const childTaskpoint = Object.assign({}, childTask.taskStartPoint);
33067
- parentY = parentTaskpoint.y + parentPageData.startPoint.y;
33068
- childY = childTaskpoint.y + childPageData.startPoint.y;
33069
- const ffpoint1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth), parentY + midPoint);
33070
- const sspoint1 = new PointF(pixelToPoint(this.parentLeft) - 1, parentY + midPoint);
33071
- const ffpoint3 = new PointF(pixelToPoint(this.childLeft - 20), childY + midPoint);
33072
- const ffpoint4 = new PointF(pixelToPoint(this.childLeft - 6 - this.lineWidth) - 1, childY + midPoint);
33073
- const sspoint4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 6 + this.lineWidth) + 1, childY + midPoint);
33074
- switch (predecessorType) {
33075
- case 'FSType1':
33076
- case 'FSType3':
33077
- point1 = ffpoint1;
33078
- point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
33079
- point3 = ffpoint3;
33080
- point4 = ffpoint4;
33081
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33082
- break;
33083
- case 'FSType2':
33084
- point1 = ffpoint1;
33085
- point2 = new PointF(point1.x + 10, parentY + midPoint);
33086
- point3 = new PointF(point1.x + 10, childY + 2);
33087
- point4 = new PointF(pixelToPoint(this.childLeft - 20), childY + 2);
33088
- point5 = ffpoint3;
33089
- point6 = ffpoint4;
33090
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33091
- break;
33092
- case 'FSType4':
33093
- point1 = ffpoint1;
33094
- point2 = new PointF(point1.x + 10, parentY + midPoint);
33095
- point3 = new PointF(point1.x + 10, parentY + 2);
33096
- point4 = new PointF(pixelToPoint(this.childLeft - 20), parentY + 2);
33097
- point5 = ffpoint3;
33098
- point6 = ffpoint4;
33099
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33100
- break;
33101
- case 'FFType1':
33102
- case 'FFType3':
33103
- point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
33104
- point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
33105
- point3 = new PointF(point2.x, childY + midPoint);
33106
- point4 = sspoint4;
33107
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33108
- break;
33109
- case 'FFType2':
33110
- case 'FFType4':
33111
- point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
33112
- point2 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth + 20), parentY + midPoint);
33113
- point3 = new PointF(point2.x, childY + midPoint);
33114
- point4 = sspoint4;
33115
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33116
- break;
33117
- case 'SSType1':
33118
- case 'SSType3':
33119
- point1 = sspoint1;
33120
- point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
33121
- point3 = new PointF(point2.x, childY + midPoint);
33122
- point4 = ffpoint4;
33123
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33124
- break;
33125
- case 'SSType2':
33126
- case 'SSType4':
33127
- point1 = sspoint1;
33128
- point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
33129
- point3 = new PointF(point2.x, childY + midPoint);
33130
- point4 = ffpoint4;
33131
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33132
- break;
33133
- case 'SFType1':
33134
- case 'SFType3':
33135
- point1 = sspoint1;
33136
- point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
33137
- point3 = new PointF(point2.x, childY + midPoint);
33138
- point4 = sspoint4;
33139
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33140
- break;
33141
- case 'SFType2':
33142
- point1 = sspoint1;
33143
- point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
33144
- point3 = new PointF(point2.x, childY + 2);
33145
- point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), childY + 2);
33146
- point5 = new PointF(point4.x, childY + midPoint);
33147
- point6 = sspoint4;
33148
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33149
- break;
33150
- case 'SFType4':
33151
- point1 = sspoint1;
33152
- point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
33153
- point3 = new PointF(point2.x, parentY + 2);
33154
- point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + 2);
33155
- point5 = new PointF(point4.x, childY + midPoint);
33156
- point6 = sspoint4;
33157
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33158
- break;
33159
- }
33979
+ }
33980
+ else {
33981
+ return;
33982
+ }
33983
+ break;
33984
+ }
33985
+ let midPoint = Math.round((this.parent.rowHeight - 1) / 2.0);
33986
+ midPoint = pixelToPoint(midPoint);
33987
+ /* eslint-disable-next-line */
33988
+ let point1, point2, point3, point4, point5, point6;
33989
+ point1 = point2 = point3 = point4 = point5 = point6 = new PointF();
33990
+ const parentTaskpoint = Object.assign({}, parentTask.taskStartPoint);
33991
+ const childTaskpoint = Object.assign({}, childTask.taskStartPoint);
33992
+ parentY = parentTaskpoint.y + parentPageData.startPoint.y;
33993
+ childY = childTaskpoint.y + childPageData.startPoint.y;
33994
+ const ffpoint1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth), parentY + midPoint);
33995
+ const sspoint1 = new PointF(pixelToPoint(this.parentLeft) - 1, parentY + midPoint);
33996
+ const ffpoint3 = new PointF(pixelToPoint(this.childLeft - 20), childY + midPoint);
33997
+ const ffpoint4 = new PointF(pixelToPoint(this.childLeft - 6 - this.lineWidth) - 1, childY + midPoint);
33998
+ const sspoint4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 6 + this.lineWidth) + 1, childY + midPoint);
33999
+ switch (predecessorType) {
34000
+ case 'FSType1':
34001
+ case 'FSType3':
34002
+ point1 = ffpoint1;
34003
+ point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
34004
+ point3 = ffpoint3;
34005
+ point4 = ffpoint4;
34006
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34007
+ break;
34008
+ case 'FSType2':
34009
+ point1 = ffpoint1;
34010
+ point2 = new PointF(point1.x + 10, parentY + midPoint);
34011
+ point3 = new PointF(point1.x + 10, childY + 2);
34012
+ point4 = new PointF(pixelToPoint(this.childLeft - 20), childY + 2);
34013
+ point5 = ffpoint3;
34014
+ point6 = ffpoint4;
34015
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34016
+ break;
34017
+ case 'FSType4':
34018
+ point1 = ffpoint1;
34019
+ point2 = new PointF(point1.x + 10, parentY + midPoint);
34020
+ point3 = new PointF(point1.x + 10, parentY + 2);
34021
+ point4 = new PointF(pixelToPoint(this.childLeft - 20), parentY + 2);
34022
+ point5 = ffpoint3;
34023
+ point6 = ffpoint4;
34024
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34025
+ break;
34026
+ case 'FFType1':
34027
+ case 'FFType3':
34028
+ point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
34029
+ point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
34030
+ point3 = new PointF(point2.x, childY + midPoint);
34031
+ point4 = sspoint4;
34032
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34033
+ break;
34034
+ case 'FFType2':
34035
+ case 'FFType4':
34036
+ point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
34037
+ point2 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth + 20), parentY + midPoint);
34038
+ point3 = new PointF(point2.x, childY + midPoint);
34039
+ point4 = sspoint4;
34040
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34041
+ break;
34042
+ case 'SSType1':
34043
+ case 'SSType3':
34044
+ point1 = sspoint1;
34045
+ point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
34046
+ point3 = new PointF(point2.x, childY + midPoint);
34047
+ point4 = ffpoint4;
34048
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34049
+ break;
34050
+ case 'SSType2':
34051
+ case 'SSType4':
34052
+ point1 = sspoint1;
34053
+ point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
34054
+ point3 = new PointF(point2.x, childY + midPoint);
34055
+ point4 = ffpoint4;
34056
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34057
+ break;
34058
+ case 'SFType1':
34059
+ case 'SFType3':
34060
+ point1 = sspoint1;
34061
+ point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
34062
+ point3 = new PointF(point2.x, childY + midPoint);
34063
+ point4 = sspoint4;
34064
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34065
+ break;
34066
+ case 'SFType2':
34067
+ point1 = sspoint1;
34068
+ point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
34069
+ point3 = new PointF(point2.x, childY + 2);
34070
+ point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), childY + 2);
34071
+ point5 = new PointF(point4.x, childY + midPoint);
34072
+ point6 = sspoint4;
34073
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34074
+ break;
34075
+ case 'SFType4':
34076
+ point1 = sspoint1;
34077
+ point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
34078
+ point3 = new PointF(point2.x, parentY + 2);
34079
+ point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + 2);
34080
+ point5 = new PointF(point4.x, childY + midPoint);
34081
+ point6 = sspoint4;
34082
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34083
+ break;
33160
34084
  }
33161
34085
  }
33162
34086
  /**
@@ -33639,6 +34563,12 @@ class PdfExport {
33639
34563
  cancel: false
33640
34564
  };
33641
34565
  this.parent.trigger('beforePdfExport', args);
34566
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
34567
+ this.parent.showMaskRow();
34568
+ }
34569
+ else {
34570
+ this.parent.showSpinner();
34571
+ }
33642
34572
  if (getValue('cancel', args)) {
33643
34573
  /* eslint-disable-next-line */
33644
34574
  return new Promise((resolve, reject) => {
@@ -33670,6 +34600,12 @@ class PdfExport {
33670
34600
  }
33671
34601
  this.processExport(data, pdfExportProperties, isMultipleExport).then(() => {
33672
34602
  this.parent.trigger('pdfExportComplete', {});
34603
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
34604
+ this.parent.hideMaskRow();
34605
+ }
34606
+ else {
34607
+ this.parent.hideSpinner();
34608
+ }
33673
34609
  resolve(this.pdfDocument);
33674
34610
  });
33675
34611
  }
@@ -33857,5 +34793,5 @@ class VirtualScroll$1 {
33857
34793
  * Gantt index file
33858
34794
  */
33859
34795
 
33860
- export { Gantt, PdfHorizontalOverflowType, parentsUntil$1 as parentsUntil, isScheduledTask, isCountRequired, getSwapKey, isRemoteData, getTaskData, updateDates, formatString, getIndex, pixelToPoint, pointToPixel, getUid$1 as getUid, load, rowDataBound, queryCellInfo, toolbarClick, keyPressed, Edit$2 as Edit, Reorder$1 as Reorder, Resize$1 as Resize, Filter$1 as Filter, Sort$1 as Sort, Dependency, Selection$1 as Selection, Toolbar$3 as Toolbar, DayMarkers, CriticalPath, ContextMenu$2 as ContextMenu, ExcelExport$1 as ExcelExport, ColumnMenu$1 as ColumnMenu, RowDD$1 as RowDD, PdfExport, VirtualScroll$1 as VirtualScroll, Column, DayWorkingTime, AddDialogFieldSettings, EditDialogFieldSettings, EditSettings, EventMarker, FilterSettings, SearchSettings, Holiday, LabelSettings, SelectionSettings, SplitterSettings, TaskFields, TimelineTierSettings, TimelineSettings, TooltipSettings, SortDescriptor, SortSettings, ResourceFields };
34796
+ export { Gantt, PdfHorizontalOverflowType, parentsUntil$1 as parentsUntil, isScheduledTask, isCountRequired, getSwapKey, isRemoteData, getTaskData, updateDates, formatString, getIndex, pixelToPoint, pointToPixel, getUid$1 as getUid, load, rowDataBound, queryCellInfo, toolbarClick, keyPressed, Edit$2 as Edit, Reorder$1 as Reorder, Resize$1 as Resize, Filter$1 as Filter, Sort$1 as Sort, Dependency, Selection$1 as Selection, Toolbar$3 as Toolbar, DayMarkers, CriticalPath, ContextMenu$2 as ContextMenu, ExcelExport$1 as ExcelExport, ColumnMenu$1 as ColumnMenu, RowDD$1 as RowDD, PdfExport, VirtualScroll$1 as VirtualScroll, Column, DayWorkingTime, AddDialogFieldSettings, EditDialogFieldSettings, EditSettings, EventMarker, FilterSettings, SearchSettings, Holiday, LabelSettings, SelectionSettings, SplitterSettings, TaskFields, TimelineTierSettings, TimelineSettings, TooltipSettings, SortDescriptor, SortSettings, ResourceFields, LoadingIndicator };
33861
34797
  //# sourceMappingURL=ej2-gantt.es2015.js.map