@syncfusion/ej2-gantt 19.3.53 → 19.4.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/ej2-gantt.umd.min.js +2 -2
  3. package/dist/ej2-gantt.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-gantt.es2015.js +127 -51
  5. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  6. package/dist/es6/ej2-gantt.es5.js +124 -48
  7. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  8. package/dist/global/ej2-gantt.min.js +2 -2
  9. package/dist/global/ej2-gantt.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +18 -18
  12. package/src/gantt/actions/context-menu.js +36 -15
  13. package/src/gantt/actions/dialog-edit.js +7 -2
  14. package/src/gantt/actions/edit.js +4 -0
  15. package/src/gantt/actions/rowdragdrop.js +2 -0
  16. package/src/gantt/actions/taskbar-edit.d.ts +0 -15
  17. package/src/gantt/actions/taskbar-edit.js +6 -24
  18. package/src/gantt/base/gantt.d.ts +17 -0
  19. package/src/gantt/base/gantt.js +32 -3
  20. package/src/gantt/base/task-processor.js +20 -3
  21. package/src/gantt/renderer/timeline.js +17 -1
  22. package/styles/bootstrap-dark.css +1 -1
  23. package/styles/bootstrap.css +1 -1
  24. package/styles/bootstrap4.css +1 -1
  25. package/styles/bootstrap5-dark.css +7 -6
  26. package/styles/bootstrap5.css +7 -6
  27. package/styles/fabric-dark.css +1 -1
  28. package/styles/fabric.css +1 -1
  29. package/styles/gantt/_bootstrap4-definition.scss +1 -0
  30. package/styles/gantt/_bootstrap5-definition.scss +1 -1
  31. package/styles/gantt/_fluent-definition.scss +163 -0
  32. package/styles/gantt/_layout.scss +2 -7
  33. package/styles/gantt/_theme.scss +2 -1
  34. package/styles/gantt/bootstrap-dark.css +1 -1
  35. package/styles/gantt/bootstrap.css +1 -1
  36. package/styles/gantt/bootstrap4.css +1 -1
  37. package/styles/gantt/bootstrap5-dark.css +7 -6
  38. package/styles/gantt/bootstrap5.css +7 -6
  39. package/styles/gantt/fabric-dark.css +1 -1
  40. package/styles/gantt/fabric.css +1 -1
  41. package/styles/gantt/highcontrast-light.css +1 -1
  42. package/styles/gantt/highcontrast.css +1 -1
  43. package/styles/gantt/icons/_fluent.scss +112 -0
  44. package/styles/gantt/icons/_tailwind-dark.scss +112 -112
  45. package/styles/gantt/material-dark.css +1 -1
  46. package/styles/gantt/material.css +1 -1
  47. package/styles/gantt/tailwind-dark.css +2 -2
  48. package/styles/gantt/tailwind.css +2 -2
  49. package/styles/highcontrast-light.css +1 -1
  50. package/styles/highcontrast.css +1 -1
  51. package/styles/material-dark.css +1 -1
  52. package/styles/material.css +1 -1
  53. package/styles/tailwind-dark.css +2 -2
  54. package/styles/tailwind.css +2 -2
