@syncfusion/ej2-gantt 19.4.47 → 19.4.53

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 (55) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +1 -1
  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 +181 -33
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +181 -33
  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 +18 -18
  13. package/src/gantt/actions/cell-edit.d.ts +1 -0
  14. package/src/gantt/actions/cell-edit.js +2 -0
  15. package/src/gantt/actions/dialog-edit.js +18 -2
  16. package/src/gantt/actions/edit.d.ts +2 -0
  17. package/src/gantt/actions/edit.js +97 -14
  18. package/src/gantt/actions/keyboard.js +1 -1
  19. package/src/gantt/base/tree-grid.js +4 -0
  20. package/src/gantt/renderer/chart-rows.js +28 -10
  21. package/src/gantt/renderer/timeline.d.ts +1 -0
  22. package/src/gantt/renderer/timeline.js +31 -6
  23. package/styles/bootstrap-dark.css +6 -3
  24. package/styles/bootstrap.css +6 -3
  25. package/styles/bootstrap4.css +6 -3
  26. package/styles/bootstrap5-dark.css +4 -1
  27. package/styles/bootstrap5.css +4 -1
  28. package/styles/fabric-dark.css +3 -0
  29. package/styles/fabric.css +3 -0
  30. package/styles/gantt/_bootstrap-dark-definition.scss +3 -3
  31. package/styles/gantt/_bootstrap-definition.scss +3 -3
  32. package/styles/gantt/_bootstrap4-definition.scss +3 -3
  33. package/styles/gantt/_bootstrap5-definition.scss +1 -1
  34. package/styles/gantt/_fluent-definition.scss +1 -1
  35. package/styles/gantt/_layout.scss +3 -0
  36. package/styles/gantt/_tailwind-definition.scss +3 -3
  37. package/styles/gantt/bootstrap-dark.css +6 -3
  38. package/styles/gantt/bootstrap.css +6 -3
  39. package/styles/gantt/bootstrap4.css +6 -3
  40. package/styles/gantt/bootstrap5-dark.css +4 -1
  41. package/styles/gantt/bootstrap5.css +4 -1
  42. package/styles/gantt/fabric-dark.css +3 -0
  43. package/styles/gantt/fabric.css +3 -0
  44. package/styles/gantt/highcontrast-light.css +3 -0
  45. package/styles/gantt/highcontrast.css +3 -0
  46. package/styles/gantt/material-dark.css +3 -0
  47. package/styles/gantt/material.css +3 -0
  48. package/styles/gantt/tailwind-dark.css +6 -3
  49. package/styles/gantt/tailwind.css +6 -3
  50. package/styles/highcontrast-light.css +3 -0
  51. package/styles/highcontrast.css +3 -0
  52. package/styles/material-dark.css +3 -0
  53. package/styles/material.css +3 -0
  54. package/styles/tailwind-dark.css +6 -3
  55. package/styles/tailwind.css +6 -3
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 19.4.47
3
+ * version : 19.4.53
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@19.4.43",
3
+ "_id": "@syncfusion/ej2-gantt@19.4.52",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-BMyuuEwg7q+hgA+tRyCGM4uWIzzy1m+HGTi//dBo2ZwFCY9zmbGWFh0c7LGXt2nyvH43r4bR3TvsmHwNIVkqzw==",
5
+ "_integrity": "sha512-jNC6nbozt7RvFShA8eRsR5ahAH3LziEQ5nDgjp4syJpylbgisOzYbuITVGBrTANxWvQIgnF47/JoJpPlOuXcAA==",
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": "http://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-gantt/-/ej2-gantt-19.4.43.tgz",
27
- "_shasum": "166efda94ba1b891df35023e083b78e6a5128012",
26
+ "_resolved": "http://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-gantt/-/ej2-gantt-19.4.52.tgz",
27
+ "_shasum": "6b4be2ceec02c9e7cc2e3a7fcf7705f099b12f04",
28
28
  "_spec": "@syncfusion/ej2-gantt@*",
29
29
  "_where": "/jenkins/workspace/automation_release_19.1.0.1-ZPMUBNQ6AUYH6YGEFBPVYMEQLRRW2SLD4XCZ6GATNZJFYJ3RIAOA/packages/included",
