@syncfusion/ej2-treegrid 20.1.55 → 20.1.56-97113

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 (126) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +15 -32
  3. package/README.md +64 -51
  4. package/dist/ej2-treegrid.min.js +1 -0
  5. package/dist/ej2-treegrid.umd.min.js +1 -10
  6. package/dist/ej2-treegrid.umd.min.js.map +1 -1
  7. package/dist/es6/ej2-treegrid.es2015.js +2046 -1076
  8. package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
  9. package/dist/es6/ej2-treegrid.es5.js +2131 -1113
  10. package/dist/es6/ej2-treegrid.es5.js.map +1 -1
  11. package/dist/global/ej2-treegrid.min.js +1 -10
  12. package/dist/global/ej2-treegrid.min.js.map +1 -1
  13. package/dist/global/index.d.ts +0 -9
  14. package/helpers/e2e/index.js +8 -6
  15. package/helpers/e2e/treegridhelper.js +82 -65
  16. package/package.json +64 -64
  17. package/src/treegrid/actions/batch-edit.js +115 -87
  18. package/src/treegrid/actions/clipboard.d.ts +3 -2
  19. package/src/treegrid/actions/clipboard.js +37 -35
  20. package/src/treegrid/actions/context-menu.js +53 -1
  21. package/src/treegrid/actions/crud-actions.js +67 -56
  22. package/src/treegrid/actions/detail-row.js +7 -7
  23. package/src/treegrid/actions/edit.d.ts +1 -0
  24. package/src/treegrid/actions/edit.js +168 -115
  25. package/src/treegrid/actions/excel-export.js +2 -2
  26. package/src/treegrid/actions/filter.js +13 -16
  27. package/src/treegrid/actions/freeze-column.d.ts +1 -0
  28. package/src/treegrid/actions/freeze-column.js +48 -11
  29. package/src/treegrid/actions/infinite-scroll.js +25 -22
  30. package/src/treegrid/actions/logger.js +10 -10
  31. package/src/treegrid/actions/page.d.ts +1 -0
  32. package/src/treegrid/actions/page.js +21 -8
  33. package/src/treegrid/actions/reorder.js +2 -2
  34. package/src/treegrid/actions/rowdragdrop.js +142 -86
  35. package/src/treegrid/actions/selection.d.ts +1 -0
  36. package/src/treegrid/actions/selection.js +71 -39
  37. package/src/treegrid/actions/sort.js +17 -5
  38. package/src/treegrid/actions/summary.js +24 -24
  39. package/src/treegrid/actions/toolbar.js +45 -43
  40. package/src/treegrid/actions/virtual-scroll.js +7 -4
  41. package/src/treegrid/base/constant.d.ts +30 -0
  42. package/src/treegrid/base/constant.js +30 -0
  43. package/src/treegrid/base/data.d.ts +1 -0
  44. package/src/treegrid/base/data.js +257 -57
  45. package/src/treegrid/base/treegrid-model.d.ts +50 -34
  46. package/src/treegrid/base/treegrid.d.ts +57 -35
  47. package/src/treegrid/base/treegrid.js +363 -200
  48. package/src/treegrid/enum.d.ts +8 -2
  49. package/src/treegrid/enum.js +2 -0
  50. package/src/treegrid/models/column.d.ts +6 -6
  51. package/src/treegrid/models/column.js +9 -9
  52. package/src/treegrid/models/index.d.ts +2 -0
  53. package/src/treegrid/models/index.js +1 -0
  54. package/src/treegrid/models/loading-indicator-model.d.ts +20 -0
  55. package/src/treegrid/models/loading-indicator.d.ts +17 -0
  56. package/src/treegrid/models/loading-indicator.js +34 -0
  57. package/src/treegrid/renderer/render.d.ts +4 -4
  58. package/src/treegrid/renderer/render.js +33 -24
  59. package/src/treegrid/renderer/virtual-row-model-generator.js +15 -6
  60. package/src/treegrid/renderer/virtual-tree-content-render.d.ts +5 -2
  61. package/src/treegrid/renderer/virtual-tree-content-render.js +224 -106
  62. package/src/treegrid/renderer/virtual-tree-freeze-render.d.ts +59 -0
  63. package/src/treegrid/renderer/virtual-tree-freeze-render.js +163 -0
  64. package/src/treegrid/utils.js +13 -12
  65. package/styles/bootstrap-dark.css +14 -1
  66. package/styles/bootstrap.css +14 -1
  67. package/styles/bootstrap4.css +14 -1
  68. package/styles/bootstrap5-dark.css +16 -2
  69. package/styles/bootstrap5.css +16 -2
  70. package/styles/fabric-dark.css +14 -1
  71. package/styles/fabric.css +14 -1
  72. package/styles/fluent-dark.css +15 -2
  73. package/styles/fluent.css +15 -2
  74. package/styles/highcontrast-light.css +14 -1
  75. package/styles/highcontrast.css +14 -1
  76. package/styles/material-dark.css +14 -1
  77. package/styles/material.css +14 -1
  78. package/styles/tailwind-dark.css +14 -1
  79. package/styles/tailwind.css +14 -1
  80. package/styles/treegrid/_all.scss +1 -1
  81. package/styles/treegrid/_bootstrap-dark-definition.scss +1 -1
  82. package/styles/treegrid/_bootstrap-definition.scss +1 -2
  83. package/styles/treegrid/_bootstrap4-definition.scss +0 -1
  84. package/styles/treegrid/_bootstrap5-definition.scss +0 -1
  85. package/styles/treegrid/_fabric-dark-definition.scss +1 -2
  86. package/styles/treegrid/_fabric-definition.scss +1 -2
  87. package/styles/treegrid/_fluent-definition.scss +0 -1
  88. package/styles/treegrid/_fusionnew-definition.scss +28 -0
  89. package/styles/treegrid/_highcontrast-definition.scss +0 -1
  90. package/styles/treegrid/_highcontrast-light-definition.scss +0 -2
  91. package/styles/treegrid/_icons.scss +12 -1
  92. package/styles/treegrid/_layout.scss +4 -4
  93. package/styles/treegrid/_material-definition.scss +0 -1
  94. package/styles/treegrid/_material3-definition.scss +28 -0
  95. package/styles/treegrid/_tailwind-definition.scss +0 -1
  96. package/styles/treegrid/_theme.scss +1 -0
  97. package/styles/treegrid/bootstrap-dark.css +14 -1
  98. package/styles/treegrid/bootstrap.css +14 -1
  99. package/styles/treegrid/bootstrap4.css +14 -1
  100. package/styles/treegrid/bootstrap5-dark.css +16 -2
  101. package/styles/treegrid/bootstrap5.css +16 -2
  102. package/styles/treegrid/fabric-dark.css +14 -1
  103. package/styles/treegrid/fabric.css +14 -1
  104. package/styles/treegrid/fluent-dark.css +15 -2
  105. package/styles/treegrid/fluent.css +15 -2
  106. package/styles/treegrid/highcontrast-light.css +14 -1
  107. package/styles/treegrid/highcontrast.css +14 -1
  108. package/styles/treegrid/icons/_bootstrap-dark.scss +12 -1
  109. package/styles/treegrid/icons/_bootstrap.scss +12 -1
  110. package/styles/treegrid/icons/_bootstrap4.scss +12 -1
  111. package/styles/treegrid/icons/_bootstrap5.scss +11 -0
  112. package/styles/treegrid/icons/_fabric-dark.scss +12 -1
  113. package/styles/treegrid/icons/_fabric.scss +12 -1
  114. package/styles/treegrid/icons/_fluent.scss +11 -0
  115. package/styles/treegrid/icons/_fusionnew.scss +26 -0
  116. package/styles/treegrid/icons/_highcontrast-light.scss +12 -1
  117. package/styles/treegrid/icons/_highcontrast.scss +11 -0
  118. package/styles/treegrid/icons/_material-dark.scss +12 -1
  119. package/styles/treegrid/icons/_material.scss +11 -0
  120. package/styles/treegrid/icons/_material3.scss +26 -0
  121. package/styles/treegrid/icons/_tailwind-dark.scss +11 -0
  122. package/styles/treegrid/icons/_tailwind.scss +11 -0
  123. package/styles/treegrid/material-dark.css +14 -1
  124. package/styles/treegrid/material.css +14 -1
  125. package/styles/treegrid/tailwind-dark.css +14 -1
  126. package/styles/treegrid/tailwind.css +14 -1
