@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
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 20.3.61
3
+ * version : 20.4.38
4
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-gantt@*",
3
- "_id": "@syncfusion/ej2-gantt@20.3.60",
3
+ "_id": "@syncfusion/ej2-gantt@20.15.5",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-r4ZVyKzjd8LePO6v6CESdNoXi8+jRiPhnRaZFr0jaIo6ZJhRxae8Hot3n16/s3vUZ8QFEsz0NWFuO0gD6f56gQ==",
5
+ "_integrity": "sha512-8nxolLMuBdFBnZtSPWBRdiHp0cZzFYElVPtPP/YgzzEs+T4RA0CtROz8JIWe5TQDAMoFtHCwWcOcT7GgG0IwDA==",
6
6
  "_location": "/@syncfusion/ej2-gantt",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,8 +23,8 @@
23
23
  "/@syncfusion/ej2-react-gantt",
24
24
  "/@syncfusion/ej2-vue-gantt"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-gantt/-/ej2-gantt-20.3.60.tgz",
27
- "_shasum": "8aac2f8a497d74ae0b6757829a0920d91655163b",
26
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-gantt/-/ej2-gantt-20.15.5.tgz",
27
+ "_shasum": "227225e240e8cf836cb9fac39c980c2a145f85dd",
28
28
  "_spec": "@syncfusion/ej2-gantt@*",
29
29
  "_where": "/jenkins/workspace/ease-automation_release_19.1.0.1/packages/included",
30
30
  "author": {
@@ -35,19 +35,20 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~20.3.56",
39
- "@syncfusion/ej2-buttons": "~20.3.58",
40
- "@syncfusion/ej2-calendars": "~20.3.59",
41
- "@syncfusion/ej2-data": "~20.3.60",
42
- "@syncfusion/ej2-dropdowns": "~20.3.60",
43
- "@syncfusion/ej2-grids": "~20.3.61",
44
- "@syncfusion/ej2-inputs": "~20.3.57",
45
- "@syncfusion/ej2-layouts": "~20.3.58",
46
- "@syncfusion/ej2-lists": "~20.3.56",
47
- "@syncfusion/ej2-navigations": "~20.3.60",
48
- "@syncfusion/ej2-popups": "~20.3.60",
49
- "@syncfusion/ej2-richtexteditor": "~20.3.61",
50
- "@syncfusion/ej2-treegrid": "~20.3.61"
38
+ "@syncfusion/ej2-base": "~20.4.38",
39
+ "@syncfusion/ej2-buttons": "~20.4.38",
40
+ "@syncfusion/ej2-calendars": "~20.4.38",
41
+ "@syncfusion/ej2-data": "~20.4.38",
42
+ "@syncfusion/ej2-dropdowns": "~20.4.38",
43
+ "@syncfusion/ej2-grids": "~20.4.38",
44
+ "@syncfusion/ej2-inputs": "~20.4.38",
45
+ "@syncfusion/ej2-layouts": "~20.4.38",
46
+ "@syncfusion/ej2-lists": "~20.4.38",
47
+ "@syncfusion/ej2-navigations": "~20.4.38",
48
+ "@syncfusion/ej2-notifications": "~20.4.38",
49
+ "@syncfusion/ej2-popups": "~20.4.38",
50
+ "@syncfusion/ej2-richtexteditor": "~20.4.38",
51
+ "@syncfusion/ej2-treegrid": "~20.4.38"
51
52
  },
52
53
  "deprecated": false,
53
54
  "description": "Essential JS 2 Gantt Component",
@@ -75,6 +76,6 @@
75
76
  "url": "git+https://github.com/syncfusion/ej2-gantt.git"
76
77
  },
77
78
  "typings": "index.d.ts",
78
- "version": "20.3.61",
79
+ "version": "20.4.38",
79
80
  "sideEffects": false
80
81
  }
