@syncfusion/ej2-gantt 21.1.38 → 21.2.3

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 (57) hide show
  1. package/CHANGELOG.md +24 -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 +67 -24
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +68 -24
  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 +20 -23
  13. package/src/gantt/actions/context-menu.js +1 -1
  14. package/src/gantt/actions/dependency.js +1 -1
  15. package/src/gantt/actions/dialog-edit.js +1 -0
  16. package/src/gantt/actions/edit.js +8 -2
  17. package/src/gantt/actions/taskbar-edit.d.ts +1 -1
  18. package/src/gantt/actions/taskbar-edit.js +2 -2
  19. package/src/gantt/base/date-processor.js +2 -2
  20. package/src/gantt/base/gantt.d.ts +1 -0
  21. package/src/gantt/base/gantt.js +3 -1
  22. package/src/gantt/base/task-processor.d.ts +1 -1
  23. package/src/gantt/base/task-processor.js +31 -6
  24. package/src/gantt/renderer/chart-rows.js +16 -8
  25. package/src/gantt/renderer/nonworking-day.js +3 -1
  26. package/styles/bootstrap-dark.css +4 -0
  27. package/styles/bootstrap.css +4 -0
  28. package/styles/bootstrap4.css +4 -0
  29. package/styles/bootstrap5-dark.css +4 -0
  30. package/styles/bootstrap5.css +4 -0
  31. package/styles/fabric-dark.css +4 -0
  32. package/styles/fabric.css +4 -0
  33. package/styles/fluent-dark.css +3 -3
  34. package/styles/fluent.css +3 -3
  35. package/styles/gantt/_layout.scss +0 -8
  36. package/styles/gantt/_theme.scss +4 -0
  37. package/styles/gantt/bootstrap-dark.css +4 -0
  38. package/styles/gantt/bootstrap.css +4 -0
  39. package/styles/gantt/bootstrap4.css +4 -0
  40. package/styles/gantt/bootstrap5-dark.css +4 -0
  41. package/styles/gantt/bootstrap5.css +4 -0
  42. package/styles/gantt/fabric-dark.css +4 -0
  43. package/styles/gantt/fabric.css +4 -0
  44. package/styles/gantt/fluent-dark.css +3 -3
  45. package/styles/gantt/fluent.css +3 -3
  46. package/styles/gantt/highcontrast-light.css +4 -0
  47. package/styles/gantt/highcontrast.css +4 -0
  48. package/styles/gantt/material-dark.css +4 -0
  49. package/styles/gantt/material.css +4 -0
  50. package/styles/gantt/tailwind-dark.css +4 -0
  51. package/styles/gantt/tailwind.css +4 -0
  52. package/styles/highcontrast-light.css +4 -0
  53. package/styles/highcontrast.css +4 -0
  54. package/styles/material-dark.css +4 -0
  55. package/styles/material.css +4 -0
  56. package/styles/tailwind-dark.css +4 -0
  57. package/styles/tailwind.css +4 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 21.1.38
3
+ * version : 21.2.3
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.37",
3
+ "_id": "@syncfusion/ej2-gantt@21.1.41",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-ltwvVxBJuPDzCUcpSIWI3K3ZvPOjrOmXSmrL3sqxHQ1aqzTEQIleyCvqPqGPbo/igywXisQ4X7fz7r/EuGafnA==",
5
+ "_integrity": "sha512-HqNK10wkFFpZ17YU9HVZPZmaEL+xsJRC8P6Kr0FepcgNxQcy8FNQqIDPL4KsvjICXh4IMuwyyFdljZtV4TJFfA==",
6
6
  "_location": "/@syncfusion/ej2-gantt",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -18,13 +18,10 @@
18
18
  },
19
19
  "_requiredBy": [
20
20
  "/",
21
- "/@syncfusion/ej2",
22
- "/@syncfusion/ej2-angular-gantt",
23
- "/@syncfusion/ej2-react-gantt",
24
- "/@syncfusion/ej2-vue-gantt"
21
+ "/@syncfusion/ej2"
25
22
  ],
26
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-gantt/-/ej2-gantt-21.1.37.tgz",
27
- "_shasum": "3da271adaaa8c7208fbd9a3c011697c0ad7bca71",
23
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-gantt/-/ej2-gantt-21.1.41.tgz",
24
+ "_shasum": "047e11b79fe94cc870713b4526282ab7a50f3d5e",
28
25
  "_spec": "@syncfusion/ej2-gantt@*",
29
26
  "_where": "/jenkins/workspace/elease-automation_release_21.1.1/packages/included",
