@syncfusion/ej2-treegrid 20.1.56 → 20.2.36

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 (71) hide show
  1. package/CHANGELOG.md +5 -48
  2. package/dist/ej2-treegrid.umd.min.js +2 -2
  3. package/dist/ej2-treegrid.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-treegrid.es2015.js +135 -48
  5. package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
  6. package/dist/es6/ej2-treegrid.es5.js +133 -46
  7. package/dist/es6/ej2-treegrid.es5.js.map +1 -1
  8. package/dist/global/ej2-treegrid.min.js +2 -2
  9. package/dist/global/ej2-treegrid.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/helpers/e2e/index.js +8 -6
  12. package/helpers/e2e/treegridhelper.js +82 -65
  13. package/package.json +9 -9
  14. package/src/treegrid/actions/batch-edit.js +6 -1
  15. package/src/treegrid/actions/edit.js +33 -29
  16. package/src/treegrid/actions/infinite-scroll.js +1 -1
  17. package/src/treegrid/actions/rowdragdrop.js +46 -9
  18. package/src/treegrid/actions/selection.js +1 -1
  19. package/src/treegrid/actions/sort.js +11 -0
  20. package/src/treegrid/base/data.js +12 -0
  21. package/src/treegrid/base/treegrid.js +7 -1
  22. package/src/treegrid/renderer/render.js +2 -0
  23. package/src/treegrid/renderer/virtual-tree-content-render.js +12 -2
  24. package/styles/bootstrap-dark.css +9 -0
  25. package/styles/bootstrap.css +9 -0
  26. package/styles/bootstrap4.css +9 -0
  27. package/styles/bootstrap5-dark.css +9 -0
  28. package/styles/bootstrap5.css +9 -0
  29. package/styles/fabric-dark.css +9 -0
  30. package/styles/fabric.css +9 -0
  31. package/styles/fluent-dark.css +9 -0
  32. package/styles/fluent.css +9 -0
  33. package/styles/highcontrast-light.css +9 -0
  34. package/styles/highcontrast.css +9 -0
  35. package/styles/material-dark.css +9 -0
  36. package/styles/material.css +9 -0
  37. package/styles/tailwind-dark.css +9 -0
  38. package/styles/tailwind.css +9 -0
  39. package/styles/treegrid/_fusionnew-definition.scss +29 -0
  40. package/styles/treegrid/_icons.scss +11 -0
  41. package/styles/treegrid/_material3-definition.scss +29 -0
  42. package/styles/treegrid/bootstrap-dark.css +9 -0
  43. package/styles/treegrid/bootstrap.css +9 -0
  44. package/styles/treegrid/bootstrap4.css +9 -0
  45. package/styles/treegrid/bootstrap5-dark.css +9 -0
  46. package/styles/treegrid/bootstrap5.css +9 -0
  47. package/styles/treegrid/fabric-dark.css +9 -0
  48. package/styles/treegrid/fabric.css +9 -0
  49. package/styles/treegrid/fluent-dark.css +9 -0
  50. package/styles/treegrid/fluent.css +9 -0
  51. package/styles/treegrid/highcontrast-light.css +9 -0
  52. package/styles/treegrid/highcontrast.css +9 -0
  53. package/styles/treegrid/icons/_bootstrap-dark.scss +11 -0
  54. package/styles/treegrid/icons/_bootstrap.scss +11 -0
  55. package/styles/treegrid/icons/_bootstrap4.scss +11 -0
  56. package/styles/treegrid/icons/_bootstrap5.scss +11 -0
  57. package/styles/treegrid/icons/_fabric-dark.scss +11 -0
  58. package/styles/treegrid/icons/_fabric.scss +11 -0
  59. package/styles/treegrid/icons/_fluent.scss +11 -0
  60. package/styles/treegrid/icons/_fusionnew.scss +26 -0
  61. package/styles/treegrid/icons/_highcontrast-light.scss +11 -0
  62. package/styles/treegrid/icons/_highcontrast.scss +11 -0
  63. package/styles/treegrid/icons/_material-dark.scss +11 -0
  64. package/styles/treegrid/icons/_material.scss +11 -0
  65. package/styles/treegrid/icons/_material3.scss +26 -0
  66. package/styles/treegrid/icons/_tailwind-dark.scss +11 -0
  67. package/styles/treegrid/icons/_tailwind.scss +11 -0
  68. package/styles/treegrid/material-dark.css +9 -0
  69. package/styles/treegrid/material.css +9 -0
  70. package/styles/treegrid/tailwind-dark.css +9 -0
  71. package/styles/treegrid/tailwind.css +9 -0
