@syncfusion/ej2-treegrid 21.2.9 → 22.1.34

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 (41) hide show
  1. package/.eslintrc.json +1 -0
  2. package/CHANGELOG.md +4 -80
  3. package/dist/ej2-treegrid.min.js +2 -2
  4. package/dist/ej2-treegrid.umd.min.js +2 -2
  5. package/dist/ej2-treegrid.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-treegrid.es2015.js +55 -20
  7. package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
  8. package/dist/es6/ej2-treegrid.es5.js +57 -22
  9. package/dist/es6/ej2-treegrid.es5.js.map +1 -1
  10. package/dist/global/ej2-treegrid.min.js +2 -2
  11. package/dist/global/ej2-treegrid.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +9 -9
  14. package/src/treegrid/actions/edit.js +23 -9
  15. package/src/treegrid/actions/freeze-column.js +5 -1
  16. package/src/treegrid/actions/summary.js +1 -0
  17. package/src/treegrid/actions/virtual-scroll.js +2 -1
  18. package/src/treegrid/base/treegrid-model.d.ts +9 -4
  19. package/src/treegrid/base/treegrid.d.ts +10 -4
  20. package/src/treegrid/base/treegrid.js +14 -6
  21. package/src/treegrid/models/column.d.ts +18 -10
  22. package/src/treegrid/models/edit-settings-model.d.ts +2 -1
  23. package/src/treegrid/models/edit-settings.d.ts +2 -1
  24. package/src/treegrid/models/page-settings-model.d.ts +2 -1
  25. package/src/treegrid/models/page-settings.d.ts +2 -1
  26. package/src/treegrid/models/summary-model.d.ts +3 -1
  27. package/src/treegrid/models/summary.d.ts +3 -1
  28. package/src/treegrid/renderer/render.js +7 -1
  29. package/src/treegrid/renderer/virtual-tree-content-render.js +6 -5
  30. package/styles/material3-dark.css +545 -0
  31. package/styles/material3-dark.scss +3 -0
  32. package/styles/material3.css +601 -0
  33. package/styles/material3.scss +3 -0
  34. package/styles/treegrid/_material3-dark-definition.scss +1 -0
  35. package/styles/treegrid/_material3-definition.scss +28 -0
  36. package/styles/treegrid/icons/_material3-dark.scss +1 -0
  37. package/styles/treegrid/icons/_material3.scss +12 -1
  38. package/styles/treegrid/material3-dark.css +545 -0
  39. package/styles/treegrid/material3-dark.scss +19 -0
  40. package/styles/treegrid/material3.css +601 -0
  41. package/styles/treegrid/material3.scss +19 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 21.2.9
3
+ * version : 22.1.34
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-treegrid@*",
3
- "_id": "@syncfusion/ej2-treegrid@21.2.8",
3
+ "_id": "@syncfusion/ej2-treegrid@20.12.0",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-YiqZ/KpWwbgUoxWXdQt7oXZEaAcc+ZvW4Jf22/wOVt64lGs3Qg+LrJk0rC0Z+XT1t+L7GJjvzVrq9nd1Niwsew==",
5
+ "_integrity": "sha512-eI+2miH8ZLzF4QW6Xym9f8zNRxApPW4I/6o1rW2RSYk8pFZ5c2JGa1Y2KH6UHgcfvgANjE4hdUg1hfponcqBzQ==",
6
6
  "_location": "/@syncfusion/ej2-treegrid",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -24,8 +24,8 @@
24
24
  "/@syncfusion/ej2-react-treegrid",
25
25
  "/@syncfusion/ej2-vue-treegrid"
26
26
  ],
27
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-treegrid/-/ej2-treegrid-21.2.8.tgz",
28
- "_shasum": "33c37b706fce617fed0f97a2fcf9cde1814a8dcd",
27
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-treegrid/-/ej2-treegrid-20.12.0.tgz",
28
+ "_shasum": "68b2b0d2e867f79d44107046a375bb48405b2631",
29
29
  "_spec": "@syncfusion/ej2-treegrid@*",
30
30
  "_where": "/jenkins/workspace/elease-automation_release_21.1.1/packages/included",
