@datorama/core 22.14.1 → 22.15.2

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 (55) hide show
  1. package/bundle.scss +9987 -6561
  2. package/bundles/datorama-core.umd.js +242 -95
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +60 -60
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/lib/button/button.component.js +1 -1
  8. package/esm2015/lib/grid/dato-grid.js +4 -3
  9. package/esm2015/lib/grid/grid/grid.component.js +5 -9
  10. package/esm2015/lib/grid/grid-sort.utils.js +28 -0
  11. package/esm2015/lib/grid-v2/grid/grid-v2.component.js +10 -3
  12. package/esm2015/lib/grid-v2/grid/grid-v2.config.js +45 -14
  13. package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.component.js +4 -1
  14. package/esm2015/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +4 -1
  15. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +60 -26
  16. package/esm2015/lib/grid-v2/grid-header/grid-header.component.js +3 -2
  17. package/esm2015/lib/grid-v2/grid-on-hover/grid-on-hover.component.js +17 -14
  18. package/esm2015/lib/grid-v2/grid-store/grid.query.js +11 -6
  19. package/esm2015/lib/grid-v2/grid-store/grid.service.js +19 -5
  20. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +23 -17
  21. package/esm2015/lib/radio/radio.component.js +1 -1
  22. package/esm2015/lib/utils/string.js +9 -11
  23. package/esm2015/lib/version.js +2 -2
  24. package/esm5/lib/button/button.component.js +1 -1
  25. package/esm5/lib/grid/dato-grid.js +4 -3
  26. package/esm5/lib/grid/grid/grid.component.js +5 -9
  27. package/esm5/lib/grid/grid-sort.utils.js +35 -0
  28. package/esm5/lib/grid-v2/grid/grid-v2.component.js +14 -3
  29. package/esm5/lib/grid-v2/grid/grid-v2.config.js +47 -15
  30. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +4 -1
  31. package/esm5/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +4 -1
  32. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +64 -26
  33. package/esm5/lib/grid-v2/grid-header/grid-header.component.js +3 -2
  34. package/esm5/lib/grid-v2/grid-on-hover/grid-on-hover.component.js +17 -14
  35. package/esm5/lib/grid-v2/grid-store/grid.query.js +11 -6
  36. package/esm5/lib/grid-v2/grid-store/grid.service.js +19 -5
  37. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +23 -17
  38. package/esm5/lib/radio/radio.component.js +1 -1
  39. package/esm5/lib/utils/string.js +9 -11
  40. package/esm5/lib/version.js +2 -2
  41. package/fesm2015/datorama-core.js +226 -96
  42. package/fesm2015/datorama-core.js.map +1 -1
  43. package/fesm5/datorama-core.js +243 -97
  44. package/fesm5/datorama-core.js.map +1 -1
  45. package/lib/grid/grid-sort.utils.d.ts +15 -0
  46. package/lib/grid-v2/grid/grid-v2.component.d.ts +4 -0
  47. package/lib/grid-v2/grid/grid-v2.config.d.ts +1 -0
  48. package/lib/grid-v2/grid-column-header/grid-column-header.component.d.ts +2 -1
  49. package/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.d.ts +1 -0
  50. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +15 -0
  51. package/lib/grid-v2/grid-on-hover/grid-on-hover.component.d.ts +1 -3
  52. package/lib/grid-v2/grid-store/grid.service.d.ts +325 -281
  53. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +1 -0
  54. package/package.json +4 -1
  55. package/testing/src/grid/rows.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  import { __extends, __assign, __decorate, __metadata, __values, __param, __spread, __read, __rest } from 'tslib';
2
2
  import { forwardRef, NgZone, Renderer2, Input, ViewChild, ElementRef, Component, ChangeDetectionStrategy, NgModule, Attribute, HostBinding, ɵɵdefineInjectable, Injectable, isDevMode, InjectionToken, Inject, ChangeDetectorRef, HostListener, Directive, EventEmitter, Output, ɵɵinject, ApplicationRef, Injector, INJECTOR, TemplateRef, ViewContainerRef, Pipe, ViewEncapsulation, ComponentFactoryResolver, ContentChildren, QueryList, ViewChildren, Optional, ContentChild, SkipSelf, Self, SecurityContext } from '@angular/core';
3
- import { fromEvent, merge as merge$1, Subject, combineLatest, Observable, forkJoin, of, Subscription, BehaviorSubject, EMPTY, defer, interval, ReplaySubject, throwError, isObservable, timer, pipe } from 'rxjs';
3
+ import { fromEvent, merge as merge$1, Subject, combineLatest, Observable, forkJoin, of, Subscription, BehaviorSubject, ReplaySubject, EMPTY, defer, interval, throwError, isObservable, timer, pipe } from 'rxjs';
4
4
  import { NG_VALUE_ACCESSOR, NgControl, FormControl, ReactiveFormsModule, Validators, FormBuilder, ControlContainer, FormGroup, FormControlDirective, FormControlName } from '@angular/forms';
5
5
  import { untilDestroyed } from 'ngx-take-until-destroy';
6
6
  import { debounceTime, filter as filter$1, map as map$1, pluck, tap, switchMap, takeUntil, take, auditTime, distinctUntilChanged, throttleTime, first, mapTo, startWith, pairwise, skip, shareReplay, delay as delay$1, switchMapTo, repeat, concatMap, concatMapTo } from 'rxjs/operators';
@@ -1042,7 +1042,7 @@ var DatoButtonComponent = /** @class */ (function () {
1042
1042
  selector: 'dato-button',
1043
1043
  template: "<button class=\"d-flex d-flex-row align-center\" [disabled]=\"_disabled\" [class.lightning]=\"lightning\">\n <ng-content></ng-content>\n</button>\n",
1044
1044
  changeDetection: ChangeDetectionStrategy.OnPush,
1045
- styles: [":host{display:inline-block}:host button.lightning{border-radius:4px;height:35px;padding:0 16px;font-weight:500;font-family:'Salesforce Sans','Open Sans',sans-serif!important;font-size:13px;letter-spacing:0;line-height:17px;cursor:pointer}:host button{border:none;overflow:visible;text-transform:none;-webkit-appearance:button;-moz-appearance:button;appearance:button;cursor:pointer;border-radius:2px;height:35px;padding:0 10px;font-size:14px;font-weight:600;white-space:nowrap}:host[datoSize=lg] button{height:35px}:host[datoSize=sm] button{height:24px;font-size:12px}:host.disabled{pointer-events:none}:host button:focus{outline:0}:host[datoCircle] button{border-radius:50%}:host.dato-icon-button button,:host[datoCircle] button{padding:0;width:34px;height:34px}:host.dato-icon-button[datoSize=md] button,:host[datoCircle][datoSize=md] button{width:24px;height:24px}:host.dato-icon-button[datoSize=sm] button,:host[datoCircle][datoSize=sm] button{width:16px;height:16px}"]
1045
+ styles: [":host{display:inline-block}:host button.lightning{border-radius:4px;height:35px;padding:0 16px;font-weight:500;font-family:\"Salesforce Sans\",\"Open Sans\",sans-serif!important;font-size:13px;letter-spacing:0;line-height:17px;cursor:pointer}:host button{border:none;overflow:visible;text-transform:none;-webkit-appearance:button;-moz-appearance:button;appearance:button;cursor:pointer;border-radius:2px;height:35px;padding:0 10px;font-size:14px;font-weight:600;white-space:nowrap}:host[datoSize=lg] button{height:35px}:host[datoSize=sm] button{height:24px;font-size:12px}:host.disabled{pointer-events:none}:host button:focus{outline:0}:host[datoCircle] button{border-radius:50%}:host.dato-icon-button button,:host[datoCircle] button{padding:0;width:34px;height:34px}:host.dato-icon-button[datoSize=md] button,:host[datoCircle][datoSize=md] button{width:24px;height:24px}:host.dato-icon-button[datoSize=sm] button,:host[datoCircle][datoSize=sm] button{width:16px;height:16px}"]
1046
1046
  }),
1047
1047
  __param(1, Attribute('width')),
1048
1048
  __param(2, Attribute('height')),
