@datorama/core 22.5.1 → 22.5.5

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 (32) hide show
  1. package/bundles/datorama-core.umd.js +128 -109
  2. package/bundles/datorama-core.umd.js.map +1 -1
  3. package/bundles/datorama-core.umd.min.js +18 -18
  4. package/bundles/datorama-core.umd.min.js.map +1 -1
  5. package/datorama-core.metadata.json +1 -1
  6. package/esm2015/lib/accordion/accordion/accordion.component.js +11 -3
  7. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  8. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +6 -2
  9. package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +2 -2
  10. package/esm2015/lib/grid-v2/grid-store/grid.service.js +2 -2
  11. package/esm2015/lib/icon/icon.types.js +1 -1
  12. package/esm2015/lib/sortable/sortable.component.js +7 -2
  13. package/esm2015/lib/version.js +2 -2
  14. package/esm5/lib/accordion/accordion/accordion.component.js +15 -3
  15. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  16. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +6 -2
  17. package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +2 -2
  18. package/esm5/lib/grid-v2/grid-store/grid.service.js +2 -2
  19. package/esm5/lib/icon/icon.types.js +1 -1
  20. package/esm5/lib/sortable/sortable.component.js +7 -2
  21. package/esm5/lib/version.js +2 -2
  22. package/fesm2015/datorama-core.js +118 -103
  23. package/fesm2015/datorama-core.js.map +1 -1
  24. package/fesm5/datorama-core.js +128 -109
  25. package/fesm5/datorama-core.js.map +1 -1
  26. package/i18n/locale-en_US.json +2 -0
  27. package/lib/accordion/accordion/accordion.component.d.ts +4 -1
  28. package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -0
  29. package/lib/grid-v2/grid-filter/grid-filter.component.d.ts +1 -0
  30. package/lib/icon/icon.types.d.ts +1 -1
  31. package/lib/sortable/sortable.component.d.ts +3 -1
  32. package/package.json +1 -1
@@ -7609,6 +7609,114 @@
7609
7609
  return false;
7610
7610
  };
7611
7611
 