31
31
  "author": {
@@ -36,10 +36,10 @@
36
36
  },
37
37
  "bundleDependencies": false,
38
38
  "dependencies": {
39
- "@syncfusion/ej2-base": "~21.2.9",
40
- "@syncfusion/ej2-data": "~21.2.9",
41
- "@syncfusion/ej2-grids": "~21.2.9",
42
- "@syncfusion/ej2-popups": "~21.2.4"
39
+ "@syncfusion/ej2-base": "~22.1.34",
40
+ "@syncfusion/ej2-data": "~22.1.34",
41
+ "@syncfusion/ej2-grids": "~22.1.34",
42
+ "@syncfusion/ej2-popups": "~22.1.34"
43
43
  },
44
44
  "deprecated": false,
45
45
  "description": "Essential JS 2 TreeGrid Component",
@@ -66,6 +66,6 @@
66
66
  "url": "git+https://github.com/syncfusion/ej2-treegrid.git"
67
67
  },
68
68
  "typings": "index.d.ts",
69
- "version": "21.2.9",
69
+ "version": "22.1.34",
70
70
  "sideEffects": false
71
71
  }
@@ -71,6 +71,14 @@ var Edit = /** @class */ (function () {
71
71
  if (e.target.classList.contains('e-frame') && this.parent.getCurrentViewRecords().length === 0) {
72
72
  this.doubleClickTarget = null;
73
73
  }
74
+ if (e.target.classList.contains('e-treegridcollapse') || e.target.classList.contains('e-treegridexpand')) {
75
+ var tr = parentsUntil(e.target, 'e-row');
76
+ var rowIndex = tr && parseInt(tr.getAttribute('data-rowindex'), 10);
77
+ if (!isNullOrUndefined(rowIndex) && rowIndex >= 0 && this.parent.allowPaging) {
78
+ /* eslint-disable-next-line */
79
+ this.parent.grid.getDataRows()[rowIndex].dataset.uid = this.parent.grid.contentModule.getRows()[rowIndex].uid;
80
+ }
81
+ }
74
82
  };
75
83
  Edit.prototype.getRowPosition = function (addArgs) {
76
84
  addArgs.newRowPosition = this.parent.editSettings.newRowPosition;
@@ -429,15 +437,21 @@ var Edit = /** @class */ (function () {
429
437
  else if (isRemoteData(this.parent) ||
430
438
  (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {
431
439
  var query = this.parent.grid.query;
432
- var crud = null;
433
- crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);
434
- crud.then(function (e) {
435
- if (!isNullOrUndefined(e)) {
436
- args.rowData[args.columnName] = e[args.columnName];
437
- }
438
- _this.updateCell(args, rowIndex_1);
439
- _this.afterCellSave(args, row_1, rowIndex_1);
440
- });
440
+ if (this.parent['isGantt'] && !this.parent.loadChildOnDemand) {
441
+ this.updateCell(args, rowIndex_1);
442
+ this.afterCellSave(args, row_1, rowIndex_1);
443
+ }
444
+ else {
445
+ var crud = null;
446
+ crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);
447
+ crud.then(function (e) {
448
+ if (!isNullOrUndefined(e)) {
449
+ args.rowData[args.columnName] = e[args.columnName];
450
+ }
451
+ _this.updateCell(args, rowIndex_1);
452
+ _this.afterCellSave(args, row_1, rowIndex_1);
453
+ });
454
+ }
441
455
  }
442
456
  }
443
457
  else {
@@ -1,4 +1,4 @@
1
- import { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer, FreezeRender, parentsUntil, RenderType } from '@syncfusion/ej2-grids';
1
+ import { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer, FreezeContentRender, FreezeRender, parentsUntil, RenderType } from '@syncfusion/ej2-grids';
2
2
  import { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';
3
3
  import { addClass, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';
4
4
  import { ColumnVirtualTreeFreezeRenderer, VirtualTreeFreezeRenderer, VirtualTreeFreezeHdrRenderer } from '../renderer/virtual-tree-freeze-render';
@@ -48,6 +48,10 @@ var Freeze = /** @class */ (function () {
48
48
  getValue('addRenderer', renderer)
49
49
  .apply(renderer, [RenderType.Content, new VirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);
50
50
  }
51
+ else {
52
+ getValue('addRenderer', renderer)
53
+ .apply(renderer, [RenderType.Content, new FreezeContentRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);
54
+ }
51
55
  }
52
56
  if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {
53
57
  getValue('addRenderer', renderer)
@@ -189,6 +189,7 @@ var Aggregate = /** @class */ (function () {
189
189
  summaryKey = types[parseInt(i.toString(), 10)];
190
190
  var key = summaryColumn.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();
191
191
  var val = types[parseInt(i.toString(), 10)] !== 'Custom' ? getObject('aggregates', sumData) :
192
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
192
193
  calculateAggregate(types[parseInt(i.toString(), 10)], sumData, summaryColumn, this.parent);
193
194
  var disp = summaryColumn.columnName;
194
195
  var value_1 = types[parseInt(i.toString(), 10)] !== 'Custom' ? val["" + key] : val;
@@ -124,9 +124,10 @@ var VirtualScroll = /** @class */ (function () {
124
124
  this.parent.grid.getContent().firstElementChild.scrollTop = 0;
125
125
  this.parent.grid.notify(events.virtualActionArgs, { setTop: true });
126
126
  }
127
- if (requestType === 'save') {
127
+ if (requestType === 'save' || (requestType === 'refresh' && this.parent['isGantt'] && this.parent['isAddedFromGantt'])) {
128
128
  startIndex = counts.startIndex + (counts.count - counts.endIndex);
129
129
  endIndex = counts.count;
130
+ this.parent['isAddedFromGantt'] = false;
130
131
  }
131
132
  //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&
132
133
  //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {
@@ -207,8 +207,9 @@ export interface TreeGridModel extends ComponentModel{
207
207
  * @hidden
208
208
  * It used to render pager template
209
209
  * @default null
210
+ * @aspType string
210
211
  */
211
- pagerTemplate?: string;
212
+ pagerTemplate?: string | Function;
212
213
 
213
214
  /**
214
215
  * If `showColumnMenu` set to true, then it will enable the column menu options in each columns.
@@ -279,8 +280,9 @@ export interface TreeGridModel extends ComponentModel{
279
280
  * > It accepts either the [template string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)
280
281
  * or the HTML element ID.
281
282
  *
283
+ * @aspType string
282
284
  */
283
- detailTemplate?: string;
285
+ detailTemplate?: string | Function;
284
286
 
285
287
  /**
286
288
  * Configures the filter settings of the TreeGrid.
@@ -319,8 +321,9 @@ export interface TreeGridModel extends ComponentModel{
319
321
  * @hidden
320
322
  * It used to render toolbar template
321
323
  * @default null
324
+ * @aspType string
322
325
  */
323
- toolbarTemplate?: string;
326
+ toolbarTemplate?: string | Function;
324
327
 
325
328
  /**
326
329
  * Defines the mode of TreeGrid lines. The available modes are,
@@ -384,8 +387,10 @@ export interface TreeGridModel extends ComponentModel{
384
387
  * > * The row template must be a table row.
385
388
  *
386
389
  * > Check the [`Row Template`](../../treegrid/row) customization.
390
+ *
391
+ * @aspType string
387
392
  */
388
- rowTemplate?: string;
393
+ rowTemplate?: string | Function;
389
394
 
390
395
  /**
391
396
  * `copyHierarchyMode` Defines the copy clipboard types.
@@ -83,6 +83,7 @@ export declare class TreeGrid extends Component<HTMLElement> implements INotifyP
83
83
  private addedRecords;
84
84
  private targetElement;
85
85
  private isGantt;
86
+ private isAddedFromGantt;
86
87
  private isIndentEnabled;
87
88
  private indentOutdentAction;
88
89
  /**
@@ -357,8 +358,9 @@ export declare class TreeGrid extends Component<HTMLElement> implements INotifyP
357
358
  * @hidden
358
359
  * It used to render pager template
359
360
  * @default null
361
+ * @aspType string
360
362
  */
361
- pagerTemplate: string;
363
+ pagerTemplate: string | Function;
362
364
  /**
363
365
  * If `showColumnMenu` set to true, then it will enable the column menu options in each columns.
364
366
  *
@@ -420,8 +422,9 @@ export declare class TreeGrid extends Component<HTMLElement> implements INotifyP
420
422
  * > It accepts either the [template string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)
421
423
  * or the HTML element ID.
422
424
  *
425
+ * @aspType string
423
426
  */
424
- detailTemplate: string;
427
+ detailTemplate: string | Function;
425
428
  /**
426
429
  * Configures the filter settings of the TreeGrid.
427
430
  *
@@ -456,8 +459,9 @@ export declare class TreeGrid extends Component<HTMLElement> implements INotifyP
456
459
  * @hidden
457
460
  * It used to render toolbar template
458
461
  * @default null
462
+ * @aspType string
459
463
  */
460
- toolbarTemplate: string;
464
+ toolbarTemplate: string | Function;
461
465
  /**
462
466
  * Defines the mode of TreeGrid lines. The available modes are,
463
467
  * ```props
@@ -517,8 +521,10 @@ export declare class TreeGrid extends Component<HTMLElement> implements INotifyP
517
521
  * > * The row template must be a table row.
518
522
  *
519
523
  * > Check the [`Row Template`](../../treegrid/row) customization.
524
+ *
525
+ * @aspType string
520
526
  */
521
- rowTemplate: string;
527
+ rowTemplate: string | Function;
522
528
  /**
523
529
  * `copyHierarchyMode` Defines the copy clipboard types.
524
530
  * <br><br>
@@ -715,7 +715,9 @@ var TreeGrid = /** @class */ (function (_super) {
715
715
  this.grid.query = this.query;
716
716
  this.grid.columnQueryMode = this.columnQueryMode;
717
717
  this.grid.allowPaging = this.allowPaging;
718
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
718
719
  this.grid.pageSettings = getActualProperties(this.pageSettings);
720
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
719
721
  this.grid.pagerTemplate = this.pagerTemplate;
720
722
  this.grid.showColumnMenu = this.showColumnMenu;
721
723
  this.grid.allowSorting = this.allowSorting;
@@ -742,12 +744,14 @@ var TreeGrid = /** @class */ (function (_super) {
742
744
  this.grid.gridLines = this.gridLines;
743
745
  this.grid.allowSelection = this.allowSelection;
744
746
  this.grid.toolbar = getActualProperties(this.getGridToolbar());
747
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
745
748
  this.grid.toolbarTemplate = this.toolbarTemplate;
746
749
  this.grid.showColumnChooser = this.showColumnChooser;
747
750
  this.grid.filterSettings = getActualProperties(this.filterSettings);
748
751
  this.grid.selectionSettings = getActualProperties(this.selectionSettings);
749
752
  this.grid.sortSettings = getActualProperties(this.sortSettings);
750
753
  this.grid.searchSettings = getActualProperties(this.searchSettings);
754
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
751
755
  this.grid.aggregates = getActualProperties(this.aggregates);
752
756
  this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);
753
757
  this.grid.printMode = getActualProperties(this.printMode);
@@ -756,7 +760,9 @@ var TreeGrid = /** @class */ (function (_super) {
756
760
  this.grid.contextMenuItems = getActualProperties(this.getContextMenu());
757
761
  this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);
758
762
  this.grid.editSettings = this.getGridEditSettings();
763
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
759
764
  this.grid.rowTemplate = getActualProperties(this.rowTemplate);
765
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
760
766
  this.grid.detailTemplate = getActualProperties(this.detailTemplate);
761
767
  this.grid.frozenRows = this.frozenRows;
762
768
  this.grid.frozenColumns = this.frozenColumns;
@@ -1086,10 +1092,8 @@ var TreeGrid = /** @class */ (function (_super) {
1086
1092
  var currentData = _this.getCurrentViewRecords();
1087
1093
  var rows = _this.getContentTable().rows;
1088
1094
  for (var i = 0; i < rows.length; i++) {
1089
- var args = {
1090
- data: currentData[parseInt(i.toString(), 10)],
1091
- row: rows[parseInt(i.toString(), 10)]
1092
- };
1095
+ var args = { data: currentData[parseInt(i.toString(), 10)],
1096
+ row: rows[parseInt(i.toString(), 10)] };
1093
1097
  _this.renderModule.RowModifier(args);
1094
1098
  }
1095
1099
  }
@@ -1548,6 +1552,7 @@ var TreeGrid = /** @class */ (function (_super) {
1548
1552
  this.grid.allowPaging = this.allowPaging;
1549
1553
  break;
1550
1554
  case 'pageSettings':
1555
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
1551
1556
  this.grid.pageSettings = getActualProperties(this.pageSettings);
1552
1557
  requireRefresh = true;
1553
1558
  break;
@@ -1593,6 +1598,7 @@ var TreeGrid = /** @class */ (function (_super) {
1593
1598
  this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;
1594
1599
  break;
1595
1600
  case 'aggregates':
1601
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
1596
1602
  this.grid.aggregates = getActualProperties(this.aggregates);
1597
1603
  break;
1598
1604
  case 'enableInfiniteScrolling':
@@ -1643,6 +1649,7 @@ var TreeGrid = /** @class */ (function (_super) {
1643
1649
  this.grid.gridLines = this.gridLines;
1644
1650
  break;
1645
1651
  case 'rowTemplate':
1652
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
1646
1653
  this.grid.rowTemplate = getActualProperties(this.rowTemplate);
1647
1654
  break;
1648
1655
  case 'frozenRows':
@@ -1722,6 +1729,7 @@ var TreeGrid = /** @class */ (function (_super) {
1722
1729
  this.grid.showColumnChooser = this.showColumnChooser;
1723
1730
  break;
1724
1731
  case 'detailTemplate':
1732
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
1725
1733
  this.grid.detailTemplate = getActualProperties(this.detailTemplate);
1726
1734
  break;
1727
1735
  case 'columnMenuItems':
@@ -2306,8 +2314,8 @@ var TreeGrid = /** @class */ (function (_super) {
2306
2314
  }
2307
2315
  }
2308
2316
  else if (!isNullOrUndefined(this.columns[parseInt(i.toString(), 10)].field)) {
2309
- var fieldName = this.columns[parseInt(i.toString(), 10)].field;
2310
- var currentColumn = this.grid.getColumnByField(fieldName);
2317
+ var currentColumn = this.grid.getColumnByField(this.columns[parseInt(i.toString(), 10)]
2318
+ .field);
2311
2319
  this.columns[parseInt(i.toString(), 10)].width = currentColumn.width;
2312
2320
  }
2313
2321
  }
@@ -58,8 +58,10 @@ export declare class Column {
58
58
  * @hidden
59
59
  * Defines the commands column template as string or HTML element ID which is used to add
60
60
  * customized command buttons in each cells of the column.
61
+ *
62
+ * @aspType string
61
63
  */
62
- commandsTemplate: string;
64
+ commandsTemplate: string | Function;
63
65
  /**
64
66
  * `commands` provides an option to display command buttons in every cell.
65
67
  * The available built-in command buttons are
@@ -108,7 +110,7 @@ export declare class Column {
108
110
  * @default null
109
111
  * @aspIgnore
110
112
  */
111
- editTemplate: string;
113
+ editTemplate: string | Function;
112
114
  /**
113
115
  * Defines the filter template/UI that used as filter for a particular column.
114
116
  * It accepts either template string or HTML element ID.
@@ -116,7 +118,7 @@ export declare class Column {
116
118
  * @default null
117
119
  * @aspIgnore
118
120
  */
119
- filterTemplate: string;
121
+ filterTemplate: string | Function;
120
122
  /**
121
123
  * If `isIdentity` is set to true, then this column is considered as identity column.
122
124
  *
@@ -191,14 +193,16 @@ export declare class Column {
191
193
  * or HTML element ID.
192
194
  *
193
195
  * @default null
196
+ * @aspType string
194
197
  */
195
- template: string;
198
+ template: string | Function;
196
199
  /**
197
200
  * Defines the header template as string or HTML element ID which is used to add customized element in the column header.
198
201
  *
199
202
  * @default null
203
+ * @aspType string
200
204
  */
201
- headerTemplate: string;
205
+ headerTemplate: string | Function;
202
206
  /**
203
207
  * You can use this property to freeze selected columns in treegrid
204
208
  *
@@ -490,8 +494,10 @@ export interface ColumnModel {
490
494
  * @hidden
491
495
  * Defines the commands column template as string or HTML element ID which is used to add
492
496
  * customized command buttons in each cells of the column.
497
+ *
498
+ * @aspType string
493
499
  */
494
- commandsTemplate?: string;
500
+ commandsTemplate?: string | Function;
495
501
  /**
496
502
  * `commands` provides an option to display command buttons in every cell.
497
503
  * The available built-in command buttons are
@@ -529,14 +535,16 @@ export interface ColumnModel {
529
535
  * It accepts either [template string](https://ej2.syncfusion.com/documentation/common/template-engine/) or HTML element ID.
530
536
  *
531
537
  * @default null
538
+ * @aspType string
532
539
  */
533
- template?: string;
540
+ template?: string | Function;
534
541
  /**
535
542
  * Defines the header template as string or HTML element ID which is used to add customized element in the column header.
536
543
  *
537
544
  * @default null
545
+ * @aspType string
538
546
  */
539
- headerTemplate?: string;
547
+ headerTemplate?: string | Function;
540
548
  /**
541
549
  * You can use this property to freeze selected columns in grid.
542
550
  *
@@ -666,14 +674,14 @@ export interface ColumnModel {
666
674
  *
667
675
  * @aspIgnore
668
676
  */
669
- editTemplate?: string;
677
+ editTemplate?: string | Function;
670
678
  /**
671
679
  * Defines the filter template/UI that is used as filter for a particular column.
672
680
  * It accepts either template string or HTML element ID.
673
681
  *
674
682
  * @aspIgnore
675
683
  */
676
- filterTemplate?: string;
684
+ filterTemplate?: string | Function;
677
685
  /**
678
686
  * If `isIdentity` is set to true, then this column is considered as identity column.
679
687
  *
@@ -80,8 +80,9 @@ export interface EditSettingsModel {
80
80
  * Defines the custom edit elements for the dialog template.
81
81
  *
82
82
  * @default ''
83
+ * @aspType string
83
84
  */
84
- template?: string;
85
+ template?: string | Function;
85
86
 
86
87
  /**
87
88
  * Defines the dialog params to edit.
@@ -72,8 +72,9 @@ export declare class EditSettings extends ChildProperty<EditSettings> {
72
72
  * Defines the custom edit elements for the dialog template.
73
73
  *
74
74
  * @default ''
75
+ * @aspType string
75
76
  */
76
- template: string;
77
+ template: string | Function;
77
78
  /**
78
79
  * Defines the dialog params to edit.
79
80
  *
@@ -53,8 +53,9 @@ export interface PageSettingsModel {
53
53
  * It accepts either [template string](https://ej2.syncfusion.com/documentation/common/template-engine/) or HTML element ID.
54
54
  *
55
55
  * @default null
56
+ * @aspType string
56
57
  */
57
- template?: string;
58
+ template?: string | Function;
58
59
 
59
60
  /**
60
61
  * Specifies the mode of record count in a page. The options are,
@@ -46,8 +46,9 @@ export declare class PageSettings extends ChildProperty<PageSettings> {
46
46
  * It accepts either [template string](https://ej2.syncfusion.com/documentation/common/template-engine/) or HTML element ID.
47
47
  *
48
48
  * @default null
49
+ * @aspType string
49
50
  */
50
- template: string;
51
+ template: string | Function;
51
52
  /**
52
53
  * Specifies the mode of record count in a page. The options are,
53
54
  * * `All`: Count all the records.
@@ -31,8 +31,10 @@ export interface AggregateColumnModel {
31
31
  * {% codeBlock src="grid/footer-template-api/index.ts" %}{% endcodeBlock %}
32
32
  *
33
33
  * @default null
34
+ * @aspType string
35
+ *
34
36
  */
35
- footerTemplate?: string;
37
+ footerTemplate?: string | Function;
36
38
 
37
39
  /**
38
40
  * Defines the column name to perform aggregation.
@@ -33,8 +33,10 @@ export declare class AggregateColumn extends ChildProperty<AggregateColumn> {
33
33
  * {% codeBlock src="grid/footer-template-api/index.ts" %}{% endcodeBlock %}
34
34
  *
35
35
  * @default null
36
+ * @aspType string
37
+ *
36
38
  */
37
- footerTemplate: string;
39
+ footerTemplate: string | Function;
38
40
  /**
39
41
  * Defines the column name to perform aggregation.
40
42
  *
@@ -134,7 +134,12 @@ var Render = /** @class */ (function () {
134
134
  var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)
135
135
  ? data.hasFilteredChildRecords : data.hasChildRecords;
136
136
  if (iconRequired && !isNullOrUndefined(data.childRecords)) {
137
- iconRequired = !(data.childRecords.length === 0);
137
+ if (this.parent['isFromGantt'] && !this.parent.loadChildOnDemand) {
138
+ iconRequired = data.hasChildRecords;
139
+ }
140
+ else {
141
+ iconRequired = !(data.childRecords.length === 0);
142
+ }
138
143
  }
139
144
  if (iconRequired) {
140
145
  addClass([args.cell], 'e-treerowcell');
@@ -253,6 +258,7 @@ var Render = /** @class */ (function () {
253
258
  args.cell.setAttribute('data-colindex', colindex + '');
254
259
  }
255
260
  if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {
261
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
256
262
  args.column.template = treeColumn.template;
257
263
  args.column["" + templateFn] = templateCompiler(args.column.template);
258
264
  args.cell.classList.add('e-templatecell');
@@ -443,9 +443,8 @@ var VirtualTreeContentRenderer = /** @class */ (function (_super) {
443
443
  }
444
444
  this.startIndex = !isLastBlock ? lastIndex - this.parent.pageSettings.pageSize : nextSetResIndex;
445
445
  this.endIndex = lastIndex;
446
- if ((nextSetResIndex + this.parent.pageSettings.pageSize) > this.totalRecords &&
447
- (this.endIndex - this.startIndex) < (this.parent.pageSettings.pageSize / 2) &&
448
- (this.endIndex - nextSetResIndex) < (this.parent.pageSettings.pageSize / 2)) {
446
+ if ((nextSetResIndex + this.parent.pageSettings.pageSize) > this.totalRecords && (this.endIndex - this.startIndex) <
447
+ (this.parent.pageSettings.pageSize / 2) && (this.endIndex - nextSetResIndex) < (this.parent.pageSettings.pageSize / 2)) {
449
448
  this.startIndex = lastIndex - (this.parent.pageSettings.pageSize / 2);
450
449
  }
451
450
  if (currentViewData.length && this.startIndex > currentViewData[0]["" + indexValue] &&
@@ -460,8 +459,8 @@ var VirtualTreeContentRenderer = /** @class */ (function (_super) {
460
459
  this.translateY = scrollArgs.offset.top - rowHeight * 2;
461
460
  }
462
461
  else {
463
- if (this.totalRecords == this.endIndex) {
464
- this.translateY = scrollArgs.offset.top - (rowHeight - outBuffer);
462
+ if (this.totalRecords === this.endIndex) {
463
+ this.translateY = (this.totalRecords * rowHeight) - ((this.endIndex - this.startIndex) * rowHeight);
465
464
  }
466
465
  else {
467
466
  this.translateY = scrollArgs.offset.top;
@@ -653,6 +652,8 @@ var TreeInterSectionObserver = /** @class */ (function (_super) {
653
652
  if (_this["" + options].axes.indexOf(current.axis) === -1) {
654
653
  return;
655
654
  }
655
+ var containerRect = 'containerRect';
656
+ _this["" + containerRect] = _this["" + options].container.getBoundingClientRect();
656
657
  var check = _this.check(direction);
657
658
  if (current.entered && (current.axis === 'X' || instance.enableVirtualMaskRow)) {
658
659
  if (_this["" + movableEle] && (direction === 'right' || direction === 'left')) {