@datorama/core 22.0.4 → 22.0.6-rc.1

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 (57) hide show
  1. package/bundle.scss +13 -13
  2. package/bundles/datorama-core.umd.js +234 -159
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +24 -24
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.d.ts +1 -0
  7. package/datorama-core.metadata.json +1 -1
  8. package/esm2015/datorama-core.js +2 -1
  9. package/esm2015/lib/accordion/accordion/accordion.component.js +11 -3
  10. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +4 -2
  11. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  12. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +11 -3
  13. package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +3 -1
  14. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
  15. package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
  16. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  17. package/esm2015/lib/grid-v2/grid-store/grid.service.js +10 -2
  18. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +7 -1
  19. package/esm2015/lib/icon/icon.types.js +1 -1
  20. package/esm2015/lib/rich-text/rich-text.directive.js +15 -33
  21. package/esm2015/lib/rich-text/rich-text.service.js +50 -0
  22. package/esm2015/lib/select/select.component.js +16 -16
  23. package/esm2015/lib/sortable/sortable.component.js +7 -2
  24. package/esm2015/lib/version.js +2 -2
  25. package/esm5/datorama-core.js +2 -1
  26. package/esm5/lib/accordion/accordion/accordion.component.js +15 -3
  27. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +4 -2
  28. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  29. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +11 -3
  30. package/esm5/lib/grid-v2/grid-filter/filter-validator.js +3 -1
  31. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
  32. package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
  33. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  34. package/esm5/lib/grid-v2/grid-store/grid.service.js +10 -2
  35. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +13 -1
  36. package/esm5/lib/icon/icon.types.js +1 -1
  37. package/esm5/lib/rich-text/rich-text.directive.js +16 -34
  38. package/esm5/lib/rich-text/rich-text.service.js +51 -0
  39. package/esm5/lib/select/select.component.js +17 -16
  40. package/esm5/lib/sortable/sortable.component.js +7 -2
  41. package/esm5/lib/version.js +2 -2
  42. package/fesm2015/datorama-core.js +215 -153
  43. package/fesm2015/datorama-core.js.map +1 -1
  44. package/fesm5/datorama-core.js +234 -160
  45. package/fesm5/datorama-core.js.map +1 -1
  46. package/i18n/locale-en_US.json +2 -0
  47. package/lib/accordion/accordion/accordion.component.d.ts +4 -1
  48. package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -0
  49. package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +3 -1
  50. package/lib/grid-v2/grid-settings.d.ts +2 -2
  51. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +2 -0
  52. package/lib/icon/icon.types.d.ts +1 -1
  53. package/lib/rich-text/rich-text.directive.d.ts +4 -6
  54. package/lib/rich-text/rich-text.service.d.ts +10 -0
  55. package/lib/select/select.component.d.ts +1 -0
  56. package/lib/sortable/sortable.component.d.ts +3 -1
  57. package/package.json +2 -2
@@ -6633,6 +6633,108 @@ const defaultClientSearchStrategy = (searchIn, searchValue, labelKey) => {
6633
6633
  return false;
6634
6634
  };
6635
6635
 
