@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
@@ -7410,6 +7410,114 @@ var defaultClientSearchStrategy = function (searchIn, searchValue, labelKey) {
7410
7410
  return false;
7411
7411
  };
7412
7412
 
7413
+ /**
7414
+ * @license
7415
+ * Copyright Datorama. All Rights Reserved.
7416
+ *
7417
+ * Use of this source code is governed by an Apache License 2.0 license that can be
7418
+ * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
7419
+ */
7420
+ var DatoSortableComponent = /** @class */ (function () {
7421
+ function DatoSortableComponent() {
7422
+ this.list = [];
7423
+ this.noop = noop;
7424
+ /**
7425
+ * Sortablejs options
7426
+ */
7427
+ this.datoOptions = {};
7428
+ /**
7429
+ * Fired once items order has changed
7430
+ */
7431
+ this.orderUpdated = new EventEmitter();
7432
+ this.defaultOptions = {
7433
+ handle: '.dato-sortable-handler',
7434
+ ghostClass: 'dato-sortable-ghost',
7435
+ chosenClass: 'dato-sortable-chosen',
7436
+ dragClass: 'dato-sortable-drag'
7437
+ };
7438
+ }
7439
+ Object.defineProperty(DatoSortableComponent.prototype, "datoList", {
7440
+ set: function (list) {
7441
+ var isArr = Array.isArray(list);
7442
+ var validInput = isArr || (list instanceof FormControl && Array.isArray(list.value));
7443
+ if (!validInput) {
7444
+ throw new Error("DatoSortable - datoList expected array or form control but got " + typeof list);
7445
+ }
7446
+ if (!isArr) {
7447
+ this.formControl = list;
7448
+ this.list = __spread(this.formControl.value);
7449
+ }
7450
+ else {
7451
+ this.list = list;
7452
+ }
7453
+ },
7454
+ enumerable: true,
7455
+ configurable: true
7456
+ });
7457
+ DatoSortableComponent.prototype.ngOnInit = function () {
7458
+ var _this = this;
7459
+ var _a = this.datoOptions, dynamicGhostHeight = _a.dynamicGhostHeight, hasStaticItems = _a.hasStaticItems, sortableOptions = __rest(_a, ["dynamicGhostHeight", "hasStaticItems"]);
7460
+ var mergedOptions = __assign(__assign(__assign({}, this.defaultOptions), sortableOptions), { onUpdate: function (event) { return (sortableOptions.onUpdate ? sortableOptions.onUpdate(event) : _this.emitUpdate(event)); } });
7461
+ if (dynamicGhostHeight) {
7462
+ mergedOptions.onStart = function (event) { return _this.setGhostHeight(event); };
7463
+ }
7464
+ if (hasStaticItems) {
7465
+ mergedOptions.onMove = function (event) {
7466
+ if (event.related.classList.contains('dato-sortable-static-item')) {
7467
+ return false;
7468
+ }
7469
+ return sortableOptions.onMove ? sortableOptions.onMove(event) : true;
7470
+ };
7471
+ }
7472
+ this.mergedOptions = mergedOptions;
7473
+ };
7474
+ DatoSortableComponent.prototype.emitUpdate = function (event) {
7475
+ if (this.formControl) {
7476
+ this.formControl.setValue(this.list);
7477
+ }
7478
+ this.orderUpdated.emit(event);
7479
+ };
7480
+ DatoSortableComponent.prototype.setGhostHeight = function (event) {
7481
+ var originalEl = event.from.children[event.oldIndex];
7482
+ setStyle(originalEl, 'display', 'block');
7483
+ var height = originalEl.getBoundingClientRect().height;
7484
+ setStyle(originalEl, 'display', 'none');
7485
+ var ghostEl = query('.dato-sortable-ghost');
7486
+ setStyle(ghostEl, 'height', height + "px");
7487
+ };
7488
+ __decorate([
7489
+ ContentChildren(DatoAccordionGroupComponent),
7490
+ __metadata("design:type", QueryList)
7491
+ ], DatoSortableComponent.prototype, "accordionGroups", void 0);
7492
+ __decorate([
7493
+ Input(),
7494
+ __metadata("design:type", Object),
7495
+ __metadata("design:paramtypes", [Object])
7496
+ ], DatoSortableComponent.prototype, "datoList", null);
7497
+ __decorate([
7498
+ Input(),
7499
+ __metadata("design:type", Object)
7500
+ ], DatoSortableComponent.prototype, "datoOptions", void 0);
7501
+ __decorate([
7502
+ Input(),
7503
+ __metadata("design:type", String)
7504
+ ], DatoSortableComponent.prototype, "containerClass", void 0);
7505
+ __decorate([
7506
+ Output(),
7507
+ __metadata("design:type", Object)
7508
+ ], DatoSortableComponent.prototype, "orderUpdated", void 0);
7509
+ DatoSortableComponent = __decorate([
7510
+ Component({
7511
+ selector: 'dato-sortable',
7512
+ 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>",
7513
+ changeDetection: ChangeDetectionStrategy.OnPush,
7514
+ encapsulation: ViewEncapsulation.None,
7515
+ 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)}"]
7516
+ })
7517
+ ], DatoSortableComponent);
7518
+ return DatoSortableComponent;
7519
+ }());
7520
+
7413
7521
  /**
7414
7522
  * @license
7415
7523
  * Copyright Datorama. All Rights Reserved.
@@ -7455,6 +7563,13 @@ var DatoAccordionComponent = /** @class */ (function () {
7455
7563
  enumerable: true,
7456
7564
  configurable: true
7457
7565
  });
