@datorama/core 22.1.1-rc.2 → 22.2.4

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 (60) hide show
  1. package/bundle.scss +16 -17
  2. package/bundles/datorama-core.umd.js +173 -145
  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.d.ts +0 -1
  7. package/datorama-core.metadata.json +1 -1
  8. package/esm2015/datorama-core.js +1 -2
  9. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  10. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  11. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +14 -17
  12. package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +3 -1
  13. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
  14. package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
  15. package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +5 -5
  16. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  17. package/esm2015/lib/grid-v2/grid-store/grid.query.js +19 -14
  18. package/esm2015/lib/grid-v2/grid-store/grid.service.js +46 -27
  19. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
  20. package/esm2015/lib/icon/icon.types.js +1 -1
  21. package/esm2015/lib/progress-bar/progress-bar.component.js +36 -16
  22. package/esm2015/lib/rich-text/rich-text.directive.js +33 -15
  23. package/esm2015/lib/select/select.component.js +10 -5
  24. package/esm2015/lib/version.js +2 -2
  25. package/esm5/datorama-core.js +1 -2
  26. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  27. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  28. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +14 -17
  29. package/esm5/lib/grid-v2/grid-filter/filter-validator.js +3 -1
  30. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
  31. package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
  32. package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +5 -5
  33. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  34. package/esm5/lib/grid-v2/grid-store/grid.query.js +19 -14
  35. package/esm5/lib/grid-v2/grid-store/grid.service.js +48 -29
  36. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
  37. package/esm5/lib/icon/icon.types.js +1 -1
  38. package/esm5/lib/progress-bar/progress-bar.component.js +36 -16
  39. package/esm5/lib/rich-text/rich-text.directive.js +34 -16
  40. package/esm5/lib/select/select.component.js +10 -5
  41. package/esm5/lib/version.js +2 -2
  42. package/fesm2015/datorama-core.js +171 -135
  43. package/fesm2015/datorama-core.js.map +1 -1
  44. package/fesm5/datorama-core.js +174 -145
  45. package/fesm5/datorama-core.js.map +1 -1
  46. package/i18n/locale-en_US.json +2 -0
  47. package/lib/grid-v2/grid/grid-v2.types.d.ts +6 -2
  48. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +1 -2
  49. package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +3 -1
  50. package/lib/grid-v2/grid-pagination/grid-pagination.component.d.ts +1 -0
  51. package/lib/grid-v2/grid-settings.d.ts +2 -2
  52. package/lib/grid-v2/grid-store/grid.service.d.ts +2 -1
  53. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
  54. package/lib/icon/icon.types.d.ts +1 -1
  55. package/lib/progress-bar/progress-bar.component.d.ts +8 -2
  56. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  57. package/package.json +1 -1
  58. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  59. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  60. package/lib/rich-text/rich-text.service.d.ts +0 -10
