@datorama/core 22.15.0 → 22.15.3

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 (38) hide show
  1. package/bundle.scss +122 -50
  2. package/bundles/datorama-core.umd.js +167 -47
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +27 -27
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/lib/grid/grid/grid.component.js +4 -4
  8. package/esm2015/lib/grid/grid-sort.utils.js +7 -2
  9. package/esm2015/lib/grid-v2/grid/grid-v2.component.js +10 -3
  10. package/esm2015/lib/grid-v2/grid/grid-v2.config.js +30 -4
  11. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +58 -24
  12. package/esm2015/lib/grid-v2/grid-header/grid-header.component.js +3 -2
  13. package/esm2015/lib/grid-v2/grid-store/grid.query.js +9 -5
  14. package/esm2015/lib/grid-v2/grid-store/grid.service.js +3 -2
  15. package/esm2015/lib/grid-v2/grid-store/util.js +27 -1
  16. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +22 -16
  17. package/esm2015/lib/version.js +2 -2
  18. package/esm5/lib/grid/grid/grid.component.js +4 -4
  19. package/esm5/lib/grid/grid-sort.utils.js +7 -2
  20. package/esm5/lib/grid-v2/grid/grid-v2.component.js +14 -3
  21. package/esm5/lib/grid-v2/grid/grid-v2.config.js +30 -4
  22. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +62 -24
  23. package/esm5/lib/grid-v2/grid-header/grid-header.component.js +3 -2
  24. package/esm5/lib/grid-v2/grid-store/grid.query.js +9 -5
  25. package/esm5/lib/grid-v2/grid-store/grid.service.js +3 -2
  26. package/esm5/lib/grid-v2/grid-store/util.js +28 -1
  27. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +22 -16
  28. package/esm5/lib/version.js +2 -2
  29. package/fesm2015/datorama-core.js +160 -48
  30. package/fesm2015/datorama-core.js.map +1 -1
  31. package/fesm5/datorama-core.js +168 -48
  32. package/fesm5/datorama-core.js.map +1 -1
  33. package/lib/grid-v2/grid/grid-v2.component.d.ts +4 -0
  34. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +15 -0
  35. package/lib/grid-v2/grid-store/grid.service.d.ts +1 -1
  36. package/lib/grid-v2/grid-store/util.d.ts +7 -0
  37. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +1 -0
  38. package/package.json +1 -1
@@ -5894,10 +5894,10 @@
5894
5894
  _this.onChange(selectedRows);
5895
5895
  },
5896
5896
  rowSelection: 'multiple',
5897
- rowDeselection: true,
5897
+ // rowDeselection removed: true by default in AG Grid 27 (suppress with suppressRowDeselection).
5898
5898
  unSortIcon: true,
5899
- animateRows: true,
5900
- rememberGroupStateWhenNewData: true
5899
+ animateRows: true
5900
+ // rememberGroupStateWhenNewData removed: no-op since AG Grid 24 (transaction updates keep group state).
5901
5901
  };
5902
5902
  _this.infinitePagination = false;
5903
5903
  _this.isRowsCollapsed = true;
@@ -11356,7 +11356,12 @@
11356
11356
  */
11357
11357
  function getSortModel(columnApi) {
11358
11358
  var sortIndexes = {};
11359
- var sortedColumns = columnApi.getColumnState().filter(function (columnState) { return columnState.sort != null; });
11359
+ // AG Grid 27: getColumnState() returns undefined before the grid's columns are initialized.
11360
+ // getSortModel() is reached via getCurrentGridSettings()/onFilterSortChanged() on resize/data
11361
+ // events that can fire before that point, so guard against undefined to avoid
11362
+ // "Cannot read properties of undefined (reading 'filter')".
11363
+ var columnState = columnApi.getColumnState() || [];
11364
+ var sortedColumns = columnState.filter(function (state) { return state.sort != null; });
11360
11365
  sortedColumns.forEach(function (columnState) {
11361
11366
  sortIndexes[columnState.colId] = columnState.sortIndex;
11362
11367
  });
@@ -11571,6 +11576,32 @@
11571
11576
  }
11572
11577
  return value;
11573
11578
  }
11579
+ /** ag-grid's colId prefix for pivotRowTotals columns (PivotColDefService.PIVOT_ROW_TOTAL_PREFIX, not exported) */
11580
+ var PIVOT_ROW_TOTAL_COL_ID_PREFIX = 'PivotRowTotal_';
11581
+ /**
11582
+ * ag-grid 22 nested each pivot row total column in one group per pivot level, and the innermost group gets the "Total" header,
11583
+ * but ag-grid 27 adds the column without groups.
11584
+ * Turn the column def into those groups in place, as processSecondaryColDef can't replace it in its parent's children.
11585
+ * This relies on ag-grid checking for children before it calls processSecondaryColDef, so re-check it when moving to processPivotResultColDef.
11586
+ */
11587
+ function wrapPivotRowTotalColDef(colDef, headerName, pivotLevels) {
11588
+ if (!colDef.colId || !colDef.colId.startsWith(PIVOT_ROW_TOTAL_COL_ID_PREFIX)) {
11589
+ return;
11590
+ }
11591
+ var totalColDef = __assign({}, colDef);
11592
+ // A 'group_' prefix can't match a pivot column id, which starts with 'pivot_' or 'PivotRowTotal_'
11593
+ var groupDef = {
11594
+ groupId: "group_" + totalColDef.colId,
11595
+ headerName: headerName,
11596
+ headerClass: ['total-pivot-cell'],
11597
+ children: [totalColDef]
11598
+ };
11599
+ for (var level = 1; level < pivotLevels; level++) {
11600
+ groupDef = { groupId: "group_" + totalColDef.colId + "_" + level, children: [groupDef] };
11601
+ }
11602
+ Object.keys(colDef).forEach(function (key) { return delete colDef[key]; });
11603
+ Object.assign(colDef, groupDef);
11604
+ }
11574
11605
  function isHtmlAllowedForCol(gridOptions, colDef) {
11575
11606
  return (!gridOptions.disabledHTMLRenderingFields || !gridOptions.disabledHTMLRenderingFields.includes(getColField(colDef)));
11576
11607
  }