@@ -1672,15 +1672,12 @@ function capitalize(str) {
1672
1672
  * @returns {string}
1673
1673
  */
1674
1674
  function camelCase(str) {
1675
- var camelCase = function (str) {
1676
- var string = str
1677
- .toLowerCase()
1678
- .replace(/[^A-Za-z0-9]/g, ' ')
1679
- .split(' ')
1680
- .reduce(function (result, word) { return result + capitalize(word.toLowerCase()); });
1681
- return string.charAt(0).toLowerCase() + string.slice(1);
1682
- };
1683
- return camelCase(str);
1675
+ var string = str
1676
+ .toLowerCase()
1677
+ .replace(/[^A-Za-z0-9]/g, ' ')
1678
+ .split(' ')
1679
+ .reduce(function (result, word) { return result + capitalize(word.toLowerCase()); });
1680
+ return string.charAt(0).toLowerCase() + string.slice(1);
1684
1681
  }
1685
1682
  /**
1686
1683
  *
@@ -1698,7 +1695,8 @@ function kebabCase(str) {
1698
1695
  * @returns {string} - The GUID
1699
1696
  */
1700
1697
  function createGUID() {
1701
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1698
+ var template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
1699
+ return template.replace(/[xy]/g, function (c) {
1702
1700
  var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
1703
1701
  return v.toString(16);
1704
1702
  });
@@ -5697,10 +5695,10 @@ var DatoGridComponent = /** @class */ (function (_super) {
5697
5695
  _this.onChange(selectedRows);
5698
5696
  },
5699
5697
  rowSelection: 'multiple',
5700
- rowDeselection: true,
5698
+ // rowDeselection removed: true by default in AG Grid 27 (suppress with suppressRowDeselection).
5701
5699
  unSortIcon: true,
5702
- animateRows: true,
5703
- rememberGroupStateWhenNewData: true
5700
+ animateRows: true
5701
+ // rememberGroupStateWhenNewData removed: no-op since AG Grid 24 (transaction updates keep group state).
5704
5702
  };
5705
5703
  _this.infinitePagination = false;
5706
5704
  _this.isRowsCollapsed = true;
@@ -5725,10 +5723,6 @@ var DatoGridComponent = /** @class */ (function (_super) {
5725
5723
  classFunc(this.hostElement, 'grid-pagination');
5726
5724
  if (this.gridOptions.rowModelType === 'infinite' || this.gridOptions.rowModelType === 'serverSide') {
5727
5725
  this.infinitePagination = true;
5728
- var defaultColDef = this.gridOptions.defaultColDef;
5729
- if (defaultColDef.filter) {
5730
- defaultColDef.filterParams = { newRowsAction: 'keep' };
5731
- }
5732
5726
  }
5733
5727
  },
5734
5728
  enumerable: true,
@@ -5867,7 +5861,7 @@ var DatoGridComponent = /** @class */ (function (_super) {
5867
5861
  changeDetection: ChangeDetectionStrategy.OnPush,
5868
5862
  encapsulation: ViewEncapsulation.None,
5869
5863
  providers: [valueAccessor$2],
5870
- styles: ["@font-face{font-family:agGridClassic;src:url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\"),url(\"data:application/x-font-ttf;charset=utf-8;base64,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AAAAdAAAADoAAAB1AAAAdQAAAEkAAAB2AAAAdgAAAE4AAAB3AAAAdwAAAD4AAAB4AAAAeAAAAEUAAAB5AAAAeQAAAEsAAAB6AAAAegAAAE0AAPEBAADxAQAAAAEAAPECAADxAgAAAAIAAPEDAADxAwAAAAMAAPEEAADxBAAAAAQAAPEFAADxBQAAAAUAAPEGAADxBgAAAAYAAPEHAADxBwAAAAcAAPEIAADxCAAAAAgAAPEJAADxCQAAAAkAAPEKAADxCgAAAAoAAPELAADxCwAAAAsAAPEMAADxDAAAAAwAAPENAADxDQAAAA0AAPEOAADxDgAAAA4AAPEPAADxDwAAAA8AAPEQAADxEAAAABAAAPERAADxEQAAABEAAPESAADxEgAAABIAAPETAADxEwAAABMAAPEUAADxFAAAABUAAPEVAADxFQAAABYAAPEWAADxFgAAABcAAPEXAADxFwAAABgAAPEYAADxGAAAABkAAPEZAADxGQAAABoAAPEaAADxGgAAABsAAPEbAADxGwAAABwAAPEcAADxHAAAAB0AAPEdAADxHQAAAB4AAPEeAADxHgAAAB8AAPEfAADxHwAAACAAAPEgAADxIAAAACEAAPEhAADxIQAAACIAAPEiAADxIgAAACMAAPEjAADxIwAAACQAAPEkAADxJAAAACUAAPElAADxJQAAACYAAPEmAADxJgAAACcAAPEnAADxJwAAACgAAPEoAADxKAAAACkAAPEpAADxKQAAACoAAPEqAADxKgAAACsAAPErAADxKwAAACwAAPEsAADxLAAAAC0AAPEtAADxLQAAAC4AAPEuAADxLgAAAC8AAPEvAADxLwAAADAAAPEwAADxMAAAADEAAPExAADxMQAAADIAAPEyAADxMgAAADMAAPEzAADxMwAAADEAAPE0AADxNAAAACIAAPE1AADxNQAAAC8AAPE2AADxNgAAADQAAAAAABgAUgBqAIQA0AEUAVQBjAG+AdQCAAJIAmwCjgMUA2YDfgO+BCQEigTmBPwFFgViBaYF+AYQBigG0AcCB1QHcAfCB9AH4ggECFoIeAiUCPYJCgkcCWIJvAnUCf4KDAoaCigKNgpKCtQLXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteAAEAAAAAAzYDawAJ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AHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVAAC2FnZ3JlZ2F0aW9uBmFycm93cwNhc2MGY2FuY2VsBWNoYXJ0EGNoZWNrYm94LWNoZWNrZWQWY2hlY2tib3gtaW5kZXRlcm1pbmF0ZRJjaGVja2JveC11bmNoZWNrZWQMY29sb3ItcGlja2VyBmNvbHVtbgdjb2x1bW5zCmNvbnRyYWN0ZWQEY29weQVjcm9zcwNjdXQEZGF0YQRkZXNjCGV4cGFuZGVkCWV5ZS1zbGFzaAtleWUtc2xhc2gtMQNleWUGZmlsdGVyBWZpcnN0BGdyaXAFZ3JvdXANaW5kZXRlcm1pbmF0ZQRsYXN0BGxlZnQGbGlua2VkB2xvYWRpbmcIbWF4aW1pemUEbWVudQhtaW5pbWl6ZQVtaW51cwRuZXh0BG5vbmULbm90LWFsbG93ZWQFcGFzdGUDcGluBXBpdm90BHBsdXMIcHJldmlvdXMQcmFkaW8tYnV0dG9uLW9mZg9yYWRpby1idXR0b24tb24FcmlnaHQEc2F2ZQpzbWFsbC1kb3duCnNtYWxsLWxlZnQLc21hbGwtcmlnaHQIc21hbGwtdXAEdGljawh1bmxpbmtlZAp1bmxpbmtlZC0xAWEBZwFyAWUBdAFpAW8BbgF3AXMBYwFsAWgBawFiAXgBLQFkAW0BdQFwAXkBZgF6AXYAAAA=\") format(\"truetype\");font-weight:400;font-style:normal}dato-grid{display:block;width:100%;height:100%;overflow:hidden}dato-grid.grid-pagination{padding-bottom:0;display:flex;flex-direction:column}dato-grid.grid-pagination ag-grid-angular{margin-bottom:7px;height:calc(100% - 32px)}.ag-dato-core{width:100%;height:100%}.ag-dato-core .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle}.ag-dato-core .ag-menu .da-grid-icon svg{vertical-align:middle}.ag-dato-core .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}.ag-dato-core .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}.ag-dato-core .sort-icon svg{width:14px;height:16px}.ag-dato-core .filter-icon svg{width:13px}.ag-dato-core .menu-icon svg{width:4px;height:14px}.ag-dato-core .menu-auto-size-icon svg,.ag-dato-core .menu-group-icon,.ag-dato-core .menu-pin-icon,.ag-dato-core .menu-un-group-icon{width:16px;height:16px}.ag-dato-core .menu-check-icon svg{width:15px;height:18px}.ag-dato-core .group-contracted-icon,.ag-dato-core .group-expanded-icon{width:7px}.ag-dato-core .group-expanded-icon{transform:rotate(90deg)}"]
5864
+ styles: ["dato-grid{display:block;width:100%;height:100%;overflow:hidden}dato-grid.grid-pagination{padding-bottom:0;display:flex;flex-direction:column}dato-grid.grid-pagination ag-grid-angular{margin-bottom:7px;height:calc(100% - 32px)}.ag-dato-core{width:100%;height:100%}.ag-dato-core .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle}.ag-dato-core .ag-menu .da-grid-icon svg{vertical-align:middle}.ag-dato-core .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}.ag-dato-core .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}.ag-dato-core .sort-icon svg{width:14px;height:16px}.ag-dato-core .filter-icon svg{width:13px}.ag-dato-core .menu-icon svg{width:4px;height:14px}.ag-dato-core .menu-auto-size-icon svg,.ag-dato-core .menu-group-icon,.ag-dato-core .menu-pin-icon,.ag-dato-core .menu-un-group-icon{width:16px;height:16px}.ag-dato-core .menu-check-icon svg{width:15px;height:18px}.ag-dato-core .group-contracted-icon,.ag-dato-core .group-expanded-icon{width:7px}.ag-dato-core .group-expanded-icon{transform:rotate(90deg)}"]
5871
5865
  }),
5872
5866
  __metadata("design:paramtypes", [DatoGridHelper,
5873
5867
  ElementRef,
@@ -11157,6 +11151,41 @@ function getGridModel(gridName) {
11157
11151
  };
11158
11152
  }
11159
11153
 
11154
+ /**
11155
+ * Returns the active sort model using the Column State API introduced as the
11156
+ * replacement for GridApi#getSortModel in AG Grid 24 and required in AG Grid 27.
11157
+ */
11158
+ function getSortModel(columnApi) {
11159
+ var sortIndexes = {};
11160
+ // AG Grid 27: getColumnState() returns undefined before the grid's columns are initialized.
11161
+ // getSortModel() is reached via getCurrentGridSettings()/onFilterSortChanged() on resize/data
11162
+ // events that can fire before that point, so guard against undefined to avoid
11163
+ // "Cannot read properties of undefined (reading 'filter')".
11164
+ var columnState = columnApi.getColumnState() || [];
11165
+ var sortedColumns = columnState.filter(function (state) { return state.sort != null; });
11166
+ sortedColumns.forEach(function (columnState) {
11167
+ sortIndexes[columnState.colId] = columnState.sortIndex;
11168
+ });
11169
+ return sortedColumns
11170
+ .map(function (_a) {
11171
+ var colId = _a.colId, sort = _a.sort;
11172
+ return ({ colId: colId, sort: sort });
11173
+ })
11174
+ .sort(function (left, right) { return sortIndexes[left.colId] - sortIndexes[right.colId]; });
11175
+ }
11176
+ /**
11177
+ * Applies the complete sort model and clears sorting from columns omitted from
11178
+ * the model, matching the behavior of the removed GridApi#setSortModel method.
11179
+ */
11180
+ function applySortModel(columnApi, sortModel) {
11181
+ if (sortModel === void 0) { sortModel = []; }
11182
+ var state = sortModel.map(function (_a, sortIndex) {
11183
+ var colId = _a.colId, sort = _a.sort;
11184
+ return ({ colId: colId, sort: sort, sortIndex: sortIndex });
11185
+ });
11186
+ return columnApi.applyColumnState({ state: state, defaultState: { sort: null } });
11187
+ }
11188
+
11160
11189
  /**
11161
11190
  * @license
11162
11191
  * Copyright Datorama. All Rights Reserved.
@@ -11224,7 +11253,7 @@ var DatoGrid = /** @class */ (function (_super) {
11224
11253
  */
11225
11254
  DatoGrid.prototype.onFilterSortChanged = function () {
11226
11255
  var filter = this.gridApi.getFilterModel();
11227
- var sort = this.gridApi.getSortModel();
11256
+ var sort = getSortModel(this.columnApi);
11228
11257
  // save grid's configuration
11229
11258
  setGridModel(this.gridName, {
11230
11259
  filter: filter,
@@ -11237,7 +11266,7 @@ var DatoGrid = /** @class */ (function (_super) {
11237
11266
  DatoGrid.prototype.setSavedModel = function () {
11238
11267
  var _a = getGridModel(this.gridName), sort = _a.sort, filter = _a.filter;
11239
11268
  if (sort) {
11240
- this.gridApi.setSortModel(sort);
11269
+ applySortModel(this.columnApi, sort);
11241
11270
  }
11242
11271
  if (filter) {
11243
11272
  this.gridApi.setFilterModel(filter);
@@ -11428,9 +11457,13 @@ var GridQuery = /** @class */ (function (_super) {
11428
11457
  GridQuery.prototype.getCurrentGridSettings = function () {
11429
11458
  var toColId = function (column) { return column.getColId(); };
11430
11459
  var columns = this.api.columns;
11431
- var groupedColumns = columns.getRowGroupColumns();
11432
- var columnsOrder = columns.getAllColumns();
11433
- var allGridColumns = columns.getAllGridColumns();
11460
+ // AG Grid 27: getAllColumns() returns Column[] | null (and the grouped/grid column getters can
11461
+ // likewise be empty) before the grid's columns are initialized. getCurrentGridSettings() is
11462
+ // reached via fitGrid -> updateSettings on window resize, which can fire before that point, so
11463
+ // guard against null to avoid "Cannot read properties of undefined (reading 'filter')".
11464
+ var groupedColumns = columns.getRowGroupColumns() || [];
11465
+ var columnsOrder = columns.getAllColumns() || [];
11466
+ var allGridColumns = columns.getAllGridColumns() || [];
11434
11467
  var hiddenColumns = columnsOrder
11435
11468
  .filter(function (column) { return !column.isVisible() && !groupedColumns.includes(column); })
11436
11469
  .map(toColId);
@@ -11441,7 +11474,7 @@ var GridQuery = /** @class */ (function (_super) {
11441
11474
  hiddenColumns: hiddenColumns,
11442
11475
  groupedColumns: groupedColumns.map(toColId),
11443
11476
  filter: this.getFilter(),
11444
- pinnedColumns: columns.getDisplayedLeftColumns().map(toColId),
11477
+ pinnedColumns: (columns.getDisplayedLeftColumns() || []).map(toColId),
11445
11478
  columnsOrder: allGridColumns.map(toColId),
11446
11479
  columnsSizes: null,
11447
11480
  searchTerm: null
@@ -11452,7 +11485,7 @@ var GridQuery = /** @class */ (function (_super) {
11452
11485
  return settings;
11453
11486
  };
11454
11487
  GridQuery.prototype.getSortModel = function () {
11455
- return this.api.grid.getSortModel().pop();
11488
+ return getSortModel(this.api.columns).pop();
11456
11489
  };
11457
11490
  GridQuery.prototype.getSavedSort = function () {
11458
11491
  return this.getValue().settings.sort || this.getSortModel();
@@ -13416,6 +13449,9 @@ var DatoGridColumnHeaderComponent = /** @class */ (function () {
13416
13449
  this.filtersMenuOpen = false;
13417
13450
  }
13418
13451
  DatoGridColumnHeaderComponent.prototype.afterGuiAttached = function (params) { };
13452
+ DatoGridColumnHeaderComponent.prototype.refresh = function (_params) {
13453
+ return false;
13454
+ };
13419
13455
  DatoGridColumnHeaderComponent.prototype.agInit = function (params) {
13420
13456
  var _this = this;
13421
13457
  this.params = params;
@@ -13550,13 +13586,12 @@ function getTime$1(val) {
13550
13586
  }
13551
13587
  var ROOT_NODE_ID = 'ROOT_NODE_ID';
13552
13588
  var ɵ0$2 = function (item) { return item[gridTreeFilePathKey]; };
13553
- var defaultTreeOptions = {
13589
+ var defaultTreeOptionsBase = {
13554
13590
  getDataPath: ɵ0$2,
13555
13591
  components: {
13556
13592
  fileCellRenderer: getGridTreeCellRenderer()
13557
13593
  },
13558
13594
  onRowDragMove: onRowDragMove,
13559
- onRowDragEnd: onRowDragEnd,
13560
13595
  onRowSelected: onRowSelected,
13561
13596
  onRowGroupOpened: rowGroupOpened,
13562
13597
  suppressRowClickSelection: true,
@@ -13565,6 +13600,11 @@ var defaultTreeOptions = {
13565
13600
  rowDrag: '<dato-icon icon="drag" class="dato-icon-font-drag primary-400-color"></dato-icon>'
13566
13601
  }
13567
13602
  };
13603
+ function createDefaultTreeOptions(maxDepth) {
13604
+ if (maxDepth === void 0) { maxDepth = -1; }
13605
+ return __assign(__assign({}, defaultTreeOptionsBase), { onRowDragEnd: function (event) { return onRowDragEnd(event, maxDepth); } });
13606
+ }
13607
+ var defaultTreeOptions = createDefaultTreeOptions();
13568
13608
  var ɵ1$2 = function (a, b) { return (a || '').toLowerCase().localeCompare((b || '').toLowerCase()); };
13569
13609
  var stringColDef = {
13570
13610
  filter: DatoGridFilterTypes.String,
@@ -13580,7 +13620,27 @@ var defaultGridOptions = __assign({
13580
13620
  comparator: function (a, b) { return getTime$1(a) - getTime$1(b); }
13581
13621
  },
13582
13622
  _a$3[DatoGridColumnTypes.Number] = {
13583
- filter: DatoGridFilterTypes.Number
13623
+ filter: DatoGridFilterTypes.Number,
13624
+ // AG Grid resolves a column's sort comparator only from its merged colDef.comparator.
13625
+ // Number columns had none, so they fell back to AG Grid's default comparator, which sorts
13626
+ // string-typed values lexicographically ("10" before "2"). Provide an explicit numeric
13627
+ // comparator. Map null/empty/non-numeric to -Infinity so we never return NaN (AG Grid's
13628
+ // sorter skips a NaN result). Ascending-sense only — AG Grid flips the sign for descending.
13629
+ comparator: function (a, b) {
13630
+ var toNum = function (v) {
13631
+ var n = v == null || v === '' ? NaN : Number(v);
13632
+ return isNaN(n) ? -Infinity : n;
13633
+ };
13634
+ var na = toNum(a);
13635
+ var nb = toNum(b);
13636
+ // Compare relationally (not by subtraction): two missing/non-numeric values both map to
13637
+ // -Infinity, and -Infinity - (-Infinity) === NaN, which AG Grid's sorter skips. Returning
13638
+ // 0 / -1 / 1 avoids NaN entirely. Ascending sense — AG Grid flips the sign for descending.
13639
+ if (na === nb) {
13640
+ return 0;
13641
+ }
13642
+ return na < nb ? -1 : 1;
13643
+ }
13584
13644
  },
13585
13645
  _a$3[DatoGridColumnTypes.String] = stringColDef,
13586
13646
  _a$3[DatoGridColumnTypes.Status] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridStatusCellComponent' }),
@@ -13588,14 +13648,20 @@ var defaultGridOptions = __assign({
13588
13648
  _a$3[DatoGridColumnTypes.ItemsCount] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridItemsCountCellComponent' }),
13589
13649
  _a$3[DatoGridColumnTypes.Initials] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridInitialsCellComponent' }),
13590
13650
  _a$3[DatoGridColumnTypes.Avatar] = __assign(__assign({}, stringColDef), { cellRenderer: 'DatoGridAvatarCellComponent' }),
13591
- _a$3), multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, paginateChildRows: true, deltaColumnMode: true, loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
13651
+ _a$3), multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, paginateChildRows: true,
13652
+ // deltaColumnMode removed: deprecated in AG Grid 27, delta column updates are the default now.
13653
+ loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
13592
13654
  minWidth: GridMinWidths.Default,
13593
13655
  sortable: true,
13594
13656
  resizable: true,
13595
13657
  type: DatoGridColumnTypes.String,
13596
13658
  menuTabs: ['filterMenuTab'],
13597
13659
  headerComponentFramework: DatoGridColumnHeaderComponent
13598
- }, suppressCellSelection: true, suppressPropertyNamesCheck: true, rowHeight: 35, headerHeight: 30, rowSelection: GridRowSelectionType.MULTIPLE, rowDeselection: true, unSortIcon: true, animateRows: true, rememberGroupStateWhenNewData: true, groupMultiAutoColumn: true, groupDefaultExpanded: -1, usePivotGridStyle: false, disabledHTMLRenderingFields: [] }, (isTestEnv() ? { suppressColumnVirtualisation: true, rowBuffer: 99999 } : {}));
13660
+ }, suppressCellFocus: true, suppressPropertyNamesCheck: true, rowHeight: 35, headerHeight: 30, rowSelection: GridRowSelectionType.MULTIPLE,
13661
+ // rowDeselection removed: true by default in AG Grid 27 (suppress with suppressRowDeselection).
13662
+ unSortIcon: true, animateRows: true,
13663
+ // rememberGroupStateWhenNewData removed: no-op since AG Grid 24 (transaction updates keep group state).
13664
+ groupDisplayType: 'multipleColumns', groupDefaultExpanded: -1, usePivotGridStyle: false, disabledHTMLRenderingFields: [] }, (isTestEnv() ? { suppressColumnVirtualisation: true, rowBuffer: 99999 } : {}));
13599
13665
  var DEFAULT_GRID_SEARCH_DEBOUNCE_TIME = {
13600
13666
  CLIENT: 200,
13601
13667
  SERVER: 250
@@ -13684,8 +13750,11 @@ function getCellByRowID(rowID) {
13684
13750
  * relevant css style to it.
13685
13751
  * @param overNode
13686
13752
  */
13753
+ function getRootNode(api) {
13754
+ return api.getModel().getRootNode();
13755
+ }
13687
13756
  function onRowDragMove(_a) {
13688
- var overNode = _a.overNode, node = _a.node;
13757
+ var overNode = _a.overNode, node = _a.node, api = _a.api;
13689
13758
  var folderToDropInto;
13690
13759
  if (overNode) {
13691
13760
  // folder to drop into is where we are going to move the file/folder to
@@ -13696,7 +13765,7 @@ function onRowDragMove(_a) {
13696
13765
  overNode.parent;
13697
13766
  }
13698
13767
  else {
13699
- folderToDropInto = node.rowModel.rootNode;
13768
+ folderToDropInto = getRootNode(api);
13700
13769
  }
13701
13770
  if (potentialParent) {
13702
13771
  if (potentialParent.id === folderToDropInto.id) {
@@ -13717,8 +13786,8 @@ function onRowDragMove(_a) {
13717
13786
  folderToDropIntoElement && folderToDropIntoElement.classList.add(agRowHoverClassName);
13718
13787
  }
13719
13788
  }
13720
- function onRowDragEnd(_a) {
13721
- var overNode = _a.overNode, node = _a.node;
13789
+ function onRowDragEnd(_a, maxDepth) {
13790
+ var overNode = _a.overNode, node = _a.node, api = _a.api;
13722
13791
  var nodeParent;
13723
13792
  var folderToDropInto;
13724
13793
  if (overNode) {
@@ -13731,17 +13800,16 @@ function onRowDragEnd(_a) {
13731
13800
  overNode.parent;
13732
13801
  }
13733
13802
  else {
13734
- nodeParent = node.rowModel.rootNode;
13735
- folderToDropInto = node.rowModel.rootNode;
13803
+ nodeParent = getRootNode(api);
13804
+ folderToDropInto = getRootNode(api);
13736
13805
  }
13737
13806
  // the data we want to move
13738
13807
  var movingData = node.data;
13739
- var treeMaxDepth = node.gridOptionsWrapper.gridOptions.maxDepth || -1;
13740
13808
  // Disable nested drag when tree depth is above the limit
13741
13809
  if (movingData.isFolder &&
13742
- treeMaxDepth !== -1 &&
13810
+ maxDepth !== -1 &&
13743
13811
  nodeParent.id !== ROOT_NODE_ID &&
13744
- overNode.data.agGridFilePath.length > treeMaxDepth) {
13812
+ overNode.data.agGridFilePath.length > maxDepth) {
13745
13813
  return;
13746
13814
  }
13747
13815
  // take new parent path from parent, if data is missing, means it's the root node,
@@ -13952,6 +14020,9 @@ var DatoGridMultiSelectColumnHeaderComponent = /** @class */ (function () {
13952
14020
  _this.toggleMultiSelection(isSelectAll);
13953
14021
  });
13954
14022
  };
14023
+ DatoGridMultiSelectColumnHeaderComponent.prototype.refresh = function (_params) {
14024
+ return false;
14025
+ };
13955
14026
  DatoGridMultiSelectColumnHeaderComponent.prototype.subscribeRowsSelectionData = function () {
13956
14027
  var _this = this;
13957
14028
  this.gridQuery.gridReady$
@@ -14286,8 +14357,21 @@ var GridService = /** @class */ (function () {
14286
14357
  gridOptions.enableSearchHighlight) {
14287
14358
  normalized.cellRenderer = function (params) {
14288
14359
  var allowHTML = isHtmlAllowedForCol(gridOptions, params.colDef);
14289
- var isEditable = (isFunction(normalized.editable) && normalized.editable(params)) ||
14290
- (!isFunction(normalized.editable) && normalized.editable);
14360
+ var column = params.column, colDef = params.colDef;
14361
+ var editableParams = column && colDef
14362
+ ? {
14363
+ api: params.api,
14364
+ columnApi: params.columnApi,
14365
+ context: params.context,
14366
+ node: params.node,
14367
+ data: params.data,
14368
+ column: column,
14369
+ colDef: colDef
14370
+ }
14371
+ : null;
14372
+ var isEditable = isFunction(normalized.editable)
14373
+ ? editableParams && normalized.editable(editableParams)
14374
+ : normalized.editable;
14291
14375
  return isEditable
14292
14376
  ? editableCellRendererWithSearchHighlight(params, _this.gridQuery.getSearchTerm(), allowHTML)
14293
14377
  : searchHighlightCellRenderer(params, _this.gridQuery.getSearchTerm(), allowHTML);
@@ -14489,7 +14573,7 @@ var GridService = /** @class */ (function () {
14489
14573
  }
14490
14574
  }
14491
14575
  this.updateSettings({ sort: sortToApply });
14492
- this.api.grid.setSortModel([sortToApply]);
14576
+ applySortModel(this.api.columns, [sortToApply]);
14493
14577
  if (this.gridRef.gridOptions.usePivotGridStyle) {
14494
14578
  this.api.grid.redrawRows();
14495
14579
  }
@@ -14730,7 +14814,7 @@ var GridService = /** @class */ (function () {
14730
14814
  columns.setColumnsVisible(removeGrouped, true);
14731
14815
  /* Apply sort */
14732
14816
  var gridSort = sort || this.initialSettings.sort;
14733
- grid.setSortModel(gridSort ? [gridSort] : null);
14817
+ applySortModel(columns, gridSort ? [gridSort] : []);
14734
14818
  /* Align grid */
14735
14819
  if (gridAlignment === 2 /* CUSTOM */) {
14736
14820
  /* Set column sizes */
@@ -15276,10 +15360,9 @@ var pallete = {
15276
15360
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
15277
15361
  */
15278
15362
  var DatoGridOnHoverComponent = /** @class */ (function () {
15279
- function DatoGridOnHoverComponent(host, gridService, gridQuery, cdr) {
15363
+ function DatoGridOnHoverComponent(host, gridService, cdr) {
15280
15364
  this.host = host;
15281
15365
  this.gridService = gridService;
15282
- this.gridQuery = gridQuery;
15283
15366
  this.cdr = cdr;
15284
15367
  this.displayedActions = [];
15285
15368
  this.setBgColorBound = this.setBackgroundColor.bind(this);
@@ -15314,13 +15397,22 @@ var DatoGridOnHoverComponent = /** @class */ (function () {
15314
15397
  });
15315
15398
  };
15316
15399
  DatoGridOnHoverComponent.prototype.openActionMenu = function (event) {
15317
- /* Hack to open the ag grid context menu */
15318
- /* https://github.com/ag-grid/ag-grid-enterprise/issues/72 */
15319
- var _a = this.params, rowIndex = _a.rowIndex, node = _a.node, column = _a.column, value = _a.value;
15320
- var cell = this.gridQuery.api.grid.rowRenderer.rowCompsByIndex[rowIndex].getRenderedCellForColumn(column);
15321
15400
  /* The actions menu is different from the regular menu, we use the grid's context to signal that this is the actions menu*/
15322
15401
  this.gridService.updateGridContext({ contextMenu: { fromOnHover: true } });
15323
- cell.beans.contextMenuFactory.showMenu(node, column, value, event);
15402
+ var target = this.params.event && this.params.event.target;
15403
+ if (!(target instanceof Element)) {
15404
+ return;
15405
+ }
15406
+ var cell = target.closest('.ag-cell');
15407
+ if (!cell) {
15408
+ return;
15409
+ }
15410
+ cell.dispatchEvent(new MouseEvent('contextmenu', {
15411
+ bubbles: true,
15412
+ cancelable: true,
15413
+ clientX: event.clientX,
15414
+ clientY: event.clientY
15415
+ }));
15324
15416
  };
15325
15417
  DatoGridOnHoverComponent.prototype.updateScrollPos = function (left) {
15326
15418
  var cellBorder = 1;
@@ -15374,7 +15466,6 @@ var DatoGridOnHoverComponent = /** @class */ (function () {
15374
15466
  DatoGridOnHoverComponent.ctorParameters = function () { return [
15375
15467
  { type: ElementRef },
15376
15468
  { type: GridService },
15377
- { type: GridQuery },
15378
15469
  { type: ChangeDetectorRef }
15379
15470
  ]; };
15380
15471
  DatoGridOnHoverComponent = __decorate([
@@ -15384,10 +15475,7 @@ var DatoGridOnHoverComponent = /** @class */ (function () {
15384
15475
  changeDetection: ChangeDetectionStrategy.OnPush,
15385
15476
  styles: [":host{display:flex;justify-content:flex-end;align-content:center;align-items:center;position:absolute;max-width:150px;transition:opacity .3s ease-in-out;opacity:0}:host .gradient{min-width:20px}"]
15386
15477
  }),
15387
- __metadata("design:paramtypes", [ElementRef,
15388
- GridService,
15389
- GridQuery,
15390
- ChangeDetectorRef])
15478
+ __metadata("design:paramtypes", [ElementRef, GridService, ChangeDetectorRef])
15391
15479
  ], DatoGridOnHoverComponent);
15392
15480
  return DatoGridOnHoverComponent;
15393
15481
  }());
@@ -15543,18 +15631,30 @@ var DatoGridControllerComponent = /** @class */ (function () {
15543
15631
  this.gridActions = [];
15544
15632
  this.gridReady$ = this.gridQuery.gridReady$;
15545
15633
  this.contentInit = new Subject();
15634
+ // ngx-take-until-destroy patches ngOnDestroy on the instance, which Ivy never calls (it uses the
15635
+ // prototype hook), so listeners outlived the grid and hit the destroyed AG Grid API.
15636
+ this.destroy$ = new Subject();
15637
+ this.hasGridOptions = new BehaviorSubject(false);
15638
+ this.agGridReady = new ReplaySubject(1);
15546
15639
  this.gridElements = {
15547
15640
  centerViewport: null,
15548
15641
  centerContainer: null,
15549
15642
  bodyViewport: null
15550
15643
  };
15551
15644
  this.treeGridClass = 'tree';
15645
+ this.hasGridOptions$ = this.hasGridOptions.asObservable();
15552
15646
  }
15553
15647
  Object.defineProperty(DatoGridControllerComponent.prototype, "gridOptions", {
15554
15648
  get: function () {
15555
15649
  return this._gridOptions;
15556
15650
  },
15557
15651
  set: function (gridOptions) {
15652
+ // The [gridOptions] binding can resolve to undefined during the host's initial change-detection
15653
+ // pass (before the consumer computes its options). Ignore it instead of throwing
15654
+ // "Cannot read properties of undefined" from initGridOptions() and aborting the view render.
15655
+ if (!gridOptions) {
15656
+ return;
15657
+ }
15558
15658
  this._gridOptions = this.gridService.initGridOptions(gridOptions);
15559
15659
  this.gridService.treeData = gridOptions.treeData;
15560
15660
  this.gridService.isPivotMode = gridOptions.pivotMode;
@@ -15566,16 +15666,37 @@ var DatoGridControllerComponent = /** @class */ (function () {
15566
15666
  this.agGridEl.classList.add(this.treeGridClass);
15567
15667
  }
15568
15668
  }
15669
+ !this.hasGridOptions.value && this.hasGridOptions.next(true);
15670
+ },
15671
+ enumerable: true,
15672
+ configurable: true
15673
+ });
15674
+ Object.defineProperty(DatoGridControllerComponent.prototype, "agGridOptions", {
15675
+ /* @internal */
15676
+ get: function () {
15677
+ if (!this._agGridOptions && this._gridOptions) {
15678
+ this.gridOptions = this.normalizeOptions();
15679
+ this._agGridOptions = this.gridOptions;
15680
+ }
15681
+ return this._agGridOptions;
15569
15682
  },
15570
15683
  enumerable: true,
15571
15684
  configurable: true
15572
15685
  });
15573
15686
  DatoGridControllerComponent.prototype.ngOnDestroy = function () {
15687
+ this.destroy$.next();
15688
+ this.destroy$.complete();
15574
15689
  this.contentInit.complete();
15690
+ this.hasGridOptions.complete();
15691
+ this.agGridReady.complete();
15575
15692
  this.clearTooltip();
15576
15693
  this.rowHoverComponent && this.rowHoverComponent.destroy();
15577
15694
  this.rowHoverComponent = null;
15578
15695
  };
15696
+ /* @internal */
15697
+ DatoGridControllerComponent.prototype.onAgGridReady = function (event) {
15698
+ this.agGridReady.next(event);
15699
+ };
15579
15700
  DatoGridControllerComponent.prototype.initializeGrid = function (agGrid, agGridEl) {
15580
15701
  if (!this.contentInit.isStopped) {
15581
15702
  this._initializeGrid(agGrid, agGridEl);
@@ -15590,11 +15711,13 @@ var DatoGridControllerComponent = /** @class */ (function () {
15590
15711
  this.contentInit
15591
15712
  .asObservable()
15592
15713
  .pipe(switchMap(function () {
15593
- _this.gridOptions = _this.normalizeOptions();
15594
- agGrid.gridOptions = _this.gridOptions;
15714
+ // Already normalized when dato-grid-v2 bound them to <ag-grid-angular [gridOptions]>.
15715
+ if (!_this.agGridOptions) {
15716
+ return EMPTY;
15717
+ }
15595
15718
  var settingsLoader = _this.gridOptions.saveSettings === false ? of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
15596
- return combineLatest([agGrid.gridReady, settingsLoader]);
15597
- }), untilDestroyed(this))
15719
+ return combineLatest([_this.agGridReady, settingsLoader]);
15720
+ }), takeUntil(this.destroy$))
15598
15721
  .subscribe(function (_a) {
15599
15722
  var _b = __read(_a, 2), _c = _b[0], api = _c.api, columnApi = _c.columnApi, _d = _b[1], savedSettings = _d === void 0 ? {} : _d;
15600
15723
  if (!_this.gridOptions.rowData) {
@@ -15629,7 +15752,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15629
15752
  rowActions: this.rowActions
15630
15753
  };
15631
15754
  var normalized = this.gridService.normalizeOptions(params);
15632
- var defaults = __assign(__assign(__assign({}, defaultGridOptions), (this.gridOptions.treeData ? defaultTreeOptions : {})), { icons: this.getGridIcons(), disabledHTMLRenderingFields: normalized.disabledHTMLRenderingFields || defaultGridOptions.disabledHTMLRenderingFields });
15755
+ var defaults = __assign(__assign(__assign({}, defaultGridOptions), (this.gridOptions.treeData ? createDefaultTreeOptions(this.gridOptions.maxDepth) : {})), { icons: this.getGridIcons(), disabledHTMLRenderingFields: normalized.disabledHTMLRenderingFields || defaultGridOptions.disabledHTMLRenderingFields });
15633
15756
  return deepmerge(defaults, normalized);
15634
15757
  };
15635
15758
  DatoGridControllerComponent.prototype.setGridRows = function (data) {
@@ -15673,7 +15796,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15673
15796
  .pipe(auditTime(100), filter$1(function (_a) {
15674
15797
  var finished = _a.finished, source = _a.source;
15675
15798
  return finished && source === 'uiColumnDragged';
15676
- }), untilDestroyed(this))
15799
+ }), takeUntil(this.destroy$))
15677
15800
  .subscribe(function (e) {
15678
15801
  var _a = __read(e.columns, 1), column = _a[0];
15679
15802
  var columnsSizes = __assign({}, _this.gridQuery.getColumnSizes());
@@ -15692,7 +15815,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15692
15815
  merge$1(columnVisible, sortChanged, columnRowGroupChanged, columnPinned, dragStopped, filterChanged)
15693
15816
  .pipe(
15694
15817
  /* Skip the initial sorting event fired by the grid when adding rows */
15695
- skip(1), untilDestroyed(this))
15818
+ skip(1), takeUntil(this.destroy$))
15696
15819
  .subscribe(function (_a) {
15697
15820
  var type = _a.type;
15698
15821
  var settingsDiff = _this.gridService.getSettingsDiff();
@@ -15710,7 +15833,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15710
15833
  var _this = this;
15711
15834
  this.gridQuery
15712
15835
  .select(function (state) { return state.settings; })
15713
- .pipe(skip(1), debounceTime(1000), untilDestroyed(this))
15836
+ .pipe(skip(1), debounceTime(1000), takeUntil(this.destroy$))
15714
15837
  .subscribe(function () {
15715
15838
  var settingsDiff = _this.gridService.getSettingsDiff();
15716
15839
  _this.gridService.saveSettingsToServer(settingsDiff);
@@ -15740,7 +15863,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15740
15863
  var value = _a.value, node = _a.node;
15741
15864
  return value !== undefined && node.group === true;
15742
15865
  }));
15743
- }), untilDestroyed(this))
15866
+ }), takeUntil(this.destroy$))
15744
15867
  .subscribe(function (_a) {
15745
15868
  var node = _a.node;
15746
15869
  node.setExpanded(!node.expanded);
@@ -15751,7 +15874,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15751
15874
  .pipe(filter$1(function (_a) {
15752
15875
  var node = _a.node;
15753
15876
  return node.expanded === false;
15754
- }), untilDestroyed(this))
15877
+ }), takeUntil(this.destroy$))
15755
15878
  .subscribe(function () {
15756
15879
  _this.lastHoveredRow = null;
15757
15880
  _this.setOnHoverState(false);
@@ -15766,7 +15889,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15766
15889
  fromEvent(bodyViewport, 'click')
15767
15890
  .pipe(filter$1(function (event) {
15768
15891
  return (event.target === bodyViewport || event.target === centerViewport) && api.getSelectedRows().length > 0;
15769
- }), untilDestroyed(this))
15892
+ }), takeUntil(this.destroy$))
15770
15893
  .subscribe(function () { return api.deselectAll(); });
15771
15894
  };
15772
15895
  DatoGridControllerComponent.prototype.onHoverEnabled = function () {
@@ -15779,7 +15902,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15779
15902
  var onHoverEnabled = this.onHoverEnabled();
15780
15903
  if (onHoverEnabled) {
15781
15904
  fromEvent(centerContainer, 'mouseleave')
15782
- .pipe(untilDestroyed(this))
15905
+ .pipe(takeUntil(this.destroy$))
15783
15906
  .subscribe(function () {
15784
15907
  _this.toggleRowHoverClass(_this.lastHoveredRow);
15785
15908
  _this.lastHoveredRow = null;
@@ -15790,13 +15913,13 @@ var DatoGridControllerComponent = /** @class */ (function () {
15790
15913
  var direction = _a.direction;
15791
15914
  return direction === 'horizontal';
15792
15915
  })), agGrid.rowDataChanged)
15793
- .pipe(untilDestroyed(this))
15916
+ .pipe(takeUntil(this.destroy$))
15794
15917
  .subscribe(function () {
15795
15918
  _this.updateOnHoverPos();
15796
15919
  });
15797
15920
  this.addOnHoverElement();
15798
15921
  }
15799
- agGrid.cellMouseOver.pipe(untilDestroyed(this)).subscribe(function (event) {
15922
+ agGrid.cellMouseOver.pipe(takeUntil(this.destroy$)).subscribe(function (event) {
15800
15923
  var node = event.node, column = event.column;
15801
15924
  if (lastHoveredCell === node.id + "-" + column.getColId()) {
15802
15925
  clearTimeout(_this.cellMouseOutTimer);
@@ -15813,12 +15936,12 @@ var DatoGridControllerComponent = /** @class */ (function () {
15813
15936
  }
15814
15937
  });
15815
15938
  var onTooltipOut = merge$1(fromEvent(bodyViewport, 'scroll'), fromEvent(this.agGridEl, 'mouseleave'));
15816
- onTooltipOut.pipe(untilDestroyed(this)).subscribe(function () {
15939
+ onTooltipOut.pipe(takeUntil(this.destroy$)).subscribe(function () {
15817
15940
  lastHoveredCell = null;
15818
15941
  _this.clearTooltip();
15819
15942
  });
15820
15943
  agGrid.cellMouseOut
15821
- .pipe(filter$1(function () { return !isNil(_this.tooltip); }), untilDestroyed(this))
15944
+ .pipe(filter$1(function () { return !isNil(_this.tooltip); }), takeUntil(this.destroy$))
15822
15945
  .subscribe(function () {
15823
15946
  _this.cellMouseOutTimer = window.setTimeout(function () { return _this.clearTooltip(); });
15824
15947
  });
@@ -15835,9 +15958,13 @@ var DatoGridControllerComponent = /** @class */ (function () {
15835
15958
  if (cell.tagName === 'SPAN' && cell.scrollWidth === 0) {
15836
15959
  cell = cell.parentElement;
15837
15960
  }
15838
- if (event.colDef.editable) {
15961
+ if (event.colDef.editable && cell) {
15839
15962
  cell = cell.querySelector('.value-wrapper') || cell;
15840
15963
  }
15964
+ // AG Grid 27 can fire cellMouseOver for an element that was already detached by a re-render.
15965
+ if (!cell) {
15966
+ return;
15967
+ }
15841
15968
  var textOverflow = cell.offsetWidth < cell.scrollWidth;
15842
15969
  if (textOverflow) {
15843
15970
  clearTimeout(this.cellMouseOutTimer);
@@ -15921,7 +16048,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15921
16048
  keys: 'meta.a',
15922
16049
  ignoreInEditable: true
15923
16050
  })
15924
- .pipe(untilDestroyed(this))
16051
+ .pipe(takeUntil(this.destroy$))
15925
16052
  .subscribe(function () {
15926
16053
  _this.gridService.selectAllCurrentPageRows();
15927
16054
  });
@@ -15929,7 +16056,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15929
16056
  DatoGridControllerComponent.prototype.registerWindowResizeListener = function () {
15930
16057
  var _this = this;
15931
16058
  fromEvent(window, 'resize')
15932
- .pipe(debounceTime(100), filter$1(function () { return _this.gridQuery.gridAlignment !== 2 /* CUSTOM */; }), untilDestroyed(this))
16059
+ .pipe(debounceTime(100), filter$1(function () { return _this.gridQuery.gridAlignment !== 2 /* CUSTOM */; }), takeUntil(this.destroy$))
15933
16060
  .subscribe(function () {
15934
16061
  var fitTo = _this.gridQuery.gridAlignment === 0 /* FIT_TO_CONTAINER */ ? 'container' : 'content';
15935
16062
  _this.gridService.fitGrid(fitTo);
@@ -15953,7 +16080,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15953
16080
  var events$ = this.gridQuery.isServerSide
15954
16081
  ? merge$1(agGrid.sortChanged, agGrid.filterChanged)
15955
16082
  : agGrid.filterChanged;
15956
- events$.pipe(untilDestroyed(this)).subscribe(function () {
16083
+ events$.pipe(takeUntil(this.destroy$)).subscribe(function () {
15957
16084
  _this.gridService.deselectAllRows();
15958
16085
  });
15959
16086
  };
@@ -15962,7 +16089,7 @@ var DatoGridControllerComponent = /** @class */ (function () {
15962
16089
  if (!this.gridQuery.isServerSide) {
15963
16090
  return;
15964
16091
  }
15965
- agGrid.paginationChanged.pipe(untilDestroyed(this)).subscribe(function () {
16092
+ agGrid.paginationChanged.pipe(takeUntil(this.destroy$)).subscribe(function () {
15966
16093
  if (_this.gridQuery.isServerSelectAllRowsEnabled) {
15967
16094
  _this.gridService.selectAllCurrentPageRows(true, true);
15968
16095
  }
@@ -16034,6 +16161,7 @@ var DatoGridV2Component = /** @class */ (function () {
16034
16161
  function DatoGridV2Component(controller, host) {
16035
16162
  this.controller = controller;
16036
16163
  this.host = host;
16164
+ this.hasGridOptions$ = this.controller.hasGridOptions$;
16037
16165
  }
16038
16166
  Object.defineProperty(DatoGridV2Component.prototype, "grid", {
16039
16167
  set: function (agGrid) {
@@ -16045,6 +16173,13 @@ var DatoGridV2Component = /** @class */ (function () {
16045
16173
  enumerable: true,
16046
16174
  configurable: true
16047
16175
  });
16176
+ Object.defineProperty(DatoGridV2Component.prototype, "agGridOptions", {
16177
+ get: function () {
16178
+ return this.controller.agGridOptions;
16179
+ },
16180
+ enumerable: true,
16181
+ configurable: true
16182
+ });
16048
16183
  Object.defineProperty(DatoGridV2Component.prototype, "gridOptions", {
16049
16184
  get: function () {
16050
16185
  return this.controller ? this.controller.gridOptions : null;
@@ -16073,6 +16208,9 @@ var DatoGridV2Component = /** @class */ (function () {
16073
16208
  enumerable: true,
16074
16209
  configurable: true
16075
16210
  });
16211
+ DatoGridV2Component.prototype.onGridReady = function (event) {
16212
+ this.controller.onAgGridReady(event);
16213
+ };
16076
16214
  DatoGridV2Component.ctorParameters = function () { return [
16077
16215
  { type: DatoGridControllerComponent },
16078
16216
  { type: ElementRef }
@@ -16085,10 +16223,10 @@ var DatoGridV2Component = /** @class */ (function () {
16085
16223
  DatoGridV2Component = __decorate([
16086
16224
  Component({
16087
16225
  selector: 'dato-grid-v2',
16088
- 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",
16226
+ 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",
16089
16227
  changeDetection: ChangeDetectionStrategy.OnPush,
16090
16228
  encapsulation: ViewEncapsulation.None,
16091
- 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}"]
16229
+ 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}"]
16092
16230
  }),
16093
16231
  __metadata("design:paramtypes", [DatoGridControllerComponent, ElementRef])
16094
16232
  ], DatoGridV2Component);
@@ -16287,7 +16425,8 @@ var DatoGridHeaderV2Component = /** @class */ (function () {
16287
16425
  }
16288
16426
  Object.defineProperty(DatoGridHeaderV2Component.prototype, "enableBackground", {
16289
16427
  get: function () {
16290
- return this.controller.gridOptions.enableBackground;
16428
+ var gridOptions = this.controller.gridOptions;
16429
+ return gridOptions ? gridOptions.enableBackground : false;
16291
16430
  },
16292
16431
  enumerable: true,
16293
16432
  configurable: true
@@ -16769,6 +16908,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
16769
16908
  this.gridService = gridService;
16770
16909
  this.MAX_VISIBLE_ROW_ACTIONS = 5;
16771
16910
  this.MAX_VISIBLE_GRID_ACTIONS = 2;
16911
+ this.destroy$ = new Subject();
16772
16912
  this._maxRowActions = this.MAX_VISIBLE_ROW_ACTIONS;
16773
16913
  this.displayExport = true;
16774
16914
  this.rowActions = { mainList: [], moreMenu: [] };
@@ -16806,21 +16946,24 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
16806
16946
  });
16807
16947
  Object.defineProperty(DatoGridV2ToolbarComponent.prototype, "enableV2_1", {
16808
16948
  get: function () {
16809
- return this.gridController.gridOptions.enableV2_1;
16949
+ var gridOptions = this.gridController.gridOptions;
16950
+ return gridOptions ? gridOptions.enableV2_1 : false;
16810
16951
  },
16811
16952
  enumerable: true,
16812
16953
  configurable: true
16813
16954
  });
16814
16955
  Object.defineProperty(DatoGridV2ToolbarComponent.prototype, "enableSearch", {
16815
16956
  get: function () {
16816
- return this.gridController.gridOptions.enableSearch;
16957
+ var gridOptions = this.gridController.gridOptions;
16958
+ return gridOptions ? gridOptions.enableSearch : false;
16817
16959
  },
16818
16960
  enumerable: true,
16819
16961
  configurable: true
16820
16962
  });
16821
16963
  Object.defineProperty(DatoGridV2ToolbarComponent.prototype, "enableBackground", {
16822
16964
  get: function () {
16823
- return this.gridController.gridOptions.enableBackground;
16965
+ var gridOptions = this.gridController.gridOptions;
16966
+ return gridOptions ? gridOptions.enableBackground : false;
16824
16967
  },
16825
16968
  enumerable: true,
16826
16969
  configurable: true
@@ -16866,17 +17009,17 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
16866
17009
  DatoGridV2ToolbarComponent.prototype.ngOnInit = function () {
16867
17010
  var _this = this;
16868
17011
  var dataChanges = this.gridController.gridQuery.waitForGrid(function () {
16869
- return merge$1(_this.gridQuery.gridRef.cellValueChanged, _this.gridQuery.gridRef.rowDataUpdated, _this.gridQuery.rowActionVisibilityChanged$).pipe(debounceTime(100), untilDestroyed(_this));
17012
+ return merge$1(_this.gridQuery.gridRef.cellValueChanged, _this.gridQuery.gridRef.rowDataUpdated, _this.gridQuery.rowActionVisibilityChanged$).pipe(debounceTime(100), takeUntil(_this.destroy$));
16870
17013
  });
16871
17014
  var gridInit = this.gridQuery.gridReady$.pipe(take(1));
16872
- gridInit.pipe(untilDestroyed(this)).subscribe(function () {
17015
+ gridInit.pipe(takeUntil(this.destroy$)).subscribe(function () {
16873
17016
  _this.groupsAllowed = !_this.hideGrouping && !_this.gridQuery.getValue().serverSidePagination.enabled;
16874
17017
  });
16875
17018
  this.initGridActions();
16876
17019
  var selectedRowsChanged$ = this.gridQuery.selectedRowsChange$;
16877
17020
  var isSelectAllRowsChanged$ = this.gridQuery.selectIsSelectAllRowsEnabled();
16878
17021
  merge$1(dataChanges, gridInit, selectedRowsChanged$, isSelectAllRowsChanged$)
16879
- .pipe(filter$1(function () { return !!_this.api; }), untilDestroyed(this))
17022
+ .pipe(filter$1(function () { return !!_this.api; }), takeUntil(this.destroy$))
16880
17023
  .subscribe(function () {
16881
17024
  _this.resolveVisibleActions();
16882
17025
  _this.cdr.detectChanges();
@@ -17023,7 +17166,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17023
17166
  var column = _a.column, value = _a.value;
17024
17167
  var formatter = column.getColDef().valueFormatter;
17025
17168
  // TODO: followup: https://ag-grid.zendesk.com/hc/en-us/requests/10963?page=1
17026
- return formatter ? formatter({ value: value }) : value;
17169
+ return isFunction(formatter) ? formatter({ value: value }) : value;
17027
17170
  }
17028
17171
  });
17029
17172
  }
@@ -17052,7 +17195,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17052
17195
  var waitForAnimation = this.hasGroups ? 0 : 200;
17053
17196
  /** When changing the tables grouping all the rows are automatically expanded, we need to update the icon state */
17054
17197
  var expandSubscription = this.gridQuery.gridRef.columnRowGroupChanged
17055
- .pipe(take(1), untilDestroyed(this))
17198
+ .pipe(take(1), takeUntil(this.destroy$))
17056
17199
  .subscribe(function () {
17057
17200
  _this.rowGroupsCollapsed = false;
17058
17201
  _this.cdr.detectChanges();
@@ -17069,7 +17212,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17069
17212
  gridService: _this.gridService
17070
17213
  }
17071
17214
  })
17072
- .pipe(untilDestroyed(_this))
17215
+ .pipe(takeUntil(_this.destroy$))
17073
17216
  .subscribe(function () {
17074
17217
  expandSubscription.unsubscribe();
17075
17218
  _this.openMenus.group = false;
@@ -17086,7 +17229,10 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17086
17229
  DatoGridV2ToolbarComponent.prototype.clearSelectedRows = function () {
17087
17230
  this.gridService.deselectAllRows();
17088
17231
  };
17089
- DatoGridV2ToolbarComponent.prototype.ngOnDestroy = function () { };
17232
+ DatoGridV2ToolbarComponent.prototype.ngOnDestroy = function () {
17233
+ this.destroy$.next();
17234
+ this.destroy$.complete();
17235
+ };
17090
17236
  DatoGridV2ToolbarComponent.prototype.getCollapseState = function (_a) {
17091
17237
  var node = _a.node, api = _a.api;
17092
17238
  var collapsed = true;
@@ -17105,7 +17251,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17105
17251
  /** Listen to adding or removing row groups from the columns and not the groups menu */
17106
17252
  this.gridQuery
17107
17253
  .waitForGrid(function () { return _this.gridQuery.gridRef.columnRowGroupChanged; })
17108
- .pipe(filter$1(function () { return !_this.openMenus.group; }), untilDestroyed(this))
17254
+ .pipe(filter$1(function () { return !_this.openMenus.group; }), takeUntil(this.destroy$))
17109
17255
  .subscribe(function () {
17110
17256
  _this.rowGroupsCollapsed = false;
17111
17257
  _this.cdr.detectChanges();
@@ -17113,7 +17259,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17113
17259
  /** Listen to row collapse state to update the icon */
17114
17260
  this.gridQuery
17115
17261
  .waitForGrid(function () { return _this.gridQuery.gridRef.rowGroupOpened; })
17116
- .pipe(untilDestroyed(this))
17262
+ .pipe(takeUntil(this.destroy$))
17117
17263
  .subscribe(function (event) {
17118
17264
  var collapsed = _this.getCollapseState(event);
17119
17265
  if (collapsed !== _this.rowGroupsCollapsed) {
@@ -17125,7 +17271,7 @@ var DatoGridV2ToolbarComponent = /** @class */ (function () {
17125
17271
  DatoGridV2ToolbarComponent.prototype.subscribeRowsSelectionData = function () {
17126
17272
  var _this = this;
17127
17273
  this.gridQuery.rowsSelectionData$
17128
- .pipe(untilDestroyed(this))
17274
+ .pipe(takeUntil(this.destroy$))
17129
17275
  .subscribe(function (_a) {
17130
17276
  var totalRowsCount = _a.totalRowsCount, selectedRowsCount = _a.selectedRowsCount, selectedPageRowsCount = _a.selectedPageRowsCount, isAllPageRowsSelected = _a.isAllPageRowsSelected;
17131
17277
  _this.totalRowsCount = totalRowsCount;
@@ -20890,7 +21036,7 @@ var DatoRadioComponent = /** @class */ (function (_super) {
20890
21036
  changeDetection: ChangeDetectionStrategy.OnPush,
20891
21037
  exportAs: 'datoRadio',
20892
21038
  providers: [valueAccessor$8],
20893
- styles: [":host{display:block}.dato-radio{margin:.5rem;display:inline-block}.dato-radio label{cursor:pointer}.dato-radio input[type=radio]{position:absolute;opacity:0;min-width:10px!important;max-width:10px!important}.dato-radio input[type=radio]+.radio-label:before{content:'';border-radius:100%;display:inline-block;box-sizing:border-box;min-width:16px;width:16px;height:16px;position:relative;top:1px;margin-right:10px;vertical-align:middle;cursor:pointer;text-align:center;transition:250ms}.dato-radio input[type=radio]:focus+.radio-label:before{outline:0}.dato-radio input[type=radio]+.radio-label:empty:before{margin-right:0}"]
21039
+ styles: [":host{display:block}.dato-radio{margin:.5rem;display:inline-block}.dato-radio label{cursor:pointer}.dato-radio input[type=radio]{position:absolute;opacity:0;min-width:10px!important;max-width:10px!important}.dato-radio input[type=radio]+.radio-label:before{content:\"\";border-radius:100%;display:inline-block;box-sizing:border-box;min-width:16px;width:16px;height:16px;position:relative;top:1px;margin-right:10px;vertical-align:middle;cursor:pointer;text-align:center;transition:250ms}.dato-radio input[type=radio]:focus+.radio-label:before{outline:0}.dato-radio input[type=radio]+.radio-label:empty:before{margin-right:0}"]
20894
21040
  }),
20895
21041
  __metadata("design:paramtypes", [Renderer2, ChangeDetectorRef, ElementRef])
20896
21042
  ], DatoRadioComponent);
@@ -25501,7 +25647,7 @@ function fixNgLeaks() {
25501
25647
  };
25502
25648
  }
25503
25649
 
25504
- window.coreVersion = '22.14.1';
25650
+ window.coreVersion = '22.15.2';
25505
25651
 
25506
25652
  /**
25507
25653
  * @license
@@ -25515,5 +25661,5 @@ window.coreVersion = '22.14.1';
25515
25661
  * Generated bundle index. Do not edit.
25516
25662
  */
25517
25663
 
25518
- export { APP_TRANSLATE, AceService, BaseCustomControl, COMPARE_RESULT, CUSTOM_RANGE_ID, ColorPalette, ConfirmationType, ContentRef, ContentType, CustomHeaderControllerService, DATE_PICKER_CONFIG, DATE_PICKER_POPOVER_ID, DATO_CORE_LOGGER, DATO_FORM_ERRORS, DATO_GRID_STORAGE_API, DEFAULT_FORMAT, DEFAULT_GRID_SEARCH_DEBOUNCE_TIME, DatePickerConfig, DatePickerMonthComponent, DateType, DatoAccordionComponent, DatoAccordionContentComponent, DatoAccordionGroupComponent, DatoAccordionHeaderComponent, DatoAccordionModule, DatoAceDirective, DatoAceDraggableDirective, DatoAceModule, DatoActionType, DatoAutoCompleteContentDirective, DatoAutoFocusDirective, DatoAutocompleteComponent, DatoAutocompleteDirective, DatoAutocompleteModule, DatoBreadcrumbsComponent, DatoBreadcrumbsModule, DatoButtonComponent, DatoButtonGroupComponent, DatoButtonGroupModule, DatoButtonModule, DatoCamelCasePipe, DatoCarouselComponent, DatoCarouselItemDirective, DatoCarouselItemElement, DatoCarouselModule, DatoCheckboxComponent, DatoCheckboxModule, DatoClipboardDirective, DatoColorDirective, DatoConfirmationDialogComponent, DatoControlErrorComponent, DatoControlErrorContainerDirective, DatoControlErrorsDirective, DatoCoreError, DatoCoreModule, DatoCustomHeaderTemplateComponent, DatoCustomHeaderTemplateDirective, DatoCustomMoreMenuTemplateDirective, DatoDatePickerContainerComponent, DatoDatePickerModule, DatoDatePickerRangeComponent, DatoDatePickerSingleComponent, DatoDialog, DatoDialogCloseDirective, DatoDialogComponent, DatoDialogContentComponent, DatoDialogDismissDirective, DatoDialogFooterComponent, DatoDialogHeaderComponent, DatoDialogModule, DatoDialogRef, DatoDirectivesModule, DatoDisableControlDirective, DatoDraggableDirective, DatoDynamicContentComponent, DatoDynamicContentModule, DatoEditableHeaderComponent, DatoEditableHeaderModule, DatoFileInputComponent, DatoFileInputDefaultComponent, DatoFileInputModule, DatoFilterConditions, DatoFontDirective, DatoFontIconComponent, DatoFontIconModule, DatoFormSubmitDirective, DatoFormValidationModule, DatoGrid, DatoGridAPI, DatoGridAvatarCellComponent, DatoGridColumnDisplayMenuComponent, DatoGridColumnHeaderComponent, DatoGridColumnHeaderMoreMenuComponent, DatoGridColumnTypes, DatoGridComponent, DatoGridControllerComponent, DatoGridDateFilterOptions, DatoGridFilterComponent, DatoGridFilterOptionsMap, DatoGridFilterSections, DatoGridFilterTypes, DatoGridGroupsMenuComponent, DatoGridHeaderComponent, DatoGridHeaderV2Component, DatoGridInitialsCellComponent, DatoGridItemsCellComponent, DatoGridModule, DatoGridMoreMenuActions, DatoGridNumberFilterOptions, DatoGridOnHoverComponent, DatoGridPaginationComponent, DatoGridPaginationV2Component, DatoGridStatusCellComponent, DatoGridStringFilterOptions, DatoGridToolbarComponent, DatoGridToolbarItemDirective, DatoGridToolbarItemElementDirective, DatoGridV2Component, DatoGridV2LoaderComponent, DatoGridV2Module, DatoGridV2NoDataOverlayComponent, DatoGridV2ToolbarButtonComponent, DatoGridV2ToolbarComponent, DatoGroupComponent, DatoHighlightPipe, DatoHotkeys, DatoHotkeysDirective, DatoHotkeysHelpComponent, DatoHotkeysModule, DatoIconButtonComponent, DatoIconButtonModule, DatoIconComponent, DatoIconModule, DatoInfiniteScrollComponent, DatoInfiniteScrollModule, DatoInputComponent, DatoInputModule, DatoInputNumberComponent, DatoInputNumberDirective, DatoInputNumberModule, DatoKebabCasePipe, DatoLinkButtonComponent, DatoLinkButtonModule, DatoListComponent, DatoListModule, DatoListNoDataComponent, DatoListNoResultComponent, DatoListV2Component, DatoListV2Module, DatoLoaderComponent, DatoLoadersModule, DatoMenuComponent, DatoMenuContentDirective, DatoMenuItemDirective, DatoMenuModule, DatoMenuTriggerForDirective, DatoMultiOptionComponent, DatoMultiOptionV2Component, DatoOperatorTogglerComponent, DatoOperatorTogglerModule, DatoOptionComponent, DatoOptionV2Component, DatoOptionsModule, DatoOriginDirective, DatoOverlay, DatoPageLoaderComponent, DatoPanel, DatoPanelComponent, DatoPanelContentComponent, DatoPanelFooterComponent, DatoPanelHeaderComponent, DatoPanelInternalConfig, DatoPanelModule, DatoPanelRef, DatoPillsComponent, DatoPillsModule, DatoPipesModule, DatoPopover, DatoPopoverComponent, DatoPopoverModule, DatoProgressBarComponent, DatoProgressBarModule, DatoRadioComponent, DatoRadioModule, DatoRichTextDirective, DatoRichTextModule, DatoSearchResultsGroupSortPipe, DatoSearchResultsSortPipe, DatoSearchableContainerComponent, DatoSearchableDirective, DatoSearchableHighlightDirective, DatoSearchableModule, DatoSelectActiveDirective, DatoSelectComponent, DatoSelectEmptyComponent, DatoSelectModule, DatoShortNumberPipe, DatoSliderComponent, DatoSliderModule, DatoSnackbar, DatoSnackbarComponent, DatoSnackbarModule, DatoSortableComponent, DatoSortableHandleDirective, DatoSortableModule, DatoStaticImageSrcDirective, DatoStaticImagesSrcModule, DatoSubscribeContext, DatoSubscribeDirective, DatoTab, DatoTabContent, DatoTabTitle, DatoTabsModule, DatoTabset, DatoTemplatePortal, DatoTextModule, DatoThemesModule, DatoToast, DatoToastComponent, DatoToastModule, DatoTogglerComponent, DatoTogglerModule, DatoTooltipDirective, DatoTooltipV2Directive, DatoTrackByPropPipe, DatoTranslateService, DatoTreePipe, DatoTriggerMulti, DatoTriggerSingle, DialogConfig, DialogResultStatus, Dimensions, EventModifiersPlugin, GridActionType, GridMinWidths, GridRowSelectionType, GridStatusColumnTypes, GridToolbarService, ISO_FORMAT, IconRegistry, KeyCodes, KeyboardEventKeys, ListValueTypes, MockService, OperatorTypes, POPPER_BOUNDARY, PaletteDirective, PanelResultCloseTrigger, PillType, PopoverCloseDirective, PopoverContentDirective, PopoverRef, PopoverTrigger, ROOT_NODE_ID, RelativeDateType, RenderMethod, RowSelectionType, RowSelectionTypeV2, SELECT_MAX_HEIGHT, SUPPORTED_LOCALES, SelectType, SnackbarRef, SnackbarType, Store, SvgRegistry, ToolbarActionType, ToolbarArea, ToolbarConfirmation, ToolbarDeleteConfirmation, ToolbarHandler, TranslatePipe, Types, _valueChanges, a, addClass, addJSObjectCompletor, allowedFileTypes, alphabeticalGroupSort, alphabeticalSort, appendChild, appendScript, appendStyle, appendToBody, assertString, camelCase, capitalize, cloneDeep, closest, coerceArray, coerceElement, compareWith, compose, convertFromTreeData, convertToTreeData, createComponent, createElement, createGUID, createHTMLCompletor, curry, dateCompare, daysOfTheMonth, debounce, declarations$2 as declarations, deepEqual, deepmerge, defaultActions$1 as defaultActions, defaultConfig, defaultEditableColumnRenderer, defaultGridOptions, defaultGridTreeLabel, defaultOptionsDisplayLimit, defaultTreeOptions, dialogSizePreset, diff, difference, differenceBy, dimensionsChanges, directives, drop, editableCellRendererWithSearchHighlight, escape, escapeRegExp, filter, filterByControlValue, filterByTerm, filterDialogDismissed, filterDialogSuccess, filterGroupByControlValue, filterGroupByTerm, filterKey, find, findIndex, findKey, fixNgLeaks, forEach, formatKeys, generateMonths, get, getAttr, getCustomRange, getDateISOString, getDefaultConfirmationOptions, getDefaultOptions, getDefaultsToastOptions, getElementCoords, getFunctionName, getGridConfiguration, getGridModel, getInitials, getLocalizedFormat, getMultiTemplate, getOptionTemplate, getPopperDefaults, getUTCDate, getVisibleActions, gridTreeFilePathKey, groupBy, groupSortOrder, has, inView, intersection, invert, isArrayValuesEqual, isArrowUpDown, isBoolean, isEmpty, isEmptyString, isEnter, isEqual, isEscape, isFraction, isFunction, isMacintosh, isNil, isNumber, isObject, isRangeCondition, isRangeCustom, isString, isTestEnv, isValidMediaLink, kebabCase, keyBy, keysSymbols, last, map, mapKeys, mapValues, maxFileSize, merge, minBy, mockInDev, mocks, ngContentResolver, noop, normalizeData, omit, omitBy, optionalDebounce, pallete, parseDateString, partial, polling, prependChild, publicApi$1 as publicApi, query, queryAll, random, rawDiff, readFromClipboard, reject, relativeDateTypes, removeClass, resolveRange, round, searchHighlightCellRenderer, searchResultsGroupSort, searchResultsSort, setAttr, setAttribute, setDimensions, setGridConfiguration, setGridModel, setMaxDimensions, setMinDimensions, setStyle, setStyles, shortNumber, size, sortBy, stubs, supportedLocales, tapLog, tapOnce, throttle, toBoolean, toFormData, toNumber, toResponseBody, toString, toggleClass, toolbarActionToContextAction, tryParsePivotValue, unescape, union, uniq, uniqBy, uploadProgress, validBase64Image, validUrl, validateCondition, validateDate, validateDateCondition, validateFilter, validateNumberCondition, validateRange, validateStringCondition, values, workerMap, writeToClipboard, zoneStable, ɵ0$2 as ɵ0, ɵ1$2 as ɵ1, ɵ2, DATO_CORE_CONFIG as ɵb, DatoGridHelper as ɵc, Popper as ɵd, GridQuery as ɵe, GridStore as ɵf, GridService as ɵg, DatoDateRangesFilterPipe as ɵh, ListStore as ɵi, DatoListSelectAllComponent as ɵj, DatoGridMultiSelectColumnHeaderComponent as ɵk, DatoGridItemsCountCellComponent as ɵl, DatoGridV2ToolbarMoreMenuComponent as ɵm, DatoGridSearchBarComponent as ɵn };
25664
+ export { APP_TRANSLATE, AceService, BaseCustomControl, COMPARE_RESULT, CUSTOM_RANGE_ID, ColorPalette, ConfirmationType, ContentRef, ContentType, CustomHeaderControllerService, DATE_PICKER_CONFIG, DATE_PICKER_POPOVER_ID, DATO_CORE_LOGGER, DATO_FORM_ERRORS, DATO_GRID_STORAGE_API, DEFAULT_FORMAT, DEFAULT_GRID_SEARCH_DEBOUNCE_TIME, DatePickerConfig, DatePickerMonthComponent, DateType, DatoAccordionComponent, DatoAccordionContentComponent, DatoAccordionGroupComponent, DatoAccordionHeaderComponent, DatoAccordionModule, DatoAceDirective, DatoAceDraggableDirective, DatoAceModule, DatoActionType, DatoAutoCompleteContentDirective, DatoAutoFocusDirective, DatoAutocompleteComponent, DatoAutocompleteDirective, DatoAutocompleteModule, DatoBreadcrumbsComponent, DatoBreadcrumbsModule, DatoButtonComponent, DatoButtonGroupComponent, DatoButtonGroupModule, DatoButtonModule, DatoCamelCasePipe, DatoCarouselComponent, DatoCarouselItemDirective, DatoCarouselItemElement, DatoCarouselModule, DatoCheckboxComponent, DatoCheckboxModule, DatoClipboardDirective, DatoColorDirective, DatoConfirmationDialogComponent, DatoControlErrorComponent, DatoControlErrorContainerDirective, DatoControlErrorsDirective, DatoCoreError, DatoCoreModule, DatoCustomHeaderTemplateComponent, DatoCustomHeaderTemplateDirective, DatoCustomMoreMenuTemplateDirective, DatoDatePickerContainerComponent, DatoDatePickerModule, DatoDatePickerRangeComponent, DatoDatePickerSingleComponent, DatoDialog, DatoDialogCloseDirective, DatoDialogComponent, DatoDialogContentComponent, DatoDialogDismissDirective, DatoDialogFooterComponent, DatoDialogHeaderComponent, DatoDialogModule, DatoDialogRef, DatoDirectivesModule, DatoDisableControlDirective, DatoDraggableDirective, DatoDynamicContentComponent, DatoDynamicContentModule, DatoEditableHeaderComponent, DatoEditableHeaderModule, DatoFileInputComponent, DatoFileInputDefaultComponent, DatoFileInputModule, DatoFilterConditions, DatoFontDirective, DatoFontIconComponent, DatoFontIconModule, DatoFormSubmitDirective, DatoFormValidationModule, DatoGrid, DatoGridAPI, DatoGridAvatarCellComponent, DatoGridColumnDisplayMenuComponent, DatoGridColumnHeaderComponent, DatoGridColumnHeaderMoreMenuComponent, DatoGridColumnTypes, DatoGridComponent, DatoGridControllerComponent, DatoGridDateFilterOptions, DatoGridFilterComponent, DatoGridFilterOptionsMap, DatoGridFilterSections, DatoGridFilterTypes, DatoGridGroupsMenuComponent, DatoGridHeaderComponent, DatoGridHeaderV2Component, DatoGridInitialsCellComponent, DatoGridItemsCellComponent, DatoGridModule, DatoGridMoreMenuActions, DatoGridNumberFilterOptions, DatoGridOnHoverComponent, DatoGridPaginationComponent, DatoGridPaginationV2Component, DatoGridStatusCellComponent, DatoGridStringFilterOptions, DatoGridToolbarComponent, DatoGridToolbarItemDirective, DatoGridToolbarItemElementDirective, DatoGridV2Component, DatoGridV2LoaderComponent, DatoGridV2Module, DatoGridV2NoDataOverlayComponent, DatoGridV2ToolbarButtonComponent, DatoGridV2ToolbarComponent, DatoGroupComponent, DatoHighlightPipe, DatoHotkeys, DatoHotkeysDirective, DatoHotkeysHelpComponent, DatoHotkeysModule, DatoIconButtonComponent, DatoIconButtonModule, DatoIconComponent, DatoIconModule, DatoInfiniteScrollComponent, DatoInfiniteScrollModule, DatoInputComponent, DatoInputModule, DatoInputNumberComponent, DatoInputNumberDirective, DatoInputNumberModule, DatoKebabCasePipe, DatoLinkButtonComponent, DatoLinkButtonModule, DatoListComponent, DatoListModule, DatoListNoDataComponent, DatoListNoResultComponent, DatoListV2Component, DatoListV2Module, DatoLoaderComponent, DatoLoadersModule, DatoMenuComponent, DatoMenuContentDirective, DatoMenuItemDirective, DatoMenuModule, DatoMenuTriggerForDirective, DatoMultiOptionComponent, DatoMultiOptionV2Component, DatoOperatorTogglerComponent, DatoOperatorTogglerModule, DatoOptionComponent, DatoOptionV2Component, DatoOptionsModule, DatoOriginDirective, DatoOverlay, DatoPageLoaderComponent, DatoPanel, DatoPanelComponent, DatoPanelContentComponent, DatoPanelFooterComponent, DatoPanelHeaderComponent, DatoPanelInternalConfig, DatoPanelModule, DatoPanelRef, DatoPillsComponent, DatoPillsModule, DatoPipesModule, DatoPopover, DatoPopoverComponent, DatoPopoverModule, DatoProgressBarComponent, DatoProgressBarModule, DatoRadioComponent, DatoRadioModule, DatoRichTextDirective, DatoRichTextModule, DatoSearchResultsGroupSortPipe, DatoSearchResultsSortPipe, DatoSearchableContainerComponent, DatoSearchableDirective, DatoSearchableHighlightDirective, DatoSearchableModule, DatoSelectActiveDirective, DatoSelectComponent, DatoSelectEmptyComponent, DatoSelectModule, DatoShortNumberPipe, DatoSliderComponent, DatoSliderModule, DatoSnackbar, DatoSnackbarComponent, DatoSnackbarModule, DatoSortableComponent, DatoSortableHandleDirective, DatoSortableModule, DatoStaticImageSrcDirective, DatoStaticImagesSrcModule, DatoSubscribeContext, DatoSubscribeDirective, DatoTab, DatoTabContent, DatoTabTitle, DatoTabsModule, DatoTabset, DatoTemplatePortal, DatoTextModule, DatoThemesModule, DatoToast, DatoToastComponent, DatoToastModule, DatoTogglerComponent, DatoTogglerModule, DatoTooltipDirective, DatoTooltipV2Directive, DatoTrackByPropPipe, DatoTranslateService, DatoTreePipe, DatoTriggerMulti, DatoTriggerSingle, DialogConfig, DialogResultStatus, Dimensions, EventModifiersPlugin, GridActionType, GridMinWidths, GridRowSelectionType, GridStatusColumnTypes, GridToolbarService, ISO_FORMAT, IconRegistry, KeyCodes, KeyboardEventKeys, ListValueTypes, MockService, OperatorTypes, POPPER_BOUNDARY, PaletteDirective, PanelResultCloseTrigger, PillType, PopoverCloseDirective, PopoverContentDirective, PopoverRef, PopoverTrigger, ROOT_NODE_ID, RelativeDateType, RenderMethod, RowSelectionType, RowSelectionTypeV2, SELECT_MAX_HEIGHT, SUPPORTED_LOCALES, SelectType, SnackbarRef, SnackbarType, Store, SvgRegistry, ToolbarActionType, ToolbarArea, ToolbarConfirmation, ToolbarDeleteConfirmation, ToolbarHandler, TranslatePipe, Types, _valueChanges, a, addClass, addJSObjectCompletor, allowedFileTypes, alphabeticalGroupSort, alphabeticalSort, appendChild, appendScript, appendStyle, appendToBody, assertString, camelCase, capitalize, cloneDeep, closest, coerceArray, coerceElement, compareWith, compose, convertFromTreeData, convertToTreeData, createComponent, createDefaultTreeOptions, createElement, createGUID, createHTMLCompletor, curry, dateCompare, daysOfTheMonth, debounce, declarations$2 as declarations, deepEqual, deepmerge, defaultActions$1 as defaultActions, defaultConfig, defaultEditableColumnRenderer, defaultGridOptions, defaultGridTreeLabel, defaultOptionsDisplayLimit, defaultTreeOptions, dialogSizePreset, diff, difference, differenceBy, dimensionsChanges, directives, drop, editableCellRendererWithSearchHighlight, escape, escapeRegExp, filter, filterByControlValue, filterByTerm, filterDialogDismissed, filterDialogSuccess, filterGroupByControlValue, filterGroupByTerm, filterKey, find, findIndex, findKey, fixNgLeaks, forEach, formatKeys, generateMonths, get, getAttr, getCustomRange, getDateISOString, getDefaultConfirmationOptions, getDefaultOptions, getDefaultsToastOptions, getElementCoords, getFunctionName, getGridConfiguration, getGridModel, getInitials, getLocalizedFormat, getMultiTemplate, getOptionTemplate, getPopperDefaults, getUTCDate, getVisibleActions, gridTreeFilePathKey, groupBy, groupSortOrder, has, inView, intersection, invert, isArrayValuesEqual, isArrowUpDown, isBoolean, isEmpty, isEmptyString, isEnter, isEqual, isEscape, isFraction, isFunction, isMacintosh, isNil, isNumber, isObject, isRangeCondition, isRangeCustom, isString, isTestEnv, isValidMediaLink, kebabCase, keyBy, keysSymbols, last, map, mapKeys, mapValues, maxFileSize, merge, minBy, mockInDev, mocks, ngContentResolver, noop, normalizeData, omit, omitBy, optionalDebounce, pallete, parseDateString, partial, polling, prependChild, publicApi$1 as publicApi, query, queryAll, random, rawDiff, readFromClipboard, reject, relativeDateTypes, removeClass, resolveRange, round, searchHighlightCellRenderer, searchResultsGroupSort, searchResultsSort, setAttr, setAttribute, setDimensions, setGridConfiguration, setGridModel, setMaxDimensions, setMinDimensions, setStyle, setStyles, shortNumber, size, sortBy, stubs, supportedLocales, tapLog, tapOnce, throttle, toBoolean, toFormData, toNumber, toResponseBody, toString, toggleClass, toolbarActionToContextAction, tryParsePivotValue, unescape, union, uniq, uniqBy, uploadProgress, validBase64Image, validUrl, validateCondition, validateDate, validateDateCondition, validateFilter, validateNumberCondition, validateRange, validateStringCondition, values, workerMap, writeToClipboard, zoneStable, ɵ0$2 as ɵ0, ɵ1$2 as ɵ1, ɵ2, DATO_CORE_CONFIG as ɵb, DatoGridHelper as ɵc, Popper as ɵd, GridQuery as ɵe, GridStore as ɵf, GridService as ɵg, DatoDateRangesFilterPipe as ɵh, ListStore as ɵi, DatoListSelectAllComponent as ɵj, DatoGridMultiSelectColumnHeaderComponent as ɵk, DatoGridItemsCountCellComponent as ɵl, DatoGridV2ToolbarMoreMenuComponent as ɵm, DatoGridSearchBarComponent as ɵn };
25519
25665
  //# sourceMappingURL=datorama-core.js.map