6636
+ /**
6637
+ * @license
6638
+ * Copyright Datorama. All Rights Reserved.
6639
+ *
6640
+ * Use of this source code is governed by an Apache License 2.0 license that can be
6641
+ * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
6642
+ */
6643
+ let DatoSortableComponent = class DatoSortableComponent {
6644
+ constructor() {
6645
+ this.list = [];
6646
+ this.noop = noop;
6647
+ /**
6648
+ * Sortablejs options
6649
+ */
6650
+ this.datoOptions = {};
6651
+ /**
6652
+ * Fired once items order has changed
6653
+ */
6654
+ this.orderUpdated = new EventEmitter();
6655
+ this.defaultOptions = {
6656
+ handle: '.dato-sortable-handler',
6657
+ ghostClass: 'dato-sortable-ghost',
6658
+ chosenClass: 'dato-sortable-chosen',
6659
+ dragClass: 'dato-sortable-drag'
6660
+ };
6661
+ }
6662
+ set datoList(list) {
6663
+ const isArr = Array.isArray(list);
6664
+ const validInput = isArr || (list instanceof FormControl && Array.isArray(list.value));
6665
+ if (!validInput) {
6666
+ throw new Error(`DatoSortable - datoList expected array or form control but got ${typeof list}`);
6667
+ }
6668
+ if (!isArr) {
6669
+ this.formControl = list;
6670
+ this.list = [...this.formControl.value];
6671
+ }
6672
+ else {
6673
+ this.list = list;
6674
+ }
6675
+ }
6676
+ ngOnInit() {
6677
+ const _a = this.datoOptions, { dynamicGhostHeight, hasStaticItems } = _a, sortableOptions = __rest(_a, ["dynamicGhostHeight", "hasStaticItems"]);
6678
+ const mergedOptions = Object.assign(Object.assign(Object.assign({}, this.defaultOptions), sortableOptions), { onUpdate: event => (sortableOptions.onUpdate ? sortableOptions.onUpdate(event) : this.emitUpdate(event)) });
6679
+ if (dynamicGhostHeight) {
6680
+ mergedOptions.onStart = event => this.setGhostHeight(event);
6681
+ }
6682
+ if (hasStaticItems) {
6683
+ mergedOptions.onMove = event => {
6684
+ if (event.related.classList.contains('dato-sortable-static-item')) {
6685
+ return false;
6686
+ }
6687
+ return sortableOptions.onMove ? sortableOptions.onMove(event) : true;
6688
+ };
6689
+ }
6690
+ this.mergedOptions = mergedOptions;
6691
+ }
6692
+ emitUpdate(event) {
6693
+ if (this.formControl) {
6694
+ this.formControl.setValue(this.list);
6695
+ }
6696
+ this.orderUpdated.emit(event);
6697
+ }
6698
+ setGhostHeight(event) {
6699
+ const originalEl = event.from.children[event.oldIndex];
6700
+ setStyle(originalEl, 'display', 'block');
6701
+ const { height } = originalEl.getBoundingClientRect();
6702
+ setStyle(originalEl, 'display', 'none');
6703
+ const ghostEl = query('.dato-sortable-ghost');
6704
+ setStyle(ghostEl, 'height', `${height}px`);
6705
+ }
6706
+ };
6707
+ __decorate([
6708
+ ContentChildren(DatoAccordionGroupComponent),
6709
+ __metadata("design:type", QueryList)
6710
+ ], DatoSortableComponent.prototype, "accordionGroups", void 0);
6711
+ __decorate([
6712
+ Input(),
6713
+ __metadata("design:type", Object),
6714
+ __metadata("design:paramtypes", [Object])
6715
+ ], DatoSortableComponent.prototype, "datoList", null);
6716
+ __decorate([
6717
+ Input(),
6718
+ __metadata("design:type", Object)
6719
+ ], DatoSortableComponent.prototype, "datoOptions", void 0);
6720
+ __decorate([
6721
+ Input(),
6722
+ __metadata("design:type", String)
6723
+ ], DatoSortableComponent.prototype, "containerClass", void 0);
6724
+ __decorate([
6725
+ Output(),
6726
+ __metadata("design:type", Object)
6727
+ ], DatoSortableComponent.prototype, "orderUpdated", void 0);
6728
+ DatoSortableComponent = __decorate([
6729
+ Component({
6730
+ selector: 'dato-sortable',
6731
+ template: "<section [sortablejs]=\"list\" [sortablejsOptions]=\"mergedOptions\" [ngClass]=\"containerClass\"\n (update.stop)=\"noop()\" (add.stop)=\"noop()\" (sort.stop)=\"noop()\" (remove.stop)=\"noop()\"\n (filter.stop)=\"noop()\" (change.stop)=\"noop()\" (drag.stop)=\"noop()\">\n <ng-content></ng-content>\n</section>",
6732
+ changeDetection: ChangeDetectionStrategy.OnPush,
6733
+ encapsulation: ViewEncapsulation.None,
6734
+ styles: ["dato-sortable{display:inline-block}dato-sortable .dato-sortable-handler{cursor:move;cursor:-webkit-grabbing}.dato-sortable-ghost>*{display:none!important}.dato-sortable-drag{box-shadow:0 2px 14px 0 rgba(0,0,0,.2)}"]
6735
+ })
6736
+ ], DatoSortableComponent);
6737
+
6636
6738
  /**
6637
6739
  * @license
6638
6740
  * Copyright Datorama. All Rights Reserved.
@@ -6674,6 +6776,9 @@ let DatoAccordionComponent = DatoAccordionComponent_1 = class DatoAccordionCompo
6674
6776
  }
6675
6777
  }
6676
6778
  }
6779
+ get groups() {
6780
+ return this.sortable && this.sortable.accordionGroups.length > 0 ? this.sortable.accordionGroups : this.childGroups;
6781
+ }
6677
6782
  ngOnChanges(changes) {
6678
6783
  if (changes.expandAll && !changes.expandAll.firstChange) {
6679
6784
  this.setExpandAll();
@@ -6845,11 +6950,15 @@ DatoAccordionComponent.ctorParameters = () => [
6845
6950
  __decorate([
6846
6951
  ContentChildren(DatoAccordionGroupComponent),
6847
6952
  __metadata("design:type", QueryList)
6848
- ], DatoAccordionComponent.prototype, "groups", void 0);
6953
+ ], DatoAccordionComponent.prototype, "childGroups", void 0);
6849
6954
  __decorate([
6850
6955
  ContentChildren(DatoAccordionComponent_1, { descendants: true }),
6851
6956
  __metadata("design:type", QueryList)
6852
6957
  ], DatoAccordionComponent.prototype, "childAccordion", void 0);
6958
+ __decorate([
6959
+ ContentChild(DatoSortableComponent, { static: true }),
6960
+ __metadata("design:type", DatoSortableComponent)
6961
+ ], DatoAccordionComponent.prototype, "sortable", void 0);
6853
6962
  __decorate([
6854
6963
  Input(),
6855
6964
  __metadata("design:type", Object)
@@ -7495,9 +7604,8 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7495
7604
  writeValue(activeOptions) {
7496
7605
  this._model = activeOptions ? coerceArray$1(activeOptions) : [];
7497
7606
  if (this.options) {
7498
- const overTheLimit = this.limitSelectedTo && this.isMulti && this._model.length >= this.limitSelectedTo;
7499
7607
  this.markAsActive(this._model, { deselectAll: true });
7500
- overTheLimit && this.updateDisabledState();
7608
+ this.limitSelectedTo && this.updateDisabledState();
7501
7609
  }
7502
7610
  /** For later updates */