@@ -11651,9 +11682,13 @@
11651
11682
  GridQuery.prototype.getCurrentGridSettings = function () {
11652
11683
  var toColId = function (column) { return column.getColId(); };
11653
11684
  var columns = this.api.columns;
11654
- var groupedColumns = columns.getRowGroupColumns();
11655
- var columnsOrder = columns.getAllColumns();
11656
- var allGridColumns = columns.getAllGridColumns();
11685
+ // AG Grid 27: getAllColumns() returns Column[] | null (and the grouped/grid column getters can
11686
+ // likewise be empty) before the grid's columns are initialized. getCurrentGridSettings() is
11687
+ // reached via fitGrid -> updateSettings on window resize, which can fire before that point, so
11688
+ // guard against null to avoid "Cannot read properties of undefined (reading 'filter')".
11689
+ var groupedColumns = columns.getRowGroupColumns() || [];
11690
+ var columnsOrder = columns.getAllColumns() || [];
11691
+ var allGridColumns = columns.getAllGridColumns() || [];
11657
11692
  var hiddenColumns = columnsOrder
11658
11693
  .filter(function (column) { return !column.isVisible() && !groupedColumns.includes(column); })
11659
11694
  .map(toColId);
@@ -11664,7 +11699,7 @@
11664
11699
  hiddenColumns: hiddenColumns,
11665
11700
  groupedColumns: groupedColumns.map(toColId),
11666
11701
  filter: this.getFilter(),
11667
- pinnedColumns: columns.getDisplayedLeftColumns().map(toColId),
11702
+ pinnedColumns: (columns.getDisplayedLeftColumns() || []).map(toColId),
11668
11703
  columnsOrder: allGridColumns.map(toColId),
11669
11704
  columnsSizes: null,
11670
11705
  searchTerm: null
@@ -13810,7 +13845,27 @@
13810
13845
  comparator: function (a, b) { return getTime$1(a) - getTime$1(b); }
13811
13846
  },
13812
13847
  _a$3[exports.DatoGridColumnTypes.Number] = {
13813
- filter: exports.DatoGridFilterTypes.Number
13848
+ filter: exports.DatoGridFilterTypes.Number,
13849
+ // AG Grid resolves a column's sort comparator only from its merged colDef.comparator.
13850
+ // Number columns had none, so they fell back to AG Grid's default comparator, which sorts
13851
+ // string-typed values lexicographically ("10" before "2"). Provide an explicit numeric
13852
+ // comparator. Map null/empty/non-numeric to -Infinity so we never return NaN (AG Grid's
13853
+ // sorter skips a NaN result). Ascending-sense only — AG Grid flips the sign for descending.
13854
+ comparator: function (a, b) {
13855
+ var toNum = function (v) {
13856
+ var n = v == null || v === '' ? NaN : Number(v);
13857
+ return isNaN(n) ? -Infinity : n;
13858
+ };
13859
+ var na = toNum(a);
13860
+ var nb = toNum(b);
13861
+ // Compare relationally (not by subtraction): two missing/non-numeric values both map to
13862
+ // -Infinity, and -Infinity - (-Infinity) === NaN, which AG Grid's sorter skips. Returning
13863
+ // 0 / -1 / 1 avoids NaN entirely. Ascending sense — AG Grid flips the sign for descending.
13864
+ if (na === nb) {
13865
+ return 0;
13866
+ }
13867
+ return na < nb ? -1 : 1;
13868
+ }
13814
13869
  },
13815
13870
  _a$3[exports.DatoGridColumnTypes.String] = stringColDef,
13816
13871
  _a$3[exports.DatoGridColumnTypes.Status] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridStatusCellComponent' }),
@@ -13818,14 +13873,20 @@
13818
13873
  _a$3[exports.DatoGridColumnTypes.ItemsCount] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridItemsCountCellComponent' }),
13819
13874
  _a$3[exports.DatoGridColumnTypes.Initials] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridInitialsCellComponent' }),
13820
13875
  _a$3[exports.DatoGridColumnTypes.Avatar] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridAvatarCellComponent' }),
13821
- _a$3), multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, paginateChildRows: true, deltaColumnMode: true, loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
13876
+ _a$3), multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, paginateChildRows: true,
13877
+ // deltaColumnMode removed: deprecated in AG Grid 27, delta column updates are the default now.
13878
+ loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
13822
13879
  minWidth: exports.GridMinWidths.Default,
13823
13880
  sortable: true,
13824
13881
  resizable: true,
13825
13882
  type: exports.DatoGridColumnTypes.String,
13826
13883
  menuTabs: ['filterMenuTab'],
13827
13884
  headerComponentFramework: DatoGridColumnHeaderComponent