@@ -884,7 +884,7 @@ class Selection {
884
884
  getCheckboxcolumnIndex() {
885
885
  let mappingUid;
886
886
  let columnIndex;
887
- const stackedHeader = "stackedHeader";
887
+ const stackedHeader = 'stackedHeader';
888
888
  const columnModel = 'columnModel';
889
889
  const columns = this.parent[stackedHeader] ? this.parent[columnModel] : (this.parent.columns);
890
890
  for (let col = 0; col < columns.length; col++) {
@@ -1680,6 +1680,8 @@ class Render {
1680
1680
  const cellRenderer = new CellRenderer(this.parent.grid, this.parent.grid.serviceLocator);
1681
1681
  const td = this.parent.getCellFromIndex(rowsObj[j].index, cellIndex - indent);
1682
1682
  cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });
1683
+ const treecell = this.parent.getRows()[j].cells[cellIndex];
1684
+ this.cellRender({ data: rowsObj[j].data, cell: treecell, column: cell.column });
1683
1685
  }
1684
1686
  }
1685
1687
  });
@@ -2223,6 +2225,18 @@ class DataManipulation {
2223
2225
  srtQry.sortBy(this.parent.grid.sortSettings.columns[srt].field, compFun);
2224
2226
  }
2225
2227
  const modifiedData = new DataManager(parentData).executeLocal(srtQry);
2228
+ if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&
2229
+ this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {
2230
+ var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);
2231
+ modifiedData.splice(dragdIndex, 1);
2232
+ var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);
2233
+ if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {
2234
+ modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);
2235
+ }
2236
+ else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {
2237
+ modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);
2238
+ }
2239
+ }
2226
2240
  const sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };
2227
2241
  this.parent.notify('createSort', sortArgs);
2228
2242
  results = sortArgs.modifiedData;
@@ -3367,8 +3381,11 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
3367
3381
  member: 'ExcelExport', args: [this]
3368
3382
  });
3369
3383
  }
3384
+ const freezePresent = this.injectedModules.filter((e) => {
3385
+ return e.prototype.getModuleName() === 'freeze';
3386
+ });
3370
3387
  if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||
3371
- this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount()) {
3388
+ this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount() || freezePresent.length) {
3372
3389
  modules.push({
3373
3390
  member: 'freeze', args: [this]
3374
3391
  });
@@ -4308,6 +4325,9 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
4308
4325
  gridColumn[prop] = this.getGridColumns(column[i][prop], false, index);
4309
4326
  treeGridColumn[prop] = column[i][prop];
4310
4327
  }
4328
+ else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {
4329
+ gridColumn[prop] = treeGridColumn[prop] = treeColumn[prop];
4330
+ }
4311
4331
  else if (!(treeColumn) || prop !== 'sortComparer') {
4312
4332
  gridColumn[prop] = treeGridColumn[prop] = column[i][prop];
4313
4333
  }