7503
7611
  this.cdr.markForCheck();
@@ -7533,7 +7641,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7533
7641
  */
7534
7642
  if (this.hasValue && this._initialOpen) {
7535
7643
  this.markAsActive(this._model);
7536
- if (this.limitSelectedTo && this._model.length === this.limitSelectedTo) {
7644
+ if (this.limitSelectedTo) {
7537
7645
  this.updateDisabledState();
7538
7646
  }
7539
7647
  this._initialOpen = false;
@@ -7592,15 +7700,14 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7592
7700
  }
7593
7701
  }
7594
7702
  this.onChange(this._model);
7595
- this.datoOverlay.scheduleUpdate();
7596
7703
  this.cdr.markForCheck();
7704
+ this.asyncUpdateDropdownPosition();
7597
7705
  }
7598
7706
  reorderOptions(newOrder) {
7599
7707
  this._model = newOrder;
7600
7708
  this.onChange(this._model);
7601
7709
  }
7602
7710
  removeOption(option) {
7603
- const updateDisabled = this.limitSelectedTo && this._model.length === this.limitSelectedTo;
7604
7711
  this._model = this._model.filter(current => current[this.idKey] !== option[this.idKey]);
7605
7712
  const optionToRemove = this.options.find(datoOption => datoOption.option && datoOption.option[this.idKey] === option[this.idKey]);
7606
7713
  /**
@@ -7610,12 +7717,10 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7610
7717
  if (optionToRemove) {
7611
7718
  optionToRemove.active = false;
7612
7719
  }
7613
- updateDisabled && this.updateDisabledState();
7720
+ this.limitSelectedTo && this.updateDisabledState();
7614
7721
  this.onChange(this._model);
7615
7722
  this.cdr.markForCheck();
7616
- if (this.datoOverlay.attached) {
7617
- this.datoOverlay.scheduleUpdate();
7618
- }
7723
+ this.asyncUpdateDropdownPosition();
7619
7724
  }
7620
7725
  preventBodyScroll(event) {
7621
7726
  if (isArrowUpDown(event)) {
@@ -7812,7 +7917,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7812
7917
  this.searchTerm = value;
7813
7918
  this.keyManager.setActiveItem(-1);
7814
7919
  this.cdr.markForCheck();
7815
- this.datoOverlay && this.datoOverlay.scheduleUpdate();
7920
+ this.asyncUpdateDropdownPosition();
7816
7921
  });
7817
7922
  }
7818
7923
  /**
@@ -7886,9 +7991,6 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7886
7991
  if (!datoOption) {
7887
7992
  return;
7888
7993
  }
7889
- const modelLength = this._model.length;
7890
- const updateDisabled = this.limitSelectedTo &&
7891
- (modelLength === this.limitSelectedTo || (modelLength === this.limitSelectedTo - 1 && !datoOption.active));
7892
7994
  datoOption.active = !datoOption.active;
7893
7995
  const rawOption = datoOption.option;
7894
7996
  if (datoOption.active) {
@@ -7897,10 +7999,10 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7897
7999
  else {
7898
8000
  this._model = this._model.filter(current => current[this.idKey] !== rawOption[this.idKey]);
7899
8001
  }
7900
- updateDisabled && this.updateDisabledState();
8002
+ this.limitSelectedTo && this.updateDisabledState();
7901
8003
  this.onChange(this._model);
7902
8004
  this.cdr.markForCheck();
7903
- this.datoOverlay.scheduleUpdate();
8005
+ this.asyncUpdateDropdownPosition();
7904
8006
  }
7905
8007
  activateInfiniteScroll() {
7906
8008
  this.infiniteSubscription = fromEvent(document.querySelector('.dato-select__dropdown'), 'scroll')
@@ -7941,6 +8043,13 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7941
8043
  }
7942
8044
  }
7943
8045
  }
8046
+ // Make sure the overlay will be update AFTER Change Detection was done
8047
+ // So the items in the input (and its height) is update
8048
+ asyncUpdateDropdownPosition() {
8049
+ if (this.datoOverlay && this.datoOverlay.attached) {
8050
+ setTimeout(() => this.datoOverlay.scheduleUpdate(), 0);
8051
+ }
8052
+ }
7944
8053
  };
7945
8054
  DatoSelectComponent.ctorParameters = () => [
7946
8055
  { type: ChangeDetectorRef },
@@ -8850,104 +8959,6 @@ DatoOptionsModule = __decorate([
8850
8959
  })
8851
8960
  ], DatoOptionsModule);
8852
8961
 
8853
- /**
8854
- * @license
8855
- * Copyright Datorama. All Rights Reserved.
8856
- *
8857
- * Use of this source code is governed by an Apache License 2.0 license that can be
8858
- * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
8859
- */
8860
- let DatoSortableComponent = class DatoSortableComponent {
8861
- constructor() {
8862
- this.list = [];
8863
- this.noop = noop;
8864
- /**
8865
- * Sortablejs options
8866
- */
8867
- this.datoOptions = {};
8868
- /**
8869
- * Fired once items order has changed
8870
- */
8871
- this.orderUpdated = new EventEmitter();
8872
- this.defaultOptions = {
8873
- handle: '.dato-sortable-handler',
8874
- ghostClass: 'dato-sortable-ghost',
8875
- chosenClass: 'dato-sortable-chosen',
8876
- dragClass: 'dato-sortable-drag'
8877
- };
8878
- }
8879
- set datoList(list) {
8880
- const isArr = Array.isArray(list);
8881
- const validInput = isArr || (list instanceof FormControl && Array.isArray(list.value));
8882
- if (!validInput) {
8883
- throw new Error(`DatoSortable - datoList expected array or form control but got ${typeof list}`);
8884
- }
8885
- if (!isArr) {
8886
- this.formControl = list;
8887
- this.list = [...this.formControl.value];
8888
- }
8889
- else {
8890
- this.list = list;
8891
- }
8892
- }
8893
- ngOnInit() {
8894
- const _a = this.datoOptions, { dynamicGhostHeight, hasStaticItems } = _a, sortableOptions = __rest(_a, ["dynamicGhostHeight", "hasStaticItems"]);
8895
- const mergedOptions = Object.assign(Object.assign(Object.assign({}, this.defaultOptions), sortableOptions), { onUpdate: event => (sortableOptions.onUpdate ? sortableOptions.onUpdate(event) : this.emitUpdate(event)) });
8896
- if (dynamicGhostHeight) {
8897
- mergedOptions.onStart = event => this.setGhostHeight(event);
8898
- }
8899
- if (hasStaticItems) {
8900
- mergedOptions.onMove = event => {
8901
- if (event.related.classList.contains('dato-sortable-static-item')) {
8902
- return false;
8903
- }
8904
- return sortableOptions.onMove ? sortableOptions.onMove(event) : true;
8905
- };
8906
- }
8907
- this.mergedOptions = mergedOptions;
8908
- }
8909
- emitUpdate(event) {
8910
- if (this.formControl) {
8911
- this.formControl.setValue(this.list);
8912
- }
8913
- this.orderUpdated.emit(event);
8914
- }
8915
- setGhostHeight(event) {
8916
- const originalEl = event.from.children[event.oldIndex];
8917
- setStyle(originalEl, 'display', 'block');
8918
- const { height } = originalEl.getBoundingClientRect();
8919
- setStyle(originalEl, 'display', 'none');
8920
- const ghostEl = query('.dato-sortable-ghost');
8921
- setStyle(ghostEl, 'height', `${height}px`);
8922
- }
8923
- };
8924
- __decorate([
8925
- Input(),
8926
- __metadata("design:type", Object),
8927
- __metadata("design:paramtypes", [Object])
8928
- ], DatoSortableComponent.prototype, "datoList", null);
8929
- __decorate([
8930
- Input(),
8931
- __metadata("design:type", Object)
8932
- ], DatoSortableComponent.prototype, "datoOptions", void 0);
8933
- __decorate([
8934
- Input(),
8935
- __metadata("design:type", String)
8936
- ], DatoSortableComponent.prototype, "containerClass", void 0);
8937
- __decorate([
8938
- Output(),
8939
- __metadata("design:type", Object)
8940
- ], DatoSortableComponent.prototype, "orderUpdated", void 0);
8941
- DatoSortableComponent = __decorate([
8942
- Component({
8943
- selector: 'dato-sortable',
8944
- template: "<section [sortablejs]=\"list\" [sortablejsOptions]=\"mergedOptions\" [ngClass]=\"containerClass\"\n (update.stop)=\"noop()\" (add.stop)=\"noop()\" (sort.stop)=\"noop()\" (remove.stop)=\"noop()\"\n (filter.stop)=\"noop()\" (change.stop)=\"noop()\" (drag.stop)=\"noop()\">\n <ng-content></ng-content>\n</section>",
8945
- changeDetection: ChangeDetectionStrategy.OnPush,
8946
- encapsulation: ViewEncapsulation.None,
8947
- styles: ["dato-sortable{display:inline-block}dato-sortable .dato-sortable-handler{cursor:move;cursor:-webkit-grabbing}.dato-sortable-ghost>*{display:none!important}.dato-sortable-drag{box-shadow:0 2px 14px 0 rgba(0,0,0,.2)}"]
8948
- })
8949
- ], DatoSortableComponent);
8950
-
8951
8962
  /**
8952
8963
  * @license
8953
8964
  * Copyright Datorama. All Rights Reserved.
@@ -10259,6 +10270,8 @@ var DatoFilterConditions;
10259
10270
  DatoFilterConditions["NOT_IN_LIST"] = "NOT_IN_LIST";
10260
10271
  DatoFilterConditions["IS_EMPTY"] = "IS_EMPTY";
10261
10272
  DatoFilterConditions["NOT_EMPTY"] = "NOT_EMPTY";
10273
+ DatoFilterConditions["IS_NULL"] = "IS_NULL";
10274
+ DatoFilterConditions["NOT_NULL"] = "NOT_NULL";
10262
10275
  })(DatoFilterConditions || (DatoFilterConditions = {}));
10263
10276
  const DatoGridDateFilterOptions = [
10264
10277
  DatoFilterConditions.IN_RANGE,
@@ -10339,8 +10352,10 @@ function validateNumberCondition(unparsedRowValue, { condition, value, rangeEnd
10339
10352
  case DatoFilterConditions.IN_RANGE:
10340
10353
  return rowValue >= filterValue && rowValue <= parseFloat(rangeEnd);
10341
10354
  case DatoFilterConditions.IS_EMPTY:
10355
+ case DatoFilterConditions.IS_NULL:
10342
10356
  return isNil(rowValue);
10343
10357
  case DatoFilterConditions.NOT_EMPTY:
10358
+ case DatoFilterConditions.NOT_NULL:
10344
10359
  return !isNil(rowValue);
10345
10360
  }
10346
10361
  }
@@ -10487,7 +10502,7 @@ function toolbarActionToContextAction(params) {
10487
10502
  return contextActions;
10488
10503
  }
10489
10504
 
10490
- const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_API');
10505
+ const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_AP');
10491
10506
 
10492
10507
  const defaultEditableColumnRenderer = params => params && params.value ? `<div class="value-wrapper ellipsis">${params.value}</div>` : null;
10493
10508
  const editableCellRendererWithSearchHighlight = (params, searchTerm) => {
@@ -11216,10 +11231,11 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11216
11231
  }
11217
11232
  ngOnInit() {
11218
11233
  const { gridService, gridQuery } = this.popover.data;
11219
- const { filter, filtersConfig = {}, pivotValueColumn, pivotKeys } = this.colDef;
11234
+ const { filter, pivotValueColumn, pivotKeys } = this.colDef;
11220
11235
  const colDefs = gridQuery.api.columns.getAllColumns().map(column => column.getColDef());
11221
11236
  this.colField = getColField(this.colDef);
11222
11237
  const colDef = colDefs.find(colDef => colDef.field === this.colField);
11238
+ const filtersConfig = colDef.filtersConfig || this.colDef.filtersConfig || {};
11223
11239
  const colFilter = filter || colDef.filter;
11224
11240
  const filterOptions = DatoGridFilterOptionsMap[colFilter];
11225
11241
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
@@ -11241,7 +11257,11 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11241
11257
  if (this.filterSections.Conditional) {
11242
11258
  let filterConditions = filterOptions || DatoGridStringFilterOptions;
11243
11259
  if (filtersConfig.showEmptyConditions) {
11244
- filterConditions = [...filterConditions, DatoFilterConditions.IS_EMPTY, DatoFilterConditions.NOT_EMPTY];
11260
+ let emptyConditions = [DatoFilterConditions.IS_EMPTY, DatoFilterConditions.NOT_EMPTY];
11261
+ if (this.filterType === DatoGridFilterTypes.Number) {
11262
+ emptyConditions = [DatoFilterConditions.IS_NULL, DatoFilterConditions.NOT_NULL];
11263
+ }
11264
+ filterConditions = [...filterConditions, ...emptyConditions];
11245
11265
  }
11246
11266
  this.conditionalFilterOptions = filterConditions.map((operand, id) => ({
11247
11267
  id,
@@ -11604,7 +11624,10 @@ let DatoGridFilterComponent = class DatoGridFilterComponent {
11604
11624
  valueControl.updateValueAndValidity();
11605
11625
  }
11606
11626
  isEmptyOperand(operand) {
11607
- return operand === DatoFilterConditions.IS_EMPTY || operand === DatoFilterConditions.NOT_EMPTY;
11627
+ return (operand === DatoFilterConditions.IS_EMPTY ||
11628
+ operand === DatoFilterConditions.NOT_EMPTY ||
11629
+ operand === DatoFilterConditions.IS_NULL ||
11630
+ operand === DatoFilterConditions.NOT_NULL);
11608
11631
  }
11609
11632
  isStringArray(value) {
11610
11633
  return isString(value[0]);
@@ -12730,7 +12753,8 @@ let GridService = class GridService {
12730
12753
  this.updateSettings({ gridAlignment, columnsSizes: null });
12731
12754
  }
12732
12755
  saveSettingsToServer(settings) {
12733
- this.storageAPI.set(this.gridName, settings);
12756
+ const isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
12757
+ this.storageAPI.set(this.gridName, settings, isGlobal);
12734
12758
  }
12735
12759
  /**
12736
12760
  * @internal used to log grid events to the platform's logging service
@@ -13091,6 +13115,13 @@ let GridService = class GridService {
13091
13115
  column
13092
13116
  };
13093
13117
  }
13118
+ if (condition === DatoFilterConditions.IS_NULL || condition === DatoFilterConditions.NOT_NULL) {
13119
+ return {
13120
+ condition: DatoFilterConditions.IS_NULL,
13121
+ value: condition === DatoFilterConditions.IS_NULL ? 'true' : 'false',
13122
+ column
13123
+ };
13124
+ }
13094
13125
  return Object.assign(Object.assign({}, item), { column });
13095
13126
  })
13096
13127
  };
@@ -13632,13 +13663,21 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13632
13663
  .pipe(switchMap(() => {
13633
13664
  this.gridOptions = this.normalizeOptions();
13634
13665
  agGrid.gridOptions = this.gridOptions;
13635
- const settingsLoader = this.gridOptions.saveSettings === false ? of(null) : this.storageAPI.get(this.gridOptions.gridName);
13666
+ const isGlobal = this.gridOptions.isGlobalSettings;
13667
+ const settingsLoader = this.gridOptions.saveSettings === false
13668
+ ? of(null)
13669
+ : this.storageAPI.get(this.gridOptions.gridName, isGlobal);
13636
13670
  return combineLatest([agGrid.gridReady, settingsLoader]);
13637
13671
  }), untilDestroyed(this))
13638
13672
  .subscribe(([{ api, columnApi }, savedSettings = {}]) => {
13639
13673
  if (!this.gridOptions.rowData) {
13640
13674
  api.showLoadingOverlay();
13641
13675
  }
13676
+ if (!this.gridOptions.statusBar) {
13677
+ /** Fix ag-grid bug that doesn't add ag-hidden class to the status bar, which only get fixed in later versions */
13678
+ const el = agGridEl.querySelector('.ag-status-bar');
13679
+ addClass(el, 'ag-hidden');
13680
+ }
13642
13681
  const gridApi = { grid: api, columns: columnApi };
