@porscheinformatik/clr-addons 15.5.8 → 15.6.0

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.
@@ -2,27 +2,35 @@ import { EventEmitter, OnDestroy } from '@angular/core';
2
2
  import { ClrDatagrid, ClrDatagridFilter, ClrDatagridFilterInterface } from '@clr/angular';
3
3
  import { Subject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
+ interface FilterValue {
6
+ value: string;
7
+ displayValue: string;
8
+ }
5
9
  export declare class ClrEnumFilterComponent<T extends {
6
10
  [key: string]: any;
7
11
  }> implements ClrDatagridFilterInterface<T>, OnDestroy {
8
12
  property: string;
9
13
  set value(values: string[]);
10
14
  clrFilterValuesChange: EventEmitter<string[]>;
11
- possibleValues: string[];
15
+ possibleValues: FilterValue[];
12
16
  customPossibleValues: boolean;
13
- filteredValues: string[];
17
+ filteredValues: FilterValue[];
14
18
  changes: EventEmitter<boolean>;
15
19
  destroyed$: Subject<void>;
16
- set clrPossibleValues(values: string[]);
20
+ set clrPossibleValues(values: (string | FilterValue)[]);
17
21
  constructor(filterContainer: ClrDatagridFilter, datagrid: ClrDatagrid);
18
- setPossibleValues(values: string[]): void;
19
- onChange(selectedValue: string, checkboxState: boolean): void;
22
+ setPossibleValues(values: (string | FilterValue)[]): void;
23
+ onChange(selectedValue: FilterValue, checkboxState: boolean): void;
20
24
  isActive(): boolean;
21
25
  accepts(item: T): boolean;
22
26
  get state(): any;
23
27
  clearFilters(): void;
24
28
  private emitFilterChanged;
25
29
  ngOnDestroy(): void;
30
+ protected containsFilterValue(entries: FilterValue[], filtered: FilterValue): boolean;
31
+ private getDisplayValues;
32
+ private getValues;
26
33
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrEnumFilterComponent<any>, never>;
27
34
  static ɵcmp: i0.ɵɵComponentDeclaration<ClrEnumFilterComponent<any>, "clr-enum-filter", never, { "property": "clrProperty"; "value": "clrFilterValues"; "clrPossibleValues": "clrPossibleValues"; }, { "clrFilterValuesChange": "clrFilterValuesChange"; }, never, never, false, never>;
28
35
  }
36
+ export {};
@@ -9,12 +9,13 @@ import * as i3 from "@angular/forms";
9
9
  ClarityIcons.addIcons(trashIcon);
10
10
  export class ClrEnumFilterComponent {
11
11
  set value(values) {
12
+ const converted = values.map(filtered => ({ value: filtered, displayValue: filtered }));
12
13
  if (this.possibleValues?.length) {
13
- this.filteredValues = values.filter(filtered => this.possibleValues.includes(filtered));
14
- this.clrFilterValuesChange.emit(this.filteredValues);
14
+ this.filteredValues = converted.filter(filtered => this.possibleValues.includes(filtered));
15
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
15
16
  }
16
17
  else {
17
- this.filteredValues = values;
18
+ this.filteredValues = converted;
18
19
  }
19
20
  this.changes.emit(true);
20
21
  }
@@ -38,9 +39,9 @@ export class ClrEnumFilterComponent {
38
39
  });
39
40
  }
40
41
  setPossibleValues(values) {
41
- this.possibleValues = values;
42
- this.possibleValues.sort();
43
- this.filteredValues = this.filteredValues.filter(filtered => this.possibleValues.includes(filtered));
42
+ this.possibleValues = values.map(v => (v instanceof Object ? v : { value: v, displayValue: v }));
43
+ this.possibleValues.sort((v1, v2) => v1.displayValue.localeCompare(v2.displayValue));
44
+ this.filteredValues = this.filteredValues.filter(filtered => this.containsFilterValue(this.possibleValues, filtered));
44
45
  this.emitFilterChanged();
45
46
  }
46
47
  onChange(selectedValue, checkboxState) {
@@ -48,7 +49,7 @@ export class ClrEnumFilterComponent {
48
49
  this.filteredValues.push(selectedValue);
49
50
  }
50
51
  else {
51
- this.filteredValues = this.filteredValues.filter(filteredState => filteredState !== selectedValue);
52
+ this.filteredValues = this.filteredValues.filter(filtered => filtered.value !== selectedValue.value);
52
53
  }
53
54
  this.emitFilterChanged();
54
55
  }
