@syncfusion/ej2-treegrid 20.4.49 → 21.1.35

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 (40) hide show
  1. package/CHANGELOG.md +1 -36
  2. package/dist/ej2-treegrid.min.js +2 -2
  3. package/dist/ej2-treegrid.umd.min.js +2 -2
  4. package/dist/ej2-treegrid.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-treegrid.es2015.js +45 -18
  6. package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
  7. package/dist/es6/ej2-treegrid.es5.js +44 -17
  8. package/dist/es6/ej2-treegrid.es5.js.map +1 -1
  9. package/dist/global/ej2-treegrid.min.js +2 -2
  10. package/dist/global/ej2-treegrid.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +10 -10
  13. package/src/treegrid/actions/batch-edit.js +3 -3
  14. package/src/treegrid/actions/freeze-column.js +4 -5
  15. package/src/treegrid/actions/rowdragdrop.js +3 -2
  16. package/src/treegrid/base/data.js +2 -2
  17. package/src/treegrid/base/treegrid-model.d.ts +26 -15
  18. package/src/treegrid/base/treegrid.d.ts +32 -14
  19. package/src/treegrid/base/treegrid.js +32 -5
  20. package/src/treegrid/enum.d.ts +79 -138
  21. package/src/treegrid/models/column.d.ts +5 -3
  22. package/src/treegrid/models/edit-settings-model.d.ts +13 -9
  23. package/src/treegrid/models/edit-settings.d.ts +13 -9
  24. package/src/treegrid/models/filter-settings-model.d.ts +13 -8
  25. package/src/treegrid/models/filter-settings.d.ts +13 -8
  26. package/src/treegrid/models/loading-indicator-model.d.ts +4 -2
  27. package/src/treegrid/models/loading-indicator.d.ts +4 -2
  28. package/src/treegrid/models/search-settings-model.d.ts +9 -3
  29. package/src/treegrid/models/search-settings.d.ts +9 -3
  30. package/src/treegrid/models/selection-settings-model.d.ts +17 -8
  31. package/src/treegrid/models/selection-settings.d.ts +17 -8
  32. package/src/treegrid/renderer/render.js +1 -1
  33. package/styles/bootstrap-dark.css +2 -8
  34. package/styles/highcontrast-light.css +2 -8
  35. package/styles/treegrid/_bootstrap5-definition.scss +2 -2
  36. package/styles/treegrid/_fluent-definition.scss +2 -2
  37. package/styles/treegrid/_tailwind-definition.scss +2 -2
  38. package/styles/treegrid/bootstrap-dark.css +2 -8
  39. package/styles/treegrid/highcontrast-light.css +2 -8
  40. package/styles/treegrid/_material3-definition.scss +0 -28
@@ -1,4 +1,4 @@
1
- import { Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, addClass, classList, closest, compile, createElement, debounce, extend, getEnumValue, getValue, isNullOrUndefined, merge, remove, removeClass, select, setStyleAttribute, setValue } from '@syncfusion/ej2-base';
1
+ import { Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, classList, closest, compile, createElement, debounce, extend, getEnumValue, getValue, isNullOrUndefined, merge, remove, removeClass, select, setStyleAttribute, setValue } from '@syncfusion/ej2-base';
2
2
  import { Aggregate, Cell, CellRenderer, CellType, Clipboard, ColumnChooser, ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer, ColumnMenu, ColumnVirtualFreezeRenderer, CommandColumn, ContextMenu, DetailRow, Edit, ExcelExport, Filter, Freeze, FreezeContentRender, FreezeRender, FreezeRowModelGenerator, Grid, InfiniteScroll, InterSectionObserver, Logger, Page, PdfExport, Print, RenderType, Reorder, Resize, RowDD, RowDropSettings, RowRenderer, Scroll, Sort, Toolbar, VirtualContentRenderer, VirtualFreezeHdrRenderer, VirtualFreezeRenderer, VirtualHeaderRenderer, VirtualRowModelGenerator, VirtualScroll, appendChildren, calculateAggregate, detailLists, extend as extend$1, getActualProperties, getObject, getUid, iterateArrayOrObject, parentsUntil, resetRowIndex, setDebounce, templateCompiler } from '@syncfusion/ej2-grids';
3
3
  import { createCheckBox } from '@syncfusion/ej2-buttons';
4
4
  import { CacheAdaptor, DataManager, DataUtil, Deferred, JsonAdaptor, ODataAdaptor, Predicate, Query, RemoteSaveAdaptor, UrlAdaptor, WebApiAdaptor, WebMethodAdaptor } from '@syncfusion/ej2-data';
@@ -1601,7 +1601,7 @@ class Render {
1601
1601
  addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');
1602
1602
  totalIconsWidth += 18;
1603
1603
  container.appendChild(expandIcon);
1604
- emptyExpandIcon.style.width = '7px';
1604
+ emptyExpandIcon.style.width = '4px';
1605
1605
  totalIconsWidth += 7;
1606
1606
  container.appendChild(emptyExpandIcon.cloneNode());
1607
1607
  }