@@ -6984,7 +7004,8 @@ class RowDD$1 {
6984
7004
  this.parent[dropPosition] = this.dropPosition;
6985
7005
  const data = [];
6986
7006
  for (let i = 0; i < fromIndexes.length; i++) {
6987
- data[i] = this.parent.getCurrentViewRecords()[fromIndexes[i]];
7007
+ const index = this.parent.getRowByIndex(fromIndexes[i]).rowIndex;
7008
+ data[i] = this.parent.getCurrentViewRecords()[index];
6988
7009
  }
6989
7010
  const isByMethod = true;
6990
7011
  const args = {
@@ -7088,6 +7109,9 @@ class RowDD$1 {
7088
7109
  else {
7089
7110
  dropIndex = this.selectedRow.rowIndex - 1;
7090
7111
  }
7112
+ if (this.parent.enableVirtualization && this.parent.allowRowDragAndDrop && this.selectedRecord) {
7113
+ dropIndex = parseInt(this.selectedRow.getAttribute('aria-rowindex'), 10) - 1;
7114
+ }
7091
7115
  tObj[action] = 'indenting';
7092
7116
  tObj[droppedIndex] = dropIndex;
7093
7117
  this.eventTrigger('indenting', dropIndex);
@@ -7104,6 +7128,9 @@ class RowDD$1 {
7104
7128
  dropIndex = i;
7105
7129
  }
7106
7130
  }
7131
+ if (this.parent.enableVirtualization && this.parent.allowRowDragAndDrop && this.selectedRecord) {
7132
+ dropIndex = parseInt(this.parent.getRows()[dropIndex].getAttribute('aria-rowindex'), 10);
7133
+ }
7107
7134
  tObj[action] = 'outdenting';
7108
7135
  tObj[droppedIndex] = dropIndex;
7109
7136
  this.eventTrigger('outdenting', dropIndex);
@@ -7120,10 +7147,20 @@ class RowDD$1 {
7120
7147
  this.parent.trigger(actionBegin, actionArgs, (actionArgs) => {
7121
7148
  if (!actionArgs.cancel) {
7122
7149
  if (actionArgs.action === 'indenting') {
7123
- this.reorderRows([this.selectedRow.rowIndex], dropIndex, 'child');
7150
+ if (this.parent.enableVirtualization && this.parent.allowRowDragAndDrop) {
7151
+ this.reorderRows([parseInt(this.selectedRow.getAttribute('aria-rowindex'), 10)], dropIndex, 'child');
7152
+ }
7153
+ else {
7154
+ this.reorderRows([this.selectedRow.rowIndex], dropIndex, 'child');
7155
+ }
7124
7156
  }
7125
7157
  else if (actionArgs.action === 'outdenting') {
7126
- this.reorderRows([this.selectedRow.rowIndex], dropIndex, 'below');
7158
+ if (this.parent.enableVirtualization && this.parent.allowRowDragAndDrop) {
7159
+ this.reorderRows([parseInt(this.selectedRow.getAttribute('aria-rowindex'), 10)], dropIndex, 'below');
7160
+ }
7161
+ else {
7162
+ this.reorderRows([this.selectedRow.rowIndex], dropIndex, 'below');
7163
+ }
7127
7164
  }
7128
7165
  }
7129
7166
  });
@@ -7318,16 +7355,24 @@ class RowDD$1 {
7318
7355
  removeLastrowBorder(element) {
7319
7356
  const isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')
7320
7357
  || element.classList.contains('e-detailrow'));
7321
- const islastRowIndex = element && !isEmptyRow &&
7322
- this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==
7323
- element.getAttribute('data-uid');
7358
+ let islastRowIndex;
7359
+ if (this.parent.enableVirtualization) {
7360
+ islastRowIndex = element && !isEmptyRow &&
7361
+ this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') !==
7362
+ element.getAttribute('data-uid');
7363
+ }
7364
+ else {
7365
+ islastRowIndex = element && !isEmptyRow &&
7366
+ this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==
7367
+ element.getAttribute('data-uid');
7368
+ }
7324
7369
  const canremove = islastRowIndex || this.dropPosition === 'topSegment';
7325
7370
  if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {
7326
7371
  this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();
7327
7372
  }
7328
7373
  }
7329
7374
  updateIcon(row, index, args) {
7330
- const rowEle = args.target ? closest(args.target, 'tr') : null;
7375
+ let rowEle = args.target ? closest(args.target, 'tr') : null;
7331
7376
  this.dropPosition = undefined;
7332
7377
  let rowPositionHeight = 0;
7333
7378
  this.removeFirstrowBorder(rowEle);
@@ -7354,7 +7399,12 @@ class RowDD$1 {
7354
7399
  rowPositionHeight = rowEle.offsetTop - scrollTop;
7355
7400
  }
7356
7401
  // let scrollTop = (tObj.grid.scrollModule as any).content.scrollTop;
7357
- rowTop = rowPositionHeight + contentHeight + roundOff;
7402
+ if (this.parent.enableVirtualization) {
7403
+ rowTop = rowEle.getBoundingClientRect().top;
7404
+ }
7405
+ else {
7406
+ rowTop = rowPositionHeight + contentHeight + roundOff;
7407
+ }
7358
7408
  const rowBottom = rowTop + row[0].offsetHeight;
7359
7409
  const difference = rowBottom - rowTop;
7360
7410
  const divide = difference / 3;
@@ -7434,7 +7484,7 @@ class RowDD$1 {
7434
7484
  addLastRowborder(trElement) {
7435
7485
  const isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||
7436
7486
  trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));
7437
- if (trElement && !isEmptyRow && this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') ===
7487
+ if (trElement && !isEmptyRow && this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') ===
7438
7488
  trElement.getAttribute('data-uid')) {
7439
7489
  const bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });
7440
7490
  const gridcontentEle = this.parent.getContent();
@@ -7776,7 +7826,13 @@ class RowDD$1 {
7776
7826
  }
7777
7827
  else {
7778
7828
  args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;
7779
- this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];
7829
+ if (this.parent.enableVirtualization) {
7830
+ const index = this.parent.getRowByIndex(args.dropIndex).rowIndex;
7831
+ this.droppedRecord = tObj.getCurrentViewRecords()[index];
7832
+ }
7833
+ else {
7834
+ this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];
7835
+ }
7780
7836
  }
7781
7837
  let dragRecords = [];
7782
7838
  droppedRecord = this.droppedRecord;
@@ -7853,6 +7909,7 @@ class RowDD$1 {
7853
7909
  childRecords.splice(droppedRecordIndex, 0, draggedRecord);
7854
7910
  draggedRecord.parentItem = droppedRecord.parentItem;
7855
7911
  draggedRecord.parentUniqueID = droppedRecord.parentUniqueID;
7912
+ draggedRecord.level = droppedRecord.level;
7856
7913
  if (this.parent.parentIdMapping) {
7857
7914
  draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];
7858
7915
  draggedRecord.parentItem = droppedRecord.parentItem;
@@ -9567,7 +9624,18 @@ class Sort$1 {
9567
9624
  this.flatSortedData[this.storedIndex] = data[d];
9568
9625
  }
9569
9626
  if (data[d].hasChildRecords) {
9570
- const childSort = (new DataManager(data[d].childRecords).executeLocal(srtQry));
9627
+ let childSort = (new DataManager(data[d].childRecords).executeLocal(srtQry));
9628
+ if (this.parent.allowRowDragAndDrop && data[d].childRecords.indexOf(this.parent.rowDragAndDropModule['draggedRecord']) !== -1 && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {
9629
+ var dragdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);
9630
+ childSort.splice(dragdIndex, 1);
9631
+ var dropdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);
9632
+ if (this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {
9633
+ childSort.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);
9634
+ }
9635
+ else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {
9636
+ childSort.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);
9637
+ }
9638
+ }
9571
9639
  this.iterateSort(childSort, srtQry);
9572
9640
  }
9573
9641
  }