30
30
  "author": {
@@ -35,19 +35,19 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~19.4.42",
39
- "@syncfusion/ej2-buttons": "~19.4.42",
40
- "@syncfusion/ej2-calendars": "~19.4.42",
41
- "@syncfusion/ej2-data": "~19.4.47",
42
- "@syncfusion/ej2-dropdowns": "~19.4.47",
43
- "@syncfusion/ej2-grids": "~19.4.47",
44
- "@syncfusion/ej2-inputs": "~19.4.47",
45
- "@syncfusion/ej2-layouts": "~19.4.47",
46
- "@syncfusion/ej2-lists": "~19.4.38",
47
- "@syncfusion/ej2-navigations": "~19.4.47",
48
- "@syncfusion/ej2-popups": "~19.4.47",
49
- "@syncfusion/ej2-richtexteditor": "~19.4.47",
50
- "@syncfusion/ej2-treegrid": "~19.4.47"
38
+ "@syncfusion/ej2-base": "~19.4.52",
39
+ "@syncfusion/ej2-buttons": "~19.4.53",
40
+ "@syncfusion/ej2-calendars": "~19.4.52",
41
+ "@syncfusion/ej2-data": "~19.4.52",
42
+ "@syncfusion/ej2-dropdowns": "~19.4.52",
43
+ "@syncfusion/ej2-grids": "~19.4.53",
44
+ "@syncfusion/ej2-inputs": "~19.4.52",
45
+ "@syncfusion/ej2-layouts": "~19.4.52",
46
+ "@syncfusion/ej2-lists": "~19.4.52",
47
+ "@syncfusion/ej2-navigations": "~19.4.53",
48
+ "@syncfusion/ej2-popups": "~19.4.53",
49
+ "@syncfusion/ej2-richtexteditor": "~19.4.53",
50
+ "@syncfusion/ej2-treegrid": "~19.4.52"
51
51
  },
52
52
  "deprecated": false,
53
53
  "description": "Essential JS 2 Gantt Component",
@@ -75,6 +75,6 @@
75
75
  "url": "git+https://github.com/syncfusion/ej2-gantt.git"
76
76
  },
77
77
  "typings": "index.d.ts",
78
- "version": "19.4.47",
78
+ "version": "19.4.53",
79
79
  "sideEffects": false
80
80
  }