30
27
  "author": {
@@ -35,20 +32,20 @@
35
32
  },
36
33
  "bundleDependencies": false,
37
34
  "dependencies": {
38
- "@syncfusion/ej2-base": "~21.1.38",
39
- "@syncfusion/ej2-buttons": "~21.1.37",
40
- "@syncfusion/ej2-calendars": "~21.1.38",
41
- "@syncfusion/ej2-data": "~21.1.38",
42
- "@syncfusion/ej2-dropdowns": "~21.1.38",
43
- "@syncfusion/ej2-grids": "~21.1.38",
44
- "@syncfusion/ej2-inputs": "~21.1.38",
45
- "@syncfusion/ej2-layouts": "~21.1.37",
46
- "@syncfusion/ej2-lists": "~21.1.37",
47
- "@syncfusion/ej2-navigations": "~21.1.38",
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.38"
35
+ "@syncfusion/ej2-base": "~21.2.3",
36
+ "@syncfusion/ej2-buttons": "~21.2.3",
37
+ "@syncfusion/ej2-calendars": "~21.2.3",
38
+ "@syncfusion/ej2-data": "~21.2.3",
39
+ "@syncfusion/ej2-dropdowns": "~21.2.3",
40
+ "@syncfusion/ej2-grids": "~21.2.3",
41
+ "@syncfusion/ej2-inputs": "~21.2.3",
42
+ "@syncfusion/ej2-layouts": "~21.2.3",
43
+ "@syncfusion/ej2-lists": "~21.2.3",
44
+ "@syncfusion/ej2-navigations": "~21.2.3",
45
+ "@syncfusion/ej2-notifications": "~21.2.3",
46
+ "@syncfusion/ej2-popups": "~21.2.3",
47
+ "@syncfusion/ej2-richtexteditor": "~21.2.3",
48
+ "@syncfusion/ej2-treegrid": "~21.2.3"
52
49
  },
53
50
  "deprecated": false,
54
51
  "description": "Essential JS 2 Gantt Component",
@@ -73,6 +70,6 @@
73
70
  "url": "git+https://github.com/syncfusion/ej2-gantt.git"
74
71
  },
75
72
  "typings": "index.d.ts",
76
- "version": "21.1.38",
73
+ "version": "21.2.3",
77
74
  "sideEffects": false
78
75
  }
@@ -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) {
@@ -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);
@@ -850,7 +850,7 @@ var Edit = /** @class */ (function () {
850
850
  this.parent.predecessorModule.isValidatedParentTaskID = '';
851
851
  }
852
852
  if (this.parent.allowParentDependency && ganttRecord.hasChildRecords && this.parent.previousRecords[ganttRecord.uniqueID].ganttProperties.startDate &&
853
- (args.action === "DrawConnectorLine")) {
853
+ (args.action === "DrawConnectorLine") || (args.action === "DialogEditing")) {
854
854
  this.updateChildItems(ganttRecord);
855
855
  }
856
856
  this.updateParentItemOnEditing();
@@ -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
  }
@@ -228,7 +228,7 @@ export declare class TaskbarEdit extends DateProcessor {
228
228
  * @returns {Date} .
229
229
  * @private
230
230
  */
231
- getDateByLeft(left: number, isMilestone?: boolean, property?: any): Date;
231
+ getDateByLeft(left: number, isMilestone?: boolean, property?: ITaskData): Date;
232
232
  /**
233
233
  * To set item position.
234
234
  *
@@ -1370,7 +1370,7 @@ var TaskbarEdit = /** @class */ (function (_super) {
1370
1370
  : ganttRecord.left;
1371
1371
  var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :
1372
1372
  this.parent.timelineModule.topTier;
1373
- var remainingContribution = (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(left), 1, 'Day') / (1000 * 60 * 60 * 24)));
1373
+ var remainingContribution = (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(left, isNullOrUndefined(ganttRecord) ? ganttRecord.isMilestone : null, ganttRecord), 1, 'Day') / (1000 * 60 * 60 * 24)));
1374
1374
  var remainDays = this.parent.perDayWidth - (this.parent.perDayWidth / remainingContribution);
1375
1375
  var remainDaysInDecimal = remainDays / this.parent.perDayWidth;