13643
13682
  this.gridService._setApi(gridApi, agGrid);
13644
13683
  this.gridQuery._setApi(gridApi, agGrid);
@@ -14750,6 +14789,12 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
14750
14789
  this.registerGroupListeners();
14751
14790
  this.subscribeRowsSelectionData();
14752
14791
  }
14792
+ getCellValueChangeEvent() {
14793
+ return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.cellValueChanged.pipe(debounceTime(100), untilDestroyed(this)));
14794
+ }
14795
+ getRowDataUpdatedEvent() {
14796
+ return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.rowDataUpdated.pipe(debounceTime(100), untilDestroyed(this)));
14797
+ }
14753
14798
  onActionClick(action) {
14754
14799
  if (isFunction(action.onClick)) {
14755
14800
  const selectedRowsCount = this.gridController.gridQuery.getSelectedRowsCount();
@@ -18817,6 +18862,39 @@ DatoEditableHeaderModule = __decorate([
18817
18862
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
18818
18863
  */
18819
18864
 
18865
+ let RichTextService = class RichTextService {
18866
+ constructor(http, config) {
18867
+ this.http = http;
18868
+ this.config = config;
18869
+ }
18870
+ getLib(appendScriptFunc, appendStyleFunc) {
18871
+ if (!this.richTextScript$) {
18872
+ this.initLib(appendScriptFunc, appendStyleFunc);
18873
+ }
18874
+ return this.richTextScript$;
18875
+ }
18876
+ initLib(appendScriptFunc, appendStyleFunc) {
18877
+ this.richTextScript$ = combineLatest([
18878
+ this.http
18879
+ .get(`${this.config.paths.richText}/index.js`, { responseType: 'text' })
18880
+ .pipe(tap(lib => appendScriptFunc(lib, 'rich-text-editor'))),
18881
+ this.http
18882
+ .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
18883
+ .pipe(tap(style => appendStyleFunc(style, 'tinymce-autocomplete')))
18884
+ ]).pipe(shareReplay(1));
18885
+ }
18886
+ };
18887
+ RichTextService.ctorParameters = () => [
18888
+ { type: HttpClient },
18889
+ { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
18890
+ ];
18891
+ RichTextService.ɵprov = ɵɵdefineInjectable({ factory: function RichTextService_Factory() { return new RichTextService(ɵɵinject(HttpClient), ɵɵinject(DATO_CORE_CONFIG)); }, token: RichTextService, providedIn: "root" });
18892
+ RichTextService = __decorate([
18893
+ Injectable({ providedIn: 'root' }),
18894
+ __param(1, Inject(DATO_CORE_CONFIG)),
18895
+ __metadata("design:paramtypes", [HttpClient, Object])
18896
+ ], RichTextService);
18897
+
18820
18898
  /**
18821
18899
  * @license
18822
18900
  * Copyright Datorama. All Rights Reserved.
@@ -18830,12 +18908,12 @@ const getTinymce = () => {
18830
18908
  };
18831
18909
  const ɵ0$3 = getTinymce;
18832
18910
  let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirective extends BaseCustomControl {
18833
- constructor(ngZone, http, host, config) {
18911
+ constructor(ngZone, richTextService, config, host) {
18834
18912
  super();
18835
18913
  this.ngZone = ngZone;
18836
- this.http = http;
18837
- this.host = host;
18914
+ this.richTextService = richTextService;
18838
18915
  this.config = config;
18916
+ this.host = host;
18839
18917
  this.autocompleteOptions = {};
18840
18918
  this.forcePlainTextPasting = false;
18841
18919
  this.format = 'html';
@@ -18862,28 +18940,11 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
18862
18940
  base: this.config.paths.richText,
18863
18941
  query: ''
18864
18942
  };
18865
- /**
18866
- * We support only one instance in load time
18867
- */
18868
- if (window.tinymce) {
18943
+ this.richTextService
18944
+ .getLib(appendScript, appendStyle)
18945
+ .pipe(untilDestroyed(this))
18946
+ .subscribe(() => {
18869
18947
  this.init.call(this);
18870
- }
18871
- else {
18872
- this.loadLib().subscribe(lib => {
18873
- appendScript(lib, 'rich-text-editor');
18874
- this.init.call(this);
18875
- this.loadAutoCompleteStyle();
18876
- });
18877
- }
18878
- }
18879
- loadLib() {
18880
- return this.http.get(`${this.config.paths.richText}/index.js`, { responseType: 'text' });
18881
- }
18882
- loadAutoCompleteStyle() {
18883
- this.http
18884
- .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
18885
- .subscribe(style => {
18886
- appendStyle(style, 'tinymce-autocomplete');
18887
18948
  });
18888
18949
  }
18889
18950
  initEditor(_, editor) {
@@ -18984,9 +19045,9 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
18984
19045
  };
18985
19046
  DatoRichTextDirective.ctorParameters = () => [
18986
19047
  { type: NgZone },
18987
- { type: HttpClient },
18988
- { type: ElementRef },
18989
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
19048
+ { type: RichTextService },
19049
+ { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] },
19050
+ { type: ElementRef }
18990
19051
  ];
18991
19052
  __decorate([
18992
19053
  Input(),
@@ -19052,10 +19113,9 @@ DatoRichTextDirective = DatoRichTextDirective_1 = __decorate([
19052
19113
  }
19053
19114
  ]
19054
19115
  }),
19055
- __param(3, Inject(DATO_CORE_CONFIG)),
19116
+ __param(2, Inject(DATO_CORE_CONFIG)),
19056
19117
  __metadata("design:paramtypes", [NgZone,
19057
- HttpClient,
19058
- ElementRef, Object])
19118
+ RichTextService, Object, ElementRef])
19059
19119
  ], DatoRichTextDirective);
19060
19120
 
19061
19121
  /**
@@ -21336,7 +21396,9 @@ let DatoBreadcrumbsComponent = class DatoBreadcrumbsComponent {
21336
21396
  this._breadcrumbs = [...start, ...dots, ...end];
21337
21397
  }
21338
21398
  initEditableHeader() {
21339
- this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe((res) => {
21399
+ this.headerControl.valueChanges
21400
+ .pipe(debounceTime(300), untilDestroyed(this))
21401
+ .subscribe((res) => {
21340
21402
  this.updateEditableText.emit(res);
21341
21403
  this.cdr.detectChanges();
21342
21404
  });
@@ -22601,7 +22663,7 @@ function fixNgLeaks() {
22601
22663
  };
22602
22664
  }
22603
22665
 
22604
- window.coreVersion = '22.0.4';
22666
+ window.coreVersion = '22.1.5-rc.';
22605
22667
 
22606
22668
  /**
22607
22669
  * @license
@@ -22615,5 +22677,5 @@ window.coreVersion = '22.0.4';
22615
22677
  * Generated bundle index. Do not edit.
22616
22678
  */
22617
22679
 
22618
- 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 };
22680
+ 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 };
22619
22681
  //# sourceMappingURL=datorama-core.js.map