@syncfusion/ej2-gantt 21.1.37 → 21.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/ej2-gantt.min.js +2 -2
  3. package/dist/ej2-gantt.umd.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-gantt.es2015.js +84 -39
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +84 -39
  8. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  9. package/dist/global/ej2-gantt.min.js +2 -2
  10. package/dist/global/ej2-gantt.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +16 -16
  13. package/src/gantt/actions/column-menu.d.ts +1 -0
  14. package/src/gantt/actions/column-menu.js +1 -0
  15. package/src/gantt/actions/context-menu.js +1 -1
  16. package/src/gantt/actions/critical-path.d.ts +1 -0
  17. package/src/gantt/actions/critical-path.js +1 -0
  18. package/src/gantt/actions/dependency.js +1 -1
  19. package/src/gantt/actions/dialog-edit.js +1 -0
  20. package/src/gantt/actions/edit.js +7 -1
  21. package/src/gantt/actions/keyboard.js +1 -0
  22. package/src/gantt/base/date-processor.js +2 -2
  23. package/src/gantt/base/gantt-model.d.ts +6 -0
  24. package/src/gantt/base/gantt.d.ts +2 -0
  25. package/src/gantt/base/gantt.js +17 -3
  26. package/src/gantt/base/task-processor.d.ts +1 -1
  27. package/src/gantt/base/task-processor.js +39 -21
  28. package/src/gantt/export/pdf-base/pdf-borders.d.ts +2 -0
  29. package/src/gantt/export/pdf-base/pdf-borders.js +2 -0
  30. package/src/gantt/export/pdf-base/pdf-grid-table.d.ts +1 -3
  31. package/src/gantt/export/pdf-base/pdf-grid-table.js +1 -3
  32. package/src/gantt/models/column.d.ts +4 -4
  33. package/src/gantt/renderer/chart-rows.js +3 -5
  34. package/src/gantt/renderer/nonworking-day.js +3 -1
  35. package/src/gantt/renderer/timeline.js +4 -1
  36. package/styles/bootstrap-dark.css +1 -0
  37. package/styles/bootstrap.css +1 -0
  38. package/styles/bootstrap4.css +1 -0
  39. package/styles/bootstrap5-dark.css +1 -0
  40. package/styles/bootstrap5.css +1 -0
  41. package/styles/fabric-dark.css +1 -0
  42. package/styles/fabric.css +1 -0
  43. package/styles/fluent-dark.css +0 -3
  44. package/styles/fluent.css +0 -3
  45. package/styles/gantt/_layout.scss +0 -8
  46. package/styles/gantt/bootstrap-dark.css +1 -0
  47. package/styles/gantt/bootstrap.css +1 -0
  48. package/styles/gantt/bootstrap4.css +1 -0
  49. package/styles/gantt/bootstrap5-dark.css +1 -0
  50. package/styles/gantt/bootstrap5.css +1 -0
  51. package/styles/gantt/fabric-dark.css +1 -0
  52. package/styles/gantt/fabric.css +1 -0
  53. package/styles/gantt/fluent-dark.css +0 -3
  54. package/styles/gantt/fluent.css +0 -3
  55. package/styles/gantt/highcontrast-light.css +1 -0
  56. package/styles/gantt/highcontrast.css +1 -0
  57. package/styles/gantt/material-dark.css +1 -0
  58. package/styles/gantt/material.css +1 -0
  59. package/styles/gantt/tailwind-dark.css +1 -0
  60. package/styles/gantt/tailwind.css +1 -0
  61. package/styles/highcontrast-light.css +1 -0
  62. package/styles/highcontrast.css +1 -0
  63. package/styles/material-dark.css +1 -0
  64. package/styles/material.css +1 -0
  65. package/styles/tailwind-dark.css +1 -0
  66. package/styles/tailwind.css +1 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 21.1.37
3
+ * version : 21.1.41
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@21.1.35",
3
+ "_id": "@syncfusion/ej2-gantt@21.1.38",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-cP3lpOL2eAFZ2Q5R5P46k7Xp3VWmuu0bOXLdfi0RWJv9cv3ltd9gXByn3FwqoKVbDnHqTcMsfLqIbkDTkHXWEQ==",
5
+ "_integrity": "sha512-mG35i/xS8soHV61BHzK07yFe9rxWl3ubEOVZKB/oLV6xaUYnu6oUy8ggzePCuxcVBh5SfJ+Zvx8sgtr9Xjzgng==",
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-21.1.35.tgz",
27
- "_shasum": "a4de85ffeb4e0c788b3a33571de043639daa60bd",
26
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-gantt/-/ej2-gantt-21.1.38.tgz",
27
+ "_shasum": "32d68324bade49301890fb65cf019d4904462d33",
28
28
  "_spec": "@syncfusion/ej2-gantt@*",