13828
- }, suppressCellSelection: true, suppressPropertyNamesCheck: true, rowHeight: 35, headerHeight: 30, rowSelection: exports.GridRowSelectionType.MULTIPLE, rowDeselection: true, unSortIcon: true, animateRows: true, rememberGroupStateWhenNewData: true, groupDisplayType: 'multipleColumns', groupDefaultExpanded: -1, usePivotGridStyle: false, disabledHTMLRenderingFields: [] }, (isTestEnv() ? { suppressColumnVirtualisation: true, rowBuffer: 99999 } : {}));
13885
+ }, suppressCellFocus: true, suppressPropertyNamesCheck: true, rowHeight: 35, headerHeight: 30, rowSelection: exports.GridRowSelectionType.MULTIPLE,
13886
+ // rowDeselection removed: true by default in AG Grid 27 (suppress with suppressRowDeselection).
13887
+ unSortIcon: true, animateRows: true,
13888
+ // rememberGroupStateWhenNewData removed: no-op since AG Grid 24 (transaction updates keep group state).
13889
+ groupDisplayType: 'multipleColumns', groupDefaultExpanded: -1, usePivotGridStyle: false, disabledHTMLRenderingFields: [] }, (isTestEnv() ? { suppressColumnVirtualisation: true, rowBuffer: 99999 } : {}));
13829
13890
  var DEFAULT_GRID_SEARCH_DEBOUNCE_TIME = {
13830
13891
  CLIENT: 200,
13831
13892
  SERVER: 250
@@ -15286,6 +15347,7 @@
15286
15347
  return (parsedKey && parsedKey.value) || '';
15287
15348
  });
15288
15349
  }
15350
+ wrapPivotRowTotalColDef(colDef, _this.translate.transform('core.total'), _this.api ? _this.api.columns.getPivotColumns().length : 1);
15289
15351
  };
15290
15352
  /** Use processPivotResultColGroupDe from ver 28 */
15291
15353
  gridOptions.processSecondaryColGroupDef = function (colGroupDef) {
@@ -15795,18 +15857,30 @@
15795
15857
  this.gridActions = [];
15796
15858
  this.gridReady$ = this.gridQuery.gridReady$;
15797
15859
  this.contentInit = new rxjs.Subject();
15860
+ // ngx-take-until-destroy patches ngOnDestroy on the instance, which Ivy never calls (it uses the
15861
+ // prototype hook), so listeners outlived the grid and hit the destroyed AG Grid API.
15862
+ this.destroy$ = new rxjs.Subject();
15863
+ this.hasGridOptions = new rxjs.BehaviorSubject(false);
15864
+ this.agGridReady = new rxjs.ReplaySubject(1);
15798
15865
  this.gridElements = {
15799
15866
  centerViewport: null,
15800
15867
  centerContainer: null,
15801
15868
  bodyViewport: null
15802
15869
  };
15803
15870
  this.treeGridClass = 'tree';
15871
+ this.hasGridOptions$ = this.hasGridOptions.asObservable();
15804
15872
  }
15805
15873
  Object.defineProperty(DatoGridControllerComponent.prototype, "gridOptions", {
15806
15874
  get: function () {
15807
15875
  return this._gridOptions;
15808
15876
  },
15809
15877
  set: function (gridOptions) {
15878
+ // The [gridOptions] binding can resolve to undefined during the host's initial change-detection
15879
+ // pass (before the consumer computes its options). Ignore it instead of throwing
15880
+ // "Cannot read properties of undefined" from initGridOptions() and aborting the view render.
15881
+ if (!gridOptions) {
15882
+ return;
15883
+ }
15810
15884
  this._gridOptions = this.gridService.initGridOptions(gridOptions);
15811
15885
  this.gridService.treeData = gridOptions.treeData;
15812
15886
  this.gridService.isPivotMode = gridOptions.pivotMode;
@@ -15818,16 +15892,37 @@
15818
15892
  this.agGridEl.classList.add(this.treeGridClass);
15819
15893
  }
15820
15894
  }
15895
+ !this.hasGridOptions.value && this.hasGridOptions.next(true);
15896
+ },
15897
+ enumerable: true,
15898
+ configurable: true
15899
+ });
15900
+ Object.defineProperty(DatoGridControllerComponent.prototype, "agGridOptions", {
15901
+ /* @internal */
15902
+ get: function () {
15903
+ if (!this._agGridOptions && this._gridOptions) {
15904
+ this.gridOptions = this.normalizeOptions();
15905
+ this._agGridOptions = this.gridOptions;
15906
+ }
15907
+ return this._agGridOptions;
15821
15908
  },
15822
15909
  enumerable: true,
15823
15910
  configurable: true
15824
15911
  });
15825
15912
  DatoGridControllerComponent.prototype.ngOnDestroy = function () {
15913
+ this.destroy$.next();
15914
+ this.destroy$.complete();
15826
15915
  this.contentInit.complete();
15916
+ this.hasGridOptions.complete();
15917
+ this.agGridReady.complete();
15827
15918
  this.clearTooltip();
15828
15919
  this.rowHoverComponent && this.rowHoverComponent.destroy();
15829
15920
  this.rowHoverComponent = null;
15830
15921
  };