1376
1376
  if (isRoundOff === undefined) {
@@ -1418,7 +1418,7 @@ var TaskbarEdit = /** @class */ (function (_super) {
1418
1418
  var milliSecondsPerPixel = (24 * 60 * 60 * 1000) / this.parent.perDayWidth;
1419
1419
  pStartDate.setTime(pStartDate.getTime() + (left * milliSecondsPerPixel));
1420
1420
  /* To render the milestone in proper date while editing */
1421
- if (isMilestone) {
1421
+ if (isMilestone && !isNullOrUndefined(property.predecessor) && property.predecessor.length > 0) {
1422
1422
  pStartDate.setDate(pStartDate.getDate() - 1);
1423
1423
  this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, pStartDate);
1424
1424
  pStartDate = this.parent.dateValidationModule.checkStartDate(pStartDate, property, true);
@@ -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 {
@@ -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;
@@ -728,6 +728,9 @@ var Gantt = /** @class */ (function (_super) {
728
728
  * @private
729
729
  */
730
730
  Gantt.prototype.renderGantt = function (isChange) {
731
+ if (isChange) {
732
+ this.isFromOnPropertyChange = isChange;
733
+ }
731
734
  // predecessor calculation
732
735
  if (this.predecessorModule && this.taskFields.dependency) {
733
736
  this.predecessorModule['parentIds'] = [];
@@ -742,7 +745,6 @@ var Gantt = /** @class */ (function (_super) {
742
745
  this.timelineModule.validateTimelineProp();
743
746
  }
744
747
  if (isChange) {
745
- this.isFromOnPropertyChange = isChange;
746
748
  if (this.enableValidation) {
747
749
  this.dataOperation.updateGanttData();
748
750
  }
@@ -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
  /**
@@ -2325,13 +2350,13 @@ var TaskProcessor = /** @class */ (function (_super) {
2325
2350
  minStartDate.getTime() === maxEndDate.getTime() ? true : false;
2326
2351
  if (this.compareDates(previousStartDate, minStartDate) !== 0) {
2327
2352
  this.parent.setRecordValue(ganttProp.isAutoSchedule ? 'startDate' : 'autoStartDate', minStartDate, parentData.ganttProperties, true);
2328
- if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone) {
2353
+ if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone && (parentData.hasChildRecords && parentData.ganttProperties.isAutoSchedule && this.parent.editModule.taskbarEditModule.taskbarEditedArgs.action !== "TaskbarEditing")) {
2329
2354
  this.parent.setRecordValue('startDate', minStartDate, parentData.ganttProperties, true);
2330
2355
  }
2331
2356
  }
2332
2357
  if (this.compareDates(previousEndDate, maxEndDate) !== 0) {
2333
2358
  this.parent.setRecordValue(ganttProp.isAutoSchedule ? 'endDate' : 'autoEndDate', maxEndDate, parentData.ganttProperties, true);
2334
- if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone) {
2359
+ if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone && (parentData.hasChildRecords && parentData.ganttProperties.isAutoSchedule && this.parent.editModule.taskbarEditModule.taskbarEditedArgs.action !== "TaskbarEditing")) {
2335
2360
  this.parent.setRecordValue('endDate', maxEndDate, parentData.ganttProperties, true);
2336
2361
  }
2337
2362
  }
@@ -823,7 +823,7 @@ var ChartRows = /** @class */ (function (_super) {
823
823
  '<div class="' + cls.manualParentMilestoneBottom + '" style="top:' +
824
824
  (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
825
825
  this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
826
- return this.createDivElement(data.ganttProperties.width === 0 ? milestoneTemplate : !data.ganttProperties.isMilestone ? template : null);
826
+ return this.createDivElement(data.ganttProperties.duration !== 0 ? template : milestoneTemplate);
827
827
  };
828
828
  /**
829
829
  * To get parent taskbar node.
@@ -1019,7 +1019,7 @@ var ChartRows = /** @class */ (function (_super) {
1019
1019
  var template = '<div class="' + cls.taskBarMainContainer + ' ' +
1020
1020
  this.parent.getUnscheduledTaskClass(data.ganttProperties) + ' ' +
1021
1021
  ((data.ganttProperties.cssClass) ? data.ganttProperties.cssClass : '') + '" ' +
1022
- ' tabindex="-1" role="term" style="' + ((data.ganttProperties.isMilestone && !manualParent) ?
1022
+ ' tabindex="-1" role="term" style="' + ((data.ganttProperties.isMilestone && !manualParent && !(data.hasChildRecords && !data.ganttProperties.isAutoSchedule)) ?
1023
1023
  ('width:' + this.milestoneHeight + 'px;height:' +
1024
1024
  this.milestoneHeight + 'px;margin-top:' + this.milestoneMarginTop + 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.left -
1025
1025
  (this.milestoneHeight / 2)) + 'px;') : ('width:' + data.ganttProperties.width +
@@ -1314,6 +1314,7 @@ var ChartRows = /** @class */ (function (_super) {
1314
1314
  * @private
1315
1315
  */
1316
1316
  ChartRows.prototype.createTaskbarTemplate = function () {
1317
+ var _a;
1317
1318
  var trs = [].slice.call(this.ganttChartTableBody.querySelectorAll('tr'));
1318
1319
  this.ganttChartTableBody.innerHTML = '';
1319
1320
  var collapsedResourceRecord = [];
@@ -1344,6 +1345,10 @@ var ChartRows = /** @class */ (function (_super) {
1344
1345
  }
1345
1346
  }
1346
1347
  else {
1348
+ var dupChartBody = void 0;
1349
+ dupChartBody = createElement('tbody', {
1350
+ id: this.parent.element.id + 'GanttTaskTableBody'
1351
+ });
1347
1352
  for (var i = 0; i < this.parent.currentViewData.length; i++) {
1348
1353
  var tempTemplateData = this.parent.currentViewData[i];
1349
1354
  if (this.parent.viewType === 'ResourceView') {
@@ -1356,9 +1361,9 @@ var ChartRows = /** @class */ (function (_super) {
1356
1361
  }
1357
1362
  }
1358
1363
  var tRow = this.getGanttChartRow(i, tempTemplateData);
1359
- this.ganttChartTableBody.appendChild(tRow);
1364
+ dupChartBody.appendChild(tRow);
1360
1365
  if (this.parent.enableImmutableMode) {
1361
- this.refreshedTr.push(this.ganttChartTableBody.querySelectorAll('tr')[i]);
1366
+ this.refreshedTr.push(dupChartBody.querySelectorAll('tr')[i]);
1362
1367
  this.refreshedData.push(this.parent.currentViewData[i]);
1363
1368
  }
1364
1369
  // To maintain selection when virtualization is enabled
@@ -1366,6 +1371,7 @@ var ChartRows = /** @class */ (function (_super) {
1366
1371
  this.parent.selectionModule.maintainSelectedRecords(parseInt(tRow.getAttribute('aria-rowindex'), 10));
1367
1372
  }
1368
1373
  }
1374
+ (_a = this.ganttChartTableBody).replaceChildren.apply(_a, dupChartBody.childNodes);
1369
1375
  }
1370
1376
  this.parent.renderTemplates();
1371
1377
  this.triggerQueryTaskbarInfo();
@@ -1412,7 +1418,6 @@ var ChartRows = /** @class */ (function (_super) {
1412
1418
  }
1413
1419
  if (this.templateData.hasChildRecords) {
1414
1420
  var parentTaskbarTemplateNode = this.getParentTaskbarNode(i, taskbarContainerNode);
1415
- var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
1416
1421
  if (!this.templateData.ganttProperties.isAutoSchedule) {
1417
1422
  var manualTaskbar = this.getManualTaskbar();
1418
1423
  if (!isNullOrUndefined(manualTaskbar[0])) {
@@ -1424,11 +1429,14 @@ var ChartRows = /** @class */ (function (_super) {
1424
1429
  taskbarContainerNode[0].appendChild([].slice.call(manualTaskbar)[0]);
1425
1430
  }
1426
1431
  }
1427
- if (parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {
1432
+ if ((this.templateData.ganttProperties.autoDuration !== 0) && !this.templateData.ganttProperties.isMilestone && parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {
1428
1433
  taskbarContainerNode[0].appendChild([].slice.call(parentTaskbarTemplateNode)[0]);
1429
1434
  }
1430
- else if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
1431
- taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
1435
+ else if ((this.templateData.ganttProperties.duration === 0 && this.templateData.ganttProperties.isMilestone && this.templateData.ganttProperties.isAutoSchedule)) {
1436
+ var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
1437
+ if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
1438
+ taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
1439
+ }
1432
1440
  }
1433
1441
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
1434
1442
  this.templateData.ganttProperties.baselineEndDate) {
@@ -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++) {
@@ -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
  }
@@ -1553,6 +1554,9 @@
1553
1554
  border-color: #484848;
1554
1555
  border-radius: 4px;
1555
1556
  }
1557
+ .e-gantt .e-grid .e-spinner-pane {
1558
+ display: none;
1559
+ }
1556
1560
  .e-gantt .e-cloneproperties.e-draganddrop {
1557
1561
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
1558
1562
  opacity: 0.95;
@@ -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
  }
@@ -1695,6 +1696,9 @@
1695
1696
  border-color: #ddd;
1696
1697
  border-radius: 4px;
1697
1698
  }
1699
+ .e-gantt .e-grid .e-spinner-pane {
1700
+ display: none;
1701
+ }
1698
1702
  .e-gantt .e-cloneproperties.e-draganddrop {
1699
1703
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1700
1704
  opacity: 0.95;
@@ -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
  }
@@ -1879,6 +1880,9 @@
1879
1880
  border-color: #dee2e6;
1880
1881
  border-radius: 0px;
1881
1882
  }
1883
+ .e-gantt .e-grid .e-spinner-pane {
1884
+ display: none;
1885
+ }
1882
1886
  .e-gantt .e-cloneproperties.e-draganddrop {
1883
1887
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1884
1888
  opacity: 0.95;
@@ -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
  }
@@ -1595,6 +1596,9 @@
1595
1596
  border-color: #444c54;
1596
1597
  border-radius: 0px;
1597
1598
  }
1599
+ .e-gantt .e-grid .e-spinner-pane {
1600
+ display: none;
1601
+ }
1598
1602
  .e-gantt .e-cloneproperties.e-draganddrop {
1599
1603
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1600
1604
  opacity: 0.95;
@@ -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
  }
@@ -1595,6 +1596,9 @@
1595
1596
  border-color: #dee2e6;
1596
1597
  border-radius: 0px;
1597
1598
  }
1599
+ .e-gantt .e-grid .e-spinner-pane {
1600
+ display: none;
1601
+ }
1598
1602
  .e-gantt .e-cloneproperties.e-draganddrop {
1599
1603
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1600
1604
  opacity: 0.95;
@@ -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
  }
@@ -1507,6 +1508,9 @@
1507
1508
  border-color: #414040;
1508
1509
  border-radius: 0px;
1509
1510
  }
1511
+ .e-gantt .e-grid .e-spinner-pane {
1512
+ display: none;
1513
+ }
1510
1514
  .e-gantt .e-cloneproperties.e-draganddrop {
1511
1515
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.26);
1512
1516
  opacity: 0.95;
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
  }
@@ -1505,6 +1506,9 @@
1505
1506
  border-color: #eaeaea;
1506
1507
  border-radius: 0px;
1507
1508
  }
1509
+ .e-gantt .e-grid .e-spinner-pane {
1510
+ display: none;
1511
+ }
1508
1512
  .e-gantt .e-cloneproperties.e-draganddrop {
1509
1513
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
1510
1514
  opacity: 0.95;
@@ -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;
@@ -1586,6 +1583,9 @@
1586
1583
  border-color: #292827;
1587
1584
  border-radius: 0px;
1588
1585
  }
1586
+ .e-gantt .e-grid .e-spinner-pane {
1587
+ display: none;
1588
+ }
1589
1589
  .e-gantt .e-cloneproperties.e-draganddrop {
1590
1590
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1591
1591
  opacity: 0.95;
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;
@@ -1586,6 +1583,9 @@
1586
1583
  border-color: #edebe9;
1587
1584
  border-radius: 0px;
1588
1585
  }
1586
+ .e-gantt .e-grid .e-spinner-pane {
1587
+ display: none;
1588
+ }
1589
1589
  .e-gantt .e-cloneproperties.e-draganddrop {
1590
1590
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1591
1591
  opacity: 0.95;
@@ -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 {
@@ -9,6 +9,10 @@
9
9
  border-radius: $gantt-header-border-radius;
10
10
  }
11
11
 
12
+ .e-grid .e-spinner-pane {
13
+ display: none;
14
+ }
15
+
12
16
  .e-cloneproperties.e-draganddrop {
13
17
  box-shadow: $gantt-clone-prop-box-shadow;
14
18
  opacity: .95;
@@ -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
  }
@@ -1553,6 +1554,9 @@
1553
1554
  border-color: #484848;
1554
1555
  border-radius: 4px;
1555
1556
  }
1557
+ .e-gantt .e-grid .e-spinner-pane {
1558
+ display: none;
1559
+ }
1556
1560
  .e-gantt .e-cloneproperties.e-draganddrop {
1557
1561
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
1558
1562
  opacity: 0.95;
@@ -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
  }
@@ -1695,6 +1696,9 @@
1695
1696
  border-color: #ddd;
1696
1697
  border-radius: 4px;
1697
1698
  }
1699
+ .e-gantt .e-grid .e-spinner-pane {
1700
+ display: none;
1701
+ }
1698
1702
  .e-gantt .e-cloneproperties.e-draganddrop {
1699
1703
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
1700
1704
  opacity: 0.95;