29
29
  "_where": "/jenkins/workspace/elease-automation_release_21.1.1/packages/included",
30
30
  "author": {
@@ -35,20 +35,20 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~21.1.37",
38
+ "@syncfusion/ej2-base": "~21.1.40",
39
39
  "@syncfusion/ej2-buttons": "~21.1.37",
40
- "@syncfusion/ej2-calendars": "~21.1.37",
41
- "@syncfusion/ej2-data": "~21.1.37",
42
- "@syncfusion/ej2-dropdowns": "~21.1.37",
43
- "@syncfusion/ej2-grids": "~21.1.37",
44
- "@syncfusion/ej2-inputs": "~21.1.37",
40
+ "@syncfusion/ej2-calendars": "~21.1.41",
41
+ "@syncfusion/ej2-data": "~21.1.38",
42
+ "@syncfusion/ej2-dropdowns": "~21.1.41",
43
+ "@syncfusion/ej2-grids": "~21.1.41",
44
+ "@syncfusion/ej2-inputs": "~21.1.39",
45
45
  "@syncfusion/ej2-layouts": "~21.1.37",
46
- "@syncfusion/ej2-lists": "~21.1.37",
47
- "@syncfusion/ej2-navigations": "~21.1.37",
46
+ "@syncfusion/ej2-lists": "~21.1.41",
47
+ "@syncfusion/ej2-navigations": "~21.1.39",
48
48
  "@syncfusion/ej2-notifications": "~21.1.37",
49
- "@syncfusion/ej2-popups": "~21.1.37",
50
- "@syncfusion/ej2-richtexteditor": "~21.1.37",
51
- "@syncfusion/ej2-treegrid": "~21.1.37"
49
+ "@syncfusion/ej2-popups": "~21.1.41",
50
+ "@syncfusion/ej2-richtexteditor": "~21.1.41",
51
+ "@syncfusion/ej2-treegrid": "~21.1.41"
52
52
  },
53
53
  "deprecated": false,
54
54
  "description": "Essential JS 2 Gantt Component",
@@ -73,6 +73,6 @@
73
73
  "url": "git+https://github.com/syncfusion/ej2-gantt.git"
74
74
  },
75
75
  "typings": "index.d.ts",
76
- "version": "21.1.37",
76
+ "version": "21.1.41",
77
77
  "sideEffects": false
78
78
  }
@@ -1,6 +1,7 @@
1
1
  import { Gantt } from '../base/gantt';
2
2
  /**
3
3
  * Configures columnMenu collection in Gantt.
4
+ * @hidden
4
5
  */