@@ -7,6 +7,7 @@ import { Gantt } from '../base/gantt';
7
7
  export declare class ChartScroll {
8
8
  private parent;
9
9
  private element;
10
+ private isScrolling;
10
11
  private isFromTreeGrid;
11
12
  previousScroll: {
12
13
  top: number;
@@ -44,6 +45,9 @@ export declare class ChartScroll {
44
45
  * @private
45
46
  */
46
47
  updateTopPosition(): void;
48
+ private removeShimmer;
49
+ private updateShimmer;
50
+ private updateSpinner;
47
51
  /**
48
52
  * Scroll event handler
49
53
  *
@@ -80,7 +84,7 @@ export declare class ChartScroll {
80
84
  * @param {number} scrollLeft - To set scroll left for scroll container
81
85
  * @returns {void} .
82
86
  */
83
- setScrollLeft(scrollLeft: number): void;
87
+ setScrollLeft(scrollLeft: number, leftSign?: number): void;
84
88
  /**
85
89
  * Destroy scroll related elements and unbind the events
86
90
  *
@@ -25,6 +25,8 @@ var ChartScroll = /** @class */ (function () {
25
25
  ChartScroll.prototype.addEventListeners = function () {
26
26
  this.parent.on('grid-scroll', this.gridScrollHandler, this);
27
27
  EventHandler.add(this.element, 'scroll', this.onScroll, this);
28
+ this.parent.treeGrid.grid.on('showGanttShimmer', this.updateShimmer, this);
29
+ this.parent.treeGrid.grid.on('removeGanttShimmer', this.removeShimmer, this);
28
30
  };
29
31
  /**
30
32
  * Unbind events
@@ -34,6 +36,8 @@ var ChartScroll = /** @class */ (function () {
34
36
  ChartScroll.prototype.removeEventListeners = function () {
35
37
  EventHandler.remove(this.element, 'scroll', this.onScroll);
36
38
  this.parent.off('grid-scroll', this.gridScrollHandler);
39
+ this.parent.treeGrid.grid.off('showGanttShimmer', this.updateShimmer);
40
+ this.parent.treeGrid.grid.off('removeGanttShimmer', this.removeShimmer);
37
41
  };
38
42
  /**
39
43
  *
@@ -79,6 +83,27 @@ var ChartScroll = /** @class */ (function () {
79
83
  this.parent.chartVerticalLineContainer.style.top = formatUnit(scrollTop);
80
84
  }
81
85
  };
86
+ ChartScroll.prototype.removeShimmer = function () {
87
+ var parent = this.parent;
88
+ setTimeout(function () {
89
+ parent.hideMaskRow();
90
+ }, 0);
91
+ };
92
+ ;
93
+ ChartScroll.prototype.updateShimmer = function () {
94
+ var parent = this.parent;
95
+ setTimeout(function () {
96
+ parent.showMaskRow();
97
+ }, 0);
98
+ };
99
+ ChartScroll.prototype.updateSpinner = function () {
100
+ var parent = this.parent;
101
+ this.parent.showSpinner();
102
+ window.clearTimeout(this.isScrolling);
103
+ this.isScrolling = setTimeout(function () {
104
+ parent.hideSpinner();
105
+ }, 200);
106
+ };
82
107
  /**
83
108
  * Scroll event handler
84
109
  *
@@ -104,6 +129,16 @@ var ChartScroll = /** @class */ (function () {
104
129
  scrollArgs.scrollDirection = 'Horizontal';
105
130
  scrollArgs.action = 'HorizontalScroll';
106
131
  }
132
+ if ((scrollArgs.scrollDirection != 'Horizontal' && !isNullOrUndefined(scrollArgs.scrollDirection)) && this.parent.enableVirtualization === true && (this.parent.isToolBarClick
133
+ || isNullOrUndefined(this.parent.isToolBarClick))) {
134
+ this.parent.isVirtualScroll = true;
135
+ if (this.parent.showIndicator || isNullOrUndefined(this.parent.showIndicator)) {
136
+ if (!this.parent.enableVirtualMaskRow && this.parent.enableVirtualization && this.parent.loadingIndicator.indicatorType === "Spinner") {
137
+ this.updateSpinner();
138
+ }
139
+ }
140
+ }
141
+ this.parent.isToolBarClick = true;
107
142
  scrollArgs.requestType = 'scroll';
108
143
  this.parent.trigger('actionComplete', scrollArgs);
109
144
  };
@@ -144,7 +179,10 @@ var ChartScroll = /** @class */ (function () {
144
179
  * @param {number} scrollLeft - To set scroll left for scroll container
145
180
  * @returns {void} .
146
181
  */
147
- ChartScroll.prototype.setScrollLeft = function (scrollLeft) {
182
+ ChartScroll.prototype.setScrollLeft = function (scrollLeft, leftSign) {
183
+ if (leftSign) {
184
+ scrollLeft = leftSign == -1 && this.parent.enableRtl ? -scrollLeft : scrollLeft;
185
+ }
148
186
  this.element.scrollLeft = scrollLeft;
149
187
  this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;
150
188
  this.previousScroll.left = this.element.scrollLeft;
@@ -547,6 +547,7 @@ var ConnectorLineEdit = /** @class */ (function () {
547
547
  var validationDialog = new Dialog({
548
548
  header: 'Validate Editing',
549
549
  isModal: true,
550
+ enableRtl: this.parent.enableRtl,
550
551
  visible: false,
551
552
  width: '50%',
552
553
  showCloseIcon: true,
@@ -918,6 +919,7 @@ var ConnectorLineEdit = /** @class */ (function () {
918
919
  this.confirmPredecessorDialog = new Dialog({
919
920
  width: '320px',
920
921
  isModal: true,
922
+ enableRtl: this.parent.enableRtl,
921
923
  content: this.parent.localeObj.getConstant('confirmPredecessorDelete'),
922
924
  buttons: [
923
925
  {
@@ -68,6 +68,7 @@ var ContextMenu = /** @class */ (function () {
68
68
  this.contextMenu = new Menu({
69
69
  items: this.getMenuItems(),
70
70
  locale: this.parent.locale,
71
+ enableRtl: this.parent.enableRtl,
71
72
  target: target,
72
73
  animationSettings: { effect: 'None' },
73
74
  select: this.contextMenuItemClick.bind(this),
@@ -209,6 +210,12 @@ var ContextMenu = /** @class */ (function () {
209
210
  };
210
211
  // eslint-disable-next-line
211
212
  this.parent.trigger('actionBegin', eventArgs, function (eventArgs) {
213
+ if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === "Shimmer") {
214
+ _this.parent.showMaskRow();
215
+ }
216
+ else {
217
+ _this.parent.showSpinner();
218
+ }
212
219
  _this.parent.chartRowsModule.splitTask(_this.rowData[taskSettings.id], currentClickedDate);
213
220
  });
214
221
  };
@@ -230,6 +237,12 @@ var ContextMenu = /** @class */ (function () {
230
237
  target: this.targetElement
231
238
  };
232
239
  this.parent.trigger('actionBegin', eventArgs, function (eventArgs) {
240
+ if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === "Shimmer") {
241
+ _this.parent.showMaskRow();
242
+ }
243
+ else {
244
+ _this.parent.showSpinner();
245
+ }
233
246
  if (eventArgs.cancel === false) {
234
247
  _this.parent.chartRowsModule.mergeTask(_this.rowData[taskSettings.id], segmentIndexes);
235
248
  }
@@ -238,12 +251,30 @@ var ContextMenu = /** @class */ (function () {
238
251
  // eslint-disable-next-line
239
252
  ContextMenu.prototype.getClickedDate = function (element) {
240
253
  // context menu click position
241
- var ganttElementPosition = this.parent.getOffsetRect(this.parent.element);
254
+ var ganttElementPositionLeft;
242
255
  // task left position
243
- var pageLeft = ganttElementPosition.left + this.parent.ganttChartModule.chartElement.offsetLeft +
244
- this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft;
245
- // difference from task start date to current click position.
246
- var currentTaskDifference = this.clickedPosition - pageLeft;
256
+ if (this.parent.enableRtl) {
257
+ var box = this.parent.element.getBoundingClientRect();
258
+ var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft ||
259
+ document.body.scrollLeft;
260
+ var clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
261
+ ganttElementPositionLeft = box.left + scrollLeft - clientLeft;
262
+ }
263
+ else {
264
+ ganttElementPositionLeft = this.parent.getOffsetRect(this.parent.element).left;
265
+ }
266
+ var pageLeft;
267
+ var currentTaskDifference;
268
+ if (this.parent.enableRtl) {
269
+ pageLeft = Math.abs(ganttElementPositionLeft + this.parent.ganttChartModule.chartElement.offsetWidth -
270
+ this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft);
271
+ currentTaskDifference = Math.abs(this.clickedPosition - pageLeft);
272
+ }
273
+ else {
274
+ pageLeft = ganttElementPositionLeft + this.parent.ganttChartModule.chartElement.offsetLeft +
275
+ this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft;
276
+ currentTaskDifference = this.clickedPosition - pageLeft;
277
+ }
247
278
  var splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.perDayWidth);
248
279
  var startDate = this.rowData.ganttProperties.startDate;
249
280
  if (!isNullOrUndefined(this.parent.timelineSettings.bottomTier) && this.parent.timelineSettings.bottomTier.unit === 'Hour') {
@@ -1,5 +1,5 @@
1
- import { Gantt } from "../base/gantt";
2
- import { IGanttData } from "../base/interface";
1
+ import { Gantt } from '../base/gantt';
2
+ import { IGanttData } from '../base/interface';
3
3
  export declare class CriticalPath {
4
4
  private parent;
5
5
  detailPredecessorCollection: object[];
@@ -1,4 +1,4 @@
1
- import { isNullOrUndefined } from "@syncfusion/ej2-base";
1
+ import { isNullOrUndefined } from '@syncfusion/ej2-base';
2
2
  import { addClass } from '@syncfusion/ej2-base';
3
3
  import * as cls from '../base/css-constants';
4
4
  var CriticalPath = /** @class */ (function () {
@@ -79,7 +79,7 @@ var CriticalPath = /** @class */ (function () {
79
79
  }
80
80
  else {
81
81
  var currentRecords = this_1.parent.currentViewData.filter(function (data) {
82
- return parseInt(data.ganttProperties.taskId) == checkBeyondEnddate_1[k];
82
+ return parseInt(data.ganttProperties.taskId) === checkBeyondEnddate_1[k];
83
83
  });
84
84
  for (var i = 0; i < currentRecords.length; i++) {
85
85
  if (!currentRecords[i].hasChildRecords && currentRecords[i].ganttProperties.endDate >= this_1.maxEndDate) {
@@ -117,10 +117,10 @@ var CriticalPath = /** @class */ (function () {
117
117
  var individualPredecessorLength = totalPredecessorsCollection[x].ganttProperties.predecessor.length;
118
118
  var taskid = ((totalPredecessorsCollection[x].ganttProperties.taskId));
119
119
  for (var y = 0; y < individualPredecessorLength; y++) {
120
- if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) != "string") {
120
+ if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) != 'string') {
121
121
  tempTaskId = parseInt((predecessor[y].from), 10);
122
122
  }
123
- else if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) === "string") {
123
+ else if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) === 'string') {
124
124
  tempTaskId = predecessor[y].from;
125
125
  }
126
126
  else {
@@ -143,15 +143,16 @@ var CriticalPath = /** @class */ (function () {
143
143
  toPredecessor = toPredecessor + ',' + predecessor[y].type;
144
144
  }
145
145
  else {
146
- to = to + ',' + predecessor[y].to + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
146
+ to = to + ',' + predecessor[y].to + ':' + predecessor[y].offset +
147
+ predecessor[y].offsetUnit;
147
148
  toPredecessor = toPredecessor + ',' + predecessor[y].type;
148
149
  }
149
150
  }
150
151
  }
151
- if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) != "string") {
152
+ if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) != 'string') {
152
153
  tempTaskId = parseInt((predecessor[y].to), 10);
153
154
  }
154
- else if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) === "string") {
155
+ else if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) === 'string') {
155
156
  tempTaskId = predecessor[y].to;
156
157
  }
157
158
  else {
@@ -164,7 +165,8 @@ var CriticalPath = /** @class */ (function () {
164
165
  fromPredecessor = predecessor[y].type;
165
166
  }
166
167
  else {
167
- from = predecessor[y].from + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
168
+ from = predecessor[y].from + ':' + predecessor[y].offset +
169
+ predecessor[y].offsetUnit;
168
170
  fromPredecessor = predecessor[y].type;
169
171
  }
170
172
  }
@@ -174,7 +176,8 @@ var CriticalPath = /** @class */ (function () {
174
176
  fromPredecessor = fromPredecessor + ',' + predecessor[y].type;
175
177
  }
176
178
  else {
177
- from = from + ',' + predecessor[y].from + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
179
+ from = from + ',' + predecessor[y].from + ':' + predecessor[y].offset +
180
+ predecessor[y].offsetUnit;
178
181
  fromPredecessor = fromPredecessor + ',' + predecessor[y].type;
179
182
  }
180
183
  }
@@ -301,7 +304,8 @@ var CriticalPath = /** @class */ (function () {
301
304
  }
302
305
  }
303
306
  // execute if the current calculated slack value is less than the previous slack value.
304
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
307
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
308
+ collection[fromTaskIdIndex]['slack'] !== 0) {
305
309
  // execute if the offset value is not given.
306
310
  if (fromDateArray1.length <= 1) {
307
311
  if (collection[totaskId]['slack'] + dateDifference < 0) {
@@ -351,7 +355,8 @@ var CriticalPath = /** @class */ (function () {
351
355
  }
352
356
  }
353
357
  //It execute while already the slack value is set and it is higher than the datedifference.
354
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
358
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
359
+ collection[fromTaskIdIndex]['slack'] !== 0) {
355
360
  if (fromDateArray1.length <= 1) {
356
361
  if (collection[totaskId]['slack'] + dateDifference < 0) {
357
362
  collection[fromTaskIdIndex]['slack'] = 0;
@@ -379,7 +384,8 @@ var CriticalPath = /** @class */ (function () {
379
384
  if (isNullOrUndefined(collection[fromTaskIdIndex]['slack'])) {
380
385
  collection[fromTaskIdIndex]['slack'] = dateDifference;
381
386
  }
382
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
387
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
388
+ collection[fromTaskIdIndex]['slack'] !== 0) {
383
389
  collection[fromTaskIdIndex]['slack'] = dateDifference;
384
390
  }
385
391
  }
@@ -390,7 +396,8 @@ var CriticalPath = /** @class */ (function () {
390
396
  // calculate slack value for the task contains predecessor connection in "finish to finish".
391
397
  if (fromDataPredecessor[i] === 'FF') {
392
398
  // execute if the previous task is from finish to start or finish to finish state.
393
- if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1 || collection[totaskId]['fs'] === -1) {
399
+ if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1 ||
400
+ collection[totaskId]['fs'] === -1) {
394
401
  if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1) {
395
402
  prevTaskEnddate = toIdFlatData.endDate;
396
403
  ffslack = collection[totaskId]['slack'];
@@ -693,7 +700,7 @@ var CriticalPath = /** @class */ (function () {
693
700
  }
694
701
  else {
695
702
  var currentRecords = this_2.parent.currentViewData.filter(function (data) {
696
- return (data.ganttProperties.taskId).toString() == criticalPathIds[i].toString();
703
+ return (data.ganttProperties.taskId).toString() === criticalPathIds[i].toString();
697
704
  });
698
705
  for (var i_1 = 0; i_1 < currentRecords.length; i_1++) {
699
706
  if (currentRecords[i_1].ganttProperties.isCritical || currentRecords[i_1].ganttProperties.endDate >= this_2.maxEndDate) {
@@ -707,13 +714,13 @@ var CriticalPath = /** @class */ (function () {
707
714
  var columnFields = this_2.parent.taskFields;
708
715
  if (criticalData.parentItem) {
709
716
  var parentRecord = this_2.parent.currentViewData.filter(function (data) {
710
- return criticalData.parentItem.uniqueID == data.uniqueID;
717
+ return criticalData.parentItem.uniqueID === data.uniqueID;
711
718
  });
712
719
  var parentIndex = this_2.parent.currentViewData.indexOf(parentRecord[0]);
713
720
  var parentElement = this_2.parent.getRowByIndex(parentIndex);
714
721
  var parentTaskbarElement = parentElement.querySelectorAll('.e-taskbar-main-container');
715
722
  for (var i_2 = 0; i_2 < parentTaskbarElement.length; i_2++) {
716
- if (parentTaskbarElement[i_2].getAttribute('rowuniqueid') == criticalData['rowUniqueID']) {
723
+ if (parentTaskbarElement[i_2].getAttribute('rowuniqueid') === criticalData['rowUniqueID']) {
717
724
  addClass(parentTaskbarElement[i_2].querySelectorAll('.e-gantt-child-taskbar-inner-div'), cls.criticalChildTaskBarInnerDiv);
718
725
  }
719
726
  }
@@ -320,18 +320,18 @@ var DialogEdit = /** @class */ (function () {
320
320
  if (!isNullOrUndefined(taskId)) {
321
321
  if (!isNullOrUndefined(taskId['ganttProperties'])) {
322
322
  if (typeof taskId['ganttProperties']['taskId'] === 'string') {
323
- this.numericOrString = "stringedit";
323
+ this.numericOrString = 'stringedit';
324
324
  }
325
325
  else {
326
- this.numericOrString = "numericedit";
326
+ this.numericOrString = 'numericedit';
327
327
  }
328
328
  }
329
329
  if (isNullOrUndefined(taskId['ganttProperties']) && !isNullOrUndefined(taskId)) {
330
330
  if (isNaN(Number(taskId)) || this.parent.columnByField[this.parent.taskFields.id].editType === "stringedit") {
331
- this.numericOrString = "stringedit";
331
+ this.numericOrString = 'stringedit';
332
332
  }
333
333
  else {
334
- this.numericOrString = "numericedit";
334
+ this.numericOrString = 'numericedit';
335
335
  }
336
336
  }
337
337
  }
@@ -374,6 +374,7 @@ var DialogEdit = /** @class */ (function () {
374
374
  dialogModel.animationSettings = { effect: 'None' };
375
375
  dialogModel.header = this.localeObj.getConstant(this.isEdit ? 'editDialogTitle' : 'addDialogTitle');
376
376
  dialogModel.isModal = true;
377
+ dialogModel.enableRtl = this.parent.enableRtl;
377
378
  dialogModel.allowDragging = this.parent.isAdaptive ? false : true;
378
379
  dialogModel.showCloseIcon = true;
379
380
  var position = this.parent.isAdaptive ? { X: 'top', Y: 'left' } : { X: 'center', Y: 'center' };
@@ -384,8 +385,8 @@ var DialogEdit = /** @class */ (function () {
384
385
  dialogModel.close = this.dialogClose.bind(this);
385
386
  dialogModel.closeOnEscape = true;
386
387
  dialogModel.beforeClose = function (args) {
387
- if (args.closedBy == "escape") {
388
- if (args.event.name == "key-pressed" && args.event.target.nodeName == 'INPUT') {
388
+ if (args.closedBy === "escape") {
389
+ if (args.event.name === "key-pressed" && args.event.target.nodeName === 'INPUT') {
389
390
  args.cancel = true;
390
391
  }
391
392
  }
@@ -556,6 +557,7 @@ var DialogEdit = /** @class */ (function () {
556
557
  var length = dialogSettings.length;
557
558
  tabModel.items = tabItems;
558
559
  tabModel.locale = this.parent.locale;
560
+ tabModel.enableRtl = this.parent.enableRtl;
559
561
  this.beforeOpenArgs.tabModel = tabModel;
560
562
  var count = 0;
561
563
  var index = 0;
@@ -636,6 +638,12 @@ var DialogEdit = /** @class */ (function () {
636
638
  cancel: this.beforeOpenArgs.cancel
637
639
  };
638
640
  this.parent.trigger('actionBegin', this.beforeOpenArgs, function (arg) {
641
+ if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === "Shimmer") {
642
+ _this.parent.showMaskRow();
643
+ }
644
+ else {
645
+ _this.parent.showSpinner();
646
+ }
639
647
  _this.renderTabItems();
640
648
  if (!arg.cancel) {
641
649
  tabModel.selected = _this.tabSelectedEvent.bind(_this);
@@ -658,6 +666,12 @@ var DialogEdit = /** @class */ (function () {
658
666
  cancel: false
659
667
  };
660
668
  _this.parent.trigger('actionComplete', actionCompleteArgs, function (actionCompleteArg) {
669
+ if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === "Shimmer") {
670
+ _this.parent.hideMaskRow();
671
+ }
672
+ else {
673
+ _this.parent.hideSpinner();
674
+ }
661
675
  if (actionCompleteArg.cancel) {
662
676
  _this.resetValues();
663
677
  }
@@ -741,7 +755,8 @@ var DialogEdit = /** @class */ (function () {
741
755
  {
742
756
  var checkboxModel = {
743
757
  label: column.headerText,
744
- locale: locale
758
+ locale: locale,
759
+ enableRtl: this.parent.enableRtl
745
760
  };
746
761
  fieldsModel[column.field] = checkboxModel;
747
762
  break;
@@ -750,6 +765,7 @@ var DialogEdit = /** @class */ (function () {
750
765
  case 'stringedit':
751
766
  {
752
767
  var textBox = common;
768
+ textBox.enableRtl = this.parent.enableRtl;
753
769
  if (column.field === ganttObj.columnMapping.duration || column.field === ganttObj.columnMapping.id || column.field === ganttObj.columnMapping.startDate ||
754
770
  column.field === ganttObj.columnMapping.endDate) {
755
771
  textBox.change = function (args) {
@@ -762,6 +778,7 @@ var DialogEdit = /** @class */ (function () {
762
778
  case 'numericedit':
763
779
  {
764
780
  var numeric = common;
781
+ numeric.enableRtl = this.parent.enableRtl;
765
782
  if (taskSettings.progress === column.field) {
766
783
  numeric.min = 0;
767
784
  numeric.max = 100;
@@ -778,6 +795,7 @@ var DialogEdit = /** @class */ (function () {
778
795
  {
779
796
  var datePickerObj = common;
780
797
  datePickerObj.format = this.parent.getDateFormat();
798
+ datePickerObj.enableRtl = this.parent.enableRtl;
781
799
  datePickerObj.strictMode = true;
782
800
  datePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;
783
801
  if (column.field === ganttObj.columnMapping.startDate ||
@@ -794,6 +812,7 @@ var DialogEdit = /** @class */ (function () {
794
812
  {
795
813
  var dateTimePickerObj = common;
796
814
  dateTimePickerObj.format = this.parent.getDateFormat();
815
+ dateTimePickerObj.enableRtl = this.parent.enableRtl;
797
816
  dateTimePickerObj.strictMode = true;
798
817
  dateTimePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;
799
818
  if (column.field === ganttObj.columnMapping.startDate ||
@@ -816,6 +835,7 @@ var DialogEdit = /** @class */ (function () {
816
835
  common[dataKey] = types;
817
836
  common[fieldsKey] = { value: 'Value' };
818
837
  var dropDownListObj = common;
838
+ dropDownListObj.enableRtl = this.parent.enableRtl;
819
839
  dropDownListObj.change = function (args) {
820
840
  if (column.field === taskSettings.manual) {
821
841
  _this.editedRecord.ganttProperties.isAutoSchedule = !args.value;
@@ -1189,8 +1209,8 @@ var DialogEdit = /** @class */ (function () {
1189
1209
  break;
1190
1210
  case 'duration':
1191
1211
  gridColumn = {
1192
- field: fields[i], headerText: this_1.localeObj.getConstant(fields[i]), editType: 'stringedit', width: '100px',
1193
- edit: {
1212
+ field: fields[i], headerText: this_1.localeObj.getConstant(fields[i]), editType: 'stringedit',
1213
+ width: '100px', edit: {
1194
1214
  write: function (args) {
1195
1215
  var inputTextModel;
1196
1216
  if (!isNullOrUndefined(_this.beforeOpenArgs[generalTabString])) {
@@ -1255,7 +1275,7 @@ var DialogEdit = /** @class */ (function () {
1255
1275
  inputValue = dialog.querySelector('#' + ganttId + 'SegmentsTabContainer' + columnName)
1256
1276
  .ej2_instances[0];
1257
1277
  }
1258
- if (inputValue.value.toString() !== tempValue.toString()) {
1278
+ if ((!isNullOrUndefined(inputValue.value)) && (inputValue.value.toString() !== tempValue.toString())) {
1259
1279
  inputValue.value = tempValue;
1260
1280
  inputValue.dataBind();
1261
1281
  }
@@ -1590,7 +1610,7 @@ var DialogEdit = /** @class */ (function () {
1590
1610
  break;
1591
1611
  }
1592
1612
  }
1593
- if (typeof (stringOrNumber) === "string") {
1613
+ if (typeof (stringOrNumber) === 'string') {
1594
1614
  disabled = false;
1595
1615
  }
1596
1616
  else {
@@ -1605,7 +1625,7 @@ var DialogEdit = /** @class */ (function () {
1605
1625
  }
1606
1626
  if (this.editedRecord.hasChildRecords) {
1607
1627
  if ((column.field === this.parent.taskFields.endDate && ((!isNullOrUndefined(this.editedRecord['isManual']) &&
1608
- this.editedRecord['isManual'] == false) || this.parent.taskMode == 'Auto')) || column.field === this.parent.taskFields.duration ||
1628
+ this.editedRecord['isManual'] === false) || this.parent.taskMode === 'Auto')) || column.field === this.parent.taskFields.duration ||
1609
1629
  column.field === this.parent.taskFields.progress || column.field === this.parent.taskFields.work ||
1610
1630
  column.field === this.parent.taskFields.type) {
1611
1631
  disabled = true;
@@ -1661,6 +1681,7 @@ var DialogEdit = /** @class */ (function () {
1661
1681
  dataSource: new DataManager(_this.idCollection),
1662
1682
  popupHeight: '180px',
1663
1683
  allowCustom: false,
1684
+ enableRtl: _this.parent.enableRtl,
1664
1685
  fields: { value: 'text' },
1665
1686
  value: args.rowData[field],
1666
1687
  change: function (arg) {
@@ -1936,7 +1957,7 @@ var DialogEdit = /** @class */ (function () {
1936
1957
  do {
1937
1958
  if (currentFlatData.parentItem) {
1938
1959
  currentFlatData = this.parent.flatData[this.parent.ids.indexOf(currentFlatData.parentItem.taskId)];
1939
- if (currentFlatData.uniqueID == this.beforeOpenArgs.rowData['uniqueID']) {
1960
+ if (currentFlatData.uniqueID === this.beforeOpenArgs.rowData['uniqueID']) {
1940
1961
  this.isValidData = false;
1941
1962
  break;
1942
1963
  }
@@ -2189,7 +2210,9 @@ var DialogEdit = /** @class */ (function () {
2189
2210
  }
2190
2211
  }
2191
2212
  if (this.isEdit) {
2192
- this.updateScheduleProperties(this.editedRecord, this.rowData);
2213
+ if (!isCustom) {
2214
+ this.updateScheduleProperties(this.editedRecord, this.rowData);
2215
+ }
2193
2216
  ganttObj.editModule.validateUpdateValues(tasksData, this.rowData, true);
2194
2217
  }
2195
2218
  };
@@ -48,6 +48,7 @@ export declare class Edit {
48
48
  cellEditModule: CellEdit;
49
49
  taskbarEditModule: TaskbarEdit;
50
50
  dialogModule: DialogEdit;
51
+ isResourceTaskDeleted: boolean;
51
52
  constructor(parent?: Gantt);
52
53
  private getModuleName;
53
54
  /**