@@ -2120,13 +2120,13 @@ class DataManipulation {
2120
2120
  if (this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {
2121
2121
  qry.take(this.parent.pageSettings.pageSize);
2122
2122
  const expandDetail = [];
2123
- expandDetail.push('ExpandingAction', rowDetails.record[this.parent.idMapping]);
2123
+ expandDetail.push('ExpandingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());
2124
2124
  qry.expand(expandDetail);
2125
2125
  }
2126
2126
  else if (this.parent.enableVirtualization && rowDetails.action === 'collapse') {
2127
2127
  qry.take(this.parent.grid.pageSettings.pageSize);
2128
2128
  const expandDetail = [];
2129
- expandDetail.push('CollapsingAction', rowDetails.record[this.parent.idMapping]);
2129
+ expandDetail.push('CollapsingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());
2130
2130
  qry.expand(expandDetail);
2131
2131
  }
2132
2132
  qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);
@@ -3800,6 +3800,8 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
3800
3800
  }
3801
3801
  if (this.isVue) {
3802
3802
  this.grid.isVue = true;
3803
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3804
+ this.grid.vueInstance = this.vueInstance;
3803
3805
  }
3804
3806
  createSpinner({ target: this.element }, this.createElement);
3805
3807
  this.log(['mapping_fields_missing']);
@@ -3963,6 +3965,8 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
3963
3965
  this.grid[`${templateInstance}`] = this[`${templateInstance}`];
3964
3966
  const isJsComponent = 'isJsComponent';
3965
3967
  this.grid[`${isJsComponent}`] = true;
3968
+ const enableHtmlSanitizer = 'enableHtmlSanitizer';
3969
+ this.grid[`${enableHtmlSanitizer}`] = this.enableHtmlSanitizer;
3966
3970
  }
3967
3971
  triggerEvents(args) {
3968
3972
  this.trigger(getObject('name', args), args);
@@ -5453,15 +5457,21 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
5453
5457
  if (this.grid.columns.length !== this.columnModel.length) {
5454
5458
  this.stackedHeader = true;
5455
5459
  }
5456
- if (this.stackedHeader && this.enablePersistence && this.allowResizing) {
5460
+ if (this.stackedHeader && this.allowResizing) {
5457
5461
  for (let i = 0; i < this.columns.length; i++) {
5458
5462
  if (!isNullOrUndefined(this.columns[parseInt(i.toString(), 10)].columns)) {
5459
5463
  for (let j = 0; j < this.columns[parseInt(i.toString(), 10)].columns.length; j++) {
5460
- const stackedColumn = this.columns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)];
5464
+ const stackedColumn = this.columns[parseInt(i.toString(), 10)]
5465
+ .columns[parseInt(j.toString(), 10)];
5461
5466
  const currentColumn = this.grid.getColumnByField(stackedColumn.field);
5462
5467
  stackedColumn.width = currentColumn.width;
5463
5468
  }
5464
5469
  }
5470
+ else if (!isNullOrUndefined(this.columns[parseInt(i.toString(), 10)].field)) {
5471
+ const fieldName = this.columns[parseInt(i.toString(), 10)].field;
5472
+ const currentColumn = this.grid.getColumnByField(fieldName);
5473
+ this.columns[parseInt(i.toString(), 10)].width = currentColumn.width;
5474
+ }
5465
5475
  }
5466
5476
  }
5467
5477
  if (!this.stackedHeader) {
@@ -6369,8 +6379,8 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
6369
6379
  }
6370
6380
  }