@@ -10,6 +10,7 @@ export declare class CellEdit {
10
10
  * @private
11
11
  */
12
12
  isCellEdit: boolean;
13
+ isResourceCellEdited: boolean;
13
14
  editedColumn: ColumnModel;
14
15
  constructor(ganttObj: Gantt);
15
16
  /**
@@ -10,6 +10,7 @@ var CellEdit = /** @class */ (function () {
10
10
  * @private
11
11
  */
12
12
  this.isCellEdit = false;
13
+ this.isResourceCellEdited = false;
13
14
  this.parent = ganttObj;
14
15
  this.bindTreeGridProperties();
15
16
  }
@@ -439,6 +440,7 @@ var CellEdit = /** @class */ (function () {
439
440
  var resourceSettings = this.parent.resourceFields;
440
441
  var editedResourceId = editedObj[this.parent.taskFields.resourceInfo];
441
442
  if (editedResourceId) {
443
+ this.isResourceCellEdited = true;
442
444
  var tempResourceInfo = this.parent.dataOperation.setResourceInfo(editedObj);
443
445
  var editedResouceLength = tempResourceInfo.length;
444
446
  var previousResource = previousData.ganttProperties.resourceInfo;
@@ -1103,7 +1103,15 @@ var DialogEdit = /** @class */ (function () {
1103
1103
  field: fields[i], headerText: this_1.localeObj.getConstant(fields[i]), editType: 'stringedit', width: '200px',
1104
1104
  edit: {
1105
1105
  write: function (args) {
1106
- var datePickerModel = _this.beforeOpenArgs[generalTabString][_this.parent.taskFields[fields[i]]];
1106
+ var datePickerModel;
1107
+ if (!isNullOrUndefined(_this.beforeOpenArgs[generalTabString])) {
1108
+ datePickerModel = _this.beforeOpenArgs[generalTabString][_this.parent.taskFields[fields[i]]];
1109
+ }
1110
+ else {
1111
+ var columnFields = _this.getGeneralColumnFields();
1112
+ var columnModel = _this.getFieldsModel(columnFields);
1113
+ datePickerModel = columnModel[_this.parent.taskFields[fields[i]]];
1114
+ }
1107
1115
  var value = args.rowData[args.column.field];
1108
1116
  setValue('value', value, datePickerModel);
1109
1117
  var datePicker = new _this.inputs[_this.parent.columnByField[_this.parent.taskFields[fields[i]]].editType](datePickerModel);
@@ -1126,7 +1134,15 @@ var DialogEdit = /** @class */ (function () {
1126
1134
  field: fields[i], headerText: this_1.localeObj.getConstant(fields[i]), editType: 'stringedit', width: '100px',
1127
1135
  edit: {
1128
1136
  write: function (args) {
1129
- var inputTextModel = _this.beforeOpenArgs[generalTabString][_this.parent.taskFields[fields[i]]];
1137
+ var inputTextModel;
1138
+ if (!isNullOrUndefined(_this.beforeOpenArgs[generalTabString])) {
1139
+ inputTextModel = _this.beforeOpenArgs[generalTabString][_this.parent.taskFields[fields[i]]];
1140
+ }
1141
+ else {
1142
+ var columnFields = _this.getGeneralColumnFields();
1143
+ var columnModel = _this.getFieldsModel(columnFields);
1144
+ inputTextModel = columnModel[_this.parent.taskFields[fields[i]]];
1145
+ }
1130
1146
  inputTextModel.floatLabelType = 'Never';
1131
1147
  var value = args.rowData[args.column.field];
1132
1148
  if (!isNullOrUndefined(value)) {
@@ -467,6 +467,7 @@ export declare class Edit {
467
467
  * @returns {void} .
468
468
  * @private
469
469
  */
470
+ createNewRecord(): IGanttData;
470
471
  validateTaskPosition(data?: Object | object[], rowPosition?: RowPosition, rowIndex?: number, cAddedRecord?: IGanttData[]): void;
471
472
  private updateNewRecord;
472
473
  /**
@@ -515,6 +516,7 @@ export declare class Edit {
515
516
  private indentOutdentSuccess;
516
517
  private refreshDataSource;
517
518
  private deleteDragRow;
519
+ private updateIndentedChildRecords;
518
520
  private dropMiddle;
519
521
  private updateChildRecordLevel;
520
522
  private updateChildRecord;
@@ -821,9 +821,12 @@ var Edit = /** @class */ (function () {
821
821
  */
822
822
  Edit.prototype.updateParentChildRecord = function (data) {
823
823
  var ganttRecord = data;
824
- if (ganttRecord.hasChildRecords && this.taskbarMoved && this.parent.taskMode === 'Auto' && this.parent.previousRecords[data.uniqueID].resources === ganttRecord.ganttProperties['resourceNames']) {
824
+ if (ganttRecord.hasChildRecords && this.taskbarMoved && this.parent.taskMode === 'Auto' && (!isNullOrUndefined(this.parent.editModule.cellEditModule) && !this.parent.editModule.cellEditModule.isResourceCellEdited)) {
825
825
  this.updateChildItems(ganttRecord);
826
826
  }
827
+ if (!isNullOrUndefined(this.parent.editModule.cellEditModule)) {
828
+ this.parent.editModule.cellEditModule.isResourceCellEdited = false;
829
+ }
827
830
  };
828
831
  /**
829
832
  * To update records while changing schedule mode.
@@ -2275,7 +2278,7 @@ var Edit = /** @class */ (function () {
2275
2278
  /*Record Updates*/
2276
2279
  recordIndex = flatRecords.indexOf(this.addRowSelectedItem);
2277
2280
  updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem);
2278
- this.recordCollectionUpdate(childIndex, recordIndex, updatedCollectionIndex, record, parentItem);
2281
+ this.recordCollectionUpdate(childIndex, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition);
2279
2282
  break;
2280
2283
  case 'Below':
2281
2284
  currentItemIndex = flatRecords.indexOf(this.addRowSelectedItem);
@@ -2289,7 +2292,7 @@ var Edit = /** @class */ (function () {
2289
2292
  recordIndex = currentItemIndex + 1;
2290
2293
  updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem) + 1;
2291
2294
  }
2292
- this.recordCollectionUpdate(childIndex + 1, recordIndex, updatedCollectionIndex, record, parentItem);
2295
+ this.recordCollectionUpdate(childIndex + 1, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition);
2293
2296
  break;
2294
2297
  case 'Child':
2295
2298
  currentItemIndex = flatRecords.indexOf(this.addRowSelectedItem);
@@ -2317,7 +2320,7 @@ var Edit = /** @class */ (function () {
2317
2320
  this.addRowSelectedItem.ganttProperties.segments = null;
2318
2321
  }
2319
2322
  }
2320
- this.recordCollectionUpdate(childIndex + 1, recordIndex, updatedCollectionIndex, record, parentItem);
2323
+ this.recordCollectionUpdate(childIndex + 1, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition);
2321
2324
  break;
2322
2325
  }
2323
2326
  this.newlyAddedRecordBackup = record;
@@ -2331,7 +2334,7 @@ var Edit = /** @class */ (function () {
2331
2334
  * @returns {void} .
2332
2335
  * @private
2333
2336
  */
2334
- Edit.prototype.recordCollectionUpdate = function (childIndex, recordIndex, updatedCollectionIndex, record, parentItem) {
2337
+ Edit.prototype.recordCollectionUpdate = function (childIndex, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition) {
2335
2338
  var flatRecords = this.parent.flatData;
2336
2339
  var currentViewData = this.parent.currentViewData;
2337
2340
  var ids = this.parent.ids;
@@ -2353,7 +2356,15 @@ var Edit = /** @class */ (function () {
2353
2356
  !isNullOrUndefined(this.parent.dataSource)) {
2354
2357
  var child = this.parent.taskFields.child;
2355
2358
  if (parentItem.taskData[child] && parentItem.taskData[child].length > 0) {
2356
- parentItem.taskData[child].push(record.taskData);
2359
+ if (rowPosition === 'Above') {
2360
+ parentItem.taskData[child].splice(childIndex, 0, record.taskData);
2361
+ }
2362
+ else if (rowPosition === 'Below') {
2363
+ parentItem.taskData[child].splice(childIndex + 1, 0, record.taskData);
2364
+ }
2365
+ else {
2366
+ parentItem.taskData[child].push(record.taskData);
2367
+ }
2357
2368
  }
2358
2369
  else {
2359
2370
  parentItem.taskData[child] = [];
@@ -2438,13 +2449,13 @@ var Edit = /** @class */ (function () {
2438
2449
  }
2439
2450
  for (var i = 0; i < addedRecord.length; i++) {
2440
2451
  if (isNullOrUndefined(rowPosition) || isNullOrUndefined(this.addRowSelectedItem)) {
2441
- rowPosition = 'Top';
2452
+ rowPosition = rowPosition === 'Bottom' ? 'Bottom' : 'Top';
2442
2453
  }
2443
2454
  if (rowPosition === 'Top') {
2444
2455
  dataSource.splice(0, 0, addedRecord[i].taskData);
2445
2456
  }
2446
2457
  else if (rowPosition === 'Bottom') {
2447
- dataSource.push(addedRecord[i]);
2458
+ dataSource.push(addedRecord[i].taskData);
2448
2459
  }
2449
2460
  else {
2450
2461
  if (!isNullOrUndefined(taskFields.id) && !isNullOrUndefined(taskFields.parentID)) {
@@ -2597,7 +2608,7 @@ var Edit = /** @class */ (function () {
2597
2608
  else {
2598
2609
  if (_this.parent.viewType === 'ProjectView') {
2599
2610
  if ((rowPosition === 'Top' || rowPosition === 'Bottom') ||
2600
- ((rowPosition === 'Above' || rowPosition === 'Below') && !args.data.parentItem)) {
2611
+ ((rowPosition === 'Above' || rowPosition === 'Below' || rowPosition === 'Child') && !args.data.parentItem)) {
2601
2612
  if (args.data instanceof Array) {
2602
2613
  _this.updateRealDataSource(args.data, rowPosition);
2603
2614
  }
@@ -2640,6 +2651,59 @@ var Edit = /** @class */ (function () {
2640
2651
  * @returns {void} .
2641
2652
  * @private
2642
2653
  */
2654
+ Edit.prototype.createNewRecord = function () {
2655
+ var tempRecord = {};
2656
+ var ganttColumns = this.parent.ganttColumns;
2657
+ var taskSettingsFields = this.parent.taskFields;
2658
+ var taskId = this.parent.editModule.getNewTaskId();
2659
+ for (var i = 0; i < ganttColumns.length; i++) {
2660
+ var fieldName = ganttColumns[i].field;
2661
+ if (fieldName === taskSettingsFields.id) {
2662
+ tempRecord[fieldName] = taskId;
2663
+ }
2664
+ else if (ganttColumns[i].field === taskSettingsFields.startDate) {
2665
+ if (isNullOrUndefined(tempRecord[taskSettingsFields.endDate])) {
2666
+ tempRecord[fieldName] = this.parent.editModule.dialogModule.getMinimumStartDate();
2667
+ }
2668
+ else {
2669
+ tempRecord[fieldName] = new Date(tempRecord[taskSettingsFields.endDate]);
2670
+ }
2671
+ if (this.parent.timezone) {
2672
+ tempRecord[fieldName] = this.parent.dateValidationModule.remove(tempRecord[fieldName], this.parent.timezone);
2673
+ }
2674
+ }
2675
+ else if (ganttColumns[i].field === taskSettingsFields.endDate) {
2676
+ if (isNullOrUndefined(tempRecord[taskSettingsFields.startDate])) {
2677
+ tempRecord[fieldName] = this.parent.editModule.dialogModule.getMinimumStartDate();
2678
+ }
2679
+ else {
2680
+ tempRecord[fieldName] = new Date(tempRecord[taskSettingsFields.startDate]);
2681
+ }
2682
+ if (this.parent.timezone) {
2683
+ tempRecord[fieldName] = this.parent.dateValidationModule.remove(tempRecord[fieldName], this.parent.timezone);
2684
+ }
2685
+ }
2686
+ else if (ganttColumns[i].field === taskSettingsFields.duration) {
2687
+ tempRecord[fieldName] = 1;
2688
+ }
2689
+ else if (ganttColumns[i].field === taskSettingsFields.name) {
2690
+ tempRecord[fieldName] = this.parent.editModule.dialogModule['localeObj'].getConstant('addDialogTitle') + ' ' + taskId;
2691
+ }
2692
+ else if (ganttColumns[i].field === taskSettingsFields.progress) {
2693
+ tempRecord[fieldName] = 0;
2694
+ }
2695
+ else if (ganttColumns[i].field === taskSettingsFields.work) {
2696
+ tempRecord[fieldName] = 0;
2697
+ }
2698
+ else if (ganttColumns[i].field === 'taskType') {
2699
+ tempRecord[fieldName] = this.parent.taskType;
2700
+ }
2701
+ else {
2702
+ tempRecord[this.parent.ganttColumns[i].field] = '';
2703
+ }
2704
+ }
2705
+ return tempRecord;
2706
+ };
2643
2707
  Edit.prototype.validateTaskPosition = function (data, rowPosition, rowIndex, cAddedRecord) {
2644
2708
  var selectedRowIndex = isNullOrUndefined(rowIndex) || isNaN(parseInt(rowIndex.toString(), 10)) ?
2645
2709
  this.parent.selectionModule ?
@@ -2651,7 +2715,7 @@ var Edit = /** @class */ (function () {
2651
2715
  this.parent.selectionModule.getSelectedRowCellIndexes()[0].rowIndex : null : null : rowIndex;
2652
2716
  this.addRowSelectedItem = isNullOrUndefined(selectedRowIndex) ? null : this.parent.updatedRecords[selectedRowIndex];
2653
2717
  rowPosition = isNullOrUndefined(rowPosition) ? this.parent.editSettings.newRowPosition : rowPosition;
2654
- data = isNullOrUndefined(data) ? this.parent.editModule.dialogModule.composeAddRecord() : data;
2718
+ data = isNullOrUndefined(data) ? this.createNewRecord() : data;
2655
2719
  if (((isNullOrUndefined(selectedRowIndex) || selectedRowIndex < 0 ||
2656
2720
  isNullOrUndefined(this.addRowSelectedItem)) && (rowPosition === 'Above'
2657
2721
  || rowPosition === 'Below'
@@ -2743,10 +2807,6 @@ var Edit = /** @class */ (function () {
2743
2807
  }
2744
2808
  this.parent.timelineModule.updateTimeLineOnEditing([tempArray], args.action);
2745
2809
  }
2746
- var flag = getValue('doubleClickTarget', this.parent.treeGrid.editModule);
2747
- if (flag !== null) {
2748
- setValue('doubleClickTarget', null, this.parent.treeGrid.editModule);
2749
- }
2750
2810
  this.addSuccess(args);
2751
2811
  args = this.constructTaskAddedEventArgs(cAddedRecord, args.modifiedRecords, 'add');
2752
2812
  this.parent.trigger('actionComplete', args);
@@ -3150,6 +3210,25 @@ var Edit = /** @class */ (function () {
3150
3210
  var delRow = this.parent.getTaskByUniqueID(this.draggedRecord.uniqueID);
3151
3211
  this.removeRecords(delRow);
3152
3212
  };
3213
+ Edit.prototype.updateIndentedChildRecords = function (indentedRecord) {
3214
+ var createParentItem = {
3215
+ uniqueID: indentedRecord.uniqueID,
3216
+ expanded: indentedRecord.expanded,
3217
+ level: indentedRecord.level,
3218
+ index: indentedRecord.index,
3219
+ taskId: indentedRecord.ganttProperties.rowUniqueID
3220
+ };
3221
+ for (var i = 0; i < indentedRecord.childRecords.length; i++) {
3222
+ this.parent.setRecordValue('parentItem', createParentItem, indentedRecord.childRecords[i]);
3223
+ this.parent.setRecordValue('parentUniqueID', indentedRecord.uniqueID, indentedRecord.childRecords[i]);
3224
+ }
3225
+ if (indentedRecord.hasChildRecords) {
3226
+ indentedRecord = indentedRecord.childRecords;
3227
+ for (var j = 0; j < indentedRecord['length']; j++) {
3228
+ this.updateIndentedChildRecords(indentedRecord[j]);
3229
+ }
3230
+ }
3231
+ };
3153
3232
  Edit.prototype.dropMiddle = function (recordIndex1) {
3154
3233
  var obj = this.parent;
3155
3234
  var childRec = this.parent.editModule.getChildCount(this.droppedRecord, 0);
@@ -3165,6 +3244,10 @@ var Edit = /** @class */ (function () {
3165
3244
  this.recordLevel();
3166
3245
  if (this.draggedRecord.hasChildRecords) {
3167
3246
  this.updateChildRecord(this.draggedRecord, childRecordsLength, this.droppedRecord.expanded);
3247
+ if (this.parent.enableImmutableMode) {
3248
+ var indentedRecord = this.draggedRecord;
3249
+ this.updateIndentedChildRecords(indentedRecord);
3250
+ }
3168
3251
  }
3169
3252
  if (isNullOrUndefined(this.draggedRecord.parentItem &&
3170
3253
  this.updateParentRecords.indexOf(this.draggedRecord.parentItem) !== -1)) {
@@ -141,7 +141,7 @@ var FocusModule = /** @class */ (function () {
141
141
  {
142
142
  if (isNullOrUndefined(document.getElementById(this.parent.element.id + '_dialog'))) {
143
143
  e.preventDefault();
144
- ganttObj.addRecord();
144
+ ganttObj.addRecord(undefined, this.parent.editSettings.newRowPosition);
145
145
  var focussedElement = ganttObj.element;
146
146
  focussedElement.focus();
147
147
  }
@@ -238,6 +238,10 @@ var GanttTreeGrid = /** @class */ (function () {
238
238
  };
239
239
  GanttTreeGrid.prototype.actionBegin = function (args) {
240
240
  this.parent.notify('actionBegin', args);
241
+ var flag = getValue('doubleClickTarget', this.parent.treeGrid.editModule);
242
+ if (flag !== null) {
243
+ setValue('doubleClickTarget', null, this.parent.treeGrid.editModule);
244
+ }
241
245
  this.parent.trigger('actionBegin', args);
242
246
  }; // eslint-disable-next-line
243
247
  GanttTreeGrid.prototype.created = function (args) {
@@ -175,11 +175,20 @@ var ChartRows = /** @class */ (function (_super) {
175
175
  labelString = labelString === 'isCustomTemplate' ? this.parent.labelSettings.taskLabel : labelString;
176
176
  }
177
177
  if (labelString !== 'null') {
178
- taskLabel = '<span class="' + cls.taskLabel + '" style="line-height:' +
179
- (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.viewType === 'ResourceView' ? 'left;' : '') +
180
- 'display:' + (this.parent.viewType === 'ResourceView' ? 'inline-flex;' : '') +
181
- 'width:' + (this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
182
- this.taskBarHeight + 'px;">' + labelString + '</span>';
178
+ if (isNaN(parseInt(labelString))) {
179
+ taskLabel = '<span class="' + cls.taskLabel + '" style="line-height:' +
180
+ (this.taskBarHeight - 1) + 'px; text-align: left;' +
181
+ 'display:' + 'inline-block;' +
182
+ 'width:' + (data.ganttProperties.width - 10) + 'px; height:' +
183
+ this.taskBarHeight + 'px;">' + labelString + '</span>';
184
+ }
185
+ else {
186
+ taskLabel = '<span class="' + cls.taskLabel + '" style="line-height:' +
187
+ (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.viewType === 'ResourceView' ? 'left;' : ';') +
188
+ 'display:' + (this.parent.viewType === 'ResourceView' ? 'inline-flex;' : ';') +
189
+ 'width:' + (this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
190
+ this.taskBarHeight + 'px;">' + labelString + '</span>';
191
+ }
183
192
  }
184
193
  var template = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length > 0 ?
185
194
  this.splitTaskbar(data, labelString) : (data.ganttProperties.startDate && data.ganttProperties.endDate
@@ -778,11 +787,20 @@ var ChartRows = /** @class */ (function (_super) {
778
787
  labelString = labelString === 'isCustomTemplate' ? this.parent.labelSettings.taskLabel : labelString;
779
788
  }
780
789
  if (labelString !== 'null') {
781
- labelDiv = this.createDivElement('<span class="' +
782
- cls.taskLabel + '" style="line-height:' +
783
- (this.taskBarHeight - 1) + 'px; display:' + (this.parent.viewType === 'ResourceView' ? 'inline-flex;' : '') + 'width:' +
784
- (this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
785
- this.taskBarHeight + 'px;">' + labelString + '</span>');
790
+ if (isNaN(parseInt(labelString))) {
791
+ labelDiv = this.createDivElement('<span class="' + cls.taskLabel + '" style="line-height:' +
792
+ (this.taskBarHeight - 1) + 'px; text-align: left;' +
793
+ 'display:' + 'inline-block;' +
794
+ 'width:' + (data.ganttProperties.width - 10) + 'px; height:' +
795
+ this.taskBarHeight + 'px;">' + labelString + '</span>');
796
+ }
797
+ else {
798
+ labelDiv = this.createDivElement('<span class="' +
799
+ cls.taskLabel + '" style="line-height:' +
800
+ (this.taskBarHeight - 1) + 'px; display:' + (this.parent.viewType === 'ResourceView' ? 'inline-flex;' : ';') + 'width:' +
801
+ (this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : ';') + 'px; height:' +
802
+ this.taskBarHeight + 'px;">' + labelString + '</span>');
803
+ }
786
804
  progressBarInnerDiv[0].appendChild([].slice.call(labelDiv)[0]);
787
805
  }
788
806
  var milestoneTemplate = '<div class="' + cls.parentMilestone + '" style="position:absolute;">' +
@@ -232,6 +232,7 @@ export declare class Timeline {
232
232
  * @returns {boolean} .
233
233
  */
234
234
  private isWeekendHeaderCell;
235
+ private calculateQuarterEndDate;
235
236
  /**
236
237
  * To construct template string.
237
238
  *
@@ -798,6 +798,7 @@ var Timeline = /** @class */ (function () {
798
798
  * @private
799
799
  */
800
800
  Timeline.prototype.createTimelineTemplate = function (tier) {
801
+ var isFirstCell = false;
801
802
  var parent = this.parent;
802
803
  var parentTh = '';
803
804
  var parentTr = '';
@@ -814,10 +815,19 @@ var Timeline = /** @class */ (function () {
814
815
  // PDf export collection
815
816
  var timelineCell = {};
816
817
  timelineCell.startDate = new Date(startDate.getTime());
817
- parentTr = this.getHeaterTemplateString(new Date(startDate.toString()), mode, tier, false, count, timelineCell);
818
+ if (mode === 'Month' && tier === 'bottomTier' && ((this.parent.currentZoomingLevel.level === 5) || (this.parent.currentZoomingLevel.level === 6)) && scheduleDateCollection.length === 0) {
819
+ isFirstCell = true;
820
+ }
821
+ parentTr = this.getHeaterTemplateString(new Date(startDate.toString()), mode, tier, false, count, timelineCell, isFirstCell);
818
822
  scheduleDateCollection.push(new Date(startDate.toString()));
819
- increment = this.getIncrement(startDate, count, mode);
820
- newTime = startDate.getTime() + increment;
823
+ if (isFirstCell) {
824
+ newTime = this.calculateQuarterEndDate(startDate).getTime();
825
+ }
826
+ else {
827
+ increment = this.getIncrement(startDate, count, mode);
828
+ newTime = startDate.getTime() + increment;
829
+ }
830
+ isFirstCell = false;
821
831
  startDate.setTime(newTime);
822
832
  if (startDate >= endDate) {
823
833
  /* eslint-disable-next-line */
@@ -927,6 +937,21 @@ var Timeline = /** @class */ (function () {
927
937
  mode === 'Hour' || mode === 'Minutes') &&
928
938
  this.parent.nonWorkingDayIndex.indexOf(day.getDay()) !== -1;
929
939
  };
940
+ Timeline.prototype.calculateQuarterEndDate = function (date) {
941
+ var month = date.getMonth();
942
+ if (month >= 0 && month <= 2) {
943
+ return new Date(date.getFullYear(), 3, 1);
944
+ }
945
+ else if (month >= 3 && month <= 5) {
946
+ return new Date(date.getFullYear(), 6, 1);
947
+ }
948
+ else if (month >= 6 && month <= 8) {
949
+ return new Date(date.getFullYear(), 9, 1);
950
+ }
951
+ else {
952
+ return new Date(date.getFullYear() + 1, 0, 1);
953
+ }
954
+ };
930
955
  /**
931
956
  * To construct template string.
932
957
  *
@@ -940,7 +965,7 @@ var Timeline = /** @class */ (function () {
940
965
  * @private
941
966
  */
942
967
  /* eslint-disable-next-line */
943
- Timeline.prototype.getHeaterTemplateString = function (scheduleWeeks, mode, tier, isLast, count, timelineCell) {
968
+ Timeline.prototype.getHeaterTemplateString = function (scheduleWeeks, mode, tier, isLast, count, timelineCell, isFirstCell) {
944
969
  var parentTr = '';
945
970
  var td = '';
946
971
  var format = tier === 'topTier' ?
@@ -955,7 +980,7 @@ var Timeline = /** @class */ (function () {
955
980
  this.customFormat(scheduleWeeks, format, tier, mode, formatter);
956
981
  thWidth = (this.getIncrement(scheduleWeeks, count, mode) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth;
957
982
  var cellWidth = thWidth;
958
- thWidth = isLast ? this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.timelineRoundOffEndDate)
983
+ thWidth = isLast || isFirstCell ? isLast ? this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.timelineRoundOffEndDate) : this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.calculateQuarterEndDate(scheduleWeeks))
959
984
  : thWidth;
960
985
  var isWeekendCell = this.isWeekendHeaderCell(mode, tier, scheduleWeeks);
961
986
  var textClassName = tier === 'topTier' ? ' e-gantt-top-cell-text' : '';
@@ -1251,7 +1276,7 @@ var Timeline = /** @class */ (function () {
1251
1276
  var validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);
1252
1277
  var validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
1253
1278
  var isChanged = void 0;
1254
- if (!isNullOrUndefined(maxStartLeft) && (maxStartLeft <= this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
1279
+ if (!isNullOrUndefined(maxStartLeft) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
1255
1280
  isChanged = 'prevTimeSpan';
1256
1281
  minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
1257
1282
  }
@@ -829,7 +829,10 @@
829
829
  font-weight: normal;
830
830
  margin-left: 8px;
831
831
  margin-right: 15px;
832
+ overflow: hidden;
833
+ text-overflow: ellipsis;
832
834
  vertical-align: middle;
835
+ white-space: nowrap;
833
836
  }
834
837
 
835
838
  .e-gantt .e-gantt-chart .e-task-table {
@@ -1351,10 +1354,10 @@
1351
1354
  .e-gantt .e-gantt-chart .e-timeline-header-container {
1352
1355
  background: #1a1a1a;
1353
1356
  border-bottom-color: #484848;
1354
- border-bottom-width: 2px;
1357
+ border-bottom-width: 0px;
1355
1358
  border-right-color: #484848;
1356
1359
  color: #f0f0f0;
1357
- height: 65px;
1360
+ height: 64px;
1358
1361
  }
1359
1362
 
1360
1363
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell,
@@ -1373,7 +1376,7 @@
1373
1376
  }
1374
1377
 
1375
1378
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell {
1376
- height: 33px;
1379
+ height: 32px;
1377
1380
  }
1378
1381
 
1379
1382
  .e-gantt .e-gantt-chart .e-chart-root-container {
@@ -979,7 +979,10 @@
979
979
  font-weight: normal;
980
980
  margin-left: 8px;
981
981
  margin-right: 15px;
982
+ overflow: hidden;
983
+ text-overflow: ellipsis;
982
984
  vertical-align: middle;
985
+ white-space: nowrap;
983
986
  }
984
987
 
985
988
  .e-gantt .e-gantt-chart .e-task-table {
@@ -1501,10 +1504,10 @@
1501
1504
  .e-gantt .e-gantt-chart .e-timeline-header-container {
1502
1505
  background: #fff;
1503
1506
  border-bottom-color: #ddd;
1504
- border-bottom-width: 2px;
1507
+ border-bottom-width: 0px;
1505
1508
  border-right-color: #ddd;
1506
1509
  color: #333;
1507
- height: 65px;
1510
+ height: 64px;
1508
1511
  }
1509
1512
 
1510
1513
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell,
@@ -1523,7 +1526,7 @@
1523
1526
  }
1524
1527
 
1525
1528
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell {
1526
- height: 33px;
1529
+ height: 32px;
1527
1530
  }
1528
1531
 
1529
1532
  .e-gantt .e-gantt-chart .e-chart-root-container {
@@ -1196,7 +1196,10 @@
1196
1196
  font-weight: normal;
1197
1197
  margin-left: 8px;
1198
1198
  margin-right: 15px;
1199
+ overflow: hidden;
1200
+ text-overflow: ellipsis;
1199
1201
  vertical-align: middle;
1202
+ white-space: nowrap;
1200
1203
  }
1201
1204
 
1202
1205
  .e-gantt .e-gantt-chart .e-task-table {
@@ -1718,10 +1721,10 @@
1718
1721
  .e-gantt .e-gantt-chart .e-timeline-header-container {
1719
1722
  background: #fff;
1720
1723
  border-bottom-color: #dee2e6;
1721
- border-bottom-width: 2px;
1724
+ border-bottom-width: 0px;
1722
1725
  border-right-color: #dee2e6;
1723
1726
  color: #212529;
1724
- height: 65px;
1727
+ height: 64px;
1725
1728
  }
1726
1729
 
1727
1730
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell,
@@ -1740,7 +1743,7 @@
1740
1743
  }
1741
1744
 
1742
1745
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell {
1743
- height: 33px;
1746
+ height: 32px;
1744
1747
  }
1745
1748
 
1746
1749
  .e-gantt .e-gantt-chart .e-chart-root-container {
@@ -863,7 +863,10 @@
863
863
  font-weight: normal;
864
864
  margin-left: 8px;
865
865
  margin-right: 15px;
866
+ overflow: hidden;
867
+ text-overflow: ellipsis;
866
868
  vertical-align: middle;
869
+ white-space: nowrap;
867
870
  }
868
871
 
869
872
  .e-gantt .e-gantt-chart .e-task-table {
@@ -1407,7 +1410,7 @@
1407
1410
  }
1408
1411
 
1409
1412
  .e-gantt .e-gantt-chart .e-timeline-top-header-cell {
1410
- height: 33px;
1413
+ height: 32px;
1411
1414
  }
1412
1415
 
1413
1416
  .e-gantt .e-gantt-chart .e-chart-root-container {