@datorama/core 21.4.0-rc.2 → 21.4.0-rc.20

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 (46) hide show
  1. package/bundle.scss +8 -1
  2. package/bundles/datorama-core.umd.js +179 -78
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +49 -49
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +5 -2
  8. package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +14 -21
  9. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +30 -14
  10. package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
  11. package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +5 -3
  12. package/esm2015/lib/grid-v2/grid-store/grid.query.js +34 -9
  13. package/esm2015/lib/grid-v2/grid-store/grid.service.js +57 -20
  14. package/esm2015/lib/grid-v2/grid-store/grid.store.types.js +1 -1
  15. package/esm2015/lib/grid-v2/grid-store/public_api.js +2 -0
  16. package/esm2015/lib/grid-v2/grid-store/util.js +11 -1
  17. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +7 -2
  18. package/esm2015/lib/grid-v2/public_api.js +2 -2
  19. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +5 -2
  20. package/esm5/lib/grid-v2/grid-filter/filter-validator.js +16 -21
  21. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +31 -14
  22. package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
  23. package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +6 -3
  24. package/esm5/lib/grid-v2/grid-store/grid.query.js +34 -9
  25. package/esm5/lib/grid-v2/grid-store/grid.service.js +79 -35
  26. package/esm5/lib/grid-v2/grid-store/grid.store.types.js +1 -1
  27. package/esm5/lib/grid-v2/grid-store/public_api.js +2 -0
  28. package/esm5/lib/grid-v2/grid-store/util.js +11 -1
  29. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +7 -2
  30. package/esm5/lib/grid-v2/public_api.js +2 -2
  31. package/fesm2015/datorama-core.js +153 -64
  32. package/fesm2015/datorama-core.js.map +1 -1
  33. package/fesm5/datorama-core.js +179 -79
  34. package/fesm5/datorama-core.js.map +1 -1
  35. package/i18n/locale-en_US.json +2 -1
  36. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +3 -2
  37. package/lib/grid-v2/grid-filter/filter-validator.d.ts +4 -3
  38. package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +7 -1
  39. package/lib/grid-v2/grid-store/grid.query.d.ts +3 -1
  40. package/lib/grid-v2/grid-store/grid.service.d.ts +4 -3
  41. package/lib/grid-v2/grid-store/grid.store.types.d.ts +4 -0
  42. package/lib/grid-v2/grid-store/public_api.d.ts +2 -0
  43. package/lib/grid-v2/grid-store/util.d.ts +2 -0
  44. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +1 -0
  45. package/lib/grid-v2/public_api.d.ts +1 -2
  46. package/package.json +1 -1
@@ -10010,6 +10010,16 @@ function getColField(colDef) {
10010
10010
  const { field, showRowGroup, pivotValueColumn } = colDef;
10011
10011
  return pivotValueColumn ? pivotValueColumn.getColId() : field || showRowGroup;
10012
10012
  }
10013
+ function tryParsePivotValue(str) {
10014
+ let value;
10015
+ try {
10016
+ value = JSON.parse(str);
10017
+ }
10018
+ catch (e) {
10019
+ // Do nothing
10020
+ }
10021
+ return value;
10022
+ }
10013
10023
 
10014
10024
  let GridQuery = class GridQuery extends Query {
10015
10025
  constructor(store) {
@@ -10081,14 +10091,23 @@ let GridQuery = class GridQuery extends Query {
10081
10091
  return settings;
10082
10092
  }
10083
10093
  getSort() {
10084
- const { sort, colId } = this.api.grid.getSortModel().pop() || {};
10085
- const column = this.api.columns.getColumn(colId);
10086
- const secondaryColumns = this.api.columns.getSecondaryColumns();
10087
- const pivotedColumn = secondaryColumns && secondaryColumns.find(col => col.getColId() === colId);
10088
- const sortColumn = column || pivotedColumn;
10089
- const sortField = sortColumn && getColField(sortColumn.getColDef());
10090
- const pivotColIndex = secondaryColumns && pivotedColumn && secondaryColumns.indexOf(pivotedColumn);
10091
- return { colId: sortField, sort, pivotColIndex };
10094
+ if (this.gridRef.gridOptions.pivotMode) {
10095
+ const { sort, colId } = this.api.grid.getSortModel().pop() || {};
10096
+ 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 };
10103
+ }
10104
+ else if (column) {
10105
+ return { colId: getColField(column.getColDef()), sort };
10106
+ }
10107
+ }
10108
+ else {
10109
+ return this.api.grid.getSortModel().pop();
10110
+ }
10092
10111
  }