5
6
  export declare class ColumnMenu {
6
7
  private parent;
@@ -1,6 +1,7 @@
1
1
  import { TreeGrid, ColumnMenu as TreeGridColumnMenu } from '@syncfusion/ej2-treegrid';
2
2
  /**
3
3
  * Configures columnMenu collection in Gantt.
4
+ * @hidden
4
5
  */
5
6
  var ColumnMenu = /** @class */ (function () {
6
7
  function ColumnMenu(parent) {
@@ -281,7 +281,7 @@ var ContextMenu = /** @class */ (function () {
281
281
  splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.timelineSettings.timelineUnitSize);
282
282
  splitTaskDuration -= 1;
283
283
  }
284
- var contextMenuClickDate = this.parent.dataOperation.getEndDate(startDate, splitTaskDuration, this.rowData.ganttProperties.durationUnit, this.rowData, false);
284
+ var contextMenuClickDate = this.parent.dataOperation.getEndDate(startDate, splitTaskDuration, (this.parent.timelineSettings.bottomTier.unit !== "None") ? this.parent.timelineSettings.bottomTier.unit.toLocaleLowerCase() : this.parent.timelineSettings.topTier.unit.toLocaleLowerCase(), this.rowData, false);
285
285
  return contextMenuClickDate;
286
286
  };
287
287
  ContextMenu.prototype.contextMenuBeforeOpen = function (args) {
@@ -1,5 +1,6 @@
1
1
  import { Gantt } from '../base/gantt';
2
2
  import { IGanttData } from '../base/interface';
3
+ /** @hidden */
3
4
  export declare class CriticalPath {
4
5
  private parent;
5
6
  detailPredecessorCollection: object[];
@@ -1,6 +1,7 @@
1
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
+ /** @hidden */
4
5
  var CriticalPath = /** @class */ (function () {
5
6
  function CriticalPath(parent) {
6
7
  this.resourceCollectionIds = [];
@@ -477,7 +477,7 @@ var Dependency = /** @class */ (function () {
477
477
  this.dateValidateModule.calculateEndDate(childGanttRecord);
478
478
  }
479
479
  this.parent.dataOperation.updateWidthLeft(childGanttRecord);
480
- if (!this.parent.isLoad && childGanttRecord.parentItem && this.parent.isInPredecessorValidation &&
480
+ if (!this.parent.isLoad && !this.parent.isFromOnPropertyChange && childGanttRecord.parentItem && this.parent.isInPredecessorValidation &&
481
481
  this.parent.getParentTask(childGanttRecord.parentItem).ganttProperties.isAutoSchedule) {
482
482
  if (this.parentIds.indexOf(childGanttRecord.parentItem.uniqueID) === -1) {
483
483
  this.parentIds.push(childGanttRecord.parentItem.uniqueID);
@@ -1860,6 +1860,7 @@ var DialogEdit = /** @class */ (function () {
1860
1860
  DialogEdit.prototype.renderNotesTab = function (itemName) {
1861
1861
  var ganttObj = this.parent;
1862
1862
  var inputModel = this.beforeOpenArgs[itemName];
1863
+ inputModel.enableHtmlSanitizer = this.parent.enableHtmlSanitizer;
1863
1864
  var ganttProp = this.editedRecord.ganttProperties;
1864
1865
  var divElement = this.createDivElement('', ganttObj.element.id + '' + itemName + 'TabContainer');
1865
1866
  RichTextEditor.Inject(RTEToolbar, Link, HtmlEditor, QuickToolbar, Count);
@@ -1124,7 +1124,13 @@ var Edit = /** @class */ (function () {
1124
1124
  }
1125
1125
  else if (isNullOrUndefined(previousData)) {
1126
1126
  calcEndDate = previousStartDate;
1127
- this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);
1127
+ var initialData = this.parent.initialLoadData[childRecords[i].index];
1128
+ if (this.parent.isLoad) {
1129
+ this.calculateDateByRoundOffDuration(initialData, calcEndDate);
1130
+ }
1131
+ else {
1132
+ this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);
1133
+ }
1128
1134
  if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {
1129
1135
  this.validatedChildItems.push(childRecords[i]);
1130
1136
  }
@@ -62,6 +62,7 @@ var FocusModule = /** @class */ (function () {
62
62
  if (ganttObj.selectedRowIndex === ganttObj.flatData.indexOf(currentSelectingRecord)) {
63
63
  return;
64
64
  }
65
+ ganttObj.selectionModule.selectRow(ganttObj.flatData.indexOf(currentSelectingRecord), false, true);
65
66
  }
66
67
  break;
67
68
  case 'downArrow':
@@ -400,10 +400,10 @@ var DateProcessor = /** @class */ (function () {
400
400
  */
401
401
  DateProcessor.prototype.getDurationAsSeconds = function (duration, durationUnit) {
402
402
  var value = 0;
403
- if (!durationUnit || durationUnit === 'day') {
403
+ if (!durationUnit || durationUnit.toLocaleLowerCase() === 'day') {
404
404
  value = this.parent.secondsPerDay * duration;
405
405
  }
406
- else if (durationUnit === 'hour') {
406
+ else if (durationUnit.toLocaleLowerCase() === 'hour') {
407
407
  value = duration * 3600;
408
408
  }
409
409
  else {
@@ -500,6 +500,12 @@ export interface GanttModel extends ComponentModel{
500
500
  */
501
501
  timelineSettings?: TimelineSettingsModel;
502
502
 
503
+ /**
504
+ * Configure zooming levels of Gantt Timeline
505
+ * @default []
506
+ */
507
+ zoomingLevels?: ZoomTimelineSettings[];
508
+
503
509
  /**
504
510
  * Configures the sort settings of the Gantt.
505
511
  * {% codeBlock src='gantt/sortSettings/index.md' %}{% endcodeBlock %}
@@ -93,6 +93,7 @@ export declare class Gantt extends Component<HTMLElement> implements INotifyProp
93
93
  scrollLeftValue: any;
94
94
  isToolBarClick: any;
95
95
  isLocaleChanged: boolean;
96
+ initialLoadData: Object;
96
97
  previousGanttColumns: ColumnModel[];
97
98
  /** @hidden */
98
99
  topBottomHeader: any;
@@ -736,6 +737,7 @@ export declare class Gantt extends Component<HTMLElement> implements INotifyProp
736
737
  timelineSettings: TimelineSettingsModel;
737
738
  /**
738
739
  * Configure zooming levels of Gantt Timeline
740
+ * @default []
739
741
  */
740
742
  zoomingLevels: ZoomTimelineSettings[];
741
743
  /**
@@ -220,7 +220,9 @@ var Gantt = /** @class */ (function (_super) {
220
220
  contextMenu: 'shift+F10' //F Key
221
221
  };
222
222
  this.focusModule = new FocusModule(this);
223
- this.zoomingLevels = this.getZoomingLevels();
223
+ if (this.zoomingLevels.length === 0) {
224
+ this.zoomingLevels = this.getZoomingLevels();
225
+ }
224
226
  this.resourceFieldsMapping();
225
227
  if (isNullOrUndefined(this.resourceFields.unit)) { //set resourceUnit as unit if not mapping
226
228
  this.resourceFields.unit = 'unit';
@@ -726,6 +728,9 @@ var Gantt = /** @class */ (function (_super) {
726
728
  * @private
727
729
  */
728
730
  Gantt.prototype.renderGantt = function (isChange) {
731
+ if (isChange) {
732
+ this.isFromOnPropertyChange = isChange;
733
+ }
729
734
  // predecessor calculation
730
735
  if (this.predecessorModule && this.taskFields.dependency) {
731
736
  this.predecessorModule['parentIds'] = [];
@@ -740,7 +745,6 @@ var Gantt = /** @class */ (function (_super) {
740
745
  this.timelineModule.validateTimelineProp();
741
746
  }
742
747
  if (isChange) {
743
- this.isFromOnPropertyChange = isChange;
744
748
  if (this.enableValidation) {
745
749
  this.dataOperation.updateGanttData();
746
750
  }
@@ -1427,6 +1431,14 @@ var Gantt = /** @class */ (function (_super) {
1427
1431
  this.chartRowsModule.refreshGanttRows();
1428
1432
  this.isLoad = false;
1429
1433
  break;
1434
+ case 'dayWorkingTime':
1435
+ this.isLoad = true;
1436
+ this.dataOperation.reUpdateGanttData();
1437
+ this.treeGrid.refreshColumns();
1438
+ this.chartRowsModule.initiateTemplates();
1439
+ this.chartRowsModule.refreshGanttRows();
1440
+ this.isLoad = false;
1441
+ break;
1430
1442
  case 'addDialogFields':
1431
1443
  case 'editDialogFields':
1432
1444
  if (this.editModule && this.editModule.dialogModule) {
@@ -1506,7 +1518,6 @@ var Gantt = /** @class */ (function (_super) {
1506
1518
  case 'readOnly':
1507
1519
  case 'viewType':
1508
1520
  case 'taskFields':
1509
- case 'dayWorkingTime':
1510
1521
  case 'allowTaskbarDragAndDrop':
1511
1522
  case 'allowTaskbarOverlap':
1512
1523
  case 'allowParentDependency':
@@ -3493,6 +3504,9 @@ var Gantt = /** @class */ (function (_super) {
3493
3504
  __decorate([
3494
3505
  Complex({}, TimelineSettings)
3495
3506
  ], Gantt.prototype, "timelineSettings", void 0);
3507
+ __decorate([
3508
+ Property([])
3509
+ ], Gantt.prototype, "zoomingLevels", void 0);
3496
3510
  __decorate([
3497
3511
  Complex({}, SortSettings)
3498
3512
  ], Gantt.prototype, "sortSettings", void 0);
@@ -187,7 +187,7 @@ export declare class TaskProcessor extends DateProcessor {
187
187
  * @returns {number} .
188
188
  * @private
189
189
  */
190
- getTaskWidth(startDate: Date, endDate: Date): number;
190
+ getTaskWidth(startDate: Date, endDate: Date, ganttData?: ITaskData): number;
191
191
  /**
192
192
  * Get task left value
193
193
  *
@@ -213,6 +213,7 @@ var TaskProcessor = /** @class */ (function (_super) {
213
213
  */
214
214
  TaskProcessor.prototype.prepareDataSource = function (data) {
215
215
  this.prepareRecordCollection(data, 0);
216
+ this.parent.initialLoadData = extend({}, {}, this.parent.flatData, true);
216
217
  // Method to maintain the shared task uniqueIds
217
218
  if (this.parent.viewType === 'ResourceView') {
218
219
  this.calculateSharedTaskUniqueIds();
@@ -1041,7 +1042,7 @@ var TaskProcessor = /** @class */ (function (_super) {
1041
1042
  return 0;
1042
1043
  }
1043
1044
  else {
1044
- return this.getTaskWidth(sDate, eDate);
1045
+ return this.getTaskWidth(sDate, eDate, ganttProp);
1045
1046
  }
1046
1047
  };
1047
1048
  TaskProcessor.prototype.getTaskbarHeight = function () {
@@ -1155,13 +1156,29 @@ var TaskProcessor = /** @class */ (function (_super) {
1155
1156
  * @returns {number} .
1156
1157
  * @private
1157
1158
  */
1158
- TaskProcessor.prototype.getTaskWidth = function (startDate, endDate) {
1159
+ TaskProcessor.prototype.getTaskWidth = function (startDate, endDate, ganttData) {
1159
1160
  var sDate = new Date(startDate.getTime());
1160
1161
  var eDate = new Date(endDate.getTime());
1161
1162
  var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :
1162
1163
  this.parent.timelineModule.topTier;
1164
+ var isValid = false;
1165
+ var modifiedsDate = new Date(startDate.getTime());
1166
+ var hour = 0;
1167
+ if (ganttData && ganttData.durationUnit == 'hour') {
1168
+ modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 60 * 1000);
1169
+ }
1170
+ if (ganttData && ganttData.durationUnit == 'minute') {
1171
+ modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 60 * 60 * 1000);
1172
+ }
1173
+ for (var i = 0; i < this.parent.dayWorkingTime.length; i++) {
1174
+ hour = hour + this.parent.dayWorkingTime[i].to - this.parent.dayWorkingTime[i].from;
1175
+ }
1176
+ var dateDiff = modifiedsDate.getTime() - sDate.getTime();
1163
1177
  if (tierMode === 'Day') {
1164
- if (this.getSecondsInDecimal(sDate) === this.parent.defaultStartTime) {
1178
+ if ((Math.floor((dateDiff / (1000 * 60 * 60)) % 24) >= hour || dateDiff === 0)) {
1179
+ isValid = true;
1180
+ }
1181
+ if (this.getSecondsInDecimal(sDate) === this.parent.defaultStartTime && isValid) {
1165
1182
  sDate.setHours(0, 0, 0, 0);
1166
1183
  }
1167
1184
  if (this.getSecondsInDecimal(eDate) === this.parent.defaultEndTime) {
@@ -1171,11 +1188,19 @@ var TaskProcessor = /** @class */ (function (_super) {
1171
1188
  eDate.setHours(0, 0, 0, 0);
1172
1189
  }
1173
1190
  }
1191
+ else {
1192
+ isValid = true;
1193
+ }
1174
1194
  if ((sDate).getTime() === (eDate).getTime()) {
1175
1195
  return (this.parent.perDayWidth);
1176
1196
  }
1177
1197
  else {
1178
- return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);
1198
+ if (isValid) {
1199
+ return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);
1200
+ }
1201
+ else {
1202
+ return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * hour)) * this.parent.perDayWidth);
1203
+ }
1179
1204
  }
1180
1205
  };
1181
1206
  /**
@@ -1457,17 +1482,15 @@ var TaskProcessor = /** @class */ (function (_super) {
1457
1482
  else {
1458
1483
  hierarchicalData = this.parent.dataSource;
1459
1484
  }
1460
- this.parent.flatData.map(function (data) {
1461
- hierarchicalData.map(function (record) {
1462
- if (data.ganttProperties.taskId === record[_this.parent.taskFields.id]) {
1463
- if (!isNullOrUndefined(_this.parent.taskFields.startDate)) {
1464
- task[_this.parent.taskFields.endDate] = record[_this.parent.taskFields.endDate];
1465
- }
1466
- if (!isNullOrUndefined(_this.parent.taskFields.endDate)) {
1467
- task[_this.parent.taskFields.endDate] = record[_this.parent.taskFields.endDate];
1468
- }
1485
+ hierarchicalData.map(function (record) {
1486
+ if (task.ganttProperties.taskId === record[_this.parent.taskFields.id]) {
1487
+ if (!isNullOrUndefined(_this.parent.taskFields.startDate)) {
1488
+ task[_this.parent.taskFields.startDate] = record[_this.parent.taskFields.startDate];
1469
1489
  }
1470
- });
1490
+ if (!isNullOrUndefined(_this.parent.taskFields.endDate)) {
1491
+ task[_this.parent.taskFields.endDate] = record[_this.parent.taskFields.endDate];
1492
+ }
1493
+ }
1471
1494
  });
1472
1495
  };
1473
1496
  TaskProcessor.prototype.getWorkInHour = function (work, workUnit) {
@@ -2222,12 +2245,7 @@ var TaskProcessor = /** @class */ (function (_super) {
2222
2245
  durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 60));
2223
2246
  break;
2224
2247
  default:
2225
- if (childGanttRecord.ganttProperties.duration < 1) {
2226
- durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 3600));
2227
- }
2228
- else {
2229
- durationInDay = childGanttRecord.ganttProperties.duration;
2230
- }
2248
+ durationInDay = childGanttRecord.ganttProperties.duration;
2231
2249
  }
2232
2250
  if (childGanttRecord.hasChildRecords) {
2233
2251
  setValue('totalProgress', childGanttRecord.ganttProperties.totalProgress, progressValues);
@@ -2326,7 +2344,7 @@ var TaskProcessor = /** @class */ (function (_super) {
2326
2344
  else {
2327
2345
  taskCount = childLength - milestoneCount;
2328
2346
  }
2329
- var parentProgress = (taskCount > 0 && totalDuration > 0) ? (totalProgress / totalDuration) : 0;
2347
+ var parentProgress = (taskCount > 0 && totalDuration > 0) ? Number((totalProgress / totalDuration).toFixed(2)) : 0;
2330
2348
  var parentProp = parentData.ganttProperties;
2331
2349
  var milestone = (taskCount === 0) && minStartDate && maxEndDate &&
2332
2350
  minStartDate.getTime() === maxEndDate.getTime() ? true : false;
@@ -4,6 +4,7 @@
4
4
  import { PdfPen } from '@syncfusion/ej2-pdf-export';
5
5
  /**
6
6
  * `PdfBorders` class used represents the cell border of the PDF grid.
7
+ * @hidden
7
8
  */
8
9
  export declare class PdfBorders {
9
10
  /**
@@ -86,6 +87,7 @@ export declare class PdfBorders {
86
87
  */
87
88
  constructor();
88
89
  }
90
+ /** @hidden */
89
91
  export declare class PdfPaddings {
90
92
  /**
91
93
  * The `left` padding.
@@ -4,6 +4,7 @@
4
4
  import { PdfPen, PdfDashStyle, PdfColor } from '@syncfusion/ej2-pdf-export';
5
5
  /**
6
6
  * `PdfBorders` class used represents the cell border of the PDF grid.
7
+ * @hidden
7
8
  */
8
9
  var PdfBorders = /** @class */ (function () {
9
10
  // Constructor
@@ -133,6 +134,7 @@ var PdfBorders = /** @class */ (function () {
133
134
  return PdfBorders;
134
135
  }());
135
136
  export { PdfBorders };
137
+ /** @hidden */
136
138
  var PdfPaddings = /** @class */ (function () {
137
139
  function PdfPaddings(left, right, top, bottom) {
138
140
  /**
@@ -3,9 +3,7 @@ import { PdfTreeGrid } from '../pdf-treegrid';
3
3
  import { RectangleF } from '@syncfusion/ej2-pdf-export';
4
4
  import { PdfGraphics } from '@syncfusion/ej2-pdf-export';
5
5
  import { PdfStringFormat, PdfStringLayoutResult } from '@syncfusion/ej2-pdf-export';
6
- /**
7
- *
8
- */
6
+ /**@hidden*/
9
7
  export declare class PdfTreeGridCell {
10
8
  /**
11
9
  * Gets or sets the parent `row`.
@@ -3,9 +3,7 @@ import { isNullOrUndefined } from '@syncfusion/ej2-base';
3
3
  import { RectangleF, PdfTextAlignment, PdfBorderOverlapStyle, PointF, PdfDashStyle, PdfLineCap, PdfSolidBrush, PdfStandardFont } from '@syncfusion/ej2-pdf-export';
4
4
  import { SizeF, PdfFontStyle } from '@syncfusion/ej2-pdf-export';
5
5
  import { PdfStringFormat, PdfStringLayouter } from '@syncfusion/ej2-pdf-export';
6
- /**
7
- *
8
- */
6
+ /**@hidden*/
9
7
  var PdfTreeGridCell = /** @class */ (function () {
10
8
  function PdfTreeGridCell(row) {
11
9
  this.cellWidth = 0;
@@ -102,8 +102,8 @@ export declare class Column {
102
102
  /**
103
103
  * It is used to change display value with the given format and does not affect the original data.
104
104
  * Gets the format from the user which can be standard or custom
105
- * [`number`](../../../common/internationalization/#number-formatting)
106
- * and [`date`](../../../common/internationalization/#formatting) formats.
105
+ * [`number`](https://ej2.syncfusion.com/documentation/common/internationalization/#number-formatting)
106
+ * and [`date`](https://ej2.syncfusion.com/documentation/common/internationalization/#date-formatting) formats.
107
107
  *
108
108
  * @default null
109
109
  * @aspType string
@@ -303,8 +303,8 @@ export interface ColumnModel {
303
303
  /**
304
304
  * It is used to change display value with the given format and does not affect the original data.
305
305
  * Gets the format from the user which can be standard or custom
306
- * [`number`](../../../common/internationalization/#number-formatting)
307
- * and [`date`](../../../common/internationalization/#formatting) formats.
306
+ * [`number`](https://ej2.syncfusion.com/documentation/common/internationalization/#number-formatting)
307
+ * and [`date`](https://ej2.syncfusion.com/documentation/common/internationalization/#date-formatting) formats.
308
308
  *
309
309
  * @default null
310
310
  * @aspType string
@@ -1412,7 +1412,6 @@ var ChartRows = /** @class */ (function (_super) {
1412
1412
  }
1413
1413
  if (this.templateData.hasChildRecords) {
1414
1414
  var parentTaskbarTemplateNode = this.getParentTaskbarNode(i, taskbarContainerNode);
1415
- var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
1416
1415
  if (!this.templateData.ganttProperties.isAutoSchedule) {
1417
1416
  var manualTaskbar = this.getManualTaskbar();
1418
1417
  if (!isNullOrUndefined(manualTaskbar[0])) {
@@ -1427,9 +1426,6 @@ var ChartRows = /** @class */ (function (_super) {
1427
1426
  if (parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {
1428
1427
  taskbarContainerNode[0].appendChild([].slice.call(parentTaskbarTemplateNode)[0]);
1429
1428
  }
1430
- else if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
1431
- taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
1432
- }
1433
1429
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
1434
1430
  this.templateData.ganttProperties.baselineEndDate) {
1435
1431
  taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
@@ -1939,7 +1935,9 @@ var ChartRows = /** @class */ (function (_super) {
1939
1935
  this.parent.ganttChartModule.tempNextElement = null;
1940
1936
  }
1941
1937
  var row = this.parent.treeGrid.grid.getRowObjectFromUID(this.parent.treeGrid.grid.getDataRows()[index].getAttribute('data-uid'));
1942
- row.data = data;
1938
+ if (!isNullOrUndefined(row)) {
1939
+ row.data = data;
1940
+ }
1943
1941
  }
1944
1942
  };
1945
1943
  ChartRows.prototype.getResourceParent = function (record) {
@@ -168,12 +168,14 @@ var NonWorkingDay = /** @class */ (function () {
168
168
  };
169
169
  NonWorkingDay.prototype.updateHolidayLabelHeight = function () {
170
170
  var height = this.parent.getContentHeight();
171
+ var gantttable = document.getElementById("ganttContainer");
171
172
  // eslint-disable-next-line
172
173
  var toolbarHeight = 0;
173
174
  if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {
174
175
  toolbarHeight = this.parent.toolbarModule.element.offsetHeight;
175
176
  }
176
- var viewportHeight = this.parent.ganttHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;
177
+ var viewportHeight = (this.parent.height === 'auto') ? gantttable.offsetHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight :
178
+ this.parent.ganttHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;
177
179
  var top = (viewportHeight < height) ? viewportHeight / 2 : height / 2;
178
180
  var labels = this.holidayContainer.querySelectorAll('.' + cls.holidayLabel);
179
181
  for (var i = 0; i < labels.length; i++) {
@@ -156,7 +156,10 @@ var Timeline = /** @class */ (function () {
156
156
  */
157
157
  Timeline.prototype.changeTimelineSettings = function (newTimeline) {
158
158
  var _this = this;
159
- if (!this.isZoomIn) {
159
+ if (this.isZoomToFit) {
160
+ this.isSingleTier = this.customTimelineSettings.topTier.unit === 'None' || this.customTimelineSettings.bottomTier.unit === 'None' ? true : false;
161
+ }
162
+ else if (!this.isZoomIn) {
160
163
  this.isSingleTier = newTimeline.topTier.unit === 'None' || newTimeline.bottomTier.unit === 'None' ? true : false;
161
164
  }
162
165
  var skipProperty = this.isSingleTier ?
@@ -1275,6 +1275,7 @@
1275
1275
  outline: 1px solid;
1276
1276
  outline-offset: 2px;
1277
1277
  }
1278
+
1278
1279
  .e-gantt-dialog .e-tab .e-tab-header {
1279
1280
  padding-left: 12px;
1280
1281
  }
@@ -1418,6 +1418,7 @@
1418
1418
  outline: 1px solid;
1419
1419
  outline-offset: 2px;
1420
1420
  }
1421
+
1421
1422
  .e-gantt-dialog .e-tab .e-tab-header {
1422
1423
  padding-left: 12px;
1423
1424
  }
@@ -1602,6 +1602,7 @@
1602
1602
  outline: 1px solid;
1603
1603
  outline-offset: 2px;
1604
1604
  }
1605
+
1605
1606
  .e-gantt-dialog .e-tab .e-tab-header {
1606
1607
  padding-left: 12px;
1607
1608
  }
@@ -1318,6 +1318,7 @@
1318
1318
  outline: 1px solid;
1319
1319
  outline-offset: 2px;
1320
1320
  }
1321
+
1321
1322
  .e-gantt-dialog .e-tab .e-tab-header {
1322
1323
  padding-left: 12px;
1323
1324
  }
@@ -1318,6 +1318,7 @@
1318
1318
  outline: 1px solid;
1319
1319
  outline-offset: 2px;
1320
1320
  }
1321
+
1321
1322
  .e-gantt-dialog .e-tab .e-tab-header {
1322
1323
  padding-left: 12px;
1323
1324
  }
@@ -1230,6 +1230,7 @@
1230
1230
  outline: 1px solid;
1231
1231
  outline-offset: 2px;
1232
1232
  }
1233
+
1233
1234
  .e-gantt-dialog .e-tab .e-tab-header {
1234
1235
  padding-left: 13px;
1235
1236
  }
package/styles/fabric.css CHANGED
@@ -1228,6 +1228,7 @@
1228
1228
  outline: 1px solid;
1229
1229
  outline-offset: 2px;
1230
1230
  }
1231
+
1231
1232
  .e-gantt-dialog .e-tab .e-tab-header {
1232
1233
  padding-left: 13px;
1233
1234
  }
@@ -1301,9 +1301,6 @@
1301
1301
  outline: 1px solid;
1302
1302
  outline-offset: 2px;
1303
1303
  }
1304
- .e-gantt .e-dialog.e-filter-popup .e-footer-content {
1305
- padding-top: 0;
1306
- }
1307
1304
 
1308
1305
  .e-gantt-dialog .e-tab .e-tab-header {
1309
1306
  padding-left: 0px;
package/styles/fluent.css CHANGED
@@ -1301,9 +1301,6 @@
1301
1301
  outline: 1px solid;
1302
1302
  outline-offset: 2px;
1303
1303
  }
1304
- .e-gantt .e-dialog.e-filter-popup .e-footer-content {
1305
- padding-top: 0;
1306
- }
1307
1304
 
1308
1305
  .e-gantt-dialog .e-tab .e-tab-header {
1309
1306
  padding-left: 0px;
@@ -1320,14 +1320,6 @@
1320
1320
  outline-offset: 2px;
1321
1321
  }
1322
1322
  }
1323
- .e-dialog.e-filter-popup {
1324
- .e-footer-content {
1325
-
1326
- @if ($skin-name =='FluentUI') {
1327
- padding-top: 0;
1328
- }
1329
- }
1330
- }
1331
1323
  }
1332
1324
 
1333
1325
  .e-gantt-dialog .e-tab .e-tab-header {