6371
6381
  for (let i = 0; i < detailrows.length; i++) {
6372
- if (!isNullOrUndefined(detailrows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization
6373
- || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {
6382
+ if (!isNullOrUndefined(detailrows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization ||
6383
+ this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {
6374
6384
  gridRowsObject[detailrows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;
6375
6385
  detailrows[parseInt(i.toString(), 10)].style.display = displayAction;
6376
6386
  }
@@ -6467,6 +6477,20 @@ let TreeGrid = TreeGrid_1 = class TreeGrid extends Component {
6467
6477
  }
6468
6478
  }
6469
6479
  }
6480
+ /**
6481
+ * Method to sanitize html element
6482
+ *
6483
+ * @param {any} value - Specifies the html value to sanitize
6484
+ * @returns {any} Returns the sanitized html value
6485
+ * @hidden
6486
+ */
6487
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6488
+ sanitize(value) {
6489
+ if (this.enableHtmlSanitizer && typeof (value) === 'string') {
6490
+ return SanitizeHtmlHelper.sanitize(value);
6491
+ }
6492
+ return value;
6493
+ }
6470
6494
  /**
6471
6495
  * Updates the rows and cells
6472
6496
  *
@@ -7038,6 +7062,9 @@ __decorate([
7038
7062
  __decorate([
7039
7063
  Property(false)
7040
7064
  ], TreeGrid.prototype, "enableColumnVirtualization", void 0);
7065
+ __decorate([
7066
+ Property(false)
7067
+ ], TreeGrid.prototype, "enableHtmlSanitizer", void 0);
7041
7068
  __decorate([
7042
7069
  Property(false)
7043
7070
  ], TreeGrid.prototype, "enableInfiniteScrolling", void 0);
@@ -7953,6 +7980,7 @@ class RowDD$1 {
7953
7980
  addErrorElem() {
7954
7981
  const dragelem = document.getElementsByClassName('e-cloneproperties')[0];
7955
7982
  const errorelem = dragelem.querySelectorAll('.e-errorelem').length;
7983
+ const sanitize = 'sanitize';
7956
7984
  if (!errorelem && !this.parent.rowDropSettings.targetID) {
7957
7985
  const ele = document.createElement('div');
7958
7986
  classList(ele, ['e-errorcontainer'], []);
@@ -7960,14 +7988,14 @@ class RowDD$1 {
7960
7988
  const errorVal = dragelem.querySelector('.errorValue');
7961
7989
  let content$$1 = dragelem.querySelector('.e-rowcell').innerHTML;
7962
7990
  if (errorVal) {
7963
- content$$1 = errorVal.innerHTML;
7991
+ content$$1 = this.parent[`${sanitize}`](errorVal.innerHTML);
7964
7992
  errorVal.parentNode.removeChild(errorVal);
7965
7993
  }
7966
7994
  dragelem.querySelector('.e-rowcell').innerHTML = '';
7967
7995
  const spanContent = document.createElement('span');
7968
7996
  spanContent.className = 'errorValue';
7969
7997
  spanContent.style.paddingLeft = '16px';
7970
- spanContent.innerHTML = content$$1;
7998
+ spanContent.innerHTML = this.parent[`${sanitize}`](content$$1);
7971
7999
  dragelem.querySelector('.e-rowcell').appendChild(ele);
7972
8000
  dragelem.querySelector('.e-rowcell').appendChild(spanContent);
7973
8001
  const dropItemSpan = document.querySelector('.e-dropitemscount');
@@ -10424,7 +10452,7 @@ class BatchEdit {
10424
10452
  this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];
10425
10453
  }
10426
10454
  cellSaved(args) {
10427
- let actualCellIndex = args.cell.cellIndex;
10455
+ let actualCellIndex = args.column.index;
10428
10456
  const frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();
10429
10457
  if (frozenCols && args.columnObject.index > frozenCols) {
10430
10458
  actualCellIndex = actualCellIndex + frozenCols;
@@ -10435,13 +10463,13 @@ class BatchEdit {
10435
10463
  const colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;
10436
10464
  if (colCount === this.parent.treeColumnIndex) {
10437
10465
  this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,
10438
- column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)
10466
+ column: this.parent.grid.getColumnByIndex(args.column.index)
10439
10467
  });
10440
10468
  }
10441
10469
  }
10442
10470
  else if (actualCellIndex === this.parent.treeColumnIndex) {
10443
10471
  this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,
10444
- column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)
10472
+ column: this.parent.grid.getColumnByIndex(args.column.index)
10445
10473
  });
10446
10474
  }
10447
10475
  if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {
@@ -13183,10 +13211,6 @@ class Freeze$1 {
13183
13211
  getValue('addRenderer', renderer)
13184
13212
  .apply(renderer, [RenderType.Content, new VirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);
13185
13213
  }
13186
- else {
13187
- getValue('addRenderer', renderer)
13188
- .apply(renderer, [RenderType.Content, new FreezeContentRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);
13189
- }
13190
13214
  }
13191
13215
  if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {
13192
13216
  getValue('addRenderer', renderer)
@@ -13218,12 +13242,15 @@ class Freeze$1 {
13218
13242
  rows = args.detailrows;
13219
13243
  }
13220
13244
  for (let i = 0; i < rows.length; i++) {
13221
- let row = rows[parseInt(i.toString(), 10)];
13245
+ const row = rows[parseInt(i.toString(), 10)];
13222
13246
  const rData = this.parent.grid.getRowObjectFromUID(row.getAttribute('data-Uid')).data;
13223
13247
  if (!isNullOrUndefined(movableRows) && row.parentElement.firstElementChild.clientHeight > 0) {
13224
13248
  row.style.height = row.parentElement.firstElementChild.clientHeight + 'px';
13225
13249
  }
13226
13250
  row.style.display = args.action;
13251
+ if (freeze && frozenRightRows.length) {
13252
+ frozenRightRows[parseInt(i.toString(), 10)].style.display = args.action;
13253
+ }
13227
13254
  const queryselector = args.action === 'none' ? '.e-treecolumn-container .e-treegridcollapse'
13228
13255
  : '.e-treecolumn-container .e-treegridexpand';
13229
13256
  if (frozenrows[row.rowIndex].querySelector(queryselector)) {