@@ -56,12 +57,12 @@ export class ClrEnumFilterComponent {
56
57
  return this.filteredValues.length > 0;
57
58
  }
58
59
  accepts(item) {
59
- return this.filteredValues.includes(item[this.property]);
60
+ return this.getDisplayValues(this.filteredValues).includes(item[this.property]);
60
61
  }
61
62
  get state() {
62
63
  return {
63
64
  property: this.property,
64
- value: this.filteredValues,
65
+ value: this.getValues(this.filteredValues),
65
66
  };
66
67
  }
67
68
  clearFilters() {
@@ -69,19 +70,28 @@ export class ClrEnumFilterComponent {
69
70
  this.emitFilterChanged();
70
71
  }
71
72
  emitFilterChanged() {
72
- this.clrFilterValuesChange.emit(this.filteredValues);
73
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
73
74
  this.changes.emit(true);
74
75
  }
75
76
  ngOnDestroy() {
76
77
  this.destroyed$.next();
77
78
  this.destroyed$.complete();
78
79
  }
80
+ containsFilterValue(entries, filtered) {
81
+ return entries.some(v => v.value === filtered.value);
82
+ }
83
+ getDisplayValues(entries) {
84
+ return entries.map(entry => entry.displayValue);
85
+ }
86
+ getValues(entries) {
87
+ return entries.map(entry => entry.value);
88
+ }
79
89
  }
80
90
  ClrEnumFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, deps: [{ token: i1.ClrDatagridFilter }, { token: i1.ClrDatagrid }], target: i0.ɵɵFactoryTarget.Component });