15922
+ /* @internal */
15923
+ DatoGridControllerComponent.prototype.onAgGridReady = function (event) {
15924
+ this.agGridReady.next(event);
15925
+ };
15831
15926
  DatoGridControllerComponent.prototype.initializeGrid = function (agGrid, agGridEl) {
15832
15927
  if (!this.contentInit.isStopped) {
15833
15928
  this._initializeGrid(agGrid, agGridEl);
@@ -15842,11 +15937,13 @@
15842
15937
  this.contentInit
15843
15938
  .asObservable()
15844
15939
  .pipe(operators.switchMap(function () {
15845
- _this.gridOptions = _this.normalizeOptions();
15846
- agGrid.gridOptions = _this.gridOptions;
15940
+ // Already normalized when dato-grid-v2 bound them to <ag-grid-angular [gridOptions]>.
15941
+ if (!_this.agGridOptions) {
15942
+ return rxjs.EMPTY;
15943
+ }
15847
15944
  var settingsLoader = _this.gridOptions.saveSettings === false ? rxjs.of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
15848
- return rxjs.combineLatest([agGrid.gridReady, settingsLoader]);
15849
- }), ngxTakeUntilDestroy.untilDestroyed(this))
15945
+ return rxjs.combineLatest([_this.agGridReady, settingsLoader]);
15946
+ }), operators.takeUntil(this.destroy$))
15850
15947
  .subscribe(function (_a) {
15851
15948
  var _b = __read(_a, 2), _c = _b[0], api = _c.api, columnApi = _c.columnApi, _d = _b[1], savedSettings = _d === void 0 ? {} : _d;
15852
15949
  if (!_this.gridOptions.rowData) {
@@ -15925,7 +16022,7 @@
15925
16022
  .pipe(operators.auditTime(100), operators.filter(function (_a) {
15926
16023
  var finished = _a.finished, source = _a.source;
15927
16024
  return finished && source === 'uiColumnDragged';
15928
- }), ngxTakeUntilDestroy.untilDestroyed(this))
16025
+ }), operators.takeUntil(this.destroy$))
15929
16026
  .subscribe(function (e) {
15930
16027
  var _a = __read(e.columns, 1), column = _a[0];
15931
16028
  var columnsSizes = __assign({}, _this.gridQuery.getColumnSizes());
@@ -15944,7 +16041,7 @@
15944
16041
  rxjs.merge(columnVisible, sortChanged, columnRowGroupChanged, columnPinned, dragStopped, filterChanged)
15945
16042
  .pipe(
15946
16043
  /* Skip the initial sorting event fired by the grid when adding rows */
15947
- operators.skip(1), ngxTakeUntilDestroy.untilDestroyed(this))
16044
+ operators.skip(1), operators.takeUntil(this.destroy$))
15948
16045
  .subscribe(function (_a) {
15949
16046
  var type = _a.type;
15950
16047
  var settingsDiff = _this.gridService.getSettingsDiff();
@@ -15962,7 +16059,7 @@
15962
16059
  var _this = this;
15963
16060
  this.gridQuery
15964
16061
  .select(function (state) { return state.settings; })
15965
- .pipe(operators.skip(1), operators.debounceTime(1000), ngxTakeUntilDestroy.untilDestroyed(this))
16062
+ .pipe(operators.skip(1), operators.debounceTime(1000), operators.takeUntil(this.destroy$))
15966
16063
  .subscribe(function () {
15967
16064
  var settingsDiff = _this.gridService.getSettingsDiff();
15968
16065
  _this.gridService.saveSettingsToServer(settingsDiff);
@@ -15992,7 +16089,7 @@
15992
16089
  var value = _a.value, node = _a.node;
15993
16090
  return value !== undefined && node.group === true;
15994
16091
  }));
15995
- }), ngxTakeUntilDestroy.untilDestroyed(this))
16092
+ }), operators.takeUntil(this.destroy$))
15996
16093
  .subscribe(function (_a) {
15997
16094
  var node = _a.node;
15998
16095
  node.setExpanded(!node.expanded);
@@ -16003,7 +16100,7 @@
16003
16100
  .pipe(operators.filter(function (_a) {
16004
16101
  var node = _a.node;
16005
16102
  return node.expanded === false;
16006
- }), ngxTakeUntilDestroy.untilDestroyed(this))
16103
+ }), operators.takeUntil(this.destroy$))
16007
16104
  .subscribe(function () {
16008
16105
  _this.lastHoveredRow = null;
16009
16106
  _this.setOnHoverState(false);
@@ -16018,7 +16115,7 @@
16018
16115
  rxjs.fromEvent(bodyViewport, 'click')
16019
16116
  .pipe(operators.filter(function (event) {
16020
16117
  return (event.target === bodyViewport || event.target === centerViewport) && api.getSelectedRows().length > 0;
16021
- }), ngxTakeUntilDestroy.untilDestroyed(this))
16118
+ }), operators.takeUntil(this.destroy$))
16022
16119
  .subscribe(function () { return api.deselectAll(); });
16023
16120
  };
16024
16121
  DatoGridControllerComponent.prototype.onHoverEnabled = function () {
@@ -16031,7 +16128,7 @@
16031
16128
  var onHoverEnabled = this.onHoverEnabled();
16032
16129
  if (onHoverEnabled) {
16033
16130
  rxjs.fromEvent(centerContainer, 'mouseleave')
16034
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
16131
+ .pipe(operators.takeUntil(this.destroy$))
16035
16132
  .subscribe(function () {
16036
16133
  _this.toggleRowHoverClass(_this.lastHoveredRow);
16037
16134
  _this.lastHoveredRow = null;
@@ -16042,13 +16139,13 @@
16042
16139
  var direction = _a.direction;
16043
16140
  return direction === 'horizontal';
16044
16141
  })), agGrid.rowDataChanged)
16045
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
16142
+ .pipe(operators.takeUntil(this.destroy$))
16046
16143
  .subscribe(function () {
16047
16144
  _this.updateOnHoverPos();
16048
16145
  });
16049
16146
  this.addOnHoverElement();
16050
16147
  }