@@ -2190,8 +2190,16 @@ class TaskProcessor extends DateProcessor {
2190
2190
  const ganttProperties = ganttData.ganttProperties;
2191
2191
  let duration = data[taskSettings.duration];
2192
2192
  duration = isNullOrUndefined(duration) || duration === '' ? null : duration;
2193
- const startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
2194
- const endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
2193
+ let startDate;
2194
+ let endDate;
2195
+ if (ganttProperties.startDate && ganttProperties.endDate) {
2196
+ startDate = this.getDateFromFormat(ganttProperties.startDate, true);
2197
+ endDate = this.getDateFromFormat(ganttProperties.endDate, true);
2198
+ }
2199
+ else {
2200
+ startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
2201
+ endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
2202
+ }
2195
2203
  const segments = taskSettings.segments ? (data[taskSettings.segments] ||
2196
2204
  ganttData.taskData[taskSettings.segments]) : null;
2197
2205
  const isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;
@@ -2790,7 +2798,10 @@ class TaskProcessor extends DateProcessor {
2790
2798
  if (!isNullOrUndefined(value)) {
2791
2799
  value = new Date(tempDate.getTime());
2792
2800
  }
2793
- this.parent.setRecordValue('taskData.' + mapping, value, task);
2801
+ if (!this.parent.isLoad && !this.parent.isDynamicData) {
2802
+ this.parent.setRecordValue('taskData.' + mapping, value, task);
2803
+ }
2804
+ this.parent.isDynamicData = false;
2794
2805
  }
2795
2806
  getDurationInDay(duration, durationUnit) {
2796
2807
  if (durationUnit === 'day') {
@@ -3608,8 +3619,14 @@ class TaskProcessor extends DateProcessor {
3608
3619
  }
3609
3620
  continue;
3610
3621
  }
3611
- const startDate = this.getValidStartDate(childData.ganttProperties);
3612
- const endDate = this.getValidEndDate(childData.ganttProperties);
3622
+ let startDate = this.getValidStartDate(childData.ganttProperties);
3623
+ if (parentData.hasChildRecords && !ganttProp.isAutoSchedule && !isNullOrUndefined(childData.ganttProperties.autoStartDate)) {
3624
+ startDate = childData.ganttProperties.autoStartDate;
3625
+ }
3626
+ let endDate = this.getValidEndDate(childData.ganttProperties);
3627
+ if (parentData.hasChildRecords && !ganttProp.isAutoSchedule && !isNullOrUndefined(childData.ganttProperties.autoEndDate)) {
3628
+ endDate = childData.ganttProperties.autoEndDate;
3629
+ }
3613
3630
  if (isNullOrUndefined(minStartDate)) {
3614
3631
  minStartDate = this.getDateFromFormat(startDate);
3615
3632
  }
@@ -6024,6 +6041,9 @@ class Timeline {
6024
6041
  parentTr = this.getHeaterTemplateString(new Date(startDate.toString()), mode, tier, false, count, timelineCell);
6025
6042
  scheduleDateCollection.push(new Date(startDate.toString()));
6026
6043
  increment = this.getIncrement(startDate, count, mode);
6044
+ if (this.parent.isInDst(startDate)) {
6045
+ increment = increment + (1000 * 60 * 60);
6046
+ }
6027
6047
  newTime = startDate.getTime() + increment;
6028
6048
  startDate.setTime(newTime);
6029
6049
  if (startDate >= endDate) {
@@ -6087,11 +6107,19 @@ class Timeline {
6087
6107
  dayIntervel - 1 : dayIntervel : dayIntervel;
6088
6108
  lastDay.setDate(lastDay.getDate() + (dayIntervel + (7 * count)));
6089
6109
  increment = lastDay.getTime() - firstDay.getTime();
6110
+ if ((this.parent.isInDst(lastDay) && !this.parent.isInDst(firstDay)) ||
6111
+ (!this.parent.isInDst(lastDay) && this.parent.isInDst(firstDay))) {
6112
+ increment = increment - (1000 * 60 * 60);
6113
+ }
6090
6114
  break;
6091
6115
  }
6092
6116
  case 'Day':
6093
6117
  lastDay.setHours(24, 0, 0, 0);
6094
6118
  increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * 24 * (count - 1));
6119
+ if ((this.parent.isInDst(lastDay) && !this.parent.isInDst(firstDay)) ||
6120
+ (!this.parent.isInDst(lastDay) && this.parent.isInDst(firstDay))) {
6121
+ increment -= (1000 * 60 * 60);
6122
+ }
6095
6123
  break;
6096
6124
  case 'Hour':
6097
6125
  lastDay.setMinutes(60);
@@ -6186,7 +6214,12 @@ class Timeline {
6186
6214
  * @private
6187
6215
  */
6188
6216
  calculateWidthBetweenTwoDate(mode, scheduleWeeks, endDate) {
6189
- const balanceDay = ((endDate.getTime() - scheduleWeeks.getTime()) / (1000 * 60 * 60 * 24));
6217
+ let timeDifference = (endDate.getTime() - scheduleWeeks.getTime());
6218
+ if ((this.parent.isInDst(scheduleWeeks) && !this.parent.isInDst(endDate)) ||
6219
+ (!this.parent.isInDst(scheduleWeeks) && this.parent.isInDst(endDate))) {
6220
+ timeDifference = timeDifference - (1000 * 60 * 60);
6221
+ }
6222
+ const balanceDay = (timeDifference / (1000 * 60 * 60 * 24));
6190
6223
  return balanceDay * this.parent.perDayWidth;
6191
6224
  }
6192
6225
  /**
@@ -11985,6 +12018,8 @@ let Gantt = class Gantt extends Component {
11985
12018
  /** @hidden */
11986
12019
  this.isExpandCollapseLevelMethod = false;
11987
12020
  /** @hidden */
12021
+ this.isDynamicData = false;
12022
+ /** @hidden */
11988
12023
  this.isConnectorLineUpdate = false;
11989
12024
  /** @hidden */
11990
12025
  this.staticSelectedRowIndex = -1;
@@ -12141,6 +12176,27 @@ let Gantt = class Gantt extends Component {
12141
12176
  return ganttDateFormat;
12142
12177
  }
12143
12178
  }
12179
+ /**
12180
+ * To get timezone offset.
12181
+ *
12182
+ * @returns {number} .
12183
+ * @private
12184
+ */
12185
+ getDefaultTZOffset() {
12186
+ const janMonth = new Date(new Date().getFullYear(), 0, 1);
12187
+ const julMonth = new Date(new Date().getFullYear(), 6, 1); //Because there is no reagions DST inbetwwen this range
12188
+ return Math.max(janMonth.getTimezoneOffset(), julMonth.getTimezoneOffset());
12189
+ }
12190
+ /**
12191
+ * To check whether the date is in DST.
12192
+ *
12193
+ * @param {Date} date .
12194
+ * @returns {boolean} .
12195
+ * @private
12196
+ */
12197
+ isInDst(date) {
12198
+ return date.getTimezoneOffset() < this.getDefaultTZOffset();
12199
+ }
12144
12200
  /**
12145
12201
  * Method to map resource fields.
12146
12202
  *
@@ -12272,6 +12328,8 @@ let Gantt = class Gantt extends Component {
12272
12328
  renderGantt(isChange) {
12273
12329
  // predecessor calculation
12274
12330
  if (this.predecessorModule && this.taskFields.dependency) {
12331
+ this.predecessorModule['parentIds'] = [];
12332
+ this.predecessorModule['parentRecord'] = [];
12275
12333
  this.predecessorModule.updatePredecessors();
12276
12334
  if (this.isInPredecessorValidation && this.enableValidation) {
12277
12335
  this.predecessorModule.updatedRecordsDateByPredecessor();
@@ -12291,7 +12349,7 @@ let Gantt = class Gantt extends Component {
12291
12349
  this.treeGrid.dataSource = { result: this.flatData, count: count };
12292
12350
  }
12293
12351
  else {
12294
- this.treeGrid.dataSource = this.flatData.length > 0 ? this.flatData : [];
12352
+ this.treeGrid.dataSource = this.flatData;
12295
12353
  }
12296
12354
  }
12297
12355
  else {
@@ -14337,6 +14395,7 @@ let Gantt = class Gantt extends Component {
14337
14395
  * @public
14338
14396
  */
14339
14397
  updateDataSource(dataSource, args) {
14398
+ this.isDynamicData = true;
14340
14399
  if (!isNullOrUndefined(args)) {
14341
14400
  for (let prop of Object.keys(args)) { // eslint-disable-line
14342
14401
  switch (prop) {
@@ -14539,12 +14598,15 @@ let Gantt = class Gantt extends Component {
14539
14598
  if (!isNullOrUndefined(rowData)) {
14540
14599
  const data = extend({}, {}, rowData.taskData, true);
14541
14600
  const taskfields = this.taskFields;
14601
+ if (data[taskfields.startDate]) {
14602
+ this.setRecordValue(taskfields.startDate, rowData.ganttProperties.startDate, data, true);
14603
+ }
14542
14604
  if (!isNullOrUndefined(taskfields.duration)) {
14543
14605
  data[taskfields.duration] = 0;
14544
14606
  }
14545
14607
  else {
14546
- data[taskfields.startDate] = new Date(rowData.taskData[taskfields.startDate]);
14547
- data[taskfields.endDate] = new Date(rowData.taskData[taskfields.startDate]);
14608
+ data[taskfields.startDate] = new Date(rowData.ganttProperties.startDate);
14609
+ data[taskfields.endDate] = new Date(rowData.ganttProperties.endDate);
14548
14610
  }
14549
14611
  if (!isNullOrUndefined(taskfields.milestone)) {
14550
14612
  if (data[taskfields.milestone] === false) {
@@ -16320,8 +16382,11 @@ class TaskbarEdit extends DateProcessor {
16320
16382
  if (this.isMouseDragged && this.taskBarEditAction) {
16321
16383
  const args = {
16322
16384
  cancel: false,
16323
- requestType: 'mergeSegment'
16385
+ requestType: 'taskbarediting'
16324
16386
  };
16387
+ if (this.segmentIndex !== -1) {
16388
+ args.requestType = 'mergeSegment';
16389
+ }
16325
16390
  this.parent.trigger('actionBegin', args, (arg) => {
16326
16391
  if (arg.cancel === false) {
16327
16392
  this.taskBarEditingAction(event, false);
@@ -17146,36 +17211,15 @@ class TaskbarEdit extends DateProcessor {
17146
17211
  const tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.topTier :
17147
17212
  this.parent.timelineModule.bottomTier;
17148
17213
  if (tierMode !== 'Hour' && tierMode !== 'Minutes') {
17149
- if (this.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && !this.isInDst(pStartDate)) {
17214
+ if (this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && !this.parent.isInDst(pStartDate)) {
17150
17215
  pStartDate.setTime(pStartDate.getTime() + (60 * 60 * 1000));
17151
17216
  }
17152
- else if (!this.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && this.isInDst(pStartDate)) {
17217
+ else if (!this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && this.parent.isInDst(pStartDate)) {
17153
17218
  pStartDate.setTime(pStartDate.getTime() - (60 * 60 * 1000));
17154
17219
  }
17155
17220
  }
17156
17221
  return pStartDate;
17157
17222
  }
17158
- /**
17159
- * To get timezone offset.
17160
- *
17161
- * @returns {number} .
17162
- * @private
17163
- */
17164
- getDefaultTZOffset() {
17165
- const janMonth = new Date(new Date().getFullYear(), 0, 1);
17166
- const julMonth = new Date(new Date().getFullYear(), 6, 1); //Because there is no reagions DST inbetwwen this range
17167
- return Math.max(janMonth.getTimezoneOffset(), julMonth.getTimezoneOffset());
17168
- }
17169
- /**
17170
- * To check whether the date is in DST.
17171
- *
17172
- * @param {Date} date .
17173
- * @returns {boolean} .
17174
- * @private
17175
- */
17176
- isInDst(date) {
17177
- return date.getTimezoneOffset() < this.getDefaultTZOffset();
17178
- }
17179
17223
  /**
17180
17224
  * To set item position.
17181
17225
  *
@@ -17773,7 +17817,8 @@ class DialogEdit {
17773
17817
  datetimepickeredit: DateTimePicker,
17774
17818
  maskededit: MaskedTextBox,
17775
17819
  numericedit: NumericTextBox,
17776
- stringedit: TextBox
17820
+ stringedit: TextBox,
17821
+ defaultedit: TextBox
17777
17822
  };
17778
17823
  this.processDialogFields();
17779
17824
  this.wireEvents();
@@ -18425,6 +18470,7 @@ class DialogEdit {
18425
18470
  fieldsModel[column.field] = checkboxModel;
18426
18471
  break;
18427
18472
  }
18473
+ case 'defaultedit':
18428
18474
  case 'stringedit':
18429
18475
  {
18430
18476
  const textBox = common;
@@ -18818,7 +18864,7 @@ class DialogEdit {
18818
18864
  const datePickerModel = this.beforeOpenArgs[generalTabString][this.parent.taskFields[fields[i]]];
18819
18865
  const value = args.rowData[args.column.field];
18820
18866
  setValue('value', value, datePickerModel);
18821
- const datePicker = new DatePicker(datePickerModel);
18867
+ const datePicker = new this.inputs[this.parent.columnByField[this.parent.taskFields[fields[i]]].editType](datePickerModel);
18822
18868
  datePicker.appendTo(args.element);
18823
18869
  },
18824
18870
  read: (args) => {
@@ -19690,6 +19736,9 @@ class DialogEdit {
19690
19736
  this.rowData.ganttProperties.segments = dataSource;
19691
19737
  this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(this.rowData, false), this.rowData.ganttProperties, true);
19692
19738
  this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, userData, this.rowData);
19739
+ if (dataSource.length <= 0) {
19740
+ this.validateDuration(this.rowData);
19741
+ }
19693
19742
  }
19694
19743
  }
19695
19744
  // eslint-disable-next-line
@@ -23102,8 +23151,11 @@ class Edit$2 {
23102
23151
  */
23103
23152
  updateRealDataSource(addedRecord, rowPosition) {
23104
23153
  const taskFields = this.parent.taskFields;
23105
- const dataSource = isCountRequired(this.parent) ? getValue('result', this.parent.dataSource) :
23154
+ let dataSource = isCountRequired(this.parent) ? getValue('result', this.parent.dataSource) :
23106
23155
  this.parent.dataSource;
23156
+ if (this.parent.dataSource instanceof DataManager) {
23157
+ dataSource = this.parent.dataSource.dataSource.json;
23158
+ }
23107
23159
  for (let i = 0; i < addedRecord.length; i++) {
23108
23160
  if (isNullOrUndefined(rowPosition) || isNullOrUndefined(this.addRowSelectedItem)) {
23109
23161
  rowPosition = 'Top';
@@ -23175,6 +23227,7 @@ class Edit$2 {
23175
23227
  */
23176
23228
  addRecord(data, rowPosition, rowIndex) {
23177
23229
  if (this.parent.editModule && this.parent.editSettings.allowAdding) {
23230
+ this.parent.isDynamicData = true;
23178
23231
  const cAddedRecord = [];
23179
23232
  if (isNullOrUndefined(data)) {
23180
23233
  this.validateTaskPosition(data, rowPosition, rowIndex, cAddedRecord);
@@ -25924,6 +25977,12 @@ class ContextMenu$2 {
25924
25977
  position = this.item;
25925
25978
  data = extend({}, {}, this.rowData.taskData, true);
25926
25979
  taskfields = this.parent.taskFields;
25980
+ if (data[taskfields.startDate]) {
25981
+ this.parent.setRecordValue(taskfields.startDate, this.rowData.ganttProperties.startDate, data, true);
25982
+ }
25983
+ if (data[taskfields.endDate]) {
25984
+ this.parent.setRecordValue(taskfields.endDate, this.rowData.ganttProperties.endDate, data, true);
25985
+ }
25927
25986
  if (!isNullOrUndefined(taskfields.dependency)) {
25928
25987
  data[taskfields.dependency] = null;
25929
25988
  }
@@ -26113,7 +26172,12 @@ class ContextMenu$2 {
26113
26172
  for (const item of args.items) {
26114
26173
  // let target: EventTarget = target;
26115
26174
  if (!item.separator) {
26116
- this.updateItemStatus(item, target, rowIndex);
26175
+ if ((target.classList.contains('e-gantt-unscheduled-taskbar')) && ((item.text === this.getLocale('splitTask')) || (item.text === this.getLocale('mergeTask')))) {
26176
+ this.hideItems.push(item.text);
26177
+ }
26178
+ else {
26179
+ this.updateItemStatus(item, target, rowIndex);
26180
+ }
26117
26181
  }
26118
26182
  }
26119
26183
  args.rowData = this.rowData;
@@ -26225,24 +26289,34 @@ class ContextMenu$2 {
26225
26289
  break;
26226
26290
  case 'Indent':
26227
26291
  {
26228
- const index = this.parent.selectedRowIndex;
26229
- const isSelected = this.parent.selectionModule ? this.parent.selectionModule.selectedRowIndexes.length === 1 ||
26230
- this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;
26231
- const prevRecord = this.parent.updatedRecords[this.parent.selectionModule.getSelectedRowIndexes()[0] - 1];
26232
- if (!this.parent.editSettings.allowEditing || index === 0 || index === -1 || !isSelected ||
26233
- this.parent.viewType === 'ResourceView' || this.parent.updatedRecords[index].level - prevRecord.level === 1) {
26234
- this.updateItemVisibility(item.text);
26292
+ if (!this.parent.allowSelection) {
26293
+ this.hideItems.push(item.text);
26294
+ }
26295
+ else {
26296
+ const index = this.parent.selectedRowIndex;
26297
+ const isSelected = this.parent.selectionModule ? this.parent.selectionModule.selectedRowIndexes.length === 1 ||
26298
+ this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;
26299
+ const prevRecord = this.parent.updatedRecords[this.parent.selectionModule.getSelectedRowIndexes()[0] - 1];
26300
+ if (!this.parent.editSettings.allowEditing || index === 0 || index === -1 || !isSelected ||
26301
+ this.parent.viewType === 'ResourceView' || this.parent.updatedRecords[index].level - prevRecord.level === 1) {
26302
+ this.updateItemVisibility(item.text);
26303
+ }
26235
26304
  }
26236
26305
  break;
26237
26306
  }
26238
26307
  case 'Outdent':
26239
26308
  {
26240
- const ind = this.parent.selectionModule.getSelectedRowIndexes()[0];
26241
- const isSelect = this.parent.selectionModule ? this.parent.selectionModule.selectedRowIndexes.length === 1 ||
26242
- this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;
26243
- if (!this.parent.editSettings.allowEditing || ind === -1 || ind === 0 || !isSelect ||
26244
- this.parent.viewType === 'ResourceView' || this.parent.updatedRecords[ind].level === 0) {
26245
- this.updateItemVisibility(item.text);
26309
+ if (!this.parent.allowSelection) {
26310
+ this.hideItems.push(item.text);
26311
+ }
26312
+ else {
26313
+ const ind = this.parent.selectionModule.getSelectedRowIndexes()[0];
26314
+ const isSelect = this.parent.selectionModule ? this.parent.selectionModule.selectedRowIndexes.length === 1 ||
26315
+ this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;
26316
+ if (!this.parent.editSettings.allowEditing || ind === -1 || ind === 0 || !isSelect ||
26317
+ this.parent.viewType === 'ResourceView' || this.parent.updatedRecords[ind].level === 0) {
26318
+ this.updateItemVisibility(item.text);
26319
+ }
26246
26320
  }
26247
26321
  break;
26248
26322
  }
@@ -26305,7 +26379,7 @@ class ContextMenu$2 {
26305
26379
  }
26306
26380
  contextMenuOpen(args) {
26307
26381
  this.isOpen = true;
26308
- const firstMenuItem = args.element.querySelectorAll('li:not(.e-menu-hide)')[0];
26382
+ const firstMenuItem = args.element.querySelectorAll('li:not(.e-menu-hide):not(.e-disabled)')[0];
26309
26383
  addClass([firstMenuItem], 'e-focused');
26310
26384
  }
26311
26385
  getMenuItems() {
@@ -27112,6 +27186,7 @@ class RowDD$1 {
27112
27186
  else {
27113
27187
  const level = 1;
27114
27188
  draggedRecord.level = droppedRecord.level + 1;
27189
+ this.parent.setRecordValue('level', this.draggedRecord.level, this.draggedRecord);
27115
27190
  this.updateChildRecordLevel(draggedRecord, level);
27116
27191
  }
27117
27192
  droppedRecord.expanded = true;
@@ -27196,6 +27271,7 @@ class RowDD$1 {
27196
27271
  parentData = this.parent.treeGrid[id][record.parentItem.uniqueID];
27197
27272
  }
27198
27273
  currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;
27274
+ this.parent.setRecordValue('level', currentRecord.level, currentRecord);
27199
27275
  if (currentRecord.hasChildRecords) {
27200
27276
  level--;
27201
27277
  level = this.updateChildRecordLevel(currentRecord, level);