@@ -10384,7 +10452,12 @@ class BatchEdit {
10384
10452
  nextCellIndex(args) {
10385
10453
  const index = 'index';
10386
10454
  const rowIndex = 'rowIndex';
10387
- args[index] = this.parent.getSelectedRows()[0][rowIndex];
10455
+ if (this.parent.getSelectedRows().length) {
10456
+ args[index] = this.parent.getSelectedRows()[0][rowIndex];
10457
+ }
10458
+ else {
10459
+ args[index] = this.batchIndex;
10460
+ }
10388
10461
  }
10389
10462
  }
10390
10463
 
@@ -10919,11 +10992,13 @@ class Edit$1 {
10919
10992
  updateIndex(data, rows, records) {
10920
10993
  for (let j = 0; j < this.parent.getDataRows().length; j++) {
10921
10994
  const data1 = records[j];
10922
- const index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);
10923
- data1.index = index;
10924
- if (!isNullOrUndefined(data1.parentItem)) {
10925
- const parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);
10926
- data1.parentItem.index = parentIndex;
10995
+ if (!isNullOrUndefined(data1)) {
10996
+ const index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);
10997
+ data1.index = index;
10998
+ if (!isNullOrUndefined(data1.parentItem)) {
10999
+ const parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);
11000
+ data1.parentItem.index = parentIndex;
11001
+ }
10927
11002
  }
10928
11003
  }
10929
11004
  let count = -1;
@@ -10942,32 +11017,34 @@ class Edit$1 {
10942
11017
  count++;
10943
11018
  }
10944
11019
  const data2 = records[count];