7566
+ Object.defineProperty(DatoAccordionComponent.prototype, "groups", {
7567
+ get: function () {
7568
+ return this.sortable && this.sortable.accordionGroups.length > 0 ? this.sortable.accordionGroups : this.childGroups;
7569
+ },
7570
+ enumerable: true,
7571
+ configurable: true
7572
+ });
7458
7573
  DatoAccordionComponent.prototype.ngOnChanges = function (changes) {
7459
7574
  var _this = this;
7460
7575
  if (changes.expandAll && !changes.expandAll.firstChange) {
@@ -7672,11 +7787,15 @@ var DatoAccordionComponent = /** @class */ (function () {
7672
7787
  __decorate([
7673
7788
  ContentChildren(DatoAccordionGroupComponent),
7674
7789
  __metadata("design:type", QueryList)
7675
- ], DatoAccordionComponent.prototype, "groups", void 0);
7790
+ ], DatoAccordionComponent.prototype, "childGroups", void 0);
7676
7791
  __decorate([
7677
7792
  ContentChildren(DatoAccordionComponent_1, { descendants: true }),
7678
7793
  __metadata("design:type", QueryList)
7679
7794
  ], DatoAccordionComponent.prototype, "childAccordion", void 0);
7795
+ __decorate([
7796
+ ContentChild(DatoSortableComponent, { static: true }),
7797
+ __metadata("design:type", DatoSortableComponent)
7798
+ ], DatoAccordionComponent.prototype, "sortable", void 0);
7680
7799
  __decorate([
7681
7800
  Input(),
7682
7801
  __metadata("design:type", Object)
@@ -9983,110 +10102,6 @@ var DatoOptionsModule = /** @class */ (function () {
9983
10102
  return DatoOptionsModule;
9984
10103
  }());
9985
10104
 
9986
- /**
9987
- * @license
9988
- * Copyright Datorama. All Rights Reserved.
9989
- *
9990
- * Use of this source code is governed by an Apache License 2.0 license that can be
9991
- * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
9992
- */
9993
- var DatoSortableComponent = /** @class */ (function () {
9994
- function DatoSortableComponent() {
9995
- this.list = [];
9996
- this.noop = noop;
9997
- /**
9998
- * Sortablejs options
9999
- */
10000
- this.datoOptions = {};
10001
- /**
10002
- * Fired once items order has changed
10003
- */
10004
- this.orderUpdated = new EventEmitter();
10005
- this.defaultOptions = {
10006
- handle: '.dato-sortable-handler',
10007
- ghostClass: 'dato-sortable-ghost',
10008
- chosenClass: 'dato-sortable-chosen',
10009
- dragClass: 'dato-sortable-drag'
10010
- };
10011
- }
10012
- Object.defineProperty(DatoSortableComponent.prototype, "datoList", {
10013
- set: function (list) {
10014
- var isArr = Array.isArray(list);
10015
- var validInput = isArr || (list instanceof FormControl && Array.isArray(list.value));
10016
- if (!validInput) {
10017
- throw new Error("DatoSortable - datoList expected array or form control but got " + typeof list);
10018
- }
10019
- if (!isArr) {
10020
- this.formControl = list;
10021
- this.list = __spread(this.formControl.value);
10022
- }
10023
- else {
10024
- this.list = list;
10025
- }
10026
- },
10027
- enumerable: true,
10028
- configurable: true
10029
- });
10030
- DatoSortableComponent.prototype.ngOnInit = function () {
10031
- var _this = this;
10032
- var _a = this.datoOptions, dynamicGhostHeight = _a.dynamicGhostHeight, hasStaticItems = _a.hasStaticItems, sortableOptions = __rest(_a, ["dynamicGhostHeight", "hasStaticItems"]);
10033
- var mergedOptions = __assign(__assign(__assign({}, this.defaultOptions), sortableOptions), { onUpdate: function (event) { return (sortableOptions.onUpdate ? sortableOptions.onUpdate(event) : _this.emitUpdate(event)); } });
10034
- if (dynamicGhostHeight) {
10035
- mergedOptions.onStart = function (event) { return _this.setGhostHeight(event); };
10036
- }
10037
- if (hasStaticItems) {
10038
- mergedOptions.onMove = function (event) {
10039
- if (event.related.classList.contains('dato-sortable-static-item')) {
10040
- return false;
10041
- }
10042
- return sortableOptions.onMove ? sortableOptions.onMove(event) : true;
10043
- };
10044
- }
10045
- this.mergedOptions = mergedOptions;
10046
- };
10047
- DatoSortableComponent.prototype.emitUpdate = function (event) {
10048
- if (this.formControl) {
10049
- this.formControl.setValue(this.list);
10050
- }
10051
- this.orderUpdated.emit(event);
10052
- };
10053
- DatoSortableComponent.prototype.setGhostHeight = function (event) {
10054
- var originalEl = event.from.children[event.oldIndex];
10055
- setStyle(originalEl, 'display', 'block');
10056
- var height = originalEl.getBoundingClientRect().height;
10057
- setStyle(originalEl, 'display', 'none');
10058
- var ghostEl = query('.dato-sortable-ghost');
10059
- setStyle(ghostEl, 'height', height + "px");
10060
- };
10061
- __decorate([
10062
- Input(),
10063
- __metadata("design:type", Object),
10064
- __metadata("design:paramtypes", [Object])
10065
- ], DatoSortableComponent.prototype, "datoList", null);
10066
- __decorate([
10067
- Input(),
10068
- __metadata("design:type", Object)
10069
- ], DatoSortableComponent.prototype, "datoOptions", void 0);
10070
- __decorate([
10071
- Input(),
10072
- __metadata("design:type", String)
10073
- ], DatoSortableComponent.prototype, "containerClass", void 0);
10074
- __decorate([
10075
- Output(),
10076
- __metadata("design:type", Object)
10077
- ], DatoSortableComponent.prototype, "orderUpdated", void 0);
10078
- DatoSortableComponent = __decorate([
10079
- Component({
10080
- selector: 'dato-sortable',
10081
- 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>",
10082
- changeDetection: ChangeDetectionStrategy.OnPush,
10083
- encapsulation: ViewEncapsulation.None,
10084
- 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)}"]
10085
- })
10086
- ], DatoSortableComponent);
10087
- return DatoSortableComponent;
10088
- }());
10089
-
10090
10105
  /**
10091
10106
  * @license
10092
10107
  * Copyright Datorama. All Rights Reserved.
@@ -12543,6 +12558,7 @@ var DatoGridFilterComponent = /** @class */ (function () {
12543
12558
  };
12544
12559
  this.hotKeyTooltip = formatKeys(this.applyHotKeyConfig.keys);
12545
12560
  this.activeAccordionId = 0;
12561
+ this.showClearFiltersButton = true;
12546
12562
  this.excludedValues = new Set();
12547
12563
  }
12548
12564
  Object.defineProperty(DatoGridFilterComponent.prototype, "byValueControl", {
@@ -12657,6 +12673,9 @@ var DatoGridFilterComponent = /** @class */ (function () {
12657
12673
  var colFilter = filter || colDef.filter;
12658
12674
  var filterOptions = DatoGridFilterOptionsMap[colFilter];
12659
12675
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
12676
+ if (!isNil(filtersConfig.showClearFiltersButton)) {
12677
+ this.showClearFiltersButton = filtersConfig.showClearFiltersButton;
12678
+ }
12660
12679
  if (filtersConfig.sections) {
12661
12680
  this.filterSections = (_a = {}, _a[filtersConfig.sections] = true, _a);
12662
12681
  }
@@ -13164,7 +13183,7 @@ var DatoGridFilterComponent = /** @class */ (function () {
13164
13183
  DatoGridFilterComponent = __decorate([
13165
13184
  Component({
13166
13185
  selector: 'dato-grid-filter',
13167
- 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",
13186
+ 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",
13168
13187
  changeDetection: ChangeDetectionStrategy.OnPush,
13169
13188
  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}"]
13170
13189
  }),
@@ -14230,7 +14249,7 @@ var GridService = /** @class */ (function () {
14230
14249
  finally { if (e_2) throw e_2.error; }
14231
14250
  }
14232
14251
  this.updateSettings({ filter: appliedFilter });
14233
- this.api.grid.onFilterChanged();
14252
+ this.notifyFilterUpdate();
14234
14253
  }
14235
14254
  };
14236
14255
  GridService.prototype.setGridSort = function (gridSort) {
@@ -16372,7 +16391,7 @@ var DatoGridPaginationV2Component = /** @class */ (function () {
16372
16391
  Component({
16373
16392
  selector: 'dato-grid-pagination-v2',
16374
16393
  changeDetection: ChangeDetectionStrategy.OnPush,
16375
- 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",
16394
+ 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",
16376
16395
  providers: [DecimalPipe],
16377
16396
  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}"]
16378
16397
  }),
@@ -25193,7 +25212,7 @@ function fixNgLeaks() {
25193
25212
  };
25194
25213
  }
25195
25214
 
25196
- window.coreVersion = '22.5.1';
25215
+ window.coreVersion = '22.5.5';
25197
25216
 
25198
25217
  /**
25199
25218
  * @license