@@ -7495,8 +7495,9 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7495
7495
  writeValue(activeOptions) {
7496
7496
  this._model = activeOptions ? coerceArray$1(activeOptions) : [];
7497
7497
  if (this.options) {
7498
+ const overTheLimit = this.limitSelectedTo && this.isMulti && this._model.length >= this.limitSelectedTo;
7498
7499
  this.markAsActive(this._model, { deselectAll: true });
7499
- this.limitSelectedTo && this.updateDisabledState();
7500
+ overTheLimit && this.updateDisabledState();
7500
7501
  }
7501
7502
  /** For later updates */
7502
7503
  this.cdr.markForCheck();
@@ -7532,7 +7533,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7532
7533
  */
7533
7534
  if (this.hasValue && this._initialOpen) {
7534
7535
  this.markAsActive(this._model);
7535
- if (this.limitSelectedTo) {
7536
+ if (this.limitSelectedTo && this._model.length === this.limitSelectedTo) {
7536
7537
  this.updateDisabledState();
7537
7538
  }
7538
7539
  this._initialOpen = false;
@@ -7599,6 +7600,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7599
7600
  this.onChange(this._model);
7600
7601
  }
7601
7602
  removeOption(option) {
7603
+ const updateDisabled = this.limitSelectedTo && this._model.length === this.limitSelectedTo;
7602
7604
  this._model = this._model.filter(current => current[this.idKey] !== option[this.idKey]);
7603
7605
  const optionToRemove = this.options.find(datoOption => datoOption.option && datoOption.option[this.idKey] === option[this.idKey]);
7604
7606
  /**
@@ -7608,7 +7610,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7608
7610
  if (optionToRemove) {
7609
7611
  optionToRemove.active = false;
7610
7612
  }
7611
- this.limitSelectedTo && this.updateDisabledState();
7613
+ updateDisabled && this.updateDisabledState();
7612
7614
  this.onChange(this._model);
7613
7615
  this.cdr.markForCheck();
7614
7616
  if (this.datoOverlay.attached) {
@@ -7884,6 +7886,9 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7884
7886
  if (!datoOption) {
7885
7887
  return;
7886
7888
  }
7889
+ const modelLength = this._model.length;
7890
+ const updateDisabled = this.limitSelectedTo &&
7891
+ (modelLength === this.limitSelectedTo || (modelLength === this.limitSelectedTo - 1 && !datoOption.active));
7887
7892
  datoOption.active = !datoOption.active;
7888
7893
  const rawOption = datoOption.option;
7889
7894
  if (datoOption.active) {
@@ -7892,7 +7897,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7892
7897
  else {
7893
7898
  this._model = this._model.filter(current => current[this.idKey] !== rawOption[this.idKey]);
7894
7899
  }
7895
- this.limitSelectedTo && this.updateDisabledState();
7900
+ updateDisabled && this.updateDisabledState();
7896
7901
  this.onChange(this._model);
7897
7902
  this.cdr.markForCheck();
7898
7903
  this.datoOverlay.scheduleUpdate();
@@ -10094,20 +10099,23 @@ let GridQuery = class GridQuery extends Query {
10094
10099
  if (this.gridRef.gridOptions.pivotMode) {
10095
10100
  const { sort, colId } = this.api.grid.getSortModel().pop() || {};
10096
10101
  const column = this.api.columns.getColumn(colId);
10097
- const pivotedColumn = this.getSecondaryColumn(colId);
10098
- if (pivotedColumn) {
10099
- const uniquePivotParents = uniq(this.api.columns.getSecondaryColumns().map(column => column.getParent()));
10100
- const secondaryColumn = this.getSecondaryColumn(pivotedColumn.getColId());
10101
- const pivotColIndex = uniquePivotParents.indexOf(secondaryColumn.getParent());
10102
- return { colId: getColField(pivotedColumn.getColDef()), sort, pivotColIndex };
10102
+ const allColumns = this.api.columns.getAllGridColumns();
10103
+ if (column) {
10104
+ return { colId, sort, field: getColField(column.getColDef()), sortIndex: allColumns.indexOf(column) };
10103
10105
  }
10104
- else if (column) {
10105
- return { colId: getColField(column.getColDef()), sort };
10106
+ else {
10107
+ const secondaryColumn = this.getSecondaryColumn(colId);
10108
+ if (secondaryColumn) {
10109
+ return {
10110
+ colId,
10111
+ sort,
10112
+ field: getColField(secondaryColumn.getColDef()),
10113
+ sortIndex: allColumns.indexOf(secondaryColumn)
10114
+ };
10115
+ }
10106
10116
  }
10107
10117
  }
10108
- else {
10109
- return this.api.grid.getSortModel().pop();
10110
- }
10118
+ return this.api.grid.getSortModel().pop();
10111
10119
  }
10112
10120
  selectSort() {
10113
10121
  return this.select(state => state.settings.sort);
@@ -10204,7 +10212,10 @@ let GridQuery = class GridQuery extends Query {
10204
10212
  }
10205
10213
  getSecondaryColumn(colId) {
10206
10214
  const secondaryColumns = this.api.columns.getSecondaryColumns();
10207
- return secondaryColumns && secondaryColumns.find(col => col.getColId() === colId);
10215
+ if (secondaryColumns) {
10216
+ return secondaryColumns.find(col => col.getColId() === colId);
10217
+ }
10218
+ return null;
10208
10219
  }
10209
10220
  filterCheckboxSelectionColumn(columns) {
10210
10221
  return columns.filter((column) => !column.getUserProvidedColDef() || !column.getUserProvidedColDef().checkboxSelection);
@@ -10254,6 +10265,8 @@ var DatoFilterConditions;
10254
10265
  DatoFilterConditions["NOT_IN_LIST"] = "NOT_IN_LIST";
10255
10266
  DatoFilterConditions["IS_EMPTY"] = "IS_EMPTY";
10256
10267
  DatoFilterConditions["NOT_EMPTY"] = "NOT_EMPTY";
10268
+ DatoFilterConditions["IS_NULL"] = "IS_NULL";
10269
+ DatoFilterConditions["NOT_NULL"] = "NOT_NULL";
10257
10270
  })(DatoFilterConditions || (DatoFilterConditions = {}));
10258
10271
  const DatoGridDateFilterOptions = [
10259
10272
  DatoFilterConditions.IN_RANGE,
@@ -10334,8 +10347,10 @@ function validateNumberCondition(unparsedRowValue, { condition, value, rangeEnd
10334
10347
  case DatoFilterConditions.IN_RANGE:
10335
10348
  return rowValue >= filterValue && rowValue <= parseFloat(rangeEnd);
10336
10349
  case DatoFilterConditions.IS_EMPTY:
10350
+ case DatoFilterConditions.IS_NULL:
10337
10351
  return isNil(rowValue);
10338
10352
  case DatoFilterConditions.NOT_EMPTY:
10353
+ case DatoFilterConditions.NOT_NULL:
10339
10354
  return !isNil(rowValue);
10340
10355
  }
10341
10356
  }
@@ -10482,7 +10497,7 @@ function toolbarActionToContextAction(params) {
10482
10497
  return contextActions;
10483
10498
  }
10484
10499
 
10485
- const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_AP');
10500
+ const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_API');
10486
10501
 
10487
10502
  const defaultEditableColumnRenderer = params => params && params.value ? `<div class="value-wrapper ellipsis">${params.value}</div>` : null;
10488
10503
  const editableCellRendererWithSearchHighlight = (params, searchTerm) => {
@@ -11211,10 +11226,11 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11211
11226
  }
11212
11227
  ngOnInit() {
11213
11228
  const { gridService, gridQuery } = this.popover.data;
11214
- const { filter, filtersConfig = {}, pivotValueColumn, pivotKeys } = this.colDef;
11229
+ const { filter, pivotValueColumn, pivotKeys } = this.colDef;
11215
11230
  const colDefs = gridQuery.api.columns.getAllColumns().map(column => column.getColDef());
11216
11231
  this.colField = getColField(this.colDef);
11217
11232
  const colDef = colDefs.find(colDef => colDef.field === this.colField);
11233
+ const filtersConfig = colDef.filtersConfig || this.colDef.filtersConfig || {};
11218
11234
  const colFilter = filter || colDef.filter;
11219
11235
  const filterOptions = DatoGridFilterOptionsMap[colFilter];
11220
11236
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
@@ -11236,7 +11252,11 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11236
11252
  if (this.filterSections.Conditional) {
11237
11253
  let filterConditions = filterOptions || DatoGridStringFilterOptions;
11238
11254
  if (filtersConfig.showEmptyConditions) {
11239
- filterConditions = [...filterConditions, DatoFilterConditions.IS_EMPTY, DatoFilterConditions.NOT_EMPTY];
11255
+ let emptyConditions = [DatoFilterConditions.IS_EMPTY, DatoFilterConditions.NOT_EMPTY];
11256
+ if (this.filterType === DatoGridFilterTypes.Number) {
11257
+ emptyConditions = [DatoFilterConditions.IS_NULL, DatoFilterConditions.NOT_NULL];
11258
+ }
11259
+ filterConditions = [...filterConditions, ...emptyConditions];
11240
11260
  }
11241
11261
  this.conditionalFilterOptions = filterConditions.map((operand, id) => ({
11242
11262
  id,
@@ -11599,7 +11619,10 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11599
11619
  valueControl.updateValueAndValidity();
11600
11620
  }
11601
11621
  isEmptyOperand(operand) {
11602
- return operand === DatoFilterConditions.IS_EMPTY || operand === DatoFilterConditions.NOT_EMPTY;
11622
+ return (operand === DatoFilterConditions.IS_EMPTY ||
11623
+ operand === DatoFilterConditions.NOT_EMPTY ||
11624
+ operand === DatoFilterConditions.IS_NULL ||
11625
+ operand === DatoFilterConditions.NOT_NULL);
11603
11626
  }
11604
11627
  isStringArray(value) {
11605
11628
  return isString(value[0]);
@@ -12657,18 +12680,33 @@ let GridService = class GridService {
12657
12680
  }
12658
12681
  }
12659
12682
  setGridFilters(filters) {
12660
- if (this.api) {
12661
- for (const { filter } of filters) {
12662
- const column = this.api.columns.getColumn(filter.colId);
12663
- if (column) {
12664
- this.setColumnFilter(column, filter);
12665
- }
12666
- else {
12667
- const pivotColumn = this.gridQuery.getSecondaryColumn(filter.colId);
12668
- this.setColumnFilter(pivotColumn, filter);
12683
+ if (this.api && filters) {
12684
+ let appliedFilter = {};
12685
+ for (const { filter, field } of filters) {
12686
+ appliedFilter = Object.assign(Object.assign({}, appliedFilter), { [field]: filter });
12687
+ }
12688
+ this.updateSettings({ filter: appliedFilter });
12689
+ this.api.grid.onFilterChanged();
12690
+ }
12691
+ }
12692
+ setGridSort(gridSort) {
12693
+ if (this.api && gridSort) {
12694
+ const { sort, sortIndex } = gridSort;
12695
+ if (!isNil(sortIndex)) {
12696
+ const columns = this.api.columns.getAllGridColumns();
12697
+ if (columns) {
12698
+ const column = columns[sortIndex];
12699
+ if (column) {
12700
+ const sortToApply = { colId: column.getColId(), sort };
12701
+ this.updateSettings({ sort: sortToApply });
12702
+ this.api.grid.setSortModel([sortToApply]);
12703
+ }
12669
12704
  }
12670
12705
  }
12671
- this.notifyFilterUpdate();
12706
+ else {
12707
+ this.updateSettings({ sort: gridSort });
12708
+ this.api.grid.setSortModel([gridSort]);
12709
+ }
12672
12710
  }
12673
12711
  }
12674
12712
  updateFilter(column, filter) {
@@ -12725,8 +12763,7 @@ let GridService = class GridService {
12725
12763
  this.updateSettings({ gridAlignment, columnsSizes: null });
12726
12764
  }
12727
12765
  saveSettingsToServer(settings) {
12728
- const isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
12729
- this.storageAPI.set(this.gridName, settings, isGlobal);
12766
+ this.storageAPI.set(this.gridName, settings);
12730
12767
  }
12731
12768
  /**
12732
12769
  * @internal used to log grid events to the platform's logging service
@@ -13087,6 +13124,13 @@ let GridService = class GridService {
13087
13124
  column
13088
13125
  };
13089
13126
  }
13127
+ if (condition === DatoFilterConditions.IS_NULL || condition === DatoFilterConditions.NOT_NULL) {
13128
+ return {
13129
+ condition: DatoFilterConditions.IS_NULL,
13130
+ value: condition === DatoFilterConditions.IS_NULL ? 'true' : 'false',
13131
+ column
13132
+ };
13133
+ }
13090
13134
  return Object.assign(Object.assign({}, item), { column });
13091
13135
  })
13092
13136
  };
@@ -13139,13 +13183,12 @@ let GridService = class GridService {
13139
13183
  if (userProvidedColDef) {
13140
13184
  colDef.filter = userProvidedColDef.filter;
13141
13185
  }
13142
- // if (colDef.pivotKeys) {
13143
- // colDef.pivotKeys = colDef.pivotKeys.map(key => {
13144
- // const parsedKey = tryParsePivotValue(key);
13145
- //
13146
- // return (parsedKey && parsedKey.value) || '';
13147
- // });
13148
- // }
13186
+ if (colDef.pivotKeys) {
13187
+ colDef.pivotKeys = colDef.pivotKeys.map(key => {
13188
+ const parsedKey = tryParsePivotValue(key);
13189
+ return (parsedKey && parsedKey.value) || '';
13190
+ });
13191
+ }
13149
13192
  };
13150
13193
  gridOptions.processSecondaryColGroupDef = (colGroupDef) => {
13151
13194
  if (colGroupDef.headerName) {
@@ -13170,13 +13213,12 @@ let GridService = class GridService {
13170
13213
  else {
13171
13214
  colGroupDef.headerClass = ['empty-pivot-header'];
13172
13215
  }
13173
- // if (colGroupDef.pivotKeys) {
13174
- // colGroupDef.pivotKeys = colGroupDef.pivotKeys.map(key => {
13175
- // const parsedKey = tryParsePivotValue(key);
13176
- //
13177
- // return (parsedKey && parsedKey.value) || '';
13178
- // });
13179
- // }
13216
+ if (colGroupDef.pivotKeys) {
13217
+ colGroupDef.pivotKeys = colGroupDef.pivotKeys.map(key => {
13218
+ const parsedKey = tryParsePivotValue(key);
13219
+ return (parsedKey && parsedKey.value) || '';
13220
+ });
13221
+ }
13180
13222
  };
13181
13223
  }
13182
13224
  setPivotModeRows(data) {
@@ -13630,16 +13672,18 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13630
13672
  .pipe(switchMap(() => {
13631
13673
  this.gridOptions = this.normalizeOptions();
13632
13674
  agGrid.gridOptions = this.gridOptions;
13633
- const isGlobal = this.gridOptions.isGlobalSettings;
13634
- const settingsLoader = this.gridOptions.saveSettings === false
13635
- ? of(null)
13636
- : this.storageAPI.get(this.gridOptions.gridName, isGlobal);
13675
+ const settingsLoader = this.gridOptions.saveSettings === false ? of(null) : this.storageAPI.get(this.gridOptions.gridName);
13637
13676
  return combineLatest([agGrid.gridReady, settingsLoader]);
13638
13677
  }), untilDestroyed(this))
13639
13678
  .subscribe(([{ api, columnApi }, savedSettings = {}]) => {
13640
13679
  if (!this.gridOptions.rowData) {
13641
13680
  api.showLoadingOverlay();
13642
13681
  }
13682
+ if (!this.gridOptions.statusBar) {
13683
+ /** Fix ag-grid bug that doesn't add ag-hidden class to the status bar, which only get fixed in later versions */
13684
+ const el = agGridEl.querySelector('.ag-status-bar');
13685
+ addClass(el, 'ag-hidden');
13686
+ }
13643
13687
  const gridApi = { grid: api, columns: columnApi };
13644
13688
  this.gridService._setApi(gridApi, agGrid);
13645
13689
  this.gridQuery._setApi(gridApi, agGrid);
@@ -13679,11 +13723,8 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13679
13723
  setGridFilters(filters) {
13680
13724
  this.gridService.setGridFilters(filters);
13681
13725
  }
13682
- onFilterChanged() {
13683
- return this.gridQuery.filterChanged();
13684
- }
13685
- onSortChanged() {
13686
- return this.gridQuery.selectSort();
13726
+ setGridSort(sort) {
13727
+ this.gridService.setGridSort(sort);
13687
13728
  }
13688
13729
  getGridIcons() {
13689
13730
  const moveColumnIcon = `<span class="da-grid-icon pointer d-flex column-move">${this.iconRegistry.getSvg('move-column')}</span>`;
@@ -13723,8 +13764,8 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13723
13764
  });
13724
13765
  }
13725
13766
  listenToGridEvents(agGrid) {
13726
- const { columnVisible, sortChanged, columnRowGroupChanged, columnPinned, dragStopped } = agGrid;
13727
- merge$1(columnVisible, sortChanged, columnRowGroupChanged, columnPinned, dragStopped)
13767
+ const { columnVisible, sortChanged, columnRowGroupChanged, columnPinned, dragStopped, filterChanged } = agGrid;
13768
+ merge$1(columnVisible, sortChanged, columnRowGroupChanged, columnPinned, dragStopped, filterChanged)
13728
13769
  .pipe(
13729
13770
  /* Skip the initial sorting event fired by the grid when adding rows */
13730
13771
  skip(1), untilDestroyed(this))
@@ -13732,10 +13773,8 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13732
13773
  const settingsDiff = this.gridService.getSettingsDiff();
13733
13774
  this.gridService.updateSettings(settingsDiff);
13734
13775
  const data = this.getGridData();
13735
- this.onGridChange.emit({
13736
- type,
13737
- data
13738
- });
13776
+ this.onGridChange.emit(Object.assign(Object.assign({}, settingsDiff), { type,
13777
+ data }));
13739
13778
  });