81
- ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
91
+ ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
82
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, decorators: [{
83
93
  type: Component,
84
- args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
94
+ args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
85
95
  }], ctorParameters: function () { return [{ type: i1.ClrDatagridFilter }, { type: i1.ClrDatagrid }]; }, propDecorators: { property: [{
86
96
  type: Input,
87
97
  args: ['clrProperty']
@@ -93,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
93
103
  }], clrPossibleValues: [{
94
104
  type: Input
95
105
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUE4QixNQUFNLGNBQWMsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV6RCxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBT2pDLE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsSUFDVyxLQUFLLENBQUMsTUFBZ0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFD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LENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7bUhBdkZVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9QQ1puQyxrbUJBZ0JBOzJGREphLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxpQkFBaUI7a0lBT0wsUUFBUTtzQkFBN0IsS0FBSzt1QkFBQyxhQUFhO2dCQUdULEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBV2QscUJBQXFCO3NCQUE5QixNQUFNO2dCQVNNLGlCQUFpQjtzQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsckRhdGFncmlkLCBDbHJEYXRhZ3JpZEZpbHRlciwgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2UgfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDbGFyaXR5SWNvbnMsIHRyYXNoSWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuQ2xhcml0eUljb25zLmFkZEljb25zKHRyYXNoSWNvbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1lbnVtLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnVtLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VudW0tZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENsckVudW1GaWx0ZXJDb21wb25lbnQ8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+XG4gIGltcGxlbWVudHMgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8VD4sIE9uRGVzdHJveVxue1xuICBASW5wdXQoJ2NsclByb3BlcnR5JykgcHJvcGVydHkgPSAnJztcblxuICBASW5wdXQoJ2NsckZpbHRlclZhbHVlcycpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWVzOiBzdHJpbmdbXSkge1xuICAgIGlmICh0aGlzLnBvc3NpYmxlVmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKGZpbHRlcmVkID0+IHRoaXMucG9zc2libGVWYWx1ZXMuaW5jbHVkZXMoZmlsdGVyZWQpKTtcbiAgICAgIHRoaXMuY2xyRmlsdGVyVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJlZFZhbHVlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRydWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIGNsckZpbHRlclZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgcG9zc2libGVWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gIGN1c3RvbVBvc3NpYmxlVmFsdWVzID0gZmFsc2U7XG4gIGZpbHRlcmVkVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICBjaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG5cbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgc2V0IGNsclBvc3NpYmxlVmFsdWVzKHZhbHVlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNldFBvc3NpYmxlVmFsdWVzKHZhbHVlcyk7XG4gICAgdGhpcy5jdXN0b21Qb3NzaWJsZVZhbHVlcyA9IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihmaWx0ZXJDb250YWluZXI6IENsckRhdGFncmlkRmlsdGVyLCBkYXRhZ3JpZDogQ2xyRGF0YWdyaWQpIHtcbiAgICBmaWx0ZXJDb250YWluZXIuc2V0RmlsdGVyKHRoaXMpO1xuICAgIGRhdGFncmlkLml0ZW1zLmFsbENoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgIGlmICghdGhpcy5jdXN0b21Qb3NzaWJsZVZhbHVlcykge1xuICAgICAgICB0aGlzLnNldFBvc3NpYmxlVmFsdWVzKFxuICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5wcm9wZXJ0eV0pLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFBvc3NpYmxlVmFsdWVzKHZhbHVlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnBvc3NpYmxlVmFsdWVzID0gdmFsdWVzO1xuICAgIHRoaXMucG9zc2libGVWYWx1ZXMuc29ydCgpO1xuICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLmZpbHRlcmVkVmFsdWVzLmZpbHRlcihmaWx0ZXJlZCA9PiB0aGlzLnBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKGZpbHRlcmVkKSk7XG5cbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBvbkNoYW5nZShzZWxlY3RlZFZhbHVlOiBzdHJpbmcsIGNoZWNrYm94U3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoY2hlY2tib3hTdGF0ZSkge1xuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcy5wdXNoKHNlbGVjdGVkVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5maWx0ZXJlZFZhbHVlcy5maWx0ZXIoZmlsdGVyZWRTdGF0ZSA9PiBmaWx0ZXJlZFN0YXRlICE9PSBzZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgYWNjZXB0cyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRWYWx1ZXMuaW5jbHVkZXMoaXRlbVt0aGlzLnByb3BlcnR5XSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnByb3BlcnR5LFxuICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyZWRWYWx1ZXMsXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gW107XG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmlsdGVyQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmNsckZpbHRlclZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZmlsdGVyZWRWYWx1ZXMpO1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRydWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpbmsgYnRuLXRyYXNoXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+XG4gIDxjZHMtaWNvbiBzaGFwZT1cInRyYXNoXCI+PC9jZHMtaWNvbj5cbjwvYnV0dG9uPlxuPGNsci1jaGVja2JveC1jb250YWluZXIgY2xhc3M9XCJmaWx0ZXItc2VsZWN0aW9uXCI+XG4gIDxjbHItY2hlY2tib3gtd3JhcHBlciAqbmdGb3I9XCJsZXQgcG9zc2libGVWYWx1ZSBvZiBwb3NzaWJsZVZhbHVlc1wiPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGNsckNoZWNrYm94XG4gICAgICB2YWx1ZT1cInt7IHBvc3NpYmxlVmFsdWUgfX1cIlxuICAgICAgbmFtZT1cInBvc3NpYmxlVmFsdWVcIlxuICAgICAgW25nTW9kZWxdPVwiZmlsdGVyZWRWYWx1ZXMuaW5jbHVkZXMocG9zc2libGVWYWx1ZSlcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UocG9zc2libGVWYWx1ZSwgJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8bGFiZWw+e3sgcG9zc2libGVWYWx1ZSB9fTwvbGFiZWw+XG4gIDwvY2xyLWNoZWNrYm94LXdyYXBwZXI+XG48L2Nsci1jaGVja2JveC1jb250YWluZXI+XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZW51bS1maWx0ZXIvZW51bS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUE4QixNQUFNLGNBQWMsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV6RCxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBWWpDLE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsSUFDVyxLQUFLLENBQUMsTUFBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMs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QyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxPQUFzQjtRQUN0QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7bUhBdEdVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9QQ2pCbkMsMHFCQWdCQTsyRkRDYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCO2tJQU9MLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFHVCxLQUFLO3NCQURmLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVlkLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFTTSxpQkFBaUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbHJEYXRhZ3JpZCwgQ2xyRGF0YWdyaWRGaWx0ZXIsIENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlIH0gZnJvbSAnQGNsci9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xhcml0eUljb25zLCB0cmFzaEljb24gfSBmcm9tICdAY2RzL2NvcmUvaWNvbic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyh0cmFzaEljb24pO1xuXG5pbnRlcmZhY2UgRmlsdGVyVmFsdWUge1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNwbGF5VmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWVudW0tZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudW0tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW51bS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRW51bUZpbHRlckNvbXBvbmVudDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT5cbiAgaW1wbGVtZW50cyBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxUPiwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgnY2xyUHJvcGVydHknKSBwcm9wZXJ0eSA9ICcnO1xuXG4gIEBJbnB1dCgnY2xyRmlsdGVyVmFsdWVzJylcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY29udmVydGVkID0gdmFsdWVzLm1hcChmaWx0ZXJlZCA9PiAoeyB2YWx1ZTogZmlsdGVyZWQsIGRpc3BsYXlWYWx1ZTogZmlsdGVyZWQgfSkpO1xuICAgIGlmICh0aGlzLnBvc3NpYmxlVmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSBjb252ZXJ0ZWQuZmlsdGVyKGZpbHRlcmVkID0+IHRoaXMucG9zc2libGVWYWx1ZXMuaW5jbHVkZXMoZmlsdGVyZWQpKTtcbiAgICAgIHRoaXMuY2xyRmlsdGVyVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5nZXREaXNwbGF5VmFsdWVzKHRoaXMuZmlsdGVyZWRWYWx1ZXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IGNvbnZlcnRlZDtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VzLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBAT3V0cHV0KCkgY2xyRmlsdGVyVmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBwb3NzaWJsZVZhbHVlczogRmlsdGVyVmFsdWVbXSA9IFtdO1xuICBjdXN0b21Qb3NzaWJsZVZhbHVlcyA9IGZhbHNlO1xuICBmaWx0ZXJlZFZhbHVlczogRmlsdGVyVmFsdWVbXSA9IFtdO1xuICBjaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG5cbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgc2V0IGNsclBvc3NpYmxlVmFsdWVzKHZhbHVlczogKHN0cmluZyB8IEZpbHRlclZhbHVlKVtdKSB7XG4gICAgdGhpcy5zZXRQb3NzaWJsZVZhbHVlcyh2YWx1ZXMpO1xuICAgIHRoaXMuY3VzdG9tUG9zc2libGVWYWx1ZXMgPSB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZmlsdGVyQ29udGFpbmVyOiBDbHJEYXRhZ3JpZEZpbHRlciwgZGF0YWdyaWQ6IENsckRhdGFncmlkKSB7XG4gICAgZmlsdGVyQ29udGFpbmVyLnNldEZpbHRlcih0aGlzKTtcbiAgICBkYXRhZ3JpZC5pdGVtcy5hbGxDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICBpZiAoIXRoaXMuY3VzdG9tUG9zc2libGVWYWx1ZXMpIHtcbiAgICAgICAgdGhpcy5zZXRQb3NzaWJsZVZhbHVlcyhcbiAgICAgICAgICBpdGVtcy5tYXAoaXRlbSA9PiBpdGVtW3RoaXMucHJvcGVydHldKS5maWx0ZXIoKHZhbHVlLCBpbmRleCwgc2VsZikgPT4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXgpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRQb3NzaWJsZVZhbHVlcyh2YWx1ZXM6IChzdHJpbmcgfCBGaWx0ZXJWYWx1ZSlbXSkge1xuICAgIHRoaXMucG9zc2libGVWYWx1ZXMgPSB2YWx1ZXMubWFwKHYgPT4gKHYgaW5zdGFuY2VvZiBPYmplY3QgPyB2IDogeyB2YWx1ZTogdiwgZGlzcGxheVZhbHVlOiB2IH0pKTtcbiAgICB0aGlzLnBvc3NpYmxlVmFsdWVzLnNvcnQoKHYxLCB2MikgPT4gdjEuZGlzcGxheVZhbHVlLmxvY2FsZUNvbXBhcmUodjIuZGlzcGxheVZhbHVlKSk7XG4gICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuZmlsdGVyZWRWYWx1ZXMuZmlsdGVyKGZpbHRlcmVkID0+XG4gICAgICB0aGlzLmNvbnRhaW5zRmlsdGVyVmFsdWUodGhpcy5wb3NzaWJsZVZhbHVlcywgZmlsdGVyZWQpXG4gICAgKTtcblxuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZWQoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKHNlbGVjdGVkVmFsdWU6IEZpbHRlclZhbHVlLCBjaGVja2JveFN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKGNoZWNrYm94U3RhdGUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMucHVzaChzZWxlY3RlZFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuZmlsdGVyZWRWYWx1ZXMuZmlsdGVyKGZpbHRlcmVkID0+IGZpbHRlcmVkLnZhbHVlICE9PSBzZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgYWNjZXB0cyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGlzcGxheVZhbHVlcyh0aGlzLmZpbHRlcmVkVmFsdWVzKS5pbmNsdWRlcyhpdGVtW3RoaXMucHJvcGVydHldKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHk6IHRoaXMucHJvcGVydHksXG4gICAgICB2YWx1ZTogdGhpcy5nZXRWYWx1ZXModGhpcy5maWx0ZXJlZFZhbHVlcyksXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gW107XG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmlsdGVyQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmNsckZpbHRlclZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZ2V0RGlzcGxheVZhbHVlcyh0aGlzLmZpbHRlcmVkVmFsdWVzKSk7XG4gICAgdGhpcy5jaGFuZ2VzLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnRhaW5zRmlsdGVyVmFsdWUoZW50cmllczogRmlsdGVyVmFsdWVbXSwgZmlsdGVyZWQ6IEZpbHRlclZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVudHJpZXMuc29tZSh2ID0+IHYudmFsdWUgPT09IGZpbHRlcmVkLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzcGxheVZhbHVlcyhlbnRyaWVzOiBGaWx0ZXJWYWx1ZVtdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBlbnRyaWVzLm1hcChlbnRyeSA9PiBlbnRyeS5kaXNwbGF5VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZXMoZW50cmllczogRmlsdGVyVmFsdWVbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZW50cmllcy5tYXAoZW50cnkgPT4gZW50cnkudmFsdWUpO1xuICB9XG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGluayBidG4tdHJhc2hcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIj5cbiAgPGNkcy1pY29uIHNoYXBlPVwidHJhc2hcIj48L2Nkcy1pY29uPlxuPC9idXR0b24+XG48Y2xyLWNoZWNrYm94LWNvbnRhaW5lciBjbGFzcz1cImZpbHRlci1zZWxlY3Rpb25cIj5cbiAgPGNsci1jaGVja2JveC13cmFwcGVyICpuZ0Zvcj1cImxldCBwb3NzaWJsZVZhbHVlIG9mIHBvc3NpYmxlVmFsdWVzXCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgY2xyQ2hlY2tib3hcbiAgICAgIHZhbHVlPVwie3sgcG9zc2libGVWYWx1ZS5kaXNwbGF5VmFsdWUgPz8gcG9zc2libGVWYWx1ZSB9fVwiXG4gICAgICBuYW1lPVwicG9zc2libGVWYWx1ZVwiXG4gICAgICBbbmdNb2RlbF09XCJjb250YWluc0ZpbHRlclZhbHVlKGZpbHRlcmVkVmFsdWVzLCBwb3NzaWJsZVZhbHVlKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZShwb3NzaWJsZVZhbHVlLCAkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxsYWJlbD57eyBwb3NzaWJsZVZhbHVlLmRpc3BsYXlWYWx1ZSA/PyBwb3NzaWJsZVZhbHVlIH19PC9sYWJlbD5cbiAgPC9jbHItY2hlY2tib3gtd3JhcHBlcj5cbjwvY2xyLWNoZWNrYm94LWNvbnRhaW5lcj5cbiJdfQ==
@@ -5748,12 +5748,13 @@ ClarityIcons.addIcons(trashIcon);
5748
5748
  class ClrEnumFilterComponent {
5749
5749
  set value(values) {
5750
5750
  var _a;
5751
+ const converted = values.map(filtered => ({ value: filtered, displayValue: filtered }));
5751
5752
  if ((_a = this.possibleValues) === null || _a === void 0 ? void 0 : _a.length) {
5752
- this.filteredValues = values.filter(filtered => this.possibleValues.includes(filtered));
5753
- this.clrFilterValuesChange.emit(this.filteredValues);
5753
+ this.filteredValues = converted.filter(filtered => this.possibleValues.includes(filtered));
5754
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
5754
5755
  }
5755
5756
  else {
5756
- this.filteredValues = values;
5757
+ this.filteredValues = converted;
5757
5758
  }
5758
5759
  this.changes.emit(true);
5759
5760
  }
@@ -5777,9 +5778,9 @@ class ClrEnumFilterComponent {
5777
5778
  });
5778
5779
  }
5779
5780
  setPossibleValues(values) {
5780
- this.possibleValues = values;
5781
- this.possibleValues.sort();
5782
- this.filteredValues = this.filteredValues.filter(filtered => this.possibleValues.includes(filtered));
5781
+ this.possibleValues = values.map(v => (v instanceof Object ? v : { value: v, displayValue: v }));
5782
+ this.possibleValues.sort((v1, v2) => v1.displayValue.localeCompare(v2.displayValue));
5783
+ this.filteredValues = this.filteredValues.filter(filtered => this.containsFilterValue(this.possibleValues, filtered));
5783
5784
  this.emitFilterChanged();
5784
5785
  }
5785
5786
  onChange(selectedValue, checkboxState) {
@@ -5787,7 +5788,7 @@ class ClrEnumFilterComponent {
5787
5788
  this.filteredValues.push(selectedValue);
5788
5789
  }
5789
5790
  else {
5790
- this.filteredValues = this.filteredValues.filter(filteredState => filteredState !== selectedValue);
5791
+ this.filteredValues = this.filteredValues.filter(filtered => filtered.value !== selectedValue.value);
5791
5792
  }
5792
5793
  this.emitFilterChanged();
5793
5794
  }
@@ -5795,12 +5796,12 @@ class ClrEnumFilterComponent {
5795
5796
  return this.filteredValues.length > 0;
5796
5797
  }
5797
5798
  accepts(item) {
5798
- return this.filteredValues.includes(item[this.property]);
5799
+ return this.getDisplayValues(this.filteredValues).includes(item[this.property]);
5799
5800
  }
5800
5801
  get state() {
5801
5802
  return {
5802
5803
  property: this.property,
5803
- value: this.filteredValues,
5804
+ value: this.getValues(this.filteredValues),
5804
5805
  };
5805
5806
  }
5806
5807
  clearFilters() {
@@ -5808,19 +5809,28 @@ class ClrEnumFilterComponent {
5808
5809
  this.emitFilterChanged();
5809
5810
  }
5810
5811
  emitFilterChanged() {
5811
- this.clrFilterValuesChange.emit(this.filteredValues);
5812
+ this.clrFilterValuesChange.emit(this.getDisplayValues(this.filteredValues));
5812
5813
  this.changes.emit(true);
5813
5814
  }
5814
5815
  ngOnDestroy() {
5815
5816
  this.destroyed$.next();
5816
5817
  this.destroyed$.complete();
5817
5818
  }
5819
+ containsFilterValue(entries, filtered) {
5820
+ return entries.some(v => v.value === filtered.value);
5821
+ }
5822
+ getDisplayValues(entries) {
5823
+ return entries.map(entry => entry.displayValue);
5824
+ }
5825
+ getValues(entries) {
5826
+ return entries.map(entry => entry.value);
5827
+ }
5818
5828
  }
5819
5829
  ClrEnumFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, deps: [{ token: i1$1.ClrDatagridFilter }, { token: i1$1.ClrDatagrid }], target: i0.ɵɵFactoryTarget.Component });