@@ -21,6 +21,7 @@ var Edit = /** @class */ (function () {
21
21
  this.deletedRecords = 'deletedRecords';
22
22
  this.prevAriaRowIndex = '-1';
23
23
  this.isAddedRowByMethod = false;
24
+ this.isAddedRowByContextMenu = false;
24
25
  Grid.Inject(GridEdit);
25
26
  this.parent = parent;
26
27
  this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);
@@ -71,7 +72,7 @@ var Edit = /** @class */ (function () {
71
72
  Edit.prototype.getRowPosition = function (addArgs) {
72
73
  addArgs.newRowPosition = this.parent.editSettings.newRowPosition;
73
74
  addArgs.addRowIndex = this.addRowIndex;
74
- addArgs.ariaRowIndex = +this.prevAriaRowIndex;
75
+ addArgs.dataRowIndex = +this.prevAriaRowIndex;
75
76
  };
76
77
  Edit.prototype.beforeStartEdit = function (args) {
77
78
  this.parent.trigger(events.actionBegin, args);
@@ -140,13 +141,13 @@ var Edit = /** @class */ (function () {
140
141
  var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :
141
142
  eventArgs.row.rowIndex - 1;
142
143
  var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?
143
- treeObj.getCurrentViewRecords()[rowIndex][treeObj.getPrimaryKeyFieldNames()[0]] : -1;
144
+ treeObj.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)][treeObj.getPrimaryKeyFieldNames()[0]] : -1;
144
145
  treeObj.grid.query.addParams('relationalKey', keyData);
145
146
  }
146
147
  else if (eventName === 'actionComplete') {
147
148
  var paramsLength = treeObj.grid.query.params.length;
148
149
  for (var i = 0; i < paramsLength; i++) {
149
- if (treeObj.grid.query.params[i].key === 'relationalKey') {
150
+ if (treeObj.grid.query.params[parseInt(i.toString(), 10)].key === 'relationalKey') {
150
151
  treeObj.grid.query.params.splice(i);
151
152
  }
152
153
  }
@@ -196,9 +197,9 @@ var Edit = /** @class */ (function () {
196
197
  var size = Math.ceil(newRowIndex / this.parent.grid.pageSettings.pageSize);
197
198
  var page = size > 0 ? size : 1;
198
199
  var dataIndex = newRowIndex - ((page - 1) * this.parent.pageSettings.pageSize);
199
- var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];
200
+ var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule["" + infiniteData];
200
201
  infiniteCurrentViewData[1].splice(0, 1);
201
- var data = infiniteCurrentViewData[page];
202
+ var data = infiniteCurrentViewData[parseInt(page.toString(), 10)];
202
203
  if (!isNullOrUndefined(this.addRowRecord)) {
203
204
  data.filter(function (e, index) {
204
205
  if (e.uniqueID === _this.addRowRecord.uniqueID) {
@@ -212,12 +213,12 @@ var Edit = /** @class */ (function () {
212
213
  }
213
214
  if (dataIndex >= this.parent.pageSettings.pageSize) {
214
215
  page += 1;
215
- data = infiniteCurrentViewData[page];
216
+ data = infiniteCurrentViewData[parseInt(page.toString(), 10)];
216
217
  dataIndex = dataIndex - this.parent.pageSettings.pageSize >= 0 ? dataIndex - this.parent.pageSettings.pageSize : 0;
217
218
  }
218
219
  dataIndex = this.parent.editSettings.newRowPosition === 'Below' ? dataIndex + 1 : dataIndex;
219
220
  data.splice(dataIndex, 0, newRecord);
220
- this.parent.grid.infiniteScrollModule[updateCurrentViewData]();
221
+ this.parent.grid.infiniteScrollModule["" + updateCurrentViewData]();
221
222
  };
222
223
  Edit.prototype.recordDoubleClick = function (args) {
223
224
  var target = args.target;
@@ -227,7 +228,7 @@ var Edit = /** @class */ (function () {
227
228
  if (!(this.parent.grid.editSettings.allowEditing) || this.parent.grid.isEdit) {
228
229
  return;
229
230
  }
230
- var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('aria-colindex'));
231
+ var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('data-colindex'));
231
232
  if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&
232
233
  this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||
233
234
  target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {
@@ -235,11 +236,15 @@ var Edit = /** @class */ (function () {
235
236
  this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);
236
237
  if (this.parent.enableVirtualization) {
237
238
  var tr = parentsUntil(args.target, 'e-row');
238
- this.prevAriaRowIndex = tr.getAttribute('aria-rowindex');
239
- tr.setAttribute('aria-rowindex', tr.rowIndex + '');
239
+ this.prevAriaRowIndex = tr.getAttribute('data-rowindex');
240
+ tr.setAttribute('data-rowindex', tr.rowIndex + '');
240
241
  }
241
242
  this.updateGridEditMode('Batch');
242
243
  }
244
+ else if (this.parent.editSettings.mode === 'Cell' && (!column.allowEditing || column.isPrimaryKey)) {
245
+ this.isOnBatch = true;
246
+ this.updateGridEditMode('Batch');
247
+ }
243
248
  };
244
249
  Edit.prototype.updateGridEditMode = function (mode) {
245
250
  this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);
@@ -266,17 +271,17 @@ var Edit = /** @class */ (function () {
266
271
  };
267
272
  Edit.prototype.deleteUniqueID = function (value) {
268
273
  var idFilter = 'uniqueIDFilterCollection';
269
- delete this.parent[idFilter][value];
274
+ delete this.parent["" + idFilter]["" + value];
270
275
  var id = 'uniqueIDCollection';
271
- delete this.parent[id][value];
276
+ delete this.parent["" + id]["" + value];
272
277
  };
273
278
  Edit.prototype.cellEdit = function (args) {
274
279
  var _this = this;
275
280
  var promise = 'promise';
276
- var prom = args[promise];
277
- delete args[promise];
281
+ var prom = args["" + promise];
282
+ delete args["" + promise];
278
283
  if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex) && this.prevAriaRowIndex !== '-1') {
279
- args.row.setAttribute('aria-rowindex', this.prevAriaRowIndex);
284
+ args.row.setAttribute('data-rowindex', this.prevAriaRowIndex);
280
285
  this.prevAriaRowIndex = undefined;
281
286
  }
282
287
  if (this.keyPress !== 'enter') {
@@ -312,6 +317,9 @@ var Edit = /** @class */ (function () {
312
317
  args.cancel = true;
313
318
  }
314
319
  }
320
+ if (this.parent.enableVirtualization) {
321
+ this.parent.grid.contentModule['editedRowIndex'] = this.parent.grid.editModule.editModule['index'];
322
+ }
315
323
  // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {
316
324
  // this.isAdd = false;
317
325
  // }
@@ -355,7 +363,7 @@ var Edit = /** @class */ (function () {
355
363
  args.rowData[args.columnName] = args.value;
356
364
  var row_1;
357
365
  if (isNullOrUndefined(args.cell)) {
358
- row_1 = this.parent.grid.editModule[editModule].form.parentElement.parentNode;
366
+ row_1 = this.parent.grid.editModule["" + editModule].form.parentElement.parentNode;
359
367
  }
360
368
  else {
361
369
  row_1 = args.cell.parentNode;
@@ -406,7 +414,7 @@ var Edit = /** @class */ (function () {
406
414
  var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,
407
415
  rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,
408
416
  filterChoiceCount: null, excelSearchOperator: null };
409
- this.parent.grid.getDataModule()[eventPromise](editArgs, this.parent.grid.query);
417
+ this.parent.grid.getDataModule()["" + eventPromise](editArgs, this.parent.grid.query);
410
418
  }
411
419
  else {
412
420
  this.updateCell(args, rowIndex_1);
@@ -431,6 +439,9 @@ var Edit = /** @class */ (function () {
431
439
  this.parent.grid.isEdit = true;
432
440
  }
433
441
  }
442
+ if (this.parent.enableVirtualization) {
443
+ this.parent.grid.contentModule['virtualData'] = {};
444
+ }
434
445
  };
435
446
  Edit.prototype.afterCellSave = function (args, row, rowIndex) {
436
447
  var mRow;
@@ -448,23 +459,23 @@ var Edit = /** @class */ (function () {
448
459
  this.parent.getFrozenRightColumnsCount() > 0) ? true : false;
449
460
  if (freeze) {
450
461
  if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {
451
- mRow = this.parent.grid.getRows()[rowIndex];
462
+ mRow = this.parent.grid.getRows()[parseInt(rowIndex.toString(), 10)];
452
463
  }
453
464
  else if (args.cell.closest('.e-movableheader') || args.cell.closest('.e-movablecontent')) {
454
- mRow = this.parent.grid.getMovableRows()[rowIndex];
465
+ mRow = this.parent.grid.getMovableRows()[parseInt(rowIndex.toString(), 10)];
455
466
  }
456
467
  else {
457
- mRow = this.parent.grid.getFrozenRightRows()[rowIndex];
468
+ mRow = this.parent.grid.getFrozenRightRows()[parseInt(rowIndex.toString(), 10)];
458
469
  }
459
470
  removeClass([mRow], ['e-editedrow', 'e-batchrow']);
460
471
  removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);
461
472
  }
462
473
  else if (this.parent.getFrozenColumns() > 0) {
463
474
  if (args.cell.closest('.e-frozenheader') || args.cell.closest('.e-frozencontent')) {
464
- mRow = this.parent.grid.getRows()[rowIndex];
475
+ mRow = this.parent.grid.getRows()[parseInt(rowIndex.toString(), 10)];
465
476
  }
466
477
  else {
467
- mRow = this.parent.grid.getMovableRows()[rowIndex];
478
+ mRow = this.parent.grid.getMovableRows()[parseInt(rowIndex.toString(), 10)];
468
479
  }
469
480
  removeClass([mRow], ['e-editedrow', 'e-batchrow']);
470
481
  removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);
@@ -501,7 +512,7 @@ var Edit = /** @class */ (function () {
501
512
  };
502
513
  Edit.prototype.updateCell = function (args, rowIndex) {
503
514
  this.parent.grid.editModule.updateCell(rowIndex, args.columnName, args.rowData[args.columnName]);
504
- this.parent.grid.getRowsObject()[rowIndex].data = args.rowData;
515
+ this.parent.grid.getRowsObject()[parseInt(rowIndex.toString(), 10)].data = args.rowData;
505
516
  };
506
517
  Edit.prototype.crudAction = function (details, columnName) {
507
518
  editAction(details, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName, this.addRowRecord);
@@ -509,42 +520,46 @@ var Edit = /** @class */ (function () {
509
520
  var data = this.parent.grid.dataSource instanceof DataManager ?
510
521
  this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource;
511
522
  for (var i = 0; i < data.length; i++) {
512
- data[i].index = i;
523
+ data[parseInt(i.toString(), 10)].index = i;
513
524
  var key = this.parent.grid.getPrimaryKeyFieldNames()[0];
514
- if (details.value[key] === data[i][key]) {
525
+ if (details.value["" + key] === data[parseInt(i.toString(), 10)]["" + key]) {
515
526
  if (details.action === 'add') {
516
- data[i].level = this.internalProperties.level;
517
- data[i].taskData = this.internalProperties.taskData;
518
- data[i].uniqueID = this.internalProperties.uniqueID;
527
+ data[parseInt(i.toString(), 10)].level = this.internalProperties.level;
528
+ data[parseInt(i.toString(), 10)].taskData = this.internalProperties.taskData;
529
+ data[parseInt(i.toString(), 10)].uniqueID = this.internalProperties.uniqueID;
519
530
  if (!isNullOrUndefined(this.internalProperties.parentItem)) {
520
- data[i].parentItem = this.internalProperties.parentItem;
521
- data[i].parentUniqueID = this.internalProperties.parentUniqueID;
531
+ data[parseInt(i.toString(), 10)].parentItem = this.internalProperties.parentItem;
532
+ data[parseInt(i.toString(), 10)].parentUniqueID = this.internalProperties.parentUniqueID;
522
533
  }
523
- data[i].childRecords = this.internalProperties.childRecords;
534
+ data[parseInt(i.toString(), 10)].childRecords = this.internalProperties.childRecords;
524
535
  }
525
536
  }
526
- setValue('uniqueIDCollection.' + data[i].uniqueID + '.index', i, this.parent);
537
+ setValue('uniqueIDCollection.' + data[parseInt(i.toString(), 10)].uniqueID + '.index', i, this.parent);
527
538
  var adaptor = this.parent.dataSource.adaptor;
528
539
  if ((isRemoteData(this.parent) || adaptor instanceof RemoteSaveAdaptor)) {
529
- setValue('uniqueIDCollection.' + data[i].uniqueID, data[i], this.parent);
540
+ setValue('uniqueIDCollection.' + data[parseInt(i.toString(), 10)].uniqueID, data[parseInt(i.toString(), 10)], this.parent);
530
541
  }
531
- if (!data[i].level) {
532
- this.parent.parentData.push(data[i]);
542
+ if (!data[parseInt(i.toString(), 10)].level) {
543
+ this.parent.parentData.push(data[parseInt(i.toString(), 10)]);
533
544
  }
534
545
  }
535
- if (details.action === 'add' && this.previousNewRowPosition != null) {
536
- this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);
537
- this.previousNewRowPosition = null;
546
+ if (!this.parent.enableInfiniteScrolling) {
547
+ if (details.action === 'add' && this.previousNewRowPosition != null) {
548
+ this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);
549
+ this.previousNewRowPosition = null;
550
+ }
538
551
  }
539
552
  };
540
553
  Edit.prototype.updateIndex = function (data, rows, records) {
541
554
  for (var j = 0; j < this.parent.getDataRows().length; j++) {
542
- var data1 = records[j];
543
- var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);
544
- data1.index = index;
545
- if (!isNullOrUndefined(data1.parentItem)) {
546
- var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);
547
- data1.parentItem.index = parentIndex;
555
+ var data1 = records[parseInt(j.toString(), 10)];
556
+ if (!isNullOrUndefined(data1)) {
557
+ var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);
558
+ data1.index = index;
559
+ if (!isNullOrUndefined(data1.parentItem)) {
560
+ var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);
561
+ data1.parentItem.index = parentIndex;
562
+ }
548
563
  }
549
564
  }
550
565
  var count = -1;
@@ -552,43 +567,45 @@ var Edit = /** @class */ (function () {
552
567
  if (this.parent.getFrozenColumns() > 0) {
553
568
  var cells = rows[0].querySelectorAll('.e-rowcell');
554
569
  for (var l = 0; l < cells.length; l++) {
555
- if (cells[l].classList.contains('e-gridrowindex0level0')) {
570
+ if (cells[parseInt(l.toString(), 10)].classList.contains('e-gridrowindex0level0')) {
556
571
  treeColIndex = l;
557
572
  break;
558
573
  }
559
574
  }
560
575
  }
561
576
  for (var k = 0; k < this.parent.getRows().length; k++) {
562
- if (!rows[k].classList.contains('e-detailrow')) {
577
+ if (!rows[parseInt(k.toString(), 10)].classList.contains('e-detailrow')) {
563
578
  count++;
564
579
  }
565
- var data2 = records[count];
566
- var index = data2.index;
567
- var level = data2.level;
568
- var row = rows[k];
569
- if (!isNullOrUndefined(data2.parentItem)) {
570
- index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);
571
- }
572
- var treecell = row.cells[treeColIndex];
573
- if (!isNullOrUndefined(treecell)) {
574
- for (var l = 0; l < treecell.classList.length; l++) {
575
- var value = treecell.classList[l];
576
- var remove = /e-gridrowindex/i;
577
- var removed = /e-griddetailrowindex/i;
578
- var result = value.match(remove);
579
- var results = value.match(removed);
580
- if (result != null) {
581
- removeClass([treecell], value);
580
+ var data2 = records[parseInt(count.toString(), 10)];
581
+ if (!isNullOrUndefined(data2)) {
582
+ var index = data2.index;
583
+ var level = data2.level;
584
+ var row = rows[parseInt(k.toString(), 10)];
585
+ if (!isNullOrUndefined(data2.parentItem)) {
586
+ index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);
587
+ }
588
+ var treecell = row.cells[parseInt(treeColIndex.toString(), 10)];
589
+ if (!isNullOrUndefined(treecell)) {
590
+ for (var l = 0; l < treecell.classList.length; l++) {
591
+ var value = treecell.classList[parseInt(l.toString(), 10)];
592
+ var remove = /e-gridrowindex/i;
593
+ var removed = /e-griddetailrowindex/i;
594
+ var result = value.match(remove);
595
+ var results = value.match(removed);
596
+ if (result != null) {
597
+ removeClass([treecell], value);
598
+ }
599
+ if (results != null) {
600
+ removeClass([treecell], value);
601
+ }
582
602
  }
583
- if (results != null) {
584
- removeClass([treecell], value);
603
+ if (!rows[parseInt(k.toString(), 10)].classList.contains('e-detailrow')) {
604
+ addClass([treecell], 'e-gridrowindex' + index + 'level' + level);
605
+ }
606
+ else {
607
+ addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);
585
608
  }
586
- }
587
- if (!rows[k].classList.contains('e-detailrow')) {
588
- addClass([treecell], 'e-gridrowindex' + index + 'level' + level);
589
- }
590
- else {
591
- addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);
592
609
  }
593
610
  }
594
611
  }
@@ -606,8 +623,8 @@ var Edit = /** @class */ (function () {
606
623
  }
607
624
  }
608
625
  var rows = this.parent.grid.getDataRows();
609
- var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;
610
- var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;
626
+ var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;
627
+ var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;
611
628
  var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;
612
629
  var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';
613
630
  if (this.parent.editSettings.mode !== 'Dialog') {
@@ -617,17 +634,18 @@ var Edit = /** @class */ (function () {
617
634
  else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')
618
635
  && (this.selectedIndex > -1 || isVirtualization) && withinRange) {
619
636
  position = 'after';
620
- if (!isNullOrUndefined(records[index]) && records[index].expanded) {
637
+ if (!isNullOrUndefined(records[parseInt(index.toString(), 10)]) &&
638
+ records[parseInt(index.toString(), 10)].expanded) {
621
639
  if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1
622
640
  || this.parent.getBatchChanges()[this.deletedRecords].length)) {
623
- index += findChildrenRecords(records[index]).length;
641
+ index += findChildrenRecords(records[parseInt(index.toString(), 10)]).length;
624
642
  if (this.parent.editSettings.newRowPosition !== 'Child') {
625
643
  var batchChildCount = this.batchEditModule.getBatchChildCount();
626
644
  index = index + batchChildCount;
627
645
  }
628
646
  }
629
647
  else {
630
- index += findChildrenRecords(records[index]).length;
648
+ index += findChildrenRecords(records[parseInt(index.toString(), 10)]).length;
631
649
  }
632
650
  }
633
651
  }
@@ -638,14 +656,14 @@ var Edit = /** @class */ (function () {
638
656
  index = rows.length - 2;
639
657
  }
640
658
  var r = 'rows';
641
- var newRowObject = this.parent.grid.contentModule[r][0];
659
+ var newRowObject = this.parent.grid.contentModule["" + r][0];
642
660
  var focussedElement = document.activeElement;
643
- rows[index + 1][position](rows[0]);
661
+ rows[index + 1]["" + position](rows[0]);
644
662
  setValue('batchIndex', index + 1, this.batchEditModule);
645
663
  var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Above' ? index : index + 1;
646
664
  if (this.parent.editSettings.mode === 'Batch') {
647
- this.parent.grid.contentModule[r].splice(0, 1);
648
- this.parent.grid.contentModule[r].splice(rowObjectIndex, 0, newRowObject);
665
+ this.parent.grid.contentModule["" + r].splice(0, 1);
666
+ this.parent.grid.contentModule["" + r].splice(rowObjectIndex, 0, newRowObject);
649
667
  }
650
668
  var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||
651
669
  this.parent.getFrozenRightColumnsCount() > 0) ? true : false;
@@ -653,44 +671,56 @@ var Edit = /** @class */ (function () {
653
671
  var movableRows = this.parent.getMovableDataRows();
654
672
  var frows = 'freezeRows';
655
673
  var newFreezeRowObject = this.parent.grid.getRowsObject()[0];
656
- movableRows[index + 1][position](movableRows[0]);
674
+ movableRows[index + 1]["" + position](movableRows[0]);
657
675
  if (freeze) {
658
676
  var rightFrozenRows = this.parent.getFrozenRightDataRows();
659
- rightFrozenRows[index + 1][position](rightFrozenRows[0]);
677
+ rightFrozenRows[index + 1]["" + position](rightFrozenRows[0]);
660
678
  }
661
679
  if (this.parent.editSettings.mode === 'Batch') {
662
- this.parent.grid.contentModule[frows].splice(0, 1);
663
- this.parent.grid.contentModule[frows].splice(rowObjectIndex, 0, newFreezeRowObject);
680
+ this.parent.grid.contentModule["" + frows].splice(0, 1);
681
+ this.parent.grid.contentModule["" + frows].splice(rowObjectIndex, 0, newFreezeRowObject);
664
682
  }
665
683
  setValue('batchIndex', index + 1, this.batchEditModule);
666
684
  }
667
685
  if (this.parent.editSettings.mode === 'Row' || this.parent.editSettings.mode === 'Cell') {
668
686
  var errors = this.parent.grid.getContentTable().querySelectorAll('.e-griderror');
669
687
  for (var i = 0; i < errors.length; i++) {
670
- errors[i].remove();
688
+ errors[parseInt(i.toString(), 10)].remove();
671
689
  }
672
690
  setValue('errorRules', [], this.parent.grid.editModule.formObj);
673
691
  }
674
692
  if (isVirtualization) {
675
693
  this.prevAriaRowIndex = '-1';
676
694
  }
677
- focussedElement.focus();
695
+ if (!this.parent.enableVirtualization || this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {
696
+ focussedElement.focus();
697
+ }
698
+ if (this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {
699
+ this.parent.grid.contentModule['createEmptyRowdata']();
700
+ }
678
701
  }
679
702
  }
680
- if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1) {
703
+ if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1 && this['isAddedRowByMethod'] && !this.isAddedRowByContextMenu) {
681
704
  index = this.batchEditModule.getAddRowIndex();
682
705
  this.selectedIndex = this.batchEditModule.getSelectedIndex();
683
- if (this.parent.editModule['isAddedRowByMethod']) {
684
- var args = {
685
- action: 'add',
686
- data: this.parent.getBatchChanges()['addedRecords'][0],
687
- index: index,
688
- seletedRow: 0
689
- };
690
- this.parent.editModule.beginAddEdit(args);
691
- this.parent.editModule.batchEditModule['batchAddRowRecord'].push(this.parent.editModule.batchEditModule['addRowRecord']);
692
- this.parent.editModule.batchEditModule['batchAddedRecords'].push(args['data']);
706
+ var batchAddedRecords = this.parent.getBatchChanges()['addedRecords'];
707
+ var newlyAddedRecord = void 0;
708
+ if (batchAddedRecords.length) {
709
+ for (var i = 0; i < batchAddedRecords.length; i++) {
710
+ if (isNullOrUndefined(batchAddedRecords[parseInt(i.toString(), 10)].uniqueID)) {
711
+ newlyAddedRecord = batchAddedRecords[parseInt(i.toString(), 10)];
712
+ }
713
+ }
693
714
  }
715
+ var args = {
716
+ action: 'add',
717
+ data: newlyAddedRecord,
718
+ index: index,
719
+ seletedRow: 0
720
+ };
721
+ this.beginAddEdit(args);
722
+ this.batchEditModule['batchAddRowRecord'].push(this.batchEditModule['addRowRecord']);
723
+ this.batchEditModule['batchAddedRecords'].push(args['data']);
694
724
  }
695
725
  };
696
726
  // private beforeDataBound(args: BeforeDataBoundArgs): void {
@@ -732,8 +762,8 @@ var Edit = /** @class */ (function () {
732
762
  var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();
733
763
  var _loop_1 = function (i) {
734
764
  this_1.parent.flatData.filter(function (e) {
735
- if (e[primaryKeys_2[0]] === args.data[i][primaryKeys_2[0]]) {
736
- data_1[i] = e;
765
+ if (e["" + primaryKeys_2[0]] === args.data[parseInt(i.toString(), 10)][primaryKeys_2[0]]) {
766
+ data_1[parseInt(i.toString(), 10)] = e;
737
767
  }
738
768
  });
739
769
  };
@@ -743,10 +773,10 @@ var Edit = /** @class */ (function () {
743
773
  }
744
774
  }
745
775
  for (var i = 0; i < data_1.length; i++) {
746
- this.deleteUniqueID(data_1[i].uniqueID);
747
- var childs = findChildrenRecords(data_1[i]);
776
+ this.deleteUniqueID(data_1[parseInt(i.toString(), 10)].uniqueID);
777
+ var childs = findChildrenRecords(data_1[parseInt(i.toString(), 10)]);
748
778
  for (var c = 0; c < childs.length; c++) {
749
- this.deleteUniqueID(childs[c].uniqueID);
779
+ this.deleteUniqueID(childs[parseInt(c.toString(), 10)].uniqueID);
750
780
  }
751
781
  args.data = args.data.concat(childs);
752
782
  }
@@ -757,7 +787,7 @@ var Edit = /** @class */ (function () {
757
787
  this.selectedIndex = this.parent.grid.selectedRowIndex;
758
788
  }
759
789
  if (this.parent.enableVirtualization) {
760
- var selector = '.e-row[aria-rowindex="' + this.selectedIndex + '"]';
790
+ var selector = '.e-row[data-rowindex="' + this.selectedIndex + '"]';
761
791
  var row = void 0;
762
792
  if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&
763
793
  this.parent.editSettings.newRowPosition !== 'Bottom') {
@@ -767,7 +797,7 @@ var Edit = /** @class */ (function () {
767
797
  }
768
798
  else {
769
799
  if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {
770
- selector = '.e-row[aria-rowindex="' + this.prevAriaRowIndex + '"]';
800
+ selector = '.e-row[data-rowindex="' + this.prevAriaRowIndex + '"]';
771
801
  row = this.parent.getContent().querySelector(selector);
772
802
  this.addRowIndex = row ? row.rowIndex : 0;
773
803
  }
@@ -778,14 +808,22 @@ var Edit = /** @class */ (function () {
778
808
  }
779
809
  else {
780
810
  if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {
781
- this.addRowIndex = args.index;
811
+ if (args.index !== 0) {
812
+ this.addRowIndex = args.index;
813
+ }
814
+ else {
815
+ this.addRowIndex = this.parent.grid.selectedRowIndex;
816
+ }
782
817
  }
783
818
  else {
784
819
  this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;
785
820
  }
786
821
  }
787
822
  if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {
788
- this.addRowRecord = this.parent.flatData[args.index];
823
+ this.addRowRecord = this.parent.flatData[this.parent.grid.selectedRowIndex];
824
+ if (this.parent.enableVirtualization && this.isAddedRowByContextMenu) {
825
+ this.addRowRecord = this.parent.getCurrentViewRecords()[this.addRowIndex];
826
+ }
789
827
  }
790
828
  else {
791
829
  this.addRowRecord = this.parent.getSelectedRecords()[0];
@@ -821,10 +859,19 @@ var Edit = /** @class */ (function () {
821
859
  var key = this.parent.grid.getPrimaryKeyFieldNames()[0];
822
860
  var position = null;
823
861
  value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;
824
- var currentData = this.parent.grid.getCurrentViewRecords();
862
+ var currentData = void 0;
825
863
  if (this.parent.enableVirtualization && args.index !== 0) {
826
- this.addRowIndex = this.parent.grid.getCurrentViewRecords().indexOf(this.addRowRecord);
827
- this.selectedIndex = parseInt(this.parent.getRows()[this.addRowIndex].getAttribute('aria-rowindex'), 10);
864
+ currentData = this.parent.flatData;
865
+ }
866
+ else if (this.parent.editSettings.mode === 'Batch' && this['isAddedRowByMethod'] && !isNullOrUndefined(this.addRowIndex)) {
867
+ currentData = this.batchEditModule['batchRecords'];
868
+ }
869
+ else {
870
+ currentData = this.parent.grid.getCurrentViewRecords();
871
+ }
872
+ if (this.parent.enableVirtualization && args.index !== 0) {
873
+ this.addRowIndex = this.parent.flatData.indexOf(this.addRowRecord);
874
+ this.selectedIndex = this.addRowIndex;
828
875
  }
829
876
  var index = this.addRowIndex;
830
877
  value.uniqueID = getUid(this.parent.element.id + '_data_');
@@ -837,8 +884,9 @@ var Edit = /** @class */ (function () {
837
884
  var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';
838
885
  var rows = this.parent.getRows();
839
886
  var firstAriaIndex = rows.length ? currentData.indexOf(currentData[0]) : 0;
840
- var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;
841
- var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;
887
+ var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;
888
+ var withinRange = this.parent.enableVirtualization && args.index !== 0 ? true :
889
+ this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;
842
890
  if (currentData.length) {
843
891
  idMapping = currentData[this.addRowIndex][this.parent.idMapping];
844
892
  parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];
@@ -874,7 +922,12 @@ var Edit = /** @class */ (function () {
874
922
  }
875
923
  index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);
876
924
  if (this.isSelfReference) {
877
- value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;
925
+ if (!this.parent.isLocalData && this.parent.editModule.selectedIndex === -1) {
926
+ value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = null;
927
+ }
928
+ else {
929
+ value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;
930
+ }
878
931
  if (!isNullOrUndefined(value.parentItem)) {
879
932
  updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);
880
933
  }
@@ -919,10 +972,10 @@ var Edit = /** @class */ (function () {
919
972
  if (args.requestType === 'delete') {
920
973
  var deletedValues = args.data;
921
974
  for (var i = 0; i < deletedValues.length; i++) {
922
- if (deletedValues[i].parentItem) {
923
- var parentItem = getParentData(this.parent, deletedValues[i].parentItem.uniqueID);
975
+ if (deletedValues[parseInt(i.toString(), 10)].parentItem) {
976
+ var parentItem = getParentData(this.parent, deletedValues[parseInt(i.toString(), 10)].parentItem.uniqueID);
924
977
  if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {
925
- var childIndex = parentItem.childRecords.indexOf(deletedValues[i]);
978
+ var childIndex = parentItem.childRecords.indexOf(deletedValues[parseInt(i.toString(), 10)]);
926
979
  parentItem.childRecords.splice(childIndex, 1);
927
980
  }
928
981
  }
@@ -191,8 +191,8 @@ var ExcelExport = /** @class */ (function () {
191
191
  /* eslint-disable-next-line */
192
192
  ExcelExport.prototype.finalPageSetup = function (workbook) {
193
193
  for (var i = 0; i < workbook.worksheets.length; i++) {
194
- if (workbook.worksheets[i].rows) {
195
- workbook.worksheets[i].pageSetup = { isSummaryRowBelow: false };
194
+ if (workbook.worksheets[parseInt(i.toString(), 10)].rows) {
195
+ workbook.worksheets[parseInt(i.toString(), 10)].pageSetup = { isSummaryRowBelow: false };
196
196
  }
197
197
  }
198
198
  };