@datorama/core 21.4.0-rc.9 → 22.0.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 (54) hide show
  1. package/bundle.scss +2 -2
  2. package/bundles/datorama-core.umd.js +148 -138
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +15 -15
  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 +5 -5
  12. package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +9 -9
  13. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +28 -16
  14. package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
  15. package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +2 -2
  16. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  17. package/esm2015/lib/grid-v2/grid-store/grid.query.js +11 -8
  18. package/esm2015/lib/grid-v2/grid-store/grid.service.js +28 -16
  19. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
  20. package/esm2015/lib/rich-text/rich-text.directive.js +33 -15
  21. package/esm2015/lib/select/select.component.js +10 -5
  22. package/esm2015/lib/version.js +2 -2
  23. package/esm5/datorama-core.js +1 -2
  24. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  25. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  26. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +5 -5
  27. package/esm5/lib/grid-v2/grid-filter/filter-validator.js +12 -9
  28. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +28 -16
  29. package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
  30. package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +2 -2
  31. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  32. package/esm5/lib/grid-v2/grid-store/grid.query.js +15 -12
  33. package/esm5/lib/grid-v2/grid-store/grid.service.js +49 -31
  34. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
  35. package/esm5/lib/rich-text/rich-text.directive.js +34 -16
  36. package/esm5/lib/select/select.component.js +10 -5
  37. package/esm5/lib/version.js +2 -2
  38. package/fesm2015/datorama-core.js +120 -111
  39. package/fesm2015/datorama-core.js.map +1 -1
  40. package/fesm5/datorama-core.js +149 -138
  41. package/fesm5/datorama-core.js.map +1 -1
  42. package/lib/grid-v2/grid/grid-v2.types.d.ts +0 -1
  43. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +3 -2
  44. package/lib/grid-v2/grid-filter/filter-validator.d.ts +4 -3
  45. package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +3 -2
  46. package/lib/grid-v2/grid-settings.d.ts +2 -2
  47. package/lib/grid-v2/grid-store/grid.query.d.ts +3 -2
  48. package/lib/grid-v2/grid-store/grid.service.d.ts +4 -3
  49. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
  50. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  51. package/package.json +1 -1
  52. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  53. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  54. 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,11 +10099,10 @@ 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 secondaryColumns = this.api.columns.getSecondaryColumns();
10098
- const pivotedColumn = secondaryColumns && secondaryColumns.find(col => col.getColId() === colId);
10102
+ const pivotedColumn = this.getSecondaryColumn(colId);
10099
10103
  if (pivotedColumn) {
10100
- const uniquePivotParents = uniq(secondaryColumns.map(column => column.getParent()));
10101
- const secondaryColumn = secondaryColumns.find(col => col.getColId() === pivotedColumn.getColId());
10104
+ const uniquePivotParents = uniq(this.api.columns.getSecondaryColumns().map(column => column.getParent()));
10105
+ const secondaryColumn = this.getSecondaryColumn(pivotedColumn.getColId());
10102
10106
  const pivotColIndex = uniquePivotParents.indexOf(secondaryColumn.getParent());
10103
10107
  return { colId: getColField(pivotedColumn.getColDef()), sort, pivotColIndex };
10104
10108
  }