5820
- ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1$1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1$1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1$1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
5830
+ ClrEnumFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: ClrEnumFilterComponent, selector: "clr-enum-filter", inputs: { property: ["clrProperty", "property"], value: ["clrFilterValues", "value"], clrPossibleValues: "clrPossibleValues" }, outputs: { clrFilterValuesChange: "clrFilterValuesChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1$1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i1$1.ClrCheckboxContainer, selector: "clr-checkbox-container,clr-toggle-container", inputs: ["clrInline"] }, { kind: "component", type: i1$1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
5821
5831
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClrEnumFilterComponent, decorators: [{
5822
5832
  type: Component,
5823
- args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"filteredValues.includes(possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
5833
+ args: [{ selector: 'clr-enum-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilters()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<clr-checkbox-container class=\"filter-selection\">\n <clr-checkbox-wrapper *ngFor=\"let possibleValue of possibleValues\">\n <input\n type=\"checkbox\"\n clrCheckbox\n value=\"{{ possibleValue.displayValue ?? possibleValue }}\"\n name=\"possibleValue\"\n [ngModel]=\"containsFilterValue(filteredValues, possibleValue)\"\n (ngModelChange)=\"onChange(possibleValue, $event)\"\n />\n <label>{{ possibleValue.displayValue ?? possibleValue }}</label>\n </clr-checkbox-wrapper>\n</clr-checkbox-container>\n", styles: [".filter-selection{margin-top:0}.btn-trash{position:absolute;top:15px;right:40px;padding:0}\n"] }]
5824
5834
  }], ctorParameters: function () { return [{ type: i1$1.ClrDatagridFilter }, { type: i1$1.ClrDatagrid }]; }, propDecorators: { property: [{
5825
5835
  type: Input,
5826
5836
  args: ['clrProperty']