13740
13779
  }
13741
13780
  listenToStoreSettingsChanges() {
@@ -14328,6 +14367,7 @@ let DatoGridPaginationV2Component = class DatoGridPaginationV2Component {
14328
14367
  // Show fit cell content and collapse/expand row groups controls
14329
14368
  this.showBottomControls = false;
14330
14369
  this.isExpanded = true;
14370
+ this.hasRowGroupColumns = false;
14331
14371
  this.isServerSidePagination = false;
14332
14372
  // The number of pages displayed in the navigation panel for each view as defined by product.
14333
14373
  this.MINI_DISPLAY_LENGTH = 2;
@@ -14363,8 +14403,10 @@ let DatoGridPaginationV2Component = class DatoGridPaginationV2Component {
14363
14403
  });
14364
14404
  this.gridQuery.gridReady$
14365
14405
  .pipe(tap(() => {
14406
+ const rowGroupColumns = this.gridQuery.api.columns.getRowGroupColumns();
14366
14407
  this.gridApi = this.gridQuery.api.grid;
14367
14408
  this.showBottomControls = this.gridQuery.getGridOptions().showBottomControls;
14409
+ this.hasRowGroupColumns = rowGroupColumns && rowGroupColumns.length > 0;
14368
14410
  }), switchMap(() => {
14369
14411
  this.isServerSidePagination = this.gridQuery.isServerSide;
14370
14412
  return this.isServerSidePagination ? this.gridQuery.serverDataLoaded$ : this.gridQuery.rowDataChanged$;
@@ -14484,9 +14526,6 @@ let DatoGridPaginationV2Component = class DatoGridPaginationV2Component {
14484
14526
  toggleGroupsState() {
14485
14527
  this.isExpanded ? this.gridApi.collapseAll() : this.gridApi.expandAll();
14486
14528
  this.isExpanded = !this.isExpanded;
14487
- // this.gridApi.forEachNode((node: RowNode) => {
14488
- // node.setExpanded(this.isExpanded);
14489
- // });
14490
14529
  }
14491
14530
  autoFitGrid(type) {
14492
14531
  this.gridService.fitGrid(type);
@@ -14580,7 +14619,7 @@ DatoGridPaginationV2Component = __decorate([
14580
14619
  Component({
14581
14620
  selector: 'dato-grid-pagination-v2',
14582
14621
  changeDetection: ChangeDetectionStrategy.OnPush,
14583
- template: "<div class=\"d-flex-row d-flex-auto d-flex-wrap container\" [class.small]=\"smallVersion\"\n [attr.data-pages-count]=\"totalPages\"\n [attr.data-current-page]=\"pageNumbersDisplay.currentPage\"\n [attr.data-page-size]=\"rowsPerPage\"\n [attr.data-rows-count]=\"rowCount\">\n <div *ngIf=\"totalPages > 1\" #navigation\n class=\"navigation d-flex-row d-flex-0-0-auto align-center\">\n\n <!-- First Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"mr-4\" data-auto-id=\"pagiantion-first-page\"\n icon=\"chevron-left-double\"\n datoType=\"secondary\"\n datoSize=\"md\"\n [disabled]=\"prevPageDisabled\"\n (click)=\"navigateFirstPage()\">\n </dato-icon-button>\n\n <!-- Previous Page -->\n <dato-icon-button icon=\"arrow-left\" datoType=\"secondary\" datoSize=\"md\"\n [disabled]=\"prevPageDisabled\" data-auto-id=\"pagiantion-previous-page\"\n (click)=\"navigatePrevPage()\">\n </dato-icon-button>\n\n\n <div class=\"d-flex mx-5 align-center number-container\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-previous-batch\"\n *ngIf=\"pageNumbersDisplay.showFirstEllipsis && !smallVersion\"\n (click)=\"showPreviousBatch()\">...\n </dato-link>\n <dato-link class=\"page-number mx-5\" [datoType]=\"page === pageNumbersDisplay.currentPage ? 'primary' : 'secondary'\" datoSize=\"sm\"\n *ngFor=\"let page of pageNumbersDisplay.pages; index as i; trackBy: trackByPage;\" [attr.data-auto-id]=\"'pagiantion-page-' + i\"\n (click)=\"navigatePage(page - 1)\">\n {{page}}\n </dato-link>\n\n <div class=\"d-flex\" *ngIf=\"pageNumbersDisplay.showLastPage && !smallVersion\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-next-batch\"\n (click)=\"showNextBatch()\">...</dato-link>\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\"\n [attr.data-auto-id]=\"'pagiantion-page-' + totalPages\"\n (click)=\"navigatePage(totalPages - 1)\">\n {{totalPages}}\n </dato-link>\n </div>\n\n </div>\n\n <!-- Next Page -->\n <dato-icon-button icon=\"arrow-right\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"navigateNextPage()\" data-auto-id=\"pagiantion-next-page\"\n [disabled]=\"nextPageDisabled\">\n </dato-icon-button>\n\n <!-- Last Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"ml-4\" icon=\"chevron-right-double\"\n datoType=\"secondary\" datoSize=\"md\" data-auto-id=\"pagiantion-last-page\"\n [disabled]=\"nextPageDisabled\"\n (click)=\"navigatePage(totalPages - 1)\">\n </dato-icon-button>\n\n </div>\n\n <div *ngIf=\"totalPages > 1 && !smallVersion\"\n class=\"separator mx-10 my-auto primary-100-background-color\">\n </div>\n\n <div class=\"total d-flex-0-0-auto d-flex-row align-center\">\n <span class=\"dato-note primary-300-color\">{{rowsRange}}</span>\n </div>\n\n <div *ngIf=\"showBottomControls\" class=\"grid-controls d-flex d-flex-1 justify-end\">\n <dato-icon-button [icon]=\"isExpanded ? 'collapse' : 'expand'\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"toggleGroupsState()\" data-auto-id=\"pagiantion-expand-collapse\"\n [datoTooltipV2]=\"isExpanded ? 'core.collapse-rows' : 'core.expand-rows'\">\n </dato-icon-button>\n\n <dato-icon-button class=\"mx-4\" icon=\"maximize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('content')\" [datoTooltipV2]=\"'core.fit-to-content'\"\n data-auto-id=\"pagiantion-fit-to-content\">\n </dato-icon-button>\n\n <dato-icon-button icon=\"minimize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('container')\" [datoTooltipV2]=\"'core.fit-to-container'\"\n data-auto-id=\"pagiantion-fit-to-container\">\n </dato-icon-button>\n </div>\n</div>\n",
14622
+ template: "<div class=\"d-flex-row d-flex-auto d-flex-wrap container\" [class.small]=\"smallVersion\"\n [attr.data-pages-count]=\"totalPages\"\n [attr.data-current-page]=\"pageNumbersDisplay.currentPage\"\n [attr.data-page-size]=\"rowsPerPage\"\n [attr.data-rows-count]=\"rowCount\">\n <div *ngIf=\"totalPages > 1\" #navigation\n class=\"navigation d-flex-row d-flex-0-0-auto align-center\">\n\n <!-- First Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"mr-4\" data-auto-id=\"pagiantion-first-page\"\n icon=\"chevron-left-double\"\n datoType=\"secondary\"\n datoSize=\"md\"\n [disabled]=\"prevPageDisabled\"\n (click)=\"navigateFirstPage()\">\n </dato-icon-button>\n\n <!-- Previous Page -->\n <dato-icon-button icon=\"arrow-left\" datoType=\"secondary\" datoSize=\"md\"\n [disabled]=\"prevPageDisabled\" data-auto-id=\"pagiantion-previous-page\"\n (click)=\"navigatePrevPage()\">\n </dato-icon-button>\n\n\n <div class=\"d-flex mx-5 align-center number-container\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-previous-batch\"\n *ngIf=\"pageNumbersDisplay.showFirstEllipsis && !smallVersion\"\n (click)=\"showPreviousBatch()\">...\n </dato-link>\n <dato-link class=\"page-number mx-5\" [datoType]=\"page === pageNumbersDisplay.currentPage ? 'primary' : 'secondary'\" datoSize=\"sm\"\n *ngFor=\"let page of pageNumbersDisplay.pages; index as i; trackBy: trackByPage;\" [attr.data-auto-id]=\"'pagiantion-page-' + i\"\n (click)=\"navigatePage(page - 1)\">\n {{page}}\n </dato-link>\n\n <div class=\"d-flex\" *ngIf=\"pageNumbersDisplay.showLastPage && !smallVersion\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-next-batch\"\n (click)=\"showNextBatch()\">...</dato-link>\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\"\n [attr.data-auto-id]=\"'pagiantion-page-' + totalPages\"\n (click)=\"navigatePage(totalPages - 1)\">\n {{totalPages}}\n </dato-link>\n </div>\n\n </div>\n\n <!-- Next Page -->\n <dato-icon-button icon=\"arrow-right\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"navigateNextPage()\" data-auto-id=\"pagiantion-next-page\"\n [disabled]=\"nextPageDisabled\">\n </dato-icon-button>\n\n <!-- Last Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"ml-4\" icon=\"chevron-right-double\"\n datoType=\"secondary\" datoSize=\"md\" data-auto-id=\"pagiantion-last-page\"\n [disabled]=\"nextPageDisabled\"\n (click)=\"navigatePage(totalPages - 1)\">\n </dato-icon-button>\n\n </div>\n\n <div *ngIf=\"totalPages > 1 && !smallVersion\"\n class=\"separator mx-10 my-auto primary-100-background-color\">\n </div>\n\n <div class=\"total d-flex-0-0-auto d-flex-row align-center\">\n <span class=\"dato-note primary-300-color\">{{rowsRange}}</span>\n </div>\n\n <div *ngIf=\"showBottomControls\" class=\"grid-controls d-flex d-flex-1 justify-end\">\n <dato-icon-button *ngIf=\"hasRowGroupColumns\" [icon]=\"isExpanded ? 'collapse' : 'expand'\" datoType=\"secondary\"\n datoSize=\"md\" (click)=\"toggleGroupsState()\" data-auto-id=\"pagination-expand-collapse\"\n [datoTooltipV2]=\"isExpanded ? 'core.collapse-rows' : 'core.expand-rows'\">\n </dato-icon-button>\n\n <dato-icon-button class=\"mx-4\" icon=\"maximize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('content')\" [datoTooltipV2]=\"'core.fit-to-content'\"\n data-auto-id=\"pagination-fit-to-content\">\n </dato-icon-button>\n\n <dato-icon-button icon=\"minimize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('container')\" [datoTooltipV2]=\"'core.fit-to-container'\"\n data-auto-id=\"pagination-fit-to-container\">\n </dato-icon-button>\n </div>\n</div>\n",
14584
14623
  providers: [DecimalPipe],
14585
14624
  styles: [":host{padding:12px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-height:25px}:host .container{height:25px}:host .navigation .page-number{transition:color .3s ease-in-out}:host .navigation .page-number:first-of-type{margin-left:7px}:host .navigation .page-number:last-of-type{margin-right:7px}:host .separator{width:1px;height:25px}:host .container.small .navigation,:host .container.small .total{margin-top:8px;margin-left:auto;margin-right:auto}"]
14586
14625
  }),
@@ -14754,12 +14793,6 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
14754
14793
  this.registerGroupListeners();
14755
14794
  this.subscribeRowsSelectionData();
14756
14795
  }
14757
- getCellValueChangeEvent() {
14758
- return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.cellValueChanged.pipe(debounceTime(100), untilDestroyed(this)));
14759
- }
14760
- getRowDataUpdatedEvent() {
14761
- return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.rowDataUpdated.pipe(debounceTime(100), untilDestroyed(this)));
14762
- }
14763
14796
  onActionClick(action) {
14764
14797
  if (isFunction(action.onClick)) {
14765
14798
  const selectedRowsCount = this.gridController.gridQuery.getSelectedRowsCount();
@@ -18827,39 +18860,6 @@ DatoEditableHeaderModule = __decorate([
18827
18860
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
18828
18861
  */
18829
18862
 
18830
- let RichTextService = class RichTextService {
18831
- constructor(http, config) {
18832
- this.http = http;
18833
- this.config = config;
18834
- }
18835
- getLib(appendScriptFunc, appendStyleFunc) {
18836
- if (!this.richTextScript$) {
18837
- this.initLib(appendScriptFunc, appendStyleFunc);
18838
- }
18839
- return this.richTextScript$;
18840
- }
18841
- initLib(appendScriptFunc, appendStyleFunc) {
18842
- this.richTextScript$ = combineLatest([
18843
- this.http
18844
- .get(`${this.config.paths.richText}/index.js`, { responseType: 'text' })
18845
- .pipe(tap(lib => appendScriptFunc(lib, 'rich-text-editor'))),
18846
- this.http
18847
- .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
18848
- .pipe(tap(style => appendStyleFunc(style, 'tinymce-autocomplete')))
18849
- ]).pipe(shareReplay(1));
18850
- }
18851
- };
18852
- RichTextService.ctorParameters = () => [
18853
- { type: HttpClient },
18854
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
18855
- ];
18856
- RichTextService.ɵprov = ɵɵdefineInjectable({ factory: function RichTextService_Factory() { return new RichTextService(ɵɵinject(HttpClient), ɵɵinject(DATO_CORE_CONFIG)); }, token: RichTextService, providedIn: "root" });
18857
- RichTextService = __decorate([
18858
- Injectable({ providedIn: 'root' }),
18859
- __param(1, Inject(DATO_CORE_CONFIG)),
18860
- __metadata("design:paramtypes", [HttpClient, Object])
18861
- ], RichTextService);
18862
-
18863
18863
  /**
18864
18864
  * @license
18865
18865
  * Copyright Datorama. All Rights Reserved.
@@ -18873,12 +18873,12 @@ const getTinymce = () => {
18873
18873
  };
18874
18874
  const ɵ0$3 = getTinymce;
18875
18875
  let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirective extends BaseCustomControl {
18876
- constructor(ngZone, richTextService, config, host) {
18876
+ constructor(ngZone, http, host, config) {
18877
18877
  super();
18878
18878
  this.ngZone = ngZone;
18879
- this.richTextService = richTextService;
18880
- this.config = config;
18879
+ this.http = http;
18881
18880
  this.host = host;
18881
+ this.config = config;
18882
18882
  this.autocompleteOptions = {};
18883
18883
  this.forcePlainTextPasting = false;
18884
18884
  this.format = 'html';
@@ -18905,11 +18905,28 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
18905
18905
  base: this.config.paths.richText,
18906
18906
  query: ''
18907
18907
  };
18908
- this.richTextService
18909
- .getLib(appendScript, appendStyle)
18910
- .pipe(untilDestroyed(this))
18911
- .subscribe(() => {
18908
+ /**
18909
+ * We support only one instance in load time
18910
+ */
18911
+ if (window.tinymce) {
18912
18912
  this.init.call(this);
18913
+ }
18914
+ else {
18915
+ this.loadLib().subscribe(lib => {
18916
+ appendScript(lib, 'rich-text-editor');
18917
+ this.init.call(this);
18918
+ this.loadAutoCompleteStyle();
18919
+ });
18920
+ }
18921
+ }
18922
+ loadLib() {
18923
+ return this.http.get(`${this.config.paths.richText}/index.js`, { responseType: 'text' });
18924
+ }
18925
+ loadAutoCompleteStyle() {
18926
+ this.http
18927
+ .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
18928
+ .subscribe(style => {
18929
+ appendStyle(style, 'tinymce-autocomplete');
18913
18930
  });
18914
18931
  }
18915
18932
  initEditor(_, editor) {
@@ -19010,9 +19027,9 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
19010
19027
  };
19011
19028
  DatoRichTextDirective.ctorParameters = () => [
19012
19029
  { type: NgZone },
19013
- { type: RichTextService },
19014
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] },
19015
- { type: ElementRef }
19030
+ { type: HttpClient },
19031
+ { type: ElementRef },
19032
+ { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
19016
19033
  ];
19017
19034
  __decorate([
19018
19035
  Input(),
@@ -19078,9 +19095,10 @@ DatoRichTextDirective = DatoRichTextDirective_1 = __decorate([
19078
19095
  }
19079
19096
  ]
19080
19097
  }),
19081
- __param(2, Inject(DATO_CORE_CONFIG)),
19098
+ __param(3, Inject(DATO_CORE_CONFIG)),
19082
19099
  __metadata("design:paramtypes", [NgZone,
19083
- RichTextService, Object, ElementRef])
19100
+ HttpClient,
19101
+ ElementRef, Object])
19084
19102
  ], DatoRichTextDirective);
19085
19103
 
19086
19104
  /**
@@ -21361,9 +21379,7 @@ let DatoBreadcrumbsComponent = class DatoBreadcrumbsComponent {
21361
21379
  this._breadcrumbs = [...start, ...dots, ...end];
21362
21380
  }
21363
21381
  initEditableHeader() {
21364
- this.headerControl.valueChanges
21365
- .pipe(debounceTime(300), untilDestroyed(this))
21366
- .subscribe((res) => {
21382
+ this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe((res) => {
21367
21383
  this.updateEditableText.emit(res);
21368
21384
  this.cdr.detectChanges();
21369
21385
  });
@@ -21986,22 +22002,17 @@ DatoPillsModule = __decorate([
21986
22002
  ], DatoPillsModule);
21987
22003
 
21988
22004
  let DatoProgressBarComponent = class DatoProgressBarComponent {
21989
- constructor() {
22005
+ constructor(cdr) {
22006
+ this.cdr = cdr;
21990
22007
  this.barColor = 'primary-100';
21991
22008
  this.thresholds = [33, 66];
21992
22009
  }
21993
22010
  ngOnInit() {
21994
- if (!this.parts && this.percent) {
21995
- if (!this.color) {
21996
- this.initColor();
21997
- }
21998
- this.parts = [
21999
- {
22000
- percent: this.percent,
22001
- color: this.color,
22002
- tooltip: this.tooltip
22003
- }
22004
- ];
22011
+ if (!this.parts) {
22012
+ this.percent = this.percent || 0;
22013
+ this.isByPercent = true;
22014
+ this.hasInitialColor = !!this.color;
22015
+ this.initSinglePart();
22005
22016
  }
22006
22017
  else if (this.parts &&
22007
22018
  this.parts.every((part) => part.weight >= 0) &&
@@ -22009,6 +22020,27 @@ let DatoProgressBarComponent = class DatoProgressBarComponent {
22009
22020
  this.initPartsPercent();
22010
22021
  }
22011
22022
  }
22023
+ ngOnChanges(changes) {
22024
+ if (this.isByPercent &&
22025
+ ((changes.percent && !changes.percent.firstChange) ||
22026
+ (changes.color && !changes.color.firstChange) ||
22027
+ (changes.tooltip && !changes.tooltip.firstChange))) {
22028
+ this.initSinglePart();
22029
+ this.cdr.detectChanges();
22030
+ }
22031
+ }
22032
+ initSinglePart() {
22033
+ if (!this.color || !this.hasInitialColor) {
22034
+ this.initColor();
22035
+ }
22036
+ this.parts = [
22037
+ {
22038
+ percent: this.percent,
22039
+ color: this.color,
22040
+ tooltip: this.tooltip
22041
+ }
22042
+ ];
22043
+ }
22012
22044
  initColor() {
22013
22045
  if (isEmpty(this.thresholds)) {
22014
22046
  this.color = 'accent-400';
@@ -22050,6 +22082,9 @@ let DatoProgressBarComponent = class DatoProgressBarComponent {
22050
22082
  }
22051
22083
  }
22052
22084
  };
22085
+ DatoProgressBarComponent.ctorParameters = () => [
22086
+ { type: ChangeDetectorRef }
22087
+ ];
22053
22088
  __decorate([
22054
22089
  Input(),
22055
22090
  __metadata("design:type", String)
@@ -22085,11 +22120,12 @@ __decorate([
22085
22120
  DatoProgressBarComponent = __decorate([
22086
22121
  Component({
22087
22122
  selector: 'dato-progress-bar',
22088
- template: "<div class=\"bar d-flex width-100 overflow-hidden\"\n [style.width]=\"width\"\n [class]=\"barColor + '-background-color'\">\n <div *ngFor=\"let part of parts; index as i\"\n class=\"part height-100\"\n [ngClass]=\"part.color ? part.color + '-background-color' : ''\"\n [style.width]=\"i > 0 ? 'calc(' + part.percent + '% + 8px)' : part.percent + '%'\"\n [style.z-index]=\"100 - i\"\n [datoTooltipV2]=\"part.tooltip\">\n </div>\n</div>\n\n<div *ngIf=\"showLegend\" class=\"d-flex mt-12\">\n <div *ngFor=\"let part of parts; index as i\" class=\"d-flex mr-16\">\n <div class=\"d-flex dato-note primary-400-color\">\n <div class=\"legend-color mr-6\" [ngClass]=\"part.color ? part.color + '-background-color' : ''\"></div>\n <div>{{ part.legendLabel || part.tooltip }}</div>\n </div>\n </div>\n</div>\n",
22123
+ template: "<div class=\"bar d-flex width-100 overflow-hidden\"\n [style.width]=\"width\"\n [class]=\"barColor + '-background-color'\">\n <div *ngFor=\"let part of parts; index as i\"\n class=\"part height-100\"\n [ngClass]=\"part.color ? part.color + '-background-color' : ''\"\n [style.width]=\"i > 0 ? 'calc(' + part.percent + '% + 8px)' : part.percent + '%'\"\n [style.z-index]=\"100 - i\"\n [datoTooltipV2]=\"part.tooltip\">\n </div>\n</div>\n\n<ng-content></ng-content>\n\n<div *ngIf=\"showLegend\" class=\"d-flex mt-12\">\n <div *ngFor=\"let part of parts; index as i\" class=\"d-flex mr-16\">\n <div class=\"d-flex dato-note primary-400-color\">\n <div class=\"legend-color mr-6\" [ngClass]=\"part.color ? part.color + '-background-color' : ''\"></div>\n <div>{{ part.legendLabel || part.tooltip }}</div>\n </div>\n </div>\n</div>\n",
22089
22124
  changeDetection: ChangeDetectionStrategy.OnPush,
22090
22125
  encapsulation: ViewEncapsulation.None,
22091
22126
  styles: ["dato-progress-bar .bar{height:8px;border-radius:4px}dato-progress-bar .part{border-radius:0 4px 4px 0}dato-progress-bar .part:not(:first-child){margin-left:-8px}dato-progress-bar .legend-color{width:16px;height:16px;min-width:16px;border-radius:50%}"]
22092
- })
22127
+ }),
22128
+ __metadata("design:paramtypes", [ChangeDetectorRef])
22093
22129
  ], DatoProgressBarComponent);
22094
22130
 
22095
22131
  const declarations$4 = [DatoProgressBarComponent];
@@ -22608,7 +22644,7 @@ function fixNgLeaks() {
22608
22644
  };
22609
22645
  }
22610
22646
 
22611
- window.coreVersion = '22.1.1-rc.';
22647
+ window.coreVersion = '22.2.4';
22612
22648
 
22613
22649
  /**
22614
22650
  * @license
@@ -22622,5 +22658,5 @@ window.coreVersion = '22.1.1-rc.';
22622
22658
  * Generated bundle index. Do not edit.
22623
22659
  */
22624
22660
 
22625
- 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, 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, 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, copyToClipboard, 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, reject, relativeDateTypes, removeClass, resolveRange, round, searchHighlightCellRenderer, searchResultsGroupSort, searchResultsSort, setAttr, setAttribute, setDimensions, setEmptyFolderClass, setGridConfiguration, setGridModel, setMaxDimensions, setMinDimensions, setStyle, setStyles, 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, 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, RichTextService as ɵo };
22661
+ 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, 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, 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, copyToClipboard, 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, reject, relativeDateTypes, removeClass, resolveRange, round, searchHighlightCellRenderer, searchResultsGroupSort, searchResultsSort, setAttr, setAttribute, setDimensions, setEmptyFolderClass, setGridConfiguration, setGridModel, setMaxDimensions, setMinDimensions, setStyle, setStyles, 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, 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 };
22626
22662
  //# sourceMappingURL=datorama-core.js.map