10945
- let index = data2.index;
10946
- const level = data2.level;
10947
- const row = rows[k];
10948
- if (!isNullOrUndefined(data2.parentItem)) {
10949
- index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);
10950
- }
10951
- const treecell = row.cells[treeColIndex];
10952
- if (!isNullOrUndefined(treecell)) {
10953
- for (let l = 0; l < treecell.classList.length; l++) {
10954
- const value = treecell.classList[l];
10955
- const remove$$1 = /e-gridrowindex/i;
10956
- const removed = /e-griddetailrowindex/i;
10957
- const result = value.match(remove$$1);
10958
- const results = value.match(removed);
10959
- if (result != null) {
10960
- removeClass([treecell], value);
10961
- }
10962
- if (results != null) {
10963
- removeClass([treecell], value);
10964
- }
10965
- }
10966
- if (!rows[k].classList.contains('e-detailrow')) {
10967
- addClass([treecell], 'e-gridrowindex' + index + 'level' + level);
10968
- }
10969
- else {
10970
- addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);
11020
+ if (!isNullOrUndefined(data2)) {
11021
+ let index = data2.index;
11022
+ const level = data2.level;
11023
+ const row = rows[k];
11024
+ if (!isNullOrUndefined(data2.parentItem)) {
11025
+ index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);
11026
+ }
11027
+ const treecell = row.cells[treeColIndex];
11028
+ if (!isNullOrUndefined(treecell)) {
11029
+ for (let l = 0; l < treecell.classList.length; l++) {
11030
+ const value = treecell.classList[l];
11031
+ const remove$$1 = /e-gridrowindex/i;
11032
+ const removed = /e-griddetailrowindex/i;
11033
+ const result = value.match(remove$$1);
11034
+ const results = value.match(removed);
11035
+ if (result != null) {
11036
+ removeClass([treecell], value);
11037
+ }
11038
+ if (results != null) {
11039
+ removeClass([treecell], value);
11040
+ }
11041
+ }
11042
+ if (!rows[k].classList.contains('e-detailrow')) {
11043
+ addClass([treecell], 'e-gridrowindex' + index + 'level' + level);
11044
+ }
11045
+ else {
11046
+ addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);
11047
+ }
10971
11048
  }
10972
11049
  }
10973
11050
  }
@@ -11872,7 +11949,12 @@ class VirtualTreeContentRenderer extends VirtualContentRenderer {
11872
11949
  firsttdinx = +attr; // this.parent.getContent().querySelector('.e-content tr').getAttribute('aria-rowindex');
11873
11950
  }
11874
11951
  if (firsttdinx === 0) {
11875
- this.translateY = scrollArgs.offset.top;
11952
+ if (this.parent.allowRowDragAndDrop) {
11953
+ this.translateY = scrollArgs.offset.top - this.parent.getRowHeight() * 2;
11954
+ }
11955
+ else {
11956
+ this.translateY = scrollArgs.offset.top;
11957
+ }
11876
11958
  }
11877
11959
  else {
11878
11960
  const height = this.parent.getRowHeight();
@@ -11898,7 +11980,12 @@ class VirtualTreeContentRenderer extends VirtualContentRenderer {
11898
11980
  this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);
11899
11981
  }
11900
11982
  else {
11901
- this.translateY = scrollArgs.offset.top;
11983
+ if (this.parent.allowRowDragAndDrop) {
11984
+ this.translateY = scrollArgs.offset.top - this.parent.getRowHeight() * 2;
11985
+ }
11986
+ else {
11987
+ this.translateY = scrollArgs.offset.top;
11988
+ }
11902
11989
  }
11903
11990
  }
11904
11991
  if (((downScroll && (scrollArgs.offset.top < (this.parent.getRowHeight() * this.totalRecords)))
@@ -12684,7 +12771,7 @@ class InfiniteScroll$1 {
12684
12771
  if (getValue('selectedIndex', this.parent.editModule) !== -1 && this.parent.editSettings.newRowPosition !== 'Top') {
12685
12772
  if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {
12686
12773
  position = 'after';
12687
- newRowIndex += findChildrenRecords(currentData[newRowIndex + 1]).length;
12774
+ newRowIndex += findChildrenRecords(currentData[newRowIndex]).length;
12688
12775
  if (this.parent.editSettings.newRowPosition === 'Child') {
12689
12776
  newRowIndex -= 1; //// for child position already child record is added in childRecords so subtracting 1
12690
12777
  }