@@ -10135,9 +10139,9 @@ let GridQuery = class GridQuery extends Query {
10135
10139
  filterChanged() {
10136
10140
  return this.selectFilter().pipe(map$1(filter => {
10137
10141
  return Object.keys(filter).reduce((filters, field) => {
10138
- if (filter[field]) {
10139
- const { conditional, pivotFieldsMap } = filter[field];
10140
- filters.push({ field, filter: conditional, pivotFieldsMap });
10142
+ const datoFilter = filter[field];
10143
+ if (datoFilter) {
10144
+ filters.push({ field, filter: datoFilter });
10141
10145
  }
10142
10146
  return filters;
10143
10147
  }, []);
@@ -10203,6 +10207,10 @@ let GridQuery = class GridQuery extends Query {
10203
10207
  selectIsSelectAllRowsEnabled() {
10204
10208
  return this.select(state => state.serverSidePagination.selectAllRowsEnabled);
10205
10209
  }
10210
+ getSecondaryColumn(colId) {
10211
+ const secondaryColumns = this.api.columns.getSecondaryColumns();
10212
+ return secondaryColumns && secondaryColumns.find(col => col.getColId() === colId);
10213
+ }
10206
10214
  filterCheckboxSelectionColumn(columns) {
10207
10215
  return columns.filter((column) => !column.getUserProvidedColDef() || !column.getUserProvidedColDef().checkboxSelection);
10208
10216
  }
@@ -10312,8 +10320,8 @@ function validateStringCondition(rowValue, { condition, value: filterValue }) {
10312
10320
  return !isEmpty(valueLowerCase);
10313
10321
  }
10314
10322
  }
10315
- function validateNumberCondition(unparsedRowValue, { condition, value, rangeEnd }) {
10316
- const rowValue = !!unparsedRowValue ? parseFloat(unparsedRowValue) : null;
10323
+ function validateNumberCondition(unparsedRowValue, { condition, value, rangeEnd }, filterKey = '') {
10324
+ const rowValue = !!unparsedRowValue ? parseFloat(unparsedRowValue[filterKey] || unparsedRowValue) : null;
10317
10325
  const filterValue = parseFloat(value);
10318
10326
  switch (condition) {
10319
10327
  case DatoFilterConditions.EQUALS:
@@ -10359,14 +10367,14 @@ function validateDateCondition(rowValue, { condition, value, rangeEnd }) {
10359
10367
  return !isNil(rowValue);
10360
10368
  }
10361
10369
  }
10362
- function validateCondition({ rowValue, filter, type }) {
10370
+ function validateCondition({ rowValue, condition, type, filterKey }) {
10363
10371
  switch (type) {
10364
10372
  case DatoGridFilterTypes.Date:
10365
- return validateDateCondition(rowValue, filter);
10373
+ return validateDateCondition(rowValue, condition);
10366
10374
  case DatoGridFilterTypes.Number:
10367
- return validateNumberCondition(rowValue, filter);
10375
+ return validateNumberCondition(rowValue, condition, filterKey);
10368
10376
  default:
10369
- return validateStringCondition(rowValue, filter);
10377
+ return validateStringCondition(rowValue, condition);
10370
10378
  }
10371
10379
  }
10372
10380
  function validateFilter({ row, api }, activeFilters) {
@@ -10375,7 +10383,7 @@ function validateFilter({ row, api }, activeFilters) {
10375
10383
  for (const filter of orderedFilters) {
10376
10384
  let filterPasses = true;
10377
10385
  const { byValue, conditional, pivotKeys } = activeFilters[filter];
10378
- const currentRowPivotKeys = row.parent.childrenMapped && getRowPivotKeys(row.parent.childrenMapped);
10386
+ const currentRowPivotKeys = (row.parent && row.parent.childrenMapped && getRowPivotKeys(row.parent.childrenMapped)) || [];
10379
10387
  const rowValue = api.getValue(filter, row);
10380
10388
  /** If value is under a pivoted column but doesn't match the filter pivot */
10381
10389
  if (pivotKeys && pivotKeys.length > 0 && !isArrayValuesEqual(pivotKeys, currentRowPivotKeys)) {
@@ -10384,7 +10392,7 @@ function validateFilter({ row, api }, activeFilters) {
10384
10392
  if (conditional) {
10385
10393
  const { operator, conditions, type } = conditional;
10386
10394
  const conditionsRelation = operator === OperatorTypes.AND ? 'every' : 'some';
10387
- filterPasses = conditions[conditionsRelation](filter => validateCondition({ rowValue, filter, type: type }));
10395
+ filterPasses = conditions[conditionsRelation](condition => validateCondition({ rowValue, condition, type: type, filterKey: filter }));
10388
10396
  }
10389
10397
  if (filterPasses && byValue) {
10390
10398
  const includesValue = byValue.values.includes(rowValue);
@@ -10479,7 +10487,7 @@ function toolbarActionToContextAction(params) {
10479
10487
  return contextActions;
10480
10488
  }
10481
10489
 
10482
- const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_AP');
10490
+ const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_API');
10483
10491
 
10484
10492
  const defaultEditableColumnRenderer = params => params && params.value ? `<div class="value-wrapper ellipsis">${params.value}</div>` : null;
10485
10493
  const editableCellRendererWithSearchHighlight = (params, searchTerm) => {
@@ -11120,10 +11128,10 @@ const mapToValue = ({ value }) => value;
11120
11128
  const ɵ0$1 = mapToValue;
11121
11129
  const mapToListItem = val => ({ id: val, label: isNil(val) ? `(Empty)` : `${val}`.trim(), value: val });
11122
11130
  const ɵ1$1 = mapToListItem;
11123
- const mapToListItemWithFormatted = ({ value, formattedValue }) => ({
11124
- id: value,
11125
- label: isNil(formattedValue) ? `(Empty)` : `${formattedValue}`.trim(),
11126
- value
11131
+ const mapToListItemWithFormatted = ({ value, formattedValue }, key) => ({
11132
+ id: key && value ? value[key] : value,
11133
+ label: isNil(formattedValue) ? `(Empty)` : `${key ? formattedValue[key] : formattedValue}`.trim(),
11134
+ value: key && value ? value[key] : value
11127
11135
  });
11128
11136
  const ɵ2$1 = mapToListItemWithFormatted;
11129
11137
  let DatoGridFilterComponent = class DatoGridFilterComponent {
@@ -11209,15 +11217,18 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11209
11217
  ngOnInit() {
11210
11218
  const { gridService, gridQuery } = this.popover.data;
11211
11219
  const { filter, filtersConfig = {}, pivotValueColumn, pivotKeys } = this.colDef;
11220
+ const colDefs = gridQuery.api.columns.getAllColumns().map(column => column.getColDef());
11212
11221
  this.colField = getColField(this.colDef);
11222
+ const colDef = colDefs.find(colDef => colDef.field === this.colField);
11223
+ const colFilter = filter || colDef.filter;
11224
+ const filterOptions = DatoGridFilterOptionsMap[colFilter];
11213
11225
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
11214
11226
  if (filtersConfig.sections) {
11215
11227
  this.filterSections = { [filtersConfig.sections]: true };
11216
11228
  }
11217
11229
  this.keepPredefinedListOriginalOrder =
11218
11230
  filtersConfig.keepPredefinedListOriginalOrder && !isEmpty(filtersConfig.predefinedListValues);
11219
- const filterOptions = DatoGridFilterOptionsMap[filter];
11220
- this.filterType = filterOptions ? filter : DatoGridFilterTypes.String;
11231
+ this.filterType = filterOptions ? colFilter : DatoGridFilterTypes.String;
11221
11232
  this.listLabelType = this.filterType.toLowerCase();
11222
11233
  this.listSortByKey = this.filterType === DatoGridFilterTypes.Number && this.colDef.valueFormatter ? 'id' : 'label';
11223
11234
  this.gridQuery = gridQuery;
@@ -11250,8 +11261,10 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11250
11261
  }
11251
11262
  else {
11252
11263
  const columnValues = this.getColumnValues();
11253
- this.columnValues = columnValues.map(({ value }) => value);
11254
- this.listOptions = columnValues.map(mapToListItemWithFormatted);
11264
+ this.columnValues = columnValues.map(({ value }) => {
11265
+ return !isNil(this.pivotColumn) && value ? value[this.colField] : value;
11266
+ });
11267
+ this.listOptions = columnValues.map(colValue => mapToListItemWithFormatted(colValue, !isNil(this.pivotColumn) && this.colField));
11255
11268
  }
11256
11269
  }
11257
11270
  else {
@@ -11289,6 +11302,7 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11289
11302
  isEmpty(filter)
11290
11303
  ? this.gridService.clearColumnFilter(this.colField)
11291
11304
  : this.gridService.setColumnFilter(column, filter);
11305
+ this.gridService.notifyFilterUpdate();
11292
11306
  }
11293
11307
  }
11294
11308
  clearFilters() {
@@ -11334,19 +11348,25 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11334
11348
  buildFilter() {
11335
11349
  const { byValue, conditional } = this.filterForm.value;
11336
11350
  const filter = {};
11337
- filter.pivotKeys = this.pivotKeys;
11338
- if (this.pivotColumn) {
11339
- filter.pivotFieldsMap = this.getPivotFields(this.pivotColumn.getParent()).reduce((fieldMap, field, index) => {
11340
- fieldMap[field] = this.pivotKeys[index];
11341
- return fieldMap;
11342
- }, {});
11343
- }
11344
11351
  if (this.filterSections.Conditional) {
11345
11352
  this.setConditionalFilter(filter, conditional);
11346
11353
  }
11347
11354
  if (this.filterSections.By_Value) {
11348
11355
  this.setByValueFilter(filter, byValue);
11349
11356
  }
11357
+ /** If filters applied, add the extra properties to be used by pivot mode */
11358
+ if (filter.byValue || filter.conditional) {
11359
+ filter.colId = this.colDef.colId;
11360
+ filter.pivotKeys = this.pivotKeys;
11361
+ if (this.pivotColumn) {
11362
+ filter.pivotFieldsMap = this.getPivotFields(this.pivotColumn.getParent()).reduce((fieldMap, field, index) => {
11363
+ if (this.pivotKeys[index]) {
11364
+ fieldMap[field] = this.pivotKeys[index];
11365
+ }
11366
+ return fieldMap;
11367
+ }, {});
11368
+ }
11369
+ }
11350
11370
  return filter;
11351
11371
  }
11352
11372
  initForm() {
@@ -12630,19 +12650,39 @@ let GridService = class GridService {
12630
12650
  });
12631
12651
  this.notifyFilterUpdate();
12632
12652
  }
12633
- setColumnFilter(column, filter) {
12653
+ setColumnFilter(column, filter, notifyGrid = true) {
12634
12654
  this._logEvent("Grids - Filter Applied" /* GRID_FILTER_APPLIED */, {
12635
12655
  column: column.getColId(),
12636
12656
  numOfConditions: (filter.conditional && filter.conditional.conditions.length) || 0,
12637
12657
  byValue: !!filter.byValue ? 'Yes' : 'No'
12638
12658
  });
12659
+ this.updateFilter(column, filter);
12660
+ if (notifyGrid) {
12661
+ this.notifyFilterUpdate();
12662
+ }
12663
+ }
12664
+ setGridFilters(filters) {
12665
+ if (this.api) {
12666
+ for (const { filter } of filters) {
12667
+ const column = this.api.columns.getColumn(filter.colId);
12668
+ if (column) {
12669
+ this.setColumnFilter(column, filter);
12670
+ }
12671
+ else {
12672
+ const pivotColumn = this.gridQuery.getSecondaryColumn(filter.colId);
12673
+ this.setColumnFilter(pivotColumn, filter);
12674
+ }
12675
+ }
12676
+ this.notifyFilterUpdate();
12677
+ }
12678
+ }
12679
+ updateFilter(column, filter) {
12639
12680
  const colField = getColField(column.getColDef());
12640
12681
  this.store.update(state => {
12641
12682
  return {
12642
12683
  settings: Object.assign(Object.assign({}, state.settings), { filter: Object.assign(Object.assign({}, state.settings.filter), { [colField]: filter }) })
12643
12684
  };
12644
12685
  });
12645
- this.notifyFilterUpdate();
12646
12686
  }
12647
12687
  setSearchTerm(searchTerm) {
12648
12688
  this.store.update(state => {
@@ -12690,8 +12730,7 @@ let GridService = class GridService {
12690
12730
  this.updateSettings({ gridAlignment, columnsSizes: null });
12691
12731
  }
12692
12732
  saveSettingsToServer(settings) {
12693
- const isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
12694
- this.storageAPI.set(this.gridName, settings, isGlobal);
12733
+ this.storageAPI.set(this.gridName, settings);
12695
12734
  }
12696
12735
  /**
12697
12736
  * @internal used to log grid events to the platform's logging service
@@ -13097,19 +13136,12 @@ let GridService = class GridService {
13097
13136
  /**
13098
13137
  * When pivoting,
13099
13138
  * we add the field name to the column header class in order to access it through the auto generated pivot column.
13100
- * @private
13101
13139
  */
13102
13140
  initPivotSecondaryColsProcess({ gridOptions }) {
13103
13141
  gridOptions.processSecondaryColDef = colDef => {
13104
- const api = colDef.headerComponentParams && colDef.headerComponentParams.gridQuery.api;
13105
- if (api) {
13106
- const valueColumns = colDef.headerComponentParams.gridQuery.api.columns.getValueColumns();
13107
- const originalColDef = valueColumns
13108
- .map(({ userProvidedColDef }) => userProvidedColDef)
13109
- .find(({ colId }) => colId === colDef.pivotValueColumn.getColId());
13110
- if (originalColDef) {
13111
- colDef.filter = originalColDef.filter;
13112
- }
13142
+ const userProvidedColDef = colDef.pivotValueColumn && colDef.pivotValueColumn.getUserProvidedColDef();
13143
+ if (userProvidedColDef) {
13144
+ colDef.filter = userProvidedColDef.filter;
13113
13145
  }
13114
13146
  if (colDef.pivotKeys) {
13115
13147
  colDef.pivotKeys = colDef.pivotKeys.map(key => {
@@ -13125,7 +13157,7 @@ let GridService = class GridService {
13125
13157
  const { field, value } = parsedValue;
13126
13158
  colGroupDef.headerClass = [field];
13127
13159
  colGroupDef.headerName = value;
13128
- if (colGroupDef.children && colGroupDef.children.length > 1) {
13160
+ if (colGroupDef.children && colGroupDef.children.length > 0) {
13129
13161
  colGroupDef.headerClass.push('group-pivot-cell');
13130
13162
  }
13131
13163
  }
@@ -13600,10 +13632,7 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13600
13632
  .pipe(switchMap(() => {
13601
13633
  this.gridOptions = this.normalizeOptions();
13602
13634
  agGrid.gridOptions = this.gridOptions;
13603
- const isGlobal = this.gridOptions.isGlobalSettings;
13604
- const settingsLoader = this.gridOptions.saveSettings === false
13605
- ? of(null)
13606
- : this.storageAPI.get(this.gridOptions.gridName, isGlobal);
13635
+ const settingsLoader = this.gridOptions.saveSettings === false ? of(null) : this.storageAPI.get(this.gridOptions.gridName);
13607
13636
  return combineLatest([agGrid.gridReady, settingsLoader]);
13608
13637
  }), untilDestroyed(this))
13609
13638
  .subscribe(([{ api, columnApi }, savedSettings = {}]) => {
@@ -13646,6 +13675,9 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13646
13675
  setGridRows(data) {
13647
13676
  this.gridService.setRows(data);
13648
13677
  }
13678
+ setGridFilters(filters) {
13679
+ this.gridService.setGridFilters(filters);
13680
+ }
13649
13681
  onFilterChanged() {
13650
13682
  return this.gridQuery.filterChanged();
13651
13683
  }
@@ -14544,7 +14576,7 @@ DatoGridPaginationV2Component = __decorate([
14544
14576
  Component({
14545
14577
  selector: 'dato-grid-pagination-v2',
14546
14578
  changeDetection: ChangeDetectionStrategy.OnPush,
14547
- 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-next-page\">\n </dato-icon-button>\n\n <dato-icon-button class=\"mx-4\" icon=\"maximize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('container')\" data-auto-id=\"pagiantion-next-page\">\n </dato-icon-button>\n\n <dato-icon-button icon=\"minimize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('content')\" data-auto-id=\"pagiantion-next-page\">\n </dato-icon-button>\n </div>\n</div>\n",
14579
+ 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",
14548
14580
  providers: [DecimalPipe],
14549
14581
  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}"]
14550
14582
  }),
@@ -14717,12 +14749,6 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
14717
14749
  this.registerGroupListeners();
14718
14750
  this.subscribeRowsSelectionData();
14719
14751
  }
14720
- getCellValueChangeEvent() {
14721
- return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.cellValueChanged.pipe(debounceTime(100), untilDestroyed(this)));
14722
- }
14723
- getRowDataUpdatedEvent() {
14724
- return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.rowDataUpdated.pipe(debounceTime(100), untilDestroyed(this)));
14725
- }
14726
14752
  onActionClick(action) {
14727
14753
  if (isFunction(action.onClick)) {
14728
14754
  const selectedRowsCount = this.gridController.gridQuery.getSelectedRowsCount();
@@ -18786,39 +18812,6 @@ DatoEditableHeaderModule = __decorate([
18786
18812
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
18787
18813
  */
18788
18814
 
18789
- let RichTextService = class RichTextService {
18790
- constructor(http, config) {
18791
- this.http = http;
18792
- this.config = config;
18793
- }
18794
- getLib(appendScriptFunc, appendStyleFunc) {
18795
- if (!this.richTextScript$) {
18796
- this.initLib(appendScriptFunc, appendStyleFunc);
18797
- }
18798
- return this.richTextScript$;
18799
- }
18800
- initLib(appendScriptFunc, appendStyleFunc) {
18801
- this.richTextScript$ = combineLatest([
18802
- this.http
18803
- .get(`${this.config.paths.richText}/index.js`, { responseType: 'text' })
18804
- .pipe(tap(lib => appendScriptFunc(lib, 'rich-text-editor'))),
18805
- this.http
18806
- .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
18807
- .pipe(tap(style => appendStyleFunc(style, 'tinymce-autocomplete')))
18808
- ]).pipe(shareReplay(1));
18809
- }
18810
- };
18811
- RichTextService.ctorParameters = () => [
18812
- { type: HttpClient },
18813
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
18814
- ];
18815
- RichTextService.ɵprov = ɵɵdefineInjectable({ factory: function RichTextService_Factory() { return new RichTextService(ɵɵinject(HttpClient), ɵɵinject(DATO_CORE_CONFIG)); }, token: RichTextService, providedIn: "root" });
18816
- RichTextService = __decorate([
18817
- Injectable({ providedIn: 'root' }),
18818
- __param(1, Inject(DATO_CORE_CONFIG)),
18819
- __metadata("design:paramtypes", [HttpClient, Object])
18820
- ], RichTextService);
18821
-
18822
18815
  /**
18823
18816
  * @license
18824
18817
  * Copyright Datorama. All Rights Reserved.
@@ -18832,12 +18825,12 @@ const getTinymce = () => {
18832
18825
  };
18833
18826
  const ɵ0$3 = getTinymce;
18834
18827
  let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirective extends BaseCustomControl {
18835
- constructor(ngZone, richTextService, config, host) {
18828
+ constructor(ngZone, http, host, config) {
18836
18829
  super();
18837
18830
  this.ngZone = ngZone;
18838
- this.richTextService = richTextService;
18839
- this.config = config;
18831
+ this.http = http;
18840
18832
  this.host = host;
18833
+ this.config = config;
18841
18834
  this.autocompleteOptions = {};
18842
18835
  this.forcePlainTextPasting = false;
18843
18836
  this.format = 'html';
@@ -18864,11 +18857,28 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
18864
18857
  base: this.config.paths.richText,
18865
18858
  query: ''
18866
18859
  };
18867
- this.richTextService
18868
- .getLib(appendScript, appendStyle)
18869
- .pipe(untilDestroyed(this))
18870
- .subscribe(() => {
18860
+ /**
18861
+ * We support only one instance in load time
18862
+ */
18863
+ if (window.tinymce) {
18871
18864
  this.init.call(this);
18865
+ }
18866
+ else {
18867
+ this.loadLib().subscribe(lib => {
18868
+ appendScript(lib, 'rich-text-editor');
18869
+ this.init.call(this);
18870
+ this.loadAutoCompleteStyle();
18871
+ });
18872
+ }
18873
+ }
18874
+ loadLib() {
18875
+ return this.http.get(`${this.config.paths.richText}/index.js`, { responseType: 'text' });
18876
+ }
18877
+ loadAutoCompleteStyle() {
18878
+ this.http
18879
+ .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
18880
+ .subscribe(style => {
18881
+ appendStyle(style, 'tinymce-autocomplete');
18872
18882
  });
18873
18883
  }
18874
18884
  initEditor(_, editor) {
@@ -18969,9 +18979,9 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
18969
18979
  };
18970
18980
  DatoRichTextDirective.ctorParameters = () => [
18971
18981
  { type: NgZone },
18972
- { type: RichTextService },
18973
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] },
18974
- { type: ElementRef }
18982
+ { type: HttpClient },
18983
+ { type: ElementRef },
18984
+ { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
18975
18985
  ];
18976
18986
  __decorate([
18977
18987
  Input(),
@@ -19037,9 +19047,10 @@ DatoRichTextDirective = DatoRichTextDirective_1 = __decorate([
19037
19047
  }
19038
19048
  ]
19039
19049
  }),
19040
- __param(2, Inject(DATO_CORE_CONFIG)),
19050
+ __param(3, Inject(DATO_CORE_CONFIG)),
19041
19051
  __metadata("design:paramtypes", [NgZone,
19042
- RichTextService, Object, ElementRef])
19052
+ HttpClient,
19053
+ ElementRef, Object])
19043
19054
  ], DatoRichTextDirective);
19044
19055
 
19045
19056
  /**
@@ -21320,9 +21331,7 @@ let DatoBreadcrumbsComponent = class DatoBreadcrumbsComponent {
21320
21331
  this._breadcrumbs = [...start, ...dots, ...end];
21321
21332
  }
21322
21333
  initEditableHeader() {
21323
- this.headerControl.valueChanges
21324
- .pipe(debounceTime(300), untilDestroyed(this))
21325
- .subscribe((res) => {
21334
+ this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe((res) => {
21326
21335
  this.updateEditableText.emit(res);
21327
21336
  this.cdr.detectChanges();
21328
21337
  });
@@ -22567,7 +22576,7 @@ function fixNgLeaks() {
22567
22576
  };
22568
22577
  }
22569
22578
 
22570
- window.coreVersion = '21.4.0-rc.';
22579
+ window.coreVersion = '22.0.2';
22571
22580
 
22572
22581
  /**
22573
22582
  * @license
@@ -22581,5 +22590,5 @@ window.coreVersion = '21.4.0-rc.';
22581
22590
  * Generated bundle index. Do not edit.
22582
22591
  */
22583
22592
 
22584
- 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 };
22593
+ 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 };
22585
22594
  //# sourceMappingURL=datorama-core.js.map