7612
+ /**
7613
+ * @license
7614
+ * Copyright Datorama. All Rights Reserved.
7615
+ *
7616
+ * Use of this source code is governed by an Apache License 2.0 license that can be
7617
+ * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
7618
+ */
7619
+ var DatoSortableComponent = /** @class */ (function () {
7620
+ function DatoSortableComponent() {
7621
+ this.list = [];
7622
+ this.noop = noop;
7623
+ /**
7624
+ * Sortablejs options
7625
+ */
7626
+ this.datoOptions = {};
7627
+ /**
7628
+ * Fired once items order has changed
7629
+ */
7630
+ this.orderUpdated = new core.EventEmitter();
7631
+ this.defaultOptions = {
7632
+ handle: '.dato-sortable-handler',
7633
+ ghostClass: 'dato-sortable-ghost',
7634
+ chosenClass: 'dato-sortable-chosen',
7635
+ dragClass: 'dato-sortable-drag'
7636
+ };
7637
+ }
7638
+ Object.defineProperty(DatoSortableComponent.prototype, "datoList", {
7639
+ set: function (list) {
7640
+ var isArr = Array.isArray(list);
7641
+ var validInput = isArr || (list instanceof forms.FormControl && Array.isArray(list.value));
7642
+ if (!validInput) {
7643
+ throw new Error("DatoSortable - datoList expected array or form control but got " + typeof list);
7644
+ }
7645
+ if (!isArr) {
7646
+ this.formControl = list;
7647
+ this.list = __spread(this.formControl.value);
7648
+ }
7649
+ else {
7650
+ this.list = list;
7651
+ }
7652
+ },
7653
+ enumerable: true,
7654
+ configurable: true
7655
+ });
7656
+ DatoSortableComponent.prototype.ngOnInit = function () {
7657
+ var _this = this;
7658
+ var _a = this.datoOptions, dynamicGhostHeight = _a.dynamicGhostHeight, hasStaticItems = _a.hasStaticItems, sortableOptions = __rest(_a, ["dynamicGhostHeight", "hasStaticItems"]);
7659
+ var mergedOptions = __assign(__assign(__assign({}, this.defaultOptions), sortableOptions), { onUpdate: function (event) { return (sortableOptions.onUpdate ? sortableOptions.onUpdate(event) : _this.emitUpdate(event)); } });
7660
+ if (dynamicGhostHeight) {
7661
+ mergedOptions.onStart = function (event) { return _this.setGhostHeight(event); };
7662
+ }
7663
+ if (hasStaticItems) {
7664
+ mergedOptions.onMove = function (event) {
7665
+ if (event.related.classList.contains('dato-sortable-static-item')) {
7666
+ return false;
7667
+ }
7668
+ return sortableOptions.onMove ? sortableOptions.onMove(event) : true;
7669
+ };
7670
+ }
7671
+ this.mergedOptions = mergedOptions;
7672
+ };
7673
+ DatoSortableComponent.prototype.emitUpdate = function (event) {
7674
+ if (this.formControl) {
7675
+ this.formControl.setValue(this.list);
7676
+ }
7677
+ this.orderUpdated.emit(event);
7678
+ };
7679
+ DatoSortableComponent.prototype.setGhostHeight = function (event) {
7680
+ var originalEl = event.from.children[event.oldIndex];
7681
+ setStyle(originalEl, 'display', 'block');
7682
+ var height = originalEl.getBoundingClientRect().height;
7683
+ setStyle(originalEl, 'display', 'none');
7684
+ var ghostEl = query('.dato-sortable-ghost');
7685
+ setStyle(ghostEl, 'height', height + "px");
7686
+ };
7687
+ __decorate([
7688
+ core.ContentChildren(DatoAccordionGroupComponent),
7689
+ __metadata("design:type", core.QueryList)
7690
+ ], DatoSortableComponent.prototype, "accordionGroups", void 0);
7691
+ __decorate([
7692
+ core.Input(),
7693
+ __metadata("design:type", Object),
7694
+ __metadata("design:paramtypes", [Object])
7695
+ ], DatoSortableComponent.prototype, "datoList", null);
7696
+ __decorate([
7697
+ core.Input(),
7698
+ __metadata("design:type", Object)
7699
+ ], DatoSortableComponent.prototype, "datoOptions", void 0);
7700
+ __decorate([
7701
+ core.Input(),
7702
+ __metadata("design:type", String)
7703
+ ], DatoSortableComponent.prototype, "containerClass", void 0);
7704
+ __decorate([
7705
+ core.Output(),
7706
+ __metadata("design:type", Object)
7707
+ ], DatoSortableComponent.prototype, "orderUpdated", void 0);
7708
+ DatoSortableComponent = __decorate([
7709
+ core.Component({
7710
+ selector: 'dato-sortable',
7711
+ 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>",
7712
+ changeDetection: core.ChangeDetectionStrategy.OnPush,
7713
+ encapsulation: core.ViewEncapsulation.None,
7714
+ 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)}"]
7715
+ })
7716
+ ], DatoSortableComponent);
7717
+ return DatoSortableComponent;
7718
+ }());
7719
+
7612
7720
  /**
7613
7721
  * @license
7614
7722
  * Copyright Datorama. All Rights Reserved.
@@ -7654,6 +7762,13 @@
7654
7762
  enumerable: true,
7655
7763
  configurable: true
7656
7764
  });
7765
+ Object.defineProperty(DatoAccordionComponent.prototype, "groups", {
7766
+ get: function () {
7767
+ return this.sortable && this.sortable.accordionGroups.length > 0 ? this.sortable.accordionGroups : this.childGroups;
7768
+ },
7769
+ enumerable: true,
7770
+ configurable: true
7771
+ });
7657
7772
  DatoAccordionComponent.prototype.ngOnChanges = function (changes) {
7658
7773
  var _this = this;
7659
7774
  if (changes.expandAll && !changes.expandAll.firstChange) {
@@ -7871,11 +7986,15 @@
7871
7986
  __decorate([
7872
7987
  core.ContentChildren(DatoAccordionGroupComponent),
7873
7988
  __metadata("design:type", core.QueryList)
7874
- ], DatoAccordionComponent.prototype, "groups", void 0);
7989
+ ], DatoAccordionComponent.prototype, "childGroups", void 0);
7875
7990
  __decorate([
7876
7991
  core.ContentChildren(DatoAccordionComponent_1, { descendants: true }),
7877
7992
  __metadata("design:type", core.QueryList)
7878
7993
  ], DatoAccordionComponent.prototype, "childAccordion", void 0);
7994
+ __decorate([
7995
+ core.ContentChild(DatoSortableComponent, { static: true }),
7996
+ __metadata("design:type", DatoSortableComponent)
7997
+ ], DatoAccordionComponent.prototype, "sortable", void 0);
7879
7998
  __decorate([
7880
7999
  core.Input(),
7881
8000
  __metadata("design:type", Object)
@@ -10182,110 +10301,6 @@
10182
10301
  return DatoOptionsModule;
10183
10302
  }());
10184
10303
 
10185
- /**
10186
- * @license
10187
- * Copyright Datorama. All Rights Reserved.
10188
- *
10189
- * Use of this source code is governed by an Apache License 2.0 license that can be
10190
- * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
10191
- */
10192
- var DatoSortableComponent = /** @class */ (function () {
10193
- function DatoSortableComponent() {
10194
- this.list = [];
10195
- this.noop = noop;
10196
- /**
10197
- * Sortablejs options
10198
- */
10199
- this.datoOptions = {};
10200
- /**
10201
- * Fired once items order has changed
10202
- */
10203
- this.orderUpdated = new core.EventEmitter();
10204
- this.defaultOptions = {
10205
- handle: '.dato-sortable-handler',
10206
- ghostClass: 'dato-sortable-ghost',
10207
- chosenClass: 'dato-sortable-chosen',
10208
- dragClass: 'dato-sortable-drag'
10209
- };
10210
- }
10211
- Object.defineProperty(DatoSortableComponent.prototype, "datoList", {
10212
- set: function (list) {
10213
- var isArr = Array.isArray(list);
10214
- var validInput = isArr || (list instanceof forms.FormControl && Array.isArray(list.value));
10215
- if (!validInput) {
10216
- throw new Error("DatoSortable - datoList expected array or form control but got " + typeof list);
10217
- }
10218
- if (!isArr) {
10219
- this.formControl = list;
10220
- this.list = __spread(this.formControl.value);
10221
- }
10222
- else {
10223
- this.list = list;
10224
- }
10225
- },
10226
- enumerable: true,
10227
- configurable: true
10228
- });
10229
- DatoSortableComponent.prototype.ngOnInit = function () {
10230
- var _this = this;
10231
- var _a = this.datoOptions, dynamicGhostHeight = _a.dynamicGhostHeight, hasStaticItems = _a.hasStaticItems, sortableOptions = __rest(_a, ["dynamicGhostHeight", "hasStaticItems"]);
10232
- var mergedOptions = __assign(__assign(__assign({}, this.defaultOptions), sortableOptions), { onUpdate: function (event) { return (sortableOptions.onUpdate ? sortableOptions.onUpdate(event) : _this.emitUpdate(event)); } });
10233
- if (dynamicGhostHeight) {
10234
- mergedOptions.onStart = function (event) { return _this.setGhostHeight(event); };
10235
- }
10236
- if (hasStaticItems) {
10237
- mergedOptions.onMove = function (event) {
10238
- if (event.related.classList.contains('dato-sortable-static-item')) {
10239
- return false;
10240
- }
10241
- return sortableOptions.onMove ? sortableOptions.onMove(event) : true;
10242
- };
10243
- }
10244
- this.mergedOptions = mergedOptions;
10245
- };
10246
- DatoSortableComponent.prototype.emitUpdate = function (event) {
10247
- if (this.formControl) {
10248
- this.formControl.setValue(this.list);
10249
- }
10250
- this.orderUpdated.emit(event);
10251
- };
10252
- DatoSortableComponent.prototype.setGhostHeight = function (event) {
10253
- var originalEl = event.from.children[event.oldIndex];
10254
- setStyle(originalEl, 'display', 'block');
10255
- var height = originalEl.getBoundingClientRect().height;
10256
- setStyle(originalEl, 'display', 'none');
10257
- var ghostEl = query('.dato-sortable-ghost');
10258
- setStyle(ghostEl, 'height', height + "px");
10259
- };
10260
- __decorate([
10261
- core.Input(),
10262
- __metadata("design:type", Object),
10263
- __metadata("design:paramtypes", [Object])
10264
- ], DatoSortableComponent.prototype, "datoList", null);
10265
- __decorate([
10266
- core.Input(),
10267
- __metadata("design:type", Object)
10268
- ], DatoSortableComponent.prototype, "datoOptions", void 0);
10269
- __decorate([
10270
- core.Input(),
10271
- __metadata("design:type", String)
10272
- ], DatoSortableComponent.prototype, "containerClass", void 0);
10273
- __decorate([
10274
- core.Output(),
10275
- __metadata("design:type", Object)
10276
- ], DatoSortableComponent.prototype, "orderUpdated", void 0);
10277
- DatoSortableComponent = __decorate([
10278
- core.Component({
10279
- selector: 'dato-sortable',
10280
- 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>",
10281
- changeDetection: core.ChangeDetectionStrategy.OnPush,
10282
- encapsulation: core.ViewEncapsulation.None,
10283
- 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)}"]
10284
- })
10285
- ], DatoSortableComponent);
10286
- return DatoSortableComponent;
10287
- }());
10288
-
10289
10304
  /**
10290
10305
  * @license
10291
10306
  * Copyright Datorama. All Rights Reserved.
@@ -12742,6 +12757,7 @@
12742
12757
  };
12743
12758
  this.hotKeyTooltip = formatKeys(this.applyHotKeyConfig.keys);
12744
12759
  this.activeAccordionId = 0;
12760
+ this.showClearFiltersButton = true;
12745
12761
  this.excludedValues = new Set();
12746
12762
  }
12747
12763
  Object.defineProperty(DatoGridFilterComponent.prototype, "byValueControl", {
@@ -12856,6 +12872,9 @@
12856
12872
  var colFilter = filter || colDef.filter;
12857
12873
  var filterOptions = DatoGridFilterOptionsMap[colFilter];
12858
12874
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
12875
+ if (!isNil(filtersConfig.showClearFiltersButton)) {
12876
+ this.showClearFiltersButton = filtersConfig.showClearFiltersButton;
12877
+ }
12859
12878
  if (filtersConfig.sections) {
12860
12879
  this.filterSections = (_a = {}, _a[filtersConfig.sections] = true, _a);
12861
12880
  }
@@ -13363,7 +13382,7 @@
13363
13382
  DatoGridFilterComponent = __decorate([
13364
13383
  core.Component({
13365
13384
  selector: 'dato-grid-filter',
13366
- template: "<form class=\"container primary-0-background-color\" [formGroup]=\"filterForm\" datoForm\n *datoSubscribe=\"hasFilter$ as hasFilter\">\n <ng-container>\n <dato-accordion closeOthers=\"true\" class=\"filter-options\" [activeIds]=\"activeAccordionId\">\n <ng-container *ngIf=\"filterSections.Conditional\">\n\n <dato-accordion-group>\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"conditional-filters\"\n [class.primary-100-background-color]=\"header_1.isOpen\" #header_1>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex-grow d-flex align-start-center\">{{'core.filterByCondition' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_1.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #conditionalContent>\n <div class=\"conditional-content-container d-flex-column\" formGroupName=\"conditional\"\n [class.multi-conditions]=\"conditionsControls.length > 1\">\n <div class=\"operand d-flex-column mb-10\"\n [attr.data-auto-id]=\"'condition-' + i\"\n *ngFor=\"let operand of conditionsControls; index as i; last as last\">\n <div class=\"d-flex\">\n <div class=\"d-flex-column d-flex-grow min-width-0\">\n <ng-container formArrayName=\"conditions\">\n\n <ng-container [formGroupName]=\"i\">\n <dato-select datoSize=\"sm\" class=\"mb-10\" [attr.data-auto-id]=\"'condition-' + i + '-operand'\" formControlName=\"type\"\n datoSelectClass=\"operand-select\"\n [dataSet]=\"conditionalFilterOptions\"\n [isCombo]=\"false\" #select>\n <dato-option *ngFor=\"let option of select.data; index as index\"\n [option]=\"option\">\n {{ option.label }}\n </dato-option>\n </dato-select>\n <ng-container [ngSwitch]=\"filterType\">\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Date\">\n <dato-date-picker [attr.data-auto-id]=\"'condition-date-' + i + '-value'\"\n formControlName=\"value\" class=\"d-flex-grow range-calendar\">\n <ng-template>\n <dato-date-picker-range *ngIf=\"getOperandType(i) === rangeOperand; else singleDate\"></dato-date-picker-range>\n <ng-template #singleDate>\n <dato-date-picker-single></dato-date-picker-single>\n </ng-template>\n </ng-template>\n </dato-date-picker>\n </div>\n <ng-container *ngIf=\"!isConditionalEmpty(operand)\">\n <dato-input *ngSwitchCase=\"gridFilterTypes.String\" datoSize=\"sm\"\n (keydown.enter.stop.prevent)=\"closePopUp()\"\n datoControlErrors [attr.data-auto-id]=\"'condition-string-' + i + '-value'\"\n [datoControlErrorsOnBlur]=\"false\"\n class=\"condition-value\"\n placeholder=\"core.filter\" formControlName=\"value\"\n [isFocused]=\"conditionalContent._expanded\"\n ></dato-input>\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Number\">\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\" [showControls]=\"false\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"value\" [attr.data-auto-id]=\"'condition-number-' + i + '-value'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors [datoAutoFocus]=\"conditionalContent._expanded\"\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n <ng-container *ngIf=\"getOperandType(i) === rangeOperand\">\n <div class=\"mx-5\">-</div>\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"rangeEnd\" [attr.data-auto-id]=\"'condition-number-' + i + '-range-end'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div>\n\n <dato-icon-button datoSize=\"md\"\n datoType=\"none\" icon=\"trash\"\n class=\"overflow-hidden delete\"\n datoTooltip=\"core.deleteFilterCondition\"\n [attr.data-auto-id]=\"'condition-' + i + '-remove'\"\n (click)=\"removeCondition(i)\"\n datoTooltipPosition=\"right-start\"></dato-icon-button>\n </div>\n </div>\n <dato-operator-toggler class=\"mt-10 justify-center width-100 d-flex\" data-auto-id=\"operator-toggler\"\n expanded=\"true\" [datoTogglerValue]=\"conditionsOperator\"\n *ngIf=\"conditionsControls.length > 1 && !last\"\n formControlName=\"operator\"></dato-operator-toggler>\n </div>\n <div class=\"d-flex align-center\">\n <dato-link *ngIf=\"conditionsControls.length < 3\" class=\"no-select\" datoSize=\"sm\" data-auto-id=\"add-condition\"\n datoType=\"secondary\" (click)=\"addCondition()\">\n <dato-icon height=\"10px\" width=\"10px\" icon=\"plus-simple\"></dato-icon>\n {{ 'core.condition' | translate }}\n </dato-link>\n </div>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngIf=\"filterSections.By_Value\">\n <dato-accordion-group class=\"list-content\">\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"by-value-filters\"\n [class.primary-100-background-color]=\"header_2.isOpen\" #header_2>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex d-flex-grow align-start-center\">{{'core.filterByValue' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_2.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #byValueContent>\n <div class=\"value-content-container d-flex-column\">\n <dato-input datoSize=\"sm\" placeholder=\"core.search-all-values\" [debounceTime]=\"300\" #search [formControl]=\"listSearchControl\" [isFocused]=\"byValueContent._expanded\"></dato-input>\n <dato-list-v2 class=\"primary-0-background-color\"\n containerHeight=\"195px\"\n [withSelectAll]=\"true\"\n [clientSearch]=\"isClientSideGrid\"\n [sortByKey]=\"listSortByKey\"\n [labelType]=\"listLabelType\"\n [searchController]=\"search\"\n [options]=\"listOptions\"\n [isSortList]=\"!keepPredefinedListOriginalOrder\"\n [loading]=\"loadingList\"\n [noDataTpl]=\"isClientSideGrid ? null : noData\"\n formControlName=\"byValue\"\n data-auto-id=\"by-value-filters-list\">\n </dato-list-v2>\n <ng-template #noData>\n <div *ngIf=\"serverSearchErrored; else noResults\" class=\"mb-10 d-flex-1 d-flex-column align-center\" data-auto-id=\"by-value-server-error\">\n <img class=\"mt-20\" datoStaticSrc=\"core/grid/filter-server-error.svg\"/>\n <p class=\"dato-note-bold mt-10 mb-10 primary-300-color\">{{ 'core.something-went-wrong' | translate }}</p>\n <p class=\"dato-note-italic primary-300-color\">{{ 'core.try-again-later' | translate }}</p>\n </div>\n <ng-template #noResults>\n <dato-list-no-result class=\"mb-10 block\" data-auto-id=\"by-value-no-results\"></dato-list-no-result>\n </ng-template>\n </ng-template>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n </dato-accordion>\n </ng-container>\n <div class=\"actions no-select px-10 py-12 d-flex align-end-center\">\n <dato-link class=\"mr-30\" datoType=\"secondary\" datoSize=\"sm\" (click)=\"clearFilters()\" data-auto-id=\"clear-filters\"\n [disabled]=\"!hasFilter\">{{ 'core.clearFilters' | translate }}</dato-link>\n <dato-button datoSize=\"sm\" [datoTooltip]=\"hotKeyTooltip\" [datoHotkeys]=\"applyHotKeyConfig\" (click)=\"closePopUp()\" data-auto-id=\"apply-filters\">{{'core.apply' | translate}}</dato-button>\n </div>\n</form>\n",
13385
+ template: "<form class=\"container primary-0-background-color\" [formGroup]=\"filterForm\" datoForm\n *datoSubscribe=\"hasFilter$ as hasFilter\">\n <ng-container>\n <dato-accordion closeOthers=\"true\" class=\"filter-options\" [activeIds]=\"activeAccordionId\">\n <ng-container *ngIf=\"filterSections.Conditional\">\n\n <dato-accordion-group>\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"conditional-filters\"\n [class.primary-100-background-color]=\"header_1.isOpen\" #header_1>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex-grow d-flex align-start-center\">{{'core.filterByCondition' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_1.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #conditionalContent>\n <div class=\"conditional-content-container d-flex-column\" formGroupName=\"conditional\"\n [class.multi-conditions]=\"conditionsControls.length > 1\">\n <div class=\"operand d-flex-column mb-10\"\n [attr.data-auto-id]=\"'condition-' + i\"\n *ngFor=\"let operand of conditionsControls; index as i; last as last\">\n <div class=\"d-flex\">\n <div class=\"d-flex-column d-flex-grow min-width-0\">\n <ng-container formArrayName=\"conditions\">\n\n <ng-container [formGroupName]=\"i\">\n <dato-select datoSize=\"sm\" class=\"mb-10\" [attr.data-auto-id]=\"'condition-' + i + '-operand'\" formControlName=\"type\"\n datoSelectClass=\"operand-select\"\n [dataSet]=\"conditionalFilterOptions\"\n [isCombo]=\"false\" #select>\n <dato-option *ngFor=\"let option of select.data; index as index\"\n [option]=\"option\">\n {{ option.label }}\n </dato-option>\n </dato-select>\n <ng-container [ngSwitch]=\"filterType\">\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Date\">\n <dato-date-picker [attr.data-auto-id]=\"'condition-date-' + i + '-value'\"\n formControlName=\"value\" class=\"d-flex-grow range-calendar\">\n <ng-template>\n <dato-date-picker-range *ngIf=\"getOperandType(i) === rangeOperand; else singleDate\"></dato-date-picker-range>\n <ng-template #singleDate>\n <dato-date-picker-single></dato-date-picker-single>\n </ng-template>\n </ng-template>\n </dato-date-picker>\n </div>\n <ng-container *ngIf=\"!isConditionalEmpty(operand)\">\n <dato-input *ngSwitchCase=\"gridFilterTypes.String\" datoSize=\"sm\"\n (keydown.enter.stop.prevent)=\"closePopUp()\"\n datoControlErrors [attr.data-auto-id]=\"'condition-string-' + i + '-value'\"\n [datoControlErrorsOnBlur]=\"false\"\n class=\"condition-value\"\n placeholder=\"core.filter\" formControlName=\"value\"\n [isFocused]=\"conditionalContent._expanded\"\n ></dato-input>\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Number\">\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\" [showControls]=\"false\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"value\" [attr.data-auto-id]=\"'condition-number-' + i + '-value'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors [datoAutoFocus]=\"conditionalContent._expanded\"\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n <ng-container *ngIf=\"getOperandType(i) === rangeOperand\">\n <div class=\"mx-5\">-</div>\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"rangeEnd\" [attr.data-auto-id]=\"'condition-number-' + i + '-range-end'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div>\n\n <dato-icon-button datoSize=\"md\"\n datoType=\"none\" icon=\"trash\"\n class=\"overflow-hidden delete\"\n datoTooltip=\"core.deleteFilterCondition\"\n [attr.data-auto-id]=\"'condition-' + i + '-remove'\"\n (click)=\"removeCondition(i)\"\n datoTooltipPosition=\"right-start\"></dato-icon-button>\n </div>\n </div>\n <dato-operator-toggler class=\"mt-10 justify-center width-100 d-flex\" data-auto-id=\"operator-toggler\"\n expanded=\"true\" [datoTogglerValue]=\"conditionsOperator\"\n *ngIf=\"conditionsControls.length > 1 && !last\"\n formControlName=\"operator\"></dato-operator-toggler>\n </div>\n <div class=\"d-flex align-center\">\n <dato-link *ngIf=\"conditionsControls.length < 3\" class=\"no-select\" datoSize=\"sm\" data-auto-id=\"add-condition\"\n datoType=\"secondary\" (click)=\"addCondition()\">\n <dato-icon height=\"10px\" width=\"10px\" icon=\"plus-simple\"></dato-icon>\n {{ 'core.condition' | translate }}\n </dato-link>\n </div>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngIf=\"filterSections.By_Value\">\n <dato-accordion-group class=\"list-content\">\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"by-value-filters\"\n [class.primary-100-background-color]=\"header_2.isOpen\" #header_2>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex d-flex-grow align-start-center\">{{'core.filterByValue' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_2.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #byValueContent>\n <div class=\"value-content-container d-flex-column\">\n <dato-input datoSize=\"sm\" placeholder=\"core.search-all-values\" [debounceTime]=\"300\" #search [formControl]=\"listSearchControl\" [isFocused]=\"byValueContent._expanded\"></dato-input>\n <dato-list-v2 class=\"primary-0-background-color\"\n containerHeight=\"195px\"\n [withSelectAll]=\"true\"\n [clientSearch]=\"isClientSideGrid\"\n [sortByKey]=\"listSortByKey\"\n [labelType]=\"listLabelType\"\n [searchController]=\"search\"\n [options]=\"listOptions\"\n [isSortList]=\"!keepPredefinedListOriginalOrder\"\n [loading]=\"loadingList\"\n [noDataTpl]=\"isClientSideGrid ? null : noData\"\n formControlName=\"byValue\"\n data-auto-id=\"by-value-filters-list\">\n </dato-list-v2>\n <ng-template #noData>\n <div *ngIf=\"serverSearchErrored; else noResults\" class=\"mb-10 d-flex-1 d-flex-column align-center\" data-auto-id=\"by-value-server-error\">\n <img class=\"mt-20\" datoStaticSrc=\"core/grid/filter-server-error.svg\"/>\n <p class=\"dato-note-bold mt-10 mb-10 primary-300-color\">{{ 'core.something-went-wrong' | translate }}</p>\n <p class=\"dato-note-italic primary-300-color\">{{ 'core.try-again-later' | translate }}</p>\n </div>\n <ng-template #noResults>\n <dato-list-no-result class=\"mb-10 block\" data-auto-id=\"by-value-no-results\"></dato-list-no-result>\n </ng-template>\n </ng-template>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n </dato-accordion>\n </ng-container>\n <div class=\"actions no-select px-10 py-12 d-flex align-end-center\">\n <dato-link *ngIf=\"showClearFiltersButton\" class=\"mr-30\" datoType=\"secondary\" datoSize=\"sm\"\n (click)=\"clearFilters()\" data-auto-id=\"clear-filters\" [disabled]=\"!hasFilter\">\n {{ 'core.clearFilters' | translate }}\n </dato-link>\n <dato-button datoSize=\"sm\" [datoTooltip]=\"hotKeyTooltip\" [datoHotkeys]=\"applyHotKeyConfig\" (click)=\"closePopUp()\" data-auto-id=\"apply-filters\">{{'core.apply' | translate}}</dato-button>\n </div>\n</form>\n",
13367
13386
  changeDetection: core.ChangeDetectionStrategy.OnPush,
13368
13387
  styles: [":host dato-accordion-header{transition:background-color .2s ease-in-out}:host>.container{width:242px}:host .value-content-container dato-input{padding:10px}:host .conditional-content-container{padding:10px;transition:padding-right .2s ease-in-out}:host .conditional-content-container.multi-conditions{padding-right:0}:host .conditional-content-container.multi-conditions .delete{width:24px}:host .filter-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;height:40px;transition:color .2s ease-in-out}:host .separator{height:1px;width:100%}:host .delete{transition:width .2s ease-in-out;width:0}"]
13369
13388
  }),
@@ -14429,7 +14448,7 @@
14429
14448
  finally { if (e_2) throw e_2.error; }
14430
14449
  }
14431
14450
  this.updateSettings({ filter: appliedFilter });
14432
- this.api.grid.onFilterChanged();
14451
+ this.notifyFilterUpdate();
14433
14452
  }
14434
14453
  };
14435
14454
  GridService.prototype.setGridSort = function (gridSort) {
@@ -16571,7 +16590,7 @@
16571
16590
  core.Component({
16572
16591
  selector: 'dato-grid-pagination-v2',
16573
16592
  changeDetection: core.ChangeDetectionStrategy.OnPush,
16574
- template: "<div class=\"d-flex-row d-flex-auto d-flex-wrap container\" [class.small]=\"smallVersion\"\n [attr.data-pages-count]=\"totalPages\"\n [attr.data-current-page]=\"pageNumbersDisplay.currentPage\"\n [attr.data-page-size]=\"rowsPerPage\"\n [attr.data-rows-count]=\"rowCount\">\n <div *ngIf=\"totalPages > 1\" #navigation\n class=\"navigation d-flex-row d-flex-0-0-auto align-center\">\n\n <!-- First Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"mr-4\" data-auto-id=\"pagiantion-first-page\"\n icon=\"chevron-left-double\"\n datoType=\"secondary\"\n datoSize=\"md\"\n [disabled]=\"prevPageDisabled\"\n (click)=\"navigateFirstPage()\">\n </dato-icon-button>\n\n <!-- Previous Page -->\n <dato-icon-button icon=\"arrow-left\" datoType=\"secondary\" datoSize=\"md\"\n [disabled]=\"prevPageDisabled\" data-auto-id=\"pagiantion-previous-page\"\n (click)=\"navigatePrevPage()\">\n </dato-icon-button>\n\n\n <div class=\"d-flex mx-5 align-center number-container\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-previous-batch\"\n *ngIf=\"pageNumbersDisplay.showFirstEllipsis && !smallVersion\"\n (click)=\"showPreviousBatch()\">...\n </dato-link>\n <dato-link class=\"page-number mx-5\" [datoType]=\"page === pageNumbersDisplay.currentPage ? 'primary' : 'secondary'\" datoSize=\"sm\"\n *ngFor=\"let page of pageNumbersDisplay.pages; index as i; trackBy: trackByPage;\" [attr.data-auto-id]=\"'pagiantion-page-' + i\"\n (click)=\"navigatePage(page - 1)\">\n {{page}}\n </dato-link>\n\n <div class=\"d-flex\" *ngIf=\"pageNumbersDisplay.showLastPage && !smallVersion\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-next-batch\"\n (click)=\"showNextBatch()\">...</dato-link>\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\"\n [attr.data-auto-id]=\"'pagiantion-page-' + totalPages\"\n (click)=\"navigatePage(totalPages - 1)\">\n {{totalPages}}\n </dato-link>\n </div>\n\n </div>\n\n <!-- Next Page -->\n <dato-icon-button icon=\"arrow-right\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"navigateNextPage()\" data-auto-id=\"pagiantion-next-page\"\n [disabled]=\"nextPageDisabled\">\n </dato-icon-button>\n\n <!-- Last Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"ml-4\" icon=\"chevron-right-double\"\n datoType=\"secondary\" datoSize=\"md\" data-auto-id=\"pagiantion-last-page\"\n [disabled]=\"nextPageDisabled\"\n (click)=\"navigatePage(totalPages - 1)\">\n </dato-icon-button>\n\n </div>\n\n <div *ngIf=\"totalPages > 1 && !smallVersion\"\n class=\"separator mx-10 my-auto primary-100-background-color\">\n </div>\n\n <div class=\"total d-flex-0-0-auto d-flex-row align-center\">\n <span class=\"dato-note primary-300-color\">{{rowsRange}}</span>\n </div>\n\n <div *ngIf=\"showBottomControls\" class=\"grid-controls d-flex d-flex-1 justify-end\">\n <dato-icon-button *ngIf=\"hasRowGroupColumns\" [icon]=\"isExpanded ? 'collapse' : 'expand'\" datoType=\"secondary\"\n datoSize=\"md\" (click)=\"toggleGroupsState()\" data-auto-id=\"pagination-expand-collapse\"\n [datoTooltipV2]=\"isExpanded ? 'core.collapse-rows' : 'core.expand-rows'\">\n </dato-icon-button>\n\n <dato-icon-button class=\"mx-4\" icon=\"maximize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('content')\" [datoTooltipV2]=\"'core.fit-to-content'\"\n data-auto-id=\"pagination-fit-to-content\">\n </dato-icon-button>\n\n <dato-icon-button icon=\"minimize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('container')\" [datoTooltipV2]=\"'core.fit-to-container'\"\n data-auto-id=\"pagination-fit-to-container\">\n </dato-icon-button>\n </div>\n</div>\n",
16593
+ template: "<div class=\"d-flex-row d-flex-auto d-flex-wrap container\" [class.small]=\"smallVersion\"\n [attr.data-pages-count]=\"totalPages\"\n [attr.data-current-page]=\"pageNumbersDisplay.currentPage\"\n [attr.data-page-size]=\"rowsPerPage\"\n [attr.data-rows-count]=\"rowCount\">\n <div *ngIf=\"totalPages > 1\" #navigation\n class=\"navigation d-flex-row d-flex-0-0-auto align-center\">\n\n <!-- First Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"mr-4\" data-auto-id=\"pagiantion-first-page\"\n icon=\"chevron-left-double\"\n datoType=\"secondary\"\n datoSize=\"md\"\n [disabled]=\"prevPageDisabled\"\n (click)=\"navigateFirstPage()\">\n </dato-icon-button>\n\n <!-- Previous Page -->\n <dato-icon-button icon=\"arrow-left\" datoType=\"secondary\" datoSize=\"md\"\n [disabled]=\"prevPageDisabled\" data-auto-id=\"pagiantion-previous-page\"\n (click)=\"navigatePrevPage()\">\n </dato-icon-button>\n\n\n <div class=\"d-flex mx-5 align-center number-container\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-previous-batch\"\n *ngIf=\"pageNumbersDisplay.showFirstEllipsis && !smallVersion\"\n (click)=\"showPreviousBatch()\">...\n </dato-link>\n <dato-link class=\"page-number mx-5\" [datoType]=\"page === pageNumbersDisplay.currentPage ? 'primary' : 'secondary'\" datoSize=\"sm\"\n *ngFor=\"let page of pageNumbersDisplay.pages; index as i; trackBy: trackByPage;\" [attr.data-auto-id]=\"'pagiantion-page-' + i\"\n (click)=\"navigatePage(page - 1)\">\n {{page}}\n </dato-link>\n\n <div class=\"d-flex\" *ngIf=\"pageNumbersDisplay.showLastPage && !smallVersion\">\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\" data-auto-id=\"pagiantion-next-batch\"\n (click)=\"showNextBatch()\">...</dato-link>\n <dato-link class=\"page-number mx-5\" datoType=\"secondary\" datoSize=\"sm\"\n [attr.data-auto-id]=\"'pagiantion-page-' + totalPages\"\n (click)=\"navigatePage(totalPages - 1)\">\n {{totalPages}}\n </dato-link>\n </div>\n\n </div>\n\n <!-- Next Page -->\n <dato-icon-button icon=\"arrow-right\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"navigateNextPage()\" data-auto-id=\"pagiantion-next-page\"\n [disabled]=\"nextPageDisabled\">\n </dato-icon-button>\n\n <!-- Last Page -->\n <dato-icon-button *ngIf=\"!disableButtons\"\n class=\"ml-4\" icon=\"chevron-right-double\"\n datoType=\"secondary\" datoSize=\"md\" data-auto-id=\"pagiantion-last-page\"\n [disabled]=\"nextPageDisabled\"\n (click)=\"navigatePage(totalPages - 1)\">\n </dato-icon-button>\n\n </div>\n\n <div *ngIf=\"totalPages > 1 && !smallVersion\"\n class=\"separator mx-10 my-auto primary-100-background-color\">\n </div>\n\n <div class=\"total d-flex-0-0-auto d-flex-row align-center\">\n <span class=\"dato-note primary-300-color\">{{rowsRange}}</span>\n </div>\n\n <div *ngIf=\"showBottomControls\" class=\"grid-controls d-flex d-flex-1 justify-end\">\n <dato-icon-button *ngIf=\"hasRowGroupColumns\" [icon]=\"isExpanded ? 'collapse' : 'expand'\" datoType=\"secondary\"\n datoSize=\"md\" (click)=\"toggleGroupsState()\" data-auto-id=\"pagination-expand-collapse\"\n [datoTooltipV2]=\"isExpanded ? 'core.collapse-rows' : 'core.expand-rows'\">\n </dato-icon-button>\n\n <dato-icon-button class=\"mx-4\" icon=\"maximize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('content')\" [datoTooltipV2]=\"'core.fit-to-text'\"\n data-auto-id=\"pagination-fit-to-content\">\n </dato-icon-button>\n\n <dato-icon-button icon=\"minimize-horizontal\" datoType=\"secondary\" datoSize=\"md\"\n (click)=\"autoFitGrid('container')\" [datoTooltipV2]=\"'core.revert-to-default-size'\"\n data-auto-id=\"pagination-fit-to-container\">\n </dato-icon-button>\n </div>\n</div>\n",
16575
16594
  providers: [common.DecimalPipe],
16576
16595
  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}"]
16577
16596
  }),
@@ -25392,7 +25411,7 @@
25392
25411
  };
25393
25412
  }
25394
25413
 
25395
- window.coreVersion = '22.5.1';
25414
+ window.coreVersion = '22.5.5';
25396
25415
 
25397
25416
  exports.APP_TRANSLATE = APP_TRANSLATE;
25398
25417
  exports.AceService = AceService;