16051
- agGrid.cellMouseOver.pipe(ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function (event) {
16148
+ agGrid.cellMouseOver.pipe(operators.takeUntil(this.destroy$)).subscribe(function (event) {
16052
16149
  var node = event.node, column = event.column;
16053
16150
  if (lastHoveredCell === node.id + "-" + column.getColId()) {
16054
16151
  clearTimeout(_this.cellMouseOutTimer);
@@ -16065,12 +16162,12 @@
16065
16162
  }
16066
16163
  });
16067
16164
  var onTooltipOut = rxjs.merge(rxjs.fromEvent(bodyViewport, 'scroll'), rxjs.fromEvent(this.agGridEl, 'mouseleave'));
16068
- onTooltipOut.pipe(ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function () {
16165
+ onTooltipOut.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
16069
16166
  lastHoveredCell = null;
16070
16167
  _this.clearTooltip();
16071
16168
  });
16072
16169
  agGrid.cellMouseOut
16073
- .pipe(operators.filter(function () { return !isNil(_this.tooltip); }), ngxTakeUntilDestroy.untilDestroyed(this))
16170
+ .pipe(operators.filter(function () { return !isNil(_this.tooltip); }), operators.takeUntil(this.destroy$))
16074
16171
  .subscribe(function () {
16075
16172
  _this.cellMouseOutTimer = window.setTimeout(function () { return _this.clearTooltip(); });
16076
16173
  });
@@ -16087,9 +16184,13 @@
16087
16184
  if (cell.tagName === 'SPAN' && cell.scrollWidth === 0) {
16088
16185
  cell = cell.parentElement;
16089
16186
  }
16090
- if (event.colDef.editable) {
16187
+ if (event.colDef.editable && cell) {
16091
16188
  cell = cell.querySelector('.value-wrapper') || cell;
16092
16189
  }
16190
+ // AG Grid 27 can fire cellMouseOver for an element that was already detached by a re-render.
16191
+ if (!cell) {
16192
+ return;
16193
+ }
16093
16194
  var textOverflow = cell.offsetWidth < cell.scrollWidth;
16094
16195
  if (textOverflow) {
16095
16196
  clearTimeout(this.cellMouseOutTimer);
@@ -16173,7 +16274,7 @@
16173
16274
  keys: 'meta.a',
16174
16275
  ignoreInEditable: true
16175
16276
  })
16176
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
16277
+ .pipe(operators.takeUntil(this.destroy$))
16177
16278
  .subscribe(function () {
16178
16279
  _this.gridService.selectAllCurrentPageRows();
16179
16280
  });
@@ -16181,7 +16282,7 @@
16181
16282
  DatoGridControllerComponent.prototype.registerWindowResizeListener = function () {
16182
16283
  var _this = this;
16183
16284
  rxjs.fromEvent(window, 'resize')
16184
- .pipe(operators.debounceTime(100), operators.filter(function () { return _this.gridQuery.gridAlignment !== 2 /* CUSTOM */; }), ngxTakeUntilDestroy.untilDestroyed(this))
16285
+ .pipe(operators.debounceTime(100), operators.filter(function () { return _this.gridQuery.gridAlignment !== 2 /* CUSTOM */; }), operators.takeUntil(this.destroy$))
16185
16286
  .subscribe(function () {
16186
16287
  var fitTo = _this.gridQuery.gridAlignment === 0 /* FIT_TO_CONTAINER */ ? 'container' : 'content';
16187
16288
  _this.gridService.fitGrid(fitTo);
@@ -16205,7 +16306,7 @@
16205
16306
  var events$ = this.gridQuery.isServerSide
16206
16307
  ? rxjs.merge(agGrid.sortChanged, agGrid.filterChanged)
16207
16308
  : agGrid.filterChanged;
16208
- events$.pipe(ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function () {
16309
+ events$.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
16209
16310
  _this.gridService.deselectAllRows();
16210
16311
  });
16211
16312
  };
@@ -16214,7 +16315,7 @@
16214
16315
  if (!this.gridQuery.isServerSide) {
16215
16316
  return;
16216
16317
  }
16217
- agGrid.paginationChanged.pipe(ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function () {
16318
+ agGrid.paginationChanged.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
16218
16319
  if (_this.gridQuery.isServerSelectAllRowsEnabled) {
16219
16320
  _this.gridService.selectAllCurrentPageRows(true, true);
16220
16321
  }
@@ -16286,6 +16387,7 @@
16286
16387
  function DatoGridV2Component(controller, host) {
16287
16388
  this.controller = controller;
16288
16389
  this.host = host;
16390
+ this.hasGridOptions$ = this.controller.hasGridOptions$;
16289
16391
  }
16290
16392
  Object.defineProperty(DatoGridV2Component.prototype, "grid", {
16291
16393
  set: function (agGrid) {
@@ -16297,6 +16399,13 @@
16297
16399
  enumerable: true,
16298
16400
  configurable: true
16299
16401
  });
16402
+ Object.defineProperty(DatoGridV2Component.prototype, "agGridOptions", {
16403
+ get: function () {
16404
+ return this.controller.agGridOptions;
16405
+ },
16406
+ enumerable: true,
16407
+ configurable: true
16408
+ });
16300
16409
  Object.defineProperty(DatoGridV2Component.prototype, "gridOptions", {
16301
16410
  get: function () {
16302
16411
  return this.controller ? this.controller.gridOptions : null;
@@ -16325,6 +16434,9 @@
16325
16434
  enumerable: true,
16326
16435
  configurable: true
16327
16436
  });
16437
+ DatoGridV2Component.prototype.onGridReady = function (event) {
16438
+ this.controller.onAgGridReady(event);
16439
+ };
16328
16440
  DatoGridV2Component.ctorParameters = function () { return [
16329
16441
  { type: DatoGridControllerComponent },
16330
16442
  { type: core.ElementRef }
@@ -16337,10 +16449,10 @@
16337
16449
  DatoGridV2Component = __decorate([
16338
16450
  core.Component({
16339
16451
  selector: 'dato-grid-v2',
16340
- template: "<ag-grid-angular data-auto-id=\"grid\" class=\"dato-grid ag-theme-material\" [class.has-background]=\"enableBackground\" [class.enable-v2_1]=\"enableV2_1\"\n [class.with-multi-selection-col]=\"gridOptions?.showMultiSelectionCheckboxes\" [class.pivot-style]=\"isPivotStyle\">\n</ag-grid-angular>\n<dato-grid-pagination-v2 [class.has-background]=\"enableBackground\"></dato-grid-pagination-v2>\n",
16452
+ template: "<ag-grid-angular *ngIf=\"hasGridOptions$ | async\" [gridOptions]=\"agGridOptions\" (gridReady)=\"onGridReady($event)\"\n data-auto-id=\"grid\" class=\"dato-grid ag-theme-material\" [class.has-background]=\"enableBackground\" [class.enable-v2_1]=\"enableV2_1\"\n [class.with-multi-selection-col]=\"gridOptions?.showMultiSelectionCheckboxes\" [class.pivot-style]=\"isPivotStyle\">\n</ag-grid-angular>\n<dato-grid-pagination-v2 [class.has-background]=\"enableBackground\"></dato-grid-pagination-v2>\n",
16341
16453
  changeDetection: core.ChangeDetectionStrategy.OnPush,
16342
16454
  encapsulation: core.ViewEncapsulation.None,
16343
- styles: ["dato-grid-v2{flex-grow:1;display:flex;flex-direction:column;position:relative}dato-grid-v2 .dato-grid,dato-grid-v2 dato-grid-pagination-v2{position:absolute;left:0;right:0;bottom:0}dato-grid-v2 .dato-grid{top:0;bottom:50px}dato-grid-v2 .grid-hover-actions{position:absolute;z-index:2;transition:opacity .2s ease-in-out}dato-grid-v2 .ag-row-drag{width:initial!important;min-width:auto!important}dato-grid-v2 .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle;width:initial;height:initial}dato-grid-v2 .da-grid-icon.drag{width:14px;height:14px;margin-right:6px;opacity:0;transition:opacity .3s;transform:translateY(-50%)}dato-grid-v2 .da-grid-icon.folder{width:18px;height:35px;margin:0 8px}dato-grid-v2 .ag-row.ag-row-hover .da-grid-icon.drag{opacity:1}dato-grid-v2 ag-grid-angular.tree .ag-group-contracted,dato-grid-v2 ag-grid-angular.tree .ag-group-expanded{display:inline-block;width:18px;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-group-checkbox{display:none}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-empty-folder .folder{margin-left:26px}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-1 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 1)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-1{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-2 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 2)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-2{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-3 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 3)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-3{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-4 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 4)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-4{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row div[col-id=ag-Grid-AutoColumn]{padding-left:0}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell{display:flex;align-items:center}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .ag-group-value>span{display:inline-block;vertical-align:middle}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .initials{border-radius:50%;padding:4px;margin-right:8px;margin-left:20px;width:28px;height:28px;display:inline-block;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-row-group-leaf-indent{margin-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-selection-checkbox .ag-icon-checkbox-indeterminate:before{text-align:center;content:\"-\";display:inline-block;position:absolute;top:0;left:0;right:0;bottom:0;line-height:.5;color:#fff}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell{line-height:33px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.dato-editable-cell{line-height:29px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.ag-cell-inline-editing{height:35px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell{line-height:42px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.dato-editable-cell{line-height:38px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.ag-cell-inline-editing{height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell{line-height:48px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.dato-editable-cell{line-height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.ag-cell-inline-editing{height:50px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell{line-height:57px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.dato-editable-cell{line-height:53px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.ag-cell-inline-editing{height:59px}dato-grid-v2 ag-grid-angular .ag-cell.checkbox-selection-cell{display:flex;padding-right:0}dato-grid-v2 .ag-menu .da-grid-icon svg{vertical-align:middle}dato-grid-v2 .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}dato-grid-v2 .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}dato-grid-v2 .group-contracted-icon,dato-grid-v2 .group-expanded-icon{width:7px}dato-grid-v2 .group-expanded-icon{transform:rotate(90deg)}dato-grid-v2 .dato-grid .ag-cell{border-top:0;border-bottom:0}dato-grid-v2 .ag-overlay-wrapper ng-component{display:flex}.ag-dnd-ghost{min-width:100px;border:none;display:flex;justify-content:flex-start;align-content:center;align-items:center;cursor:-webkit-grabbing;cursor:grabbing;z-index:10000000}.ag-dnd-ghost .da-grid-icon.column-move-hide svg{height:18px;width:18px}.ag-dnd-ghost .da-grid-icon.column-move svg,.ag-dnd-ghost .da-grid-icon.column-move-pin svg{height:16px;width:16px}"]
16455
+ styles: ["dato-grid-v2{flex-grow:1;display:flex;flex-direction:column;position:relative}dato-grid-v2 .dato-grid,dato-grid-v2 dato-grid-pagination-v2{position:absolute;left:0;right:0;bottom:0}dato-grid-v2 .dato-grid{top:0;bottom:50px}dato-grid-v2 .grid-hover-actions{position:absolute;z-index:2;transition:opacity .2s ease-in-out}dato-grid-v2 .ag-row-drag{width:initial!important;min-width:auto!important}dato-grid-v2 .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle;width:initial;height:initial}dato-grid-v2 .da-grid-icon.drag{width:14px;height:14px;margin-right:6px;opacity:0;transition:opacity .3s;transform:translateY(-50%)}dato-grid-v2 .da-grid-icon.folder{width:18px;height:35px;margin:0 8px}dato-grid-v2 .ag-row.ag-row-hover .da-grid-icon.drag{opacity:1}dato-grid-v2 ag-grid-angular.tree .ag-group-contracted,dato-grid-v2 ag-grid-angular.tree .ag-group-expanded{display:inline-block;width:18px;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-group-checkbox{display:none}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-empty-folder .folder{margin-left:26px}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-1 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 1)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-1{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-2 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 2)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-2{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-3 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 3)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-3{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-4 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 4)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-4{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row div[col-id=ag-Grid-AutoColumn]{padding-left:0}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell{display:flex;align-items:center}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .ag-group-value>span{display:inline-block;vertical-align:middle}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .initials{border-radius:50%;padding:4px;margin-right:8px;margin-left:20px;width:28px;height:28px;display:inline-block;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-row-group-leaf-indent{margin-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-selection-checkbox .ag-checkbox-input-wrapper.ag-indeterminate:before{text-align:center;content:\"-\";display:inline-block;position:absolute;top:0;left:0;right:0;bottom:0;line-height:.5;color:#fff}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell{line-height:33px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.dato-editable-cell{line-height:29px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.ag-cell-inline-editing{height:35px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell{line-height:42px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.dato-editable-cell{line-height:38px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.ag-cell-inline-editing{height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell{line-height:48px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.dato-editable-cell{line-height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.ag-cell-inline-editing{height:50px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell{line-height:57px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.dato-editable-cell{line-height:53px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.ag-cell-inline-editing{height:59px}dato-grid-v2 ag-grid-angular .ag-cell.checkbox-selection-cell{display:flex;padding-right:0}dato-grid-v2 .ag-menu .da-grid-icon svg{vertical-align:middle}dato-grid-v2 .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}dato-grid-v2 .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}dato-grid-v2 .group-contracted-icon,dato-grid-v2 .group-expanded-icon{width:7px}dato-grid-v2 .group-expanded-icon{transform:rotate(90deg)}dato-grid-v2 .dato-grid .ag-cell{border-top:0;border-bottom:0}dato-grid-v2 .ag-overlay-wrapper ng-component{display:flex}.ag-dnd-ghost{min-width:100px;border:none;display:flex;justify-content:flex-start;align-content:center;align-items:center;cursor:-webkit-grabbing;cursor:grabbing;z-index:10000000}.ag-dnd-ghost .da-grid-icon.column-move-hide svg{height:18px;width:18px}.ag-dnd-ghost .da-grid-icon.column-move svg,.ag-dnd-ghost .da-grid-icon.column-move-pin svg{height:16px;width:16px}"]
16344
16456
  }),
16345
16457
  __metadata("design:paramtypes", [DatoGridControllerComponent, core.ElementRef])
16346
16458
  ], DatoGridV2Component);
@@ -16539,7 +16651,8 @@
16539
16651
  }
16540
16652
  Object.defineProperty(DatoGridHeaderV2Component.prototype, "enableBackground", {
16541
16653
  get: function () {
16542
- return this.controller.gridOptions.enableBackground;
16654
+ var gridOptions = this.controller.gridOptions;
16655
+ return gridOptions ? gridOptions.enableBackground : false;
16543
16656
  },
16544
16657
  enumerable: true,
16545
16658
  configurable: true
@@ -17021,6 +17134,7 @@
17021
17134
  this.gridService = gridService;
17022
17135
  this.MAX_VISIBLE_ROW_ACTIONS = 5;
17023
17136
  this.MAX_VISIBLE_GRID_ACTIONS = 2;
17137
+ this.destroy$ = new rxjs.Subject();
17024
17138
  this._maxRowActions = this.MAX_VISIBLE_ROW_ACTIONS;
17025
17139
  this.displayExport = true;
17026
17140
  this.rowActions = { mainList: [], moreMenu: [] };
@@ -17058,21 +17172,24 @@
17058
17172
  });
17059
17173
  Object.defineProperty(DatoGridV2ToolbarComponent.prototype, "enableV2_1", {
17060
17174
  get: function () {
17061
- return this.gridController.gridOptions.enableV2_1;
17175
+ var gridOptions = this.gridController.gridOptions;
17176
+ return gridOptions ? gridOptions.enableV2_1 : false;
17062
17177
  },
17063
17178
  enumerable: true,
17064
17179
  configurable: true
17065
17180
  });
17066
17181
  Object.defineProperty(DatoGridV2ToolbarComponent.prototype, "enableSearch", {
17067
17182
  get: function () {
17068
- return this.gridController.gridOptions.enableSearch;
17183
+ var gridOptions = this.gridController.gridOptions;
17184
+ return gridOptions ? gridOptions.enableSearch : false;
17069
17185
  },
17070
17186
  enumerable: true,
17071
17187
  configurable: true
17072
17188
  });
17073
17189
  Object.defineProperty(DatoGridV2ToolbarComponent.prototype, "enableBackground", {
17074
17190
  get: function () {
17075
- return this.gridController.gridOptions.enableBackground;
17191
+ var gridOptions = this.gridController.gridOptions;
17192
+ return gridOptions ? gridOptions.enableBackground : false;
17076
17193
  },
17077
17194
  enumerable: true,
17078
17195
  configurable: true
@@ -17118,17 +17235,17 @@
17118
17235
  DatoGridV2ToolbarComponent.prototype.ngOnInit = function () {
17119
17236
  var _this = this;
17120
17237
  var dataChanges = this.gridController.gridQuery.waitForGrid(function () {
17121
- return rxjs.merge(_this.gridQuery.gridRef.cellValueChanged, _this.gridQuery.gridRef.rowDataUpdated, _this.gridQuery.rowActionVisibilityChanged$).pipe(operators.debounceTime(100), ngxTakeUntilDestroy.untilDestroyed(_this));
17238
+ return rxjs.merge(_this.gridQuery.gridRef.cellValueChanged, _this.gridQuery.gridRef.rowDataUpdated, _this.gridQuery.rowActionVisibilityChanged$).pipe(operators.debounceTime(100), operators.takeUntil(_this.destroy$));
17122
17239
  });
17123
17240
  var gridInit = this.gridQuery.gridReady$.pipe(operators.take(1));
17124
- gridInit.pipe(ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function () {
17241
+ gridInit.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
17125
17242
  _this.groupsAllowed = !_this.hideGrouping && !_this.gridQuery.getValue().serverSidePagination.enabled;
17126
17243
  });
17127
17244
  this.initGridActions();
17128
17245
  var selectedRowsChanged$ = this.gridQuery.selectedRowsChange$;
17129
17246
  var isSelectAllRowsChanged$ = this.gridQuery.selectIsSelectAllRowsEnabled();
17130
17247
  rxjs.merge(dataChanges, gridInit, selectedRowsChanged$, isSelectAllRowsChanged$)
17131
- .pipe(operators.filter(function () { return !!_this.api; }), ngxTakeUntilDestroy.untilDestroyed(this))
17248
+ .pipe(operators.filter(function () { return !!_this.api; }), operators.takeUntil(this.destroy$))
17132
17249
  .subscribe(function () {
17133
17250
  _this.resolveVisibleActions();
17134
17251
  _this.cdr.detectChanges();
@@ -17304,7 +17421,7 @@
17304
17421
  var waitForAnimation = this.hasGroups ? 0 : 200;
17305
17422
  /** When changing the tables grouping all the rows are automatically expanded, we need to update the icon state */
17306
17423
  var expandSubscription = this.gridQuery.gridRef.columnRowGroupChanged
17307
- .pipe(operators.take(1), ngxTakeUntilDestroy.untilDestroyed(this))
17424
+ .pipe(operators.take(1), operators.takeUntil(this.destroy$))
17308
17425
  .subscribe(function () {
17309
17426
  _this.rowGroupsCollapsed = false;
17310
17427
  _this.cdr.detectChanges();
@@ -17321,7 +17438,7 @@
17321
17438
  gridService: _this.gridService
17322
17439
  }
17323
17440
  })
17324
- .pipe(ngxTakeUntilDestroy.untilDestroyed(_this))
17441
+ .pipe(operators.takeUntil(_this.destroy$))
17325
17442
  .subscribe(function () {
17326
17443
  expandSubscription.unsubscribe();
17327
17444
  _this.openMenus.group = false;
@@ -17338,7 +17455,10 @@
17338
17455
  DatoGridV2ToolbarComponent.prototype.clearSelectedRows = function () {
17339
17456
  this.gridService.deselectAllRows();
17340
17457
  };
17341
- DatoGridV2ToolbarComponent.prototype.ngOnDestroy = function () { };
17458
+ DatoGridV2ToolbarComponent.prototype.ngOnDestroy = function () {
17459
+ this.destroy$.next();
17460
+ this.destroy$.complete();
17461
+ };
17342
17462
  DatoGridV2ToolbarComponent.prototype.getCollapseState = function (_a) {
17343
17463
  var node = _a.node, api = _a.api;
17344
17464
  var collapsed = true;
@@ -17357,7 +17477,7 @@
17357
17477
  /** Listen to adding or removing row groups from the columns and not the groups menu */
17358
17478
  this.gridQuery
17359
17479
  .waitForGrid(function () { return _this.gridQuery.gridRef.columnRowGroupChanged; })
17360
- .pipe(operators.filter(function () { return !_this.openMenus.group; }), ngxTakeUntilDestroy.untilDestroyed(this))
17480
+ .pipe(operators.filter(function () { return !_this.openMenus.group; }), operators.takeUntil(this.destroy$))
17361
17481
  .subscribe(function () {
17362
17482
  _this.rowGroupsCollapsed = false;
17363
17483
  _this.cdr.detectChanges();
@@ -17365,7 +17485,7 @@
17365
17485
  /** Listen to row collapse state to update the icon */
17366
17486
  this.gridQuery
17367
17487
  .waitForGrid(function () { return _this.gridQuery.gridRef.rowGroupOpened; })
17368
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
17488
+ .pipe(operators.takeUntil(this.destroy$))
17369
17489
  .subscribe(function (event) {
17370
17490
  var collapsed = _this.getCollapseState(event);
17371
17491
  if (collapsed !== _this.rowGroupsCollapsed) {
@@ -17377,7 +17497,7 @@
17377
17497
  DatoGridV2ToolbarComponent.prototype.subscribeRowsSelectionData = function () {
17378
17498
  var _this = this;
17379
17499
  this.gridQuery.rowsSelectionData$
17380
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
17500
+ .pipe(operators.takeUntil(this.destroy$))
17381
17501
  .subscribe(function (_a) {
17382
17502
  var totalRowsCount = _a.totalRowsCount, selectedRowsCount = _a.selectedRowsCount, selectedPageRowsCount = _a.selectedPageRowsCount, isAllPageRowsSelected = _a.isAllPageRowsSelected;
17383
17503
  _this.totalRowsCount = totalRowsCount;
@@ -25753,7 +25873,7 @@
25753
25873
  };
25754
25874
  }
25755
25875
 
25756
- window.coreVersion = '22.15.0';
25876
+ window.coreVersion = '22.15.3';
25757
25877
 
25758
25878
  exports.APP_TRANSLATE = APP_TRANSLATE;
25759
25879
  exports.AceService = AceService;