10093
10112
  selectSort() {
10094
10113
  return this.select(state => state.settings.sort);
@@ -10112,6 +10131,17 @@ let GridQuery = class GridQuery extends Query {
10112
10131
  selectFilter() {
10113
10132
  return this.select(state => state.settings.filter);
10114
10133
  }
10134
+ filterChanged() {
10135
+ return this.selectFilter().pipe(map$1(filter => {
10136
+ return Object.keys(filter).reduce((filters, field) => {
10137
+ const datoFilter = filter[field];
10138
+ if (datoFilter) {
10139
+ filters.push({ field, filter: datoFilter });
10140
+ }
10141
+ return filters;
10142
+ }, []);
10143
+ }));
10144
+ }
10115
10145
  getSearchTerm() {
10116
10146
  return this.getValue().settings.searchTerm;
10117
10147
  }
@@ -10172,6 +10202,10 @@ let GridQuery = class GridQuery extends Query {
10172
10202
  selectIsSelectAllRowsEnabled() {
10173
10203
  return this.select(state => state.serverSidePagination.selectAllRowsEnabled);
10174
10204
  }
10205
+ getSecondaryColumn(colId) {
10206
+ const secondaryColumns = this.api.columns.getSecondaryColumns();
10207
+ return secondaryColumns && secondaryColumns.find(col => col.getColId() === colId);
10208
+ }
10175
10209
  filterCheckboxSelectionColumn(columns) {
10176
10210
  return columns.filter((column) => !column.getUserProvidedColDef() || !column.getUserProvidedColDef().checkboxSelection);
10177
10211
  }
@@ -10261,7 +10295,7 @@ var OperatorTypes;
10261
10295
 
10262
10296
  function validateStringCondition(rowValue, { condition, value: filterValue }) {
10263
10297
  const filterTextLowerCase = filterValue ? filterValue.toLowerCase() : '';
10264
- const valueLowerCase = rowValue ? rowValue.toLowerCase() : '';
10298
+ const valueLowerCase = rowValue ? `${rowValue}`.toLowerCase() : '';
10265
10299
  switch (condition) {
10266
10300
  case DatoFilterConditions.EQUALS:
10267
10301
  return valueLowerCase === filterTextLowerCase;
@@ -10281,8 +10315,8 @@ function validateStringCondition(rowValue, { condition, value: filterValue }) {
10281
10315
  return !isEmpty(valueLowerCase);
10282
10316
  }
10283
10317
  }
10284
- function validateNumberCondition(unparsedRowValue, { condition, value, rangeEnd }) {
10285
- const rowValue = !!unparsedRowValue ? parseFloat(unparsedRowValue) : null;
10318
+ function validateNumberCondition(unparsedRowValue, { condition, value, rangeEnd }, filterKey) {
10319
+ const rowValue = !!unparsedRowValue ? parseFloat(unparsedRowValue[filterKey] || unparsedRowValue) : null;
10286
10320
  const filterValue = parseFloat(value);
10287
10321
  switch (condition) {
10288
10322
  case DatoFilterConditions.EQUALS:
@@ -10328,14 +10362,14 @@ function validateDateCondition(rowValue, { condition, value, rangeEnd }) {
10328
10362
  return !isNil(rowValue);
10329
10363
  }
10330
10364
  }
10331
- function validateCondition({ rowValue, filter, type }) {
10365
+ function validateCondition({ rowValue, condition, type, filterKey }) {
10332
10366
  switch (type) {
10333
10367
  case DatoGridFilterTypes.Date:
10334
- return validateDateCondition(rowValue, filter);
10368
+ return validateDateCondition(rowValue, condition);
10335
10369
  case DatoGridFilterTypes.Number:
10336
- return validateNumberCondition(rowValue, filter);
10370
+ return validateNumberCondition(rowValue, condition, filterKey);
10337
10371
  default:
10338
- return validateStringCondition(rowValue, filter);
10372
+ return validateStringCondition(rowValue, condition);
10339
10373
  }
10340
10374
  }
10341
10375
  function validateFilter({ row, api }, activeFilters) {
@@ -10347,13 +10381,13 @@ function validateFilter({ row, api }, activeFilters) {
10347
10381
  const currentRowPivotKeys = row.parent.childrenMapped && getRowPivotKeys(row.parent.childrenMapped);
10348
10382
  const rowValue = api.getValue(filter, row);
10349
10383
  /** If value is under a pivoted column but doesn't match the filter pivot */
10350
- if (pivotKeys && !isArrayValuesEqual(pivotKeys, currentRowPivotKeys)) {
10384
+ if (pivotKeys && pivotKeys.length > 0 && !isArrayValuesEqual(pivotKeys, currentRowPivotKeys)) {
10351
10385
  return true;
10352
10386
  }
10353
10387
  if (conditional) {
10354
10388
  const { operator, conditions, type } = conditional;
10355
10389
  const conditionsRelation = operator === OperatorTypes.AND ? 'every' : 'some';
10356
- filterPasses = conditions[conditionsRelation](filter => validateCondition({ rowValue, filter, type: type }));
10390
+ filterPasses = conditions[conditionsRelation](condition => validateCondition({ rowValue, condition, type: type, filterKey: filter }));
10357
10391
  }
10358
10392
  if (filterPasses && byValue) {
10359
10393
  const includesValue = byValue.values.includes(rowValue);
@@ -10371,17 +10405,9 @@ function validateFilter({ row, api }, activeFilters) {
10371
10405
  */
10372
10406
  function getRowPivotKeys(childrenMapped, keys = []) {
10373
10407
  const key = Object.keys(childrenMapped)[0];
10374
- let parsedKey;
10375
- try {
10376
- parsedKey = JSON.parse(key);
10377
- }
10378
- catch (e) {
10379
- console.error(`Can't parse ${key} from JSON`);
10380
- }
10381
- finally {
10382
- if (parsedKey) {
10383
- keys = getRowPivotKeys(childrenMapped[key], [...keys, parsedKey.value]);
10384
- }
10408
+ const parsedKey = tryParsePivotValue(key);
10409
+ if (parsedKey) {
10410
+ keys = getRowPivotKeys(childrenMapped[key], [...keys, parsedKey.value]);
10385
10411
  }
10386
10412
  return keys;
10387
10413
  }
@@ -11097,10 +11123,10 @@ const mapToValue = ({ value }) => value;
11097
11123
  const ɵ0$1 = mapToValue;
11098
11124
  const mapToListItem = val => ({ id: val, label: isNil(val) ? `(Empty)` : `${val}`.trim(), value: val });
11099
11125
  const ɵ1$1 = mapToListItem;
11100
- const mapToListItemWithFormatted = ({ value, formattedValue }) => ({
11101
- id: value,
11102
- label: isNil(formattedValue) ? `(Empty)` : `${formattedValue}`.trim(),
11103
- value
11126
+ const mapToListItemWithFormatted = ({ value, formattedValue }, key) => ({
11127
+ id: key && value ? value[key] : value,
11128
+ label: isNil(formattedValue) ? `(Empty)` : `${key ? formattedValue[key] : formattedValue}`.trim(),
11129
+ value: key && value ? value[key] : value
11104
11130
  });
11105
11131
  const ɵ2$1 = mapToListItemWithFormatted;
11106
11132
  let DatoGridFilterComponent = class DatoGridFilterComponent {
@@ -11186,15 +11212,18 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11186
11212
  ngOnInit() {
11187
11213
  const { gridService, gridQuery } = this.popover.data;
11188
11214
  const { filter, filtersConfig = {}, pivotValueColumn, pivotKeys } = this.colDef;
11215
+ const colDefs = gridQuery.api.columns.getAllColumns().map(column => column.getColDef());
11189
11216
  this.colField = getColField(this.colDef);
11217
+ const colDef = colDefs.find(colDef => colDef.field === this.colField);
11218
+ const colFilter = filter || colDef.filter;
11219
+ const filterOptions = DatoGridFilterOptionsMap[colFilter];
11190
11220
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
11191
11221
  if (filtersConfig.sections) {
11192
11222
  this.filterSections = { [filtersConfig.sections]: true };
11193
11223
  }
11194
11224
  this.keepPredefinedListOriginalOrder =
11195
11225
  filtersConfig.keepPredefinedListOriginalOrder && !isEmpty(filtersConfig.predefinedListValues);
11196
- const filterOptions = DatoGridFilterOptionsMap[filter];
11197
- this.filterType = filterOptions ? filter : DatoGridFilterTypes.String;
11226
+ this.filterType = filterOptions ? colFilter : DatoGridFilterTypes.String;
11198
11227
  this.listLabelType = this.filterType.toLowerCase();
11199
11228
  this.listSortByKey = this.filterType === DatoGridFilterTypes.Number && this.colDef.valueFormatter ? 'id' : 'label';
11200
11229
  this.gridQuery = gridQuery;
@@ -11227,8 +11256,10 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11227
11256
  }
11228
11257
  else {
11229
11258
  const columnValues = this.getColumnValues();
11230
- this.columnValues = columnValues.map(({ value }) => value);
11231
- this.listOptions = columnValues.map(mapToListItemWithFormatted);
11259
+ this.columnValues = columnValues.map(({ value }) => {
11260
+ return !isNil(this.pivotColumn) && value ? value[this.colField] : value;
11261
+ });
11262
+ this.listOptions = columnValues.map(colValue => mapToListItemWithFormatted(colValue, !isNil(this.pivotColumn) && this.colField));
11232
11263
  }
11233
11264
  }
11234
11265
  else {
@@ -11266,6 +11297,7 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11266
11297
  isEmpty(filter)
11267
11298
  ? this.gridService.clearColumnFilter(this.colField)
11268
11299
  : this.gridService.setColumnFilter(column, filter);
11300
+ this.gridService.notifyFilterUpdate();
11269
11301
  }
11270
11302
  }
11271
11303
  clearFilters() {
@@ -11311,16 +11343,25 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11311
11343
  buildFilter() {
11312
11344
  const { byValue, conditional } = this.filterForm.value;
11313
11345
  const filter = {};
11314
- filter.pivotKeys = this.pivotKeys;
11315
- if (this.pivotColumn) {
11316
- filter.pivotFields = this.getPivotFields(this.pivotColumn.getParent());
11317
- }
11318
11346
  if (this.filterSections.Conditional) {
11319
11347
  this.setConditionalFilter(filter, conditional);
11320
11348
  }
11321
11349
  if (this.filterSections.By_Value) {
11322
11350
  this.setByValueFilter(filter, byValue);
11323
11351
  }
11352
+ /** If filters applied, add the extra properties to be used by pivot mode */
11353
+ if (filter.byValue || filter.conditional) {
11354
+ filter.colId = this.colDef.colId;
11355
+ filter.pivotKeys = this.pivotKeys;
11356
+ if (this.pivotColumn) {
11357
+ filter.pivotFieldsMap = this.getPivotFields(this.pivotColumn.getParent()).reduce((fieldMap, field, index) => {
11358
+ if (this.pivotKeys[index]) {
11359
+ fieldMap[field] = this.pivotKeys[index];
11360
+ }
11361
+ return fieldMap;
11362
+ }, {});
11363
+ }
11364
+ }
11324
11365
  return filter;
11325
11366
  }
11326
11367
  initForm() {
@@ -11626,10 +11667,11 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11626
11667
  */
11627
11668
  getPivotFields(parent, fields = []) {
11628
11669
  const grandParent = parent.getParent();
11670
+ const headerClass = parent.getOriginalColumnGroup().getColGroupDef().headerClass;
11629
11671
  if (grandParent) {
11630
11672
  this.getPivotFields(grandParent, fields);
11631
11673
  }
11632
- fields.push(parent.getOriginalColumnGroup().getColGroupDef().headerClass);
11674
+ headerClass && fields.push(headerClass[0]);
11633
11675
  return fields;
11634
11676
  }
11635
11677
  };
@@ -12603,19 +12645,39 @@ let GridService = class GridService {
12603
12645
  });
12604
12646
  this.notifyFilterUpdate();
12605
12647
  }
12606
- setColumnFilter(column, filter) {
12648
+ setColumnFilter(column, filter, notifyGrid = true) {
12607
12649
  this._logEvent("Grids - Filter Applied" /* GRID_FILTER_APPLIED */, {
12608
12650
  column: column.getColId(),
12609
12651
  numOfConditions: (filter.conditional && filter.conditional.conditions.length) || 0,
12610
12652
  byValue: !!filter.byValue ? 'Yes' : 'No'
12611
12653
  });
12654
+ this.updateFilter(column, filter);
12655
+ if (notifyGrid) {
12656
+ this.notifyFilterUpdate();
12657
+ }
12658
+ }
12659
+ 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);
12669
+ }
12670
+ }
12671
+ this.notifyFilterUpdate();
12672
+ }
12673
+ }
12674
+ updateFilter(column, filter) {
12612
12675
  const colField = getColField(column.getColDef());
12613
12676
  this.store.update(state => {
12614
12677
  return {
12615
12678
  settings: Object.assign(Object.assign({}, state.settings), { filter: Object.assign(Object.assign({}, state.settings.filter), { [colField]: filter }) })
12616
12679
  };
12617
12680
  });
12618
- this.notifyFilterUpdate();
12619
12681
  }
12620
12682
  setSearchTerm(searchTerm) {
12621
12683
  this.store.update(state => {
@@ -13070,32 +13132,48 @@ let GridService = class GridService {
13070
13132
  /**
13071
13133
  * When pivoting,
13072
13134
  * we add the field name to the column header class in order to access it through the auto generated pivot column.
13073
- * @private
13074
13135
  */
13075
13136
  initPivotSecondaryColsProcess({ gridOptions }) {
13076
13137
  gridOptions.processSecondaryColDef = colDef => {
13077
- const api = colDef.headerComponentParams.gridQuery.api;
13078
- if (api) {
13079
- const valueColumns = colDef.headerComponentParams.gridQuery.api.columns.getValueColumns();
13080
- const originalColDef = valueColumns
13081
- .map(({ userProvidedColDef }) => userProvidedColDef)
13082
- .find(({ colId }) => colId === colDef.pivotValueColumn.getColId());
13083
- if (originalColDef) {
13084
- colDef.filter = originalColDef.filter;
13085
- }
13138
+ const userProvidedColDef = colDef.pivotValueColumn && colDef.pivotValueColumn.getUserProvidedColDef();
13139
+ if (userProvidedColDef) {
13140
+ colDef.filter = userProvidedColDef.filter;
13086
13141
  }
13087
13142
  if (colDef.pivotKeys) {
13088
- colDef.pivotKeys = colDef.pivotKeys.map(key => JSON.parse(key).value);
13143
+ colDef.pivotKeys = colDef.pivotKeys.map(key => {
13144
+ const parsedKey = tryParsePivotValue(key);
13145
+ return (parsedKey && parsedKey.value) || '';
13146
+ });
13089
13147
  }
13090
13148
  };
13091
13149
  gridOptions.processSecondaryColGroupDef = (colGroupDef) => {
13092
13150
  if (colGroupDef.headerName) {
13093
- const { field, value } = JSON.parse(colGroupDef.headerName);
13094
- colGroupDef.headerClass = field;
13095
- colGroupDef.headerName = value;
13151
+ const parsedValue = tryParsePivotValue(colGroupDef.headerName);
13152
+ if (parsedValue) {
13153
+ const { field, value } = parsedValue;
13154
+ colGroupDef.headerClass = [field];
13155
+ colGroupDef.headerName = value;
13156
+ if (colGroupDef.children && colGroupDef.children.length > 0) {
13157
+ colGroupDef.headerClass.push('group-pivot-cell');
13158
+ }
13159
+ }
13160
+ }
13161
+ else if (colGroupDef.children) {
13162
+ const [colChild] = colGroupDef.children;
13163
+ const pivotTotalColumnIds = colChild && colChild.pivotTotalColumnIds;
13164
+ if (pivotTotalColumnIds && pivotTotalColumnIds.length > 0) {
13165
+ colGroupDef.headerClass = ['total-pivot-cell'];
13166
+ colGroupDef.headerName = this.translate.transform('core.total');
13167
+ }
13168
+ }
13169
+ else {
13170
+ colGroupDef.headerClass = ['empty-pivot-header'];
13096
13171
  }
13097
13172
  if (colGroupDef.pivotKeys) {
13098
- colGroupDef.pivotKeys = colGroupDef.pivotKeys.map(key => JSON.parse(key).value);
13173
+ colGroupDef.pivotKeys = colGroupDef.pivotKeys.map(key => {
13174
+ const parsedKey = tryParsePivotValue(key);
13175
+ return (parsedKey && parsedKey.value) || '';
13176
+ });
13099
13177
  }
13100
13178
  };
13101
13179
  }
@@ -13105,7 +13183,8 @@ let GridService = class GridService {
13105
13183
  const mappedValues = Object.assign({}, currentValue);
13106
13184
  for (const col of pivotColumns) {
13107
13185
  const field = col.getColDef().field;
13108
- mappedValues[field] = JSON.stringify({ field, value: currentValue[field] });
13186
+ const pivotValue = { field, value: currentValue[field] };
13187
+ mappedValues[field] = JSON.stringify(pivotValue);
13109
13188
  }
13110
13189
  return mappedValues;
13111
13190
  });
@@ -13595,8 +13674,11 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13595
13674
  setGridRows(data) {
13596
13675
  this.gridService.setRows(data);
13597
13676
  }
13677
+ setGridFilters(filters) {
13678
+ this.gridService.setGridFilters(filters);
13679
+ }
13598
13680
  onFilterChanged() {
13599
- return this.gridQuery.selectFilter();
13681
+ return this.gridQuery.filterChanged();
13600
13682
  }
13601
13683
  onSortChanged() {
13602
13684
  return this.gridQuery.selectSort();
@@ -14398,8 +14480,10 @@ let DatoGridPaginationV2Component = class DatoGridPaginationV2Component {
14398
14480
  return page;
14399
14481
  }
14400
14482
  toggleGroupsState() {
14401
- this.isExpanded ? this.gridApi.collapseAll() : this.gridApi.expandAll();
14402
14483
  this.isExpanded = !this.isExpanded;
14484
+ this.gridApi.getRenderedNodes().forEach((node) => {
14485
+ node.setExpanded(this.isExpanded);
14486
+ });
14403
14487
  }
14404
14488
  autoFitGrid(type) {
14405
14489
  this.gridService.fitGrid(type);
@@ -14493,7 +14577,7 @@ DatoGridPaginationV2Component = __decorate([
14493
14577
  Component({
14494
14578
  selector: 'dato-grid-pagination-v2',
14495
14579
  changeDetection: ChangeDetectionStrategy.OnPush,
14496
- 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",
14580
+ 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-fir-to-container\">\n </dato-icon-button>\n </div>\n</div>\n",
14497
14581
  providers: [DecimalPipe],
14498
14582
  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}"]
14499
14583
  }),
@@ -14600,6 +14684,7 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
14600
14684
  this.gridActions = { mainList: [], moreMenu: [] };
14601
14685
  this.searchPlaceholder = this.translate.transform('core.search');
14602
14686
  this.rowActionsShortLabelThreshold = 1539;
14687
+ this.displayCustomGridActionsSeparator = true;
14603
14688
  this.openMenus = {
14604
14689
  group: false,
14605
14690
  settings: false
@@ -14953,10 +15038,14 @@ __decorate([
14953
15038
  Input(),
14954
15039
  __metadata("design:type", Number)
14955
15040
  ], DatoGridV2ToolbarComponent.prototype, "rowActionsShortLabelThreshold", void 0);
15041
+ __decorate([
15042
+ Input(),
15043
+ __metadata("design:type", Object)
15044
+ ], DatoGridV2ToolbarComponent.prototype, "displayCustomGridActionsSeparator", void 0);
14956
15045
  DatoGridV2ToolbarComponent = __decorate([
14957
15046
  Component({
14958
15047
  selector: 'dato-grid-toolbar-v2',
14959
- template: "<section *ngIf=\"gridController.gridQuery.gridReady$ | async\" class=\"d-flex mb-20 justify-between items-center main-container\" [class.mx-30]=\"enableBackground\">\n\n <section [ngClass]=\"{ 'd-flex items-center right-section': enableV2_1 }\">\n <!-- Dynamic content for the left area -->\n <div data-auto-id=\"grid-toolbar-dynamic-left\">\n <ng-content select=\"[toolbarLeftArea]\"></ng-content>\n </div>\n\n <div class=\"d-flex items-center\">\n <dato-grid-search-bar *ngIf=\"enableSearch\" [searchPlaceholder]=\"searchPlaceholder\"></dato-grid-search-bar>\n <ng-container *ngIf=\"enableV2_1 && selectedRowsCount > 0\">\n <div class=\"d-flex items-center\">\n <div class=\"chip align-center d-flex dato-note px-9 nowrap ml-16\">\n <span data-auto-id=\"grid-selected-items-text\">{{ (allPageRowsSelected ? 'core.all-items-in-page-selected' : 'core.selected-items') | translate:{ itemsCount: selectedRowsCount } }}</span>\n <dato-icon datoType=\"primary\" datoIcon=\"close\" datoSize=\"md\" class=\"ml-6 pointer\" (click)=\"clearSelectedRows()\"\n data-auto-id=\"grid-clear-selected-rows\"></dato-icon>\n </div>\n <dato-link *ngIf=\"allPageRowsSelected\" (click)=\"selectAllPages()\" datoSize=\"sm\" class=\"ml-10\"\n data-auto-id=\"grid-select-all-pages\">\n <span>{{'core.select-all-items' | translate:{ itemsCount: totalRowsCount } }}</span>\n </dato-link>\n </div>\n <div *ngIf=\"hasRowActions\" class=\"separator\"></div>\n </ng-container>\n </div>\n\n <!-- Row Actions-->\n <div class=\"d-flex items-center\" *ngIf=\"isRowActionsVisible\">\n\n <ng-container *ngFor=\"let rowAction of rowActions.mainList; index as i; last as isLast\">\n\n <div *ngIf=\"!isRowActionHidden(rowAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + rowAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-action-' + i\"\n [class.disabled-action]=\"isActionDisabled(rowAction)\">\n <ng-container [ngTemplateOutlet]=\"rowAction.template || defaultButton\"\n [ngTemplateOutletContext]=\"{disabled: isActionDisabled(rowAction)}\"></ng-container>\n </div>\n\n <ng-template #defaultButton>\n <div (click)=\"onActionClick(rowAction)\">\n <dato-grid-toolbar-button [icon]=\"rowAction.icon\"\n [disabled]=\"isActionDisabled(rowAction)\"\n [label]=\"rowAction.label\"\n [shortLabel]=\"rowAction.shortLabel\"\n [tooltip]=\"rowAction.tooltip\"\n [getMenu]=\"rowAction.getMenu\"\n [enableV2_1]=\"enableV2_1\"\n [isLast]=\"isLast\"\n [widthToHideLabel]=\"widthToHideActionsLabels\">\n </dato-grid-toolbar-button>\n </div>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"rowActions.moreMenu.length > 0\" class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"rowActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"true\">\n </dato-grid-toolbar-more-menu>\n </div>\n\n </section>\n\n\n <!-- General Actions -->\n <div class=\"d-flex items-center\">\n <!-- Dynamic content for the right area -->\n <div #customActions data-auto-id=\"grid-toolbar-dynamic-right\">\n <ng-content select=\"[toolbarRightArea]\"></ng-content>\n </div>\n <div *ngIf=\"customActions.childNodes.length\" class=\"separator\"></div>\n <!-- Group buttons -->\n <div *ngIf=\"groupsAllowed\" class=\"d-flex grouping-section opacity-0 invisible\" [class.open]=\"openMenus.group || hasGroups\">\n <dato-icon-button [class.active]=\"openMenus.group\" (click)=\"executeTableAction('Group from Toolbar')\"\n data-auto-id=\"grid-toolbar-open-groups\"\n removeIconPadding datoSize=\"md\" datoType=\"none\" icon=\"group\" iconWidth=\"17px\"\n datoTooltip=\"core.row-grouping\" #groupTrigger\n class=\"mr-10 pointer\"></dato-icon-button>\n <dato-icon-button data-auto-id=\"grid-toolbar-toggle-expand\" datoSize=\"md\" datoType=\"none\"\n (click)=\"executeTableAction('Collapse Expand')\"\n [icon]=\"rowGroupsCollapsed ? 'expand' : 'collapse'\"\n [disabled]=\"!hasGroups\"\n [datoTooltip]=\"'core.' + (rowGroupsCollapsed ? 'expand' : 'collapse') + '-rows'\"\n class=\"pointer\"></dato-icon-button>\n <div class=\"separator\"></div>\n </div>\n\n <!-- Settings and export -->\n <ng-container *ngIf=\"createAction\">\n <dato-button datoSize=\"sm\" class=\"pointer primary-300-color\" (click)=\"onActionClick(createAction)\"\n [datoTooltip]=\"createAction.tooltip\" [attr.data-auto-id]=\"'grid-toolbar-action-' + createAction.key\">\n <dato-icon *ngIf=\"createAction.icon\" [icon]=\"createAction.icon\" class=\"mr-5\"></dato-icon>\n {{ createAction.label | translate }}\n </dato-button>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngFor=\"let gridAction of gridActions.mainList; index as i\">\n <div *ngIf=\"gridAction.getMenu else button\" [datoMenuTriggerFor]=\"gridAction.getMenu()\">\n <ng-container [ngTemplateOutlet]=\"button\"></ng-container>\n </div>\n <ng-template #button>\n <dato-icon datoSize=\"sm\" (click)=\"onActionClick(gridAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + gridAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-general-action-' + i\"\n [icon]=\"gridAction.icon\" class=\"pointer primary-300-color\"\n [class.mr-16]=\"!gridAction.separator\"\n [datoTooltip]=\"gridAction.tooltip || gridAction.label\">\n </dato-icon>\n </ng-template>\n <div *ngIf=\"gridAction.separator\" class=\"separator\"></div>\n </ng-container>\n\n <dato-icon data-auto-id=\"grid-toolbar-export\" datoSize=\"sm\"\n (click)=\"executeTableAction('Export')\" *ngIf=\"displayExport && !isTreeMode\"\n icon=\"export\" class=\"pointer mr-16 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n <dato-icon [class.active]=\"openMenus.settings\" (click)=\"openMenus.settings = true\"\n data-auto-id=\"grid-toolbar-settings\" datoSize=\"sm\"\n icon=\"account\" class=\"pointer primary-300-color\" datoTooltip=\"core.table-settings\"\n #settingsTrigger\n [datoMenuTriggerFor]=\"settingsMenu\"></dato-icon>\n\n <ng-container *ngIf=\"gridActions.moreMenu.length > 0\">\n <div class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"gridActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"false\">\n </dato-grid-toolbar-more-menu>\n </ng-container>\n\n\n <dato-menu #settingsMenu=\"datoMenu\" menuClass=\"grid-settings-menu\" placement=\"bottom-end\"\n (menuClosed)=\"openMenus.settings = false\">\n <ng-template datoMenuContent>\n <button data-auto-id=\"grid-toolbar-settings-autofit-page\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Page')\">\n <dato-icon datoSize=\"sm\" icon=\"maximize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitPage' | translate }}</button>\n <button data-auto-id=\"grid-toolbar-settings-autofit-content\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Content')\">\n <dato-icon datoSize=\"sm\" icon=\"minimize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitContent' | translate }}</button>\n <ng-container *ngIf=\"groupsAllowed\">\n <button data-auto-id=\"grid-toolbar-settings-group\" datoMenuItem (click)=\"executeTableAction('Group from Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"group\" class=\"mr-4 primary-300-color\"></dato-icon>\n {{ 'core.group' | translate }}\n </button>\n </ng-container>\n <button data-auto-id=\"grid-toolbar-settings-toggle-columns\" datoMenuItem (click)=\"executeTableAction('Show Hide Column')\">\n <dato-icon datoSize=\"sm\" icon=\"hide\" class=\"mr-8 primary-300-color\"></dato-icon>\n <span>{{ 'core.hideShowColumns' | translate }}<span\n class=\"dato-simple-italic ml-5 primary-200-color\">{{hiddenColumns}}</span></span>\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-settings\" datoMenuItem\n (click)=\"executeTableAction('Reset Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-table\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetTableSettings' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-filters\" datoMenuItem\n (click)=\"executeTableAction('Reset Filters')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-filters\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetAllFilters' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-export\" datoMenuItem\n (click)=\"executeTableAction('Export')\" *ngIf=\"this.displayExport && isTreeMode\">\n <dato-icon datoSize=\"sm\"\n icon=\"export\" class=\"pointer mr-5 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n {{ 'core.export-table' | translate }}\n </button>\n </ng-template>\n </dato-menu>\n </div>\n</section>\n\n\n",
15048
+ template: "<section *ngIf=\"gridController.gridQuery.gridReady$ | async\" class=\"d-flex mb-20 justify-between items-center main-container\" [class.mx-30]=\"enableBackground\">\n\n <section [ngClass]=\"{ 'd-flex items-center right-section': enableV2_1 }\">\n <!-- Dynamic content for the left area -->\n <div data-auto-id=\"grid-toolbar-dynamic-left\">\n <ng-content select=\"[toolbarLeftArea]\"></ng-content>\n </div>\n\n <div class=\"d-flex items-center\">\n <dato-grid-search-bar *ngIf=\"enableSearch\" [searchPlaceholder]=\"searchPlaceholder\"></dato-grid-search-bar>\n <ng-container *ngIf=\"enableV2_1 && selectedRowsCount > 0\">\n <div class=\"d-flex items-center\">\n <div class=\"chip align-center d-flex dato-note px-9 nowrap ml-16\">\n <span data-auto-id=\"grid-selected-items-text\">{{ (allPageRowsSelected ? 'core.all-items-in-page-selected' : 'core.selected-items') | translate:{ itemsCount: selectedRowsCount } }}</span>\n <dato-icon datoType=\"primary\" datoIcon=\"close\" datoSize=\"md\" class=\"ml-6 pointer\" (click)=\"clearSelectedRows()\"\n data-auto-id=\"grid-clear-selected-rows\"></dato-icon>\n </div>\n <dato-link *ngIf=\"allPageRowsSelected\" (click)=\"selectAllPages()\" datoSize=\"sm\" class=\"ml-10\"\n data-auto-id=\"grid-select-all-pages\">\n <span>{{'core.select-all-items' | translate:{ itemsCount: totalRowsCount } }}</span>\n </dato-link>\n </div>\n <div *ngIf=\"hasRowActions\" class=\"separator\"></div>\n </ng-container>\n </div>\n\n <!-- Row Actions-->\n <div class=\"d-flex items-center\" *ngIf=\"isRowActionsVisible\">\n\n <ng-container *ngFor=\"let rowAction of rowActions.mainList; index as i; last as isLast\">\n\n <div *ngIf=\"!isRowActionHidden(rowAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + rowAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-action-' + i\"\n [class.disabled-action]=\"isActionDisabled(rowAction)\">\n <ng-container [ngTemplateOutlet]=\"rowAction.template || defaultButton\"\n [ngTemplateOutletContext]=\"{disabled: isActionDisabled(rowAction)}\"></ng-container>\n </div>\n\n <ng-template #defaultButton>\n <div (click)=\"onActionClick(rowAction)\">\n <dato-grid-toolbar-button [icon]=\"rowAction.icon\"\n [disabled]=\"isActionDisabled(rowAction)\"\n [label]=\"rowAction.label\"\n [shortLabel]=\"rowAction.shortLabel\"\n [tooltip]=\"rowAction.tooltip\"\n [getMenu]=\"rowAction.getMenu\"\n [enableV2_1]=\"enableV2_1\"\n [isLast]=\"isLast\"\n [widthToHideLabel]=\"widthToHideActionsLabels\">\n </dato-grid-toolbar-button>\n </div>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"rowActions.moreMenu.length > 0\" class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"rowActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"true\">\n </dato-grid-toolbar-more-menu>\n </div>\n\n </section>\n\n\n <!-- General Actions -->\n <div class=\"d-flex items-center\">\n <!-- Create action -->\n <ng-container *ngIf=\"createAction\">\n <dato-button datoSize=\"sm\" class=\"pointer primary-300-color\" (click)=\"onActionClick(createAction)\"\n [datoTooltip]=\"createAction.tooltip\" [attr.data-auto-id]=\"'grid-toolbar-action-' + createAction.key\">\n <dato-icon *ngIf=\"createAction.icon\" [icon]=\"createAction.icon\" class=\"mr-5\"></dato-icon>\n {{ createAction.label | translate }}\n </dato-button>\n <div class=\"separator\"></div>\n </ng-container>\n\n <!-- Dynamic content for the right area -->\n <div #customActions data-auto-id=\"grid-toolbar-dynamic-right\">\n <ng-content select=\"[toolbarRightArea]\"></ng-content>\n </div>\n <div *ngIf=\"customActions.childNodes.length && displayCustomGridActionsSeparator\" class=\"separator\"></div>\n\n <!-- Group buttons -->\n <div *ngIf=\"groupsAllowed\" class=\"d-flex grouping-section opacity-0 invisible\" [class.open]=\"openMenus.group || hasGroups\">\n <dato-icon-button [class.active]=\"openMenus.group\" (click)=\"executeTableAction('Group from Toolbar')\"\n data-auto-id=\"grid-toolbar-open-groups\"\n removeIconPadding datoSize=\"md\" datoType=\"none\" icon=\"group\" iconWidth=\"17px\"\n datoTooltip=\"core.row-grouping\" #groupTrigger\n class=\"mr-10 pointer\"></dato-icon-button>\n <dato-icon-button data-auto-id=\"grid-toolbar-toggle-expand\" datoSize=\"md\" datoType=\"none\"\n (click)=\"executeTableAction('Collapse Expand')\"\n [icon]=\"rowGroupsCollapsed ? 'expand' : 'collapse'\"\n [disabled]=\"!hasGroups\"\n [datoTooltip]=\"'core.' + (rowGroupsCollapsed ? 'expand' : 'collapse') + '-rows'\"\n class=\"pointer\"></dato-icon-button>\n <div class=\"separator\"></div>\n </div>\n\n <!-- Grid Actions -->\n <ng-container *ngFor=\"let gridAction of gridActions.mainList; index as i\">\n <div *ngIf=\"gridAction.getMenu else button\" [datoMenuTriggerFor]=\"gridAction.getMenu()\">\n <ng-container [ngTemplateOutlet]=\"button\"></ng-container>\n </div>\n <ng-template #button>\n <dato-icon datoSize=\"sm\" (click)=\"onActionClick(gridAction)\"\n [attr.data-auto-id]=\"'grid-toolbar-action-' + gridAction.key\"\n [attr.data-action-index]=\"'grid-toolbar-general-action-' + i\"\n [icon]=\"gridAction.icon\" class=\"pointer primary-300-color\"\n [class.mr-16]=\"!gridAction.separator\"\n [datoTooltip]=\"gridAction.tooltip || gridAction.label\">\n </dato-icon>\n </ng-template>\n <div *ngIf=\"gridAction.separator\" class=\"separator\"></div>\n </ng-container>\n\n <!-- Export -->\n <dato-icon data-auto-id=\"grid-toolbar-export\" datoSize=\"sm\"\n (click)=\"executeTableAction('Export')\" *ngIf=\"displayExport && !isTreeMode\"\n icon=\"export\" class=\"pointer mr-16 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n\n <!-- Settings -->\n <dato-icon [class.active]=\"openMenus.settings\" (click)=\"openMenus.settings = true\"\n data-auto-id=\"grid-toolbar-settings\" datoSize=\"sm\"\n icon=\"account\" class=\"pointer primary-300-color\" datoTooltip=\"core.table-settings\"\n #settingsTrigger\n [datoMenuTriggerFor]=\"settingsMenu\"></dato-icon>\n\n <!-- More actions menu -->\n <ng-container *ngIf=\"gridActions.moreMenu.length > 0\">\n <div class=\"separator\"></div>\n <dato-grid-toolbar-more-menu [actions]=\"gridActions.moreMenu\" (actionClick)=\"onActionClick($event)\" [isRowActions]=\"false\">\n </dato-grid-toolbar-more-menu>\n </ng-container>\n\n <dato-menu #settingsMenu=\"datoMenu\" menuClass=\"grid-settings-menu\" placement=\"bottom-end\"\n (menuClosed)=\"openMenus.settings = false\">\n <ng-template datoMenuContent>\n <button data-auto-id=\"grid-toolbar-settings-autofit-page\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Page')\">\n <dato-icon datoSize=\"sm\" icon=\"maximize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitPage' | translate }}</button>\n <button data-auto-id=\"grid-toolbar-settings-autofit-content\" datoMenuItem\n (click)=\"executeTableAction('Autofit to Content')\">\n <dato-icon datoSize=\"sm\" icon=\"minimize-horizontal\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.autofitContent' | translate }}</button>\n <ng-container *ngIf=\"groupsAllowed\">\n <button data-auto-id=\"grid-toolbar-settings-group\" datoMenuItem (click)=\"executeTableAction('Group from Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"group\" class=\"mr-4 primary-300-color\"></dato-icon>\n {{ 'core.group' | translate }}\n </button>\n </ng-container>\n <button data-auto-id=\"grid-toolbar-settings-toggle-columns\" datoMenuItem (click)=\"executeTableAction('Show Hide Column')\">\n <dato-icon datoSize=\"sm\" icon=\"hide\" class=\"mr-8 primary-300-color\"></dato-icon>\n <span>{{ 'core.hideShowColumns' | translate }}<span\n class=\"dato-simple-italic ml-5 primary-200-color\">{{hiddenColumns}}</span></span>\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-settings\" datoMenuItem\n (click)=\"executeTableAction('Reset Settings')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-table\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetTableSettings' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-settings-reset-filters\" datoMenuItem\n (click)=\"executeTableAction('Reset Filters')\">\n <dato-icon datoSize=\"sm\" icon=\"reset-filters\" class=\"mr-8 primary-300-color\"></dato-icon>\n {{ 'core.resetAllFilters' | translate }}\n </button>\n <button data-auto-id=\"grid-toolbar-export\" datoMenuItem\n (click)=\"executeTableAction('Export')\" *ngIf=\"this.displayExport && isTreeMode\">\n <dato-icon datoSize=\"sm\"\n icon=\"export\" class=\"pointer mr-5 primary-300-color\" datoTooltip=\"core.export-table\"></dato-icon>\n {{ 'core.export-table' | translate }}\n </button>\n </ng-template>\n </dato-menu>\n </div>\n</section>\n\n\n",
14960
15049
  changeDetection: ChangeDetectionStrategy.OnPush,
14961
15050
  styles: [".grouping-section{transition:visibility .2s ease-in-out,width .2s ease-in-out,opacity .2s ease-in-out;width:0}.grouping-section.open{width:75px;visibility:visible;opacity:1}:host .main-container{min-height:24px}:host .right-section{margin-right:50px}:host .separator{width:1px;height:24px;margin:0 16px}.disabled-action{pointer-events:none}"]
14962
15051
  }),
@@ -22530,5 +22619,5 @@ window.coreVersion = '21.4.0-rc.';
22530
22619
  * Generated bundle index. Do not edit.
22531
22620
  */
22532
22621
 
22533
- 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, 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 };
22622
+ 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 };
22534
22623
  //# sourceMappingURL=datorama-core.js.map