@firestitch/filter 18.2.73 → 18.2.74
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.
- package/app/components/filter-chips/filter-chips.component.d.ts +3 -2
- package/app/components/filter-item-dialog/filter-item-dialog.component.d.ts +2 -0
- package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +3 -5
- package/app/components/filters-item/base-item/base-item.component.d.ts +5 -14
- package/app/components/filters-item/checkbox/checkbox.component.d.ts +0 -1
- package/app/components/filters-item/chips/chips.component.d.ts +3 -2
- package/app/components/filters-item/date/date.component.d.ts +1 -2
- package/app/components/filters-item/date-range/date-range.component.d.ts +3 -4
- package/app/components/filters-item/filter-item.component.d.ts +3 -1
- package/app/components/filters-item/range/range.component.d.ts +3 -5
- package/app/components/filters-item/select/select.component.d.ts +7 -5
- package/app/components/filters-item/text/text.component.d.ts +3 -7
- package/app/components/filters-item/week/week.component.d.ts +0 -1
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/app/injectors/filter-drawer-data.d.ts +8 -1
- package/esm2022/app/components/filter/filter.component.mjs +2 -2
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +25 -30
- package/esm2022/app/components/filter-item-dialog/filter-item-dialog.component.mjs +4 -3
- package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +7 -23
- package/esm2022/app/components/filters-item/base-item/base-item.component.mjs +11 -24
- package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +4 -10
- package/esm2022/app/components/filters-item/chips/chips.component.mjs +6 -3
- package/esm2022/app/components/filters-item/date/date.component.mjs +9 -13
- package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +12 -15
- package/esm2022/app/components/filters-item/filter-item.component.mjs +7 -3
- package/esm2022/app/components/filters-item/range/range.component.mjs +9 -24
- package/esm2022/app/components/filters-item/select/select.component.mjs +27 -24
- package/esm2022/app/components/filters-item/text/text.component.mjs +9 -27
- package/esm2022/app/components/filters-item/week/week.component.mjs +3 -10
- package/esm2022/app/injectors/filter-drawer-data.mjs +1 -1
- package/fesm2022/firestitch-filter.mjs +111 -181
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injectable, Directive, Input, TemplateRef, DestroyRef, Component, ChangeDetectionStrategy, InjectionToken,
|
|
2
|
+
import { inject, Injectable, Directive, Input, TemplateRef, DestroyRef, Component, ChangeDetectionStrategy, InjectionToken, Injector, ChangeDetectorRef, ViewChild, ElementRef, ViewChildren, EventEmitter, NgZone, Output, ContentChild, HostBinding, NgModule } from '@angular/core';
|
|
3
3
|
import { FsPrompt } from '@firestitch/prompt';
|
|
4
|
-
import { BehaviorSubject, Subject, of, forkJoin, Observable, tap as tap$1, map as map$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, merge, filter,
|
|
4
|
+
import { BehaviorSubject, Subject, of, forkJoin, Observable, tap as tap$1, map as map$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, merge, filter, take, delay, combineLatest, fromEvent, interval } from 'rxjs';
|
|
5
5
|
import { distinctUntilChanged, switchMap, tap, skip, takeUntil, map, debounceTime, finalize, filter as filter$1 } from 'rxjs/operators';
|
|
6
6
|
import { FsStore } from '@firestitch/store';
|
|
7
7
|
import { Location, NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, NgSwitchDefault, NgIf, AsyncPipe } from '@angular/common';
|
|
@@ -31,7 +31,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
31
31
|
import { ActivatedRoute } from '@angular/router';
|
|
32
32
|
import * as i1$6 from '@angular/material/dialog';
|
|
33
33
|
import { MatDialogRef, MatDialogModule, MatDialog } from '@angular/material/dialog';
|
|
34
|
-
import { getNormalizedPath } from '@firestitch/common';
|
|
34
|
+
import { getNormalizedPath, FsCommonModule } from '@firestitch/common';
|
|
35
35
|
import { DrawerRef } from '@firestitch/drawer';
|
|
36
36
|
import * as i1 from '@firestitch/popover';
|
|
37
37
|
import { FsPopoverModule } from '@firestitch/popover';
|
|
@@ -45,7 +45,7 @@ import { FsFileModule } from '@firestitch/file';
|
|
|
45
45
|
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
46
46
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
47
47
|
import * as i1$5 from '@firestitch/chip';
|
|
48
|
-
import { FsChipModule } from '@firestitch/chip';
|
|
48
|
+
import { FsChipModule, FsChipComponent } from '@firestitch/chip';
|
|
49
49
|
import { FsMessage } from '@firestitch/message';
|
|
50
50
|
import { FsSkeletonModule } from '@firestitch/skeleton';
|
|
51
51
|
import * as i1$4 from '@firestitch/label';
|
|
@@ -2636,29 +2636,16 @@ const FILTER_DRAWER_OVERLAY = new InjectionToken('fs.filter-drawer-overlay');
|
|
|
2636
2636
|
|
|
2637
2637
|
class BaseItemComponent {
|
|
2638
2638
|
item;
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
get destroy$() {
|
|
2646
|
-
return this._destroy$.asObservable();
|
|
2647
|
-
}
|
|
2648
|
-
destroy() {
|
|
2649
|
-
return this._destroy$.asObservable();
|
|
2650
|
-
}
|
|
2651
|
-
ngOnChanges(changes) {
|
|
2652
|
-
if (changes.item) {
|
|
2653
|
-
this.label = Array.isArray(this.item.label) ? this.item.label[0] : this.item.label;
|
|
2639
|
+
overlayRef;
|
|
2640
|
+
close() {
|
|
2641
|
+
if (this.overlayRef) {
|
|
2642
|
+
this.overlayRef.detachBackdrop();
|
|
2643
|
+
this.overlayRef.detach();
|
|
2644
|
+
this.overlayRef.dispose();
|
|
2654
2645
|
}
|
|
2655
2646
|
}
|
|
2656
|
-
ngOnDestroy() {
|
|
2657
|
-
this._destroy$.next(null);
|
|
2658
|
-
this._destroy$.complete();
|
|
2659
|
-
}
|
|
2660
2647
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2661
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseItemComponent, isStandalone: true, selector: "base-item", inputs: { item: "item",
|
|
2648
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseItemComponent, isStandalone: true, selector: "base-item", inputs: { item: "item", overlayRef: "overlayRef" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2662
2649
|
}
|
|
2663
2650
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseItemComponent, decorators: [{
|
|
2664
2651
|
type: Component,
|
|
@@ -2670,7 +2657,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2670
2657
|
}]
|
|
2671
2658
|
}], propDecorators: { item: [{
|
|
2672
2659
|
type: Input
|
|
2673
|
-
}],
|
|
2660
|
+
}], overlayRef: [{
|
|
2674
2661
|
type: Input
|
|
2675
2662
|
}] } });
|
|
2676
2663
|
|
|
@@ -2684,7 +2671,7 @@ class AutocompleteComponent extends BaseItemComponent {
|
|
|
2684
2671
|
return this.item.valuesFn(keyword, this.item.filter);
|
|
2685
2672
|
};
|
|
2686
2673
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2687
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteComponent, isStandalone: true, selector: "filter-item-autocomplete", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<fs-autocomplete\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"
|
|
2674
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteComponent, isStandalone: true, selector: "filter-item-autocomplete", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<fs-autocomplete\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [showClear]=\"item.clearable\"\n name=\"item.name\">\n <ng-template\n fsAutocompleteTemplate\n let-data=\"data\">\n {{ data.name }}\n </ng-template>\n</fs-autocomplete>", dependencies: [{ kind: "ngmodule", type: FsAutocompleteModule }, { kind: "component", type: i1$2.FsAutocompleteComponent, selector: "fs-autocomplete", inputs: ["fetch", "displayWith", "placeholder", "fetchOnFocus", "readonly", "required", "disabled", "formFieldClass", "appearance", "hint", "panelWidth", "panelClass", "showClear"], outputs: ["cleared", "opened", "closed"] }, { kind: "directive", type: i1$2.FsAutocompleteTemplateDirective, selector: "[fsAutocompleteTemplate]" }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2688
2675
|
}
|
|
2689
2676
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
2690
2677
|
type: Component,
|
|
@@ -2693,7 +2680,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2693
2680
|
FocusToItemDirective,
|
|
2694
2681
|
FormsModule,
|
|
2695
2682
|
FsFormModule,
|
|
2696
|
-
], template: "<fs-autocomplete\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"
|
|
2683
|
+
], template: "<fs-autocomplete\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [displayWith]=\"displayWith\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n [fetchOnFocus]=\"item.fetchOnFocus\"\n [showClear]=\"item.clearable\"\n name=\"item.name\">\n <ng-template\n fsAutocompleteTemplate\n let-data=\"data\">\n {{ data.name }}\n </ng-template>\n</fs-autocomplete>" }]
|
|
2697
2684
|
}], propDecorators: { autofocus: [{
|
|
2698
2685
|
type: Input
|
|
2699
2686
|
}], floatLabel: [{
|
|
@@ -2705,26 +2692,11 @@ class AutocompletechipsComponent extends BaseItemComponent {
|
|
|
2705
2692
|
floatLabel = 'auto';
|
|
2706
2693
|
value;
|
|
2707
2694
|
_injector = inject(Injector);
|
|
2708
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
2709
2695
|
ngOnInit() {
|
|
2710
|
-
this.item.value
|
|
2711
|
-
.pipe(takeUntil$1(this.destroy$))
|
|
2712
|
-
.subscribe((value) => {
|
|
2713
|
-
this.value = value;
|
|
2714
|
-
this._cdRef.detectChanges();
|
|
2715
|
-
});
|
|
2696
|
+
this.value = this.item.value;
|
|
2716
2697
|
}
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
this.item.value = [
|
|
2720
|
-
...this.item.value,
|
|
2721
|
-
event.data,
|
|
2722
|
-
];
|
|
2723
|
-
}
|
|
2724
|
-
}
|
|
2725
|
-
removed(event) {
|
|
2726
|
-
this.item.value = this.item.value
|
|
2727
|
-
.filter((item) => item.value !== event.data.value);
|
|
2698
|
+
ngOnDestroy() {
|
|
2699
|
+
this.item.value = this.value;
|
|
2728
2700
|
}
|
|
2729
2701
|
clear() {
|
|
2730
2702
|
this.item.clear();
|
|
@@ -2740,7 +2712,7 @@ class AutocompletechipsComponent extends BaseItemComponent {
|
|
|
2740
2712
|
action.click(filterComponent);
|
|
2741
2713
|
}
|
|
2742
2714
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompletechipsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2743
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AutocompletechipsComponent, isStandalone: true, selector: "filter-item-autocompletechips", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [ngModel]=\"value\"\n [floatLabel]=\"floatLabel\"\n (
|
|
2715
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AutocompletechipsComponent, isStandalone: true, selector: "filter-item-autocompletechips", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [(ngModel)]=\"value\"\n [floatLabel]=\"floatLabel\"\n (clear)=\"clear()\"\n [allowText]=\"false\"\n [padless]=\"true\"\n [label]=\"item.label\"\n [size]=\"'small'\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"item.chipColor\"\n [chipIconColor]=\"item.chipIcon\"\n [chipBackground]=\"item.chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.clearable\"\n [removable]=\"item.clearable\"\n [compareWith]=\"compareItems\"\n name=\"model\">\n <ng-template\n fsAutocompleteObject\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n @for (action of item.panelActions; track action.label) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </ng-template>\n }\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{min-width:200px;display:block;max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FsAutocompleteChipsModule }, { kind: "component", type: i1$3.FsAutocompleteChipsComponent, selector: "fs-autocomplete-chips", inputs: ["fetch", "appearance", "floatLabel", "readonly", "size", "label", "placeholder", "chipMargin", "chipImage", "chipBackground", "chipColor", "chipIcon", "chipIconColor", "chipClass", "chipPadding", "shape", "hint", "allowText", "allowObject", "delay", "minPanelWidth", "maxPanelHeight", "validateText", "removable", "allowClear", "color", "background", "orderable", "padless", "initOnClick", "fetchOnFocus", "multiple", "multipleAdd", "confirm", "disabled", "groupBy", "panelWidth", "panelClass", "compareWith"], outputs: ["selected", "removed", "reordered", "clear"] }, { kind: "directive", type: i1$3.FsAutocompleteObjectDirective, selector: "[fsAutocompleteObject],[fsAutocompleteChipsTemplate]" }, { kind: "directive", type: i1$3.FsAutocompleteChipsStaticDirective, selector: "[fsAutocompleteChipsStatic]", inputs: ["show", "disable"], outputs: ["click", "selected"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2744
2716
|
}
|
|
2745
2717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompletechipsComponent, decorators: [{
|
|
2746
2718
|
type: Component,
|
|
@@ -2749,7 +2721,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2749
2721
|
FocusToItemDirective,
|
|
2750
2722
|
FormsModule,
|
|
2751
2723
|
FsFormModule,
|
|
2752
|
-
], template: "<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [ngModel]=\"value\"\n [floatLabel]=\"floatLabel\"\n (
|
|
2724
|
+
], template: "<fs-autocomplete-chips\n [fsFilterFocusTrigger]=\"autofocus\"\n [fetch]=\"fetch\"\n [(ngModel)]=\"value\"\n [floatLabel]=\"floatLabel\"\n (clear)=\"clear()\"\n [allowText]=\"false\"\n [padless]=\"true\"\n [label]=\"item.label\"\n [size]=\"'small'\"\n [chipImage]=\"item.chipImage\"\n [chipColor]=\"item.chipColor\"\n [chipIconColor]=\"item.chipIcon\"\n [chipBackground]=\"item.chipBackground\"\n [chipIcon]=\"item.chipIcon\"\n [chipClass]=\"item.chipClass\"\n [allowClear]=\"item.clearable\"\n [removable]=\"item.clearable\"\n [compareWith]=\"compareItems\"\n name=\"model\">\n <ng-template\n fsAutocompleteObject\n let-object=\"object\">\n {{ object.name }}\n </ng-template>\n @for (action of item.panelActions; track action.label) {\n <ng-template\n fsAutocompleteChipsStatic\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </ng-template>\n }\n</fs-autocomplete-chips>", styles: ["fs-autocomplete-chips{min-width:200px;display:block;max-width:100%}\n"] }]
|
|
2753
2725
|
}], propDecorators: { autofocus: [{
|
|
2754
2726
|
type: Input
|
|
2755
2727
|
}], floatLabel: [{
|
|
@@ -2758,17 +2730,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2758
2730
|
|
|
2759
2731
|
class CheckboxComponent extends BaseItemComponent {
|
|
2760
2732
|
value;
|
|
2761
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
2762
2733
|
ngOnInit() {
|
|
2763
|
-
this.item.value
|
|
2764
|
-
.pipe(takeUntil(this.destroy$))
|
|
2765
|
-
.subscribe((value) => {
|
|
2766
|
-
this.value = value;
|
|
2767
|
-
this._cdRef.detectChanges();
|
|
2768
|
-
});
|
|
2734
|
+
this.value = this.item.value;
|
|
2769
2735
|
}
|
|
2770
2736
|
change() {
|
|
2771
2737
|
this.item.setValue(this.value);
|
|
2738
|
+
this.close();
|
|
2772
2739
|
}
|
|
2773
2740
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2774
2741
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxComponent, isStandalone: true, selector: "filter-item-checkbox", usesInheritance: true, ngImport: i0, template: "<mat-slide-toggle\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change()\"\n [name]=\"item.name\">\n {{ item.label }}\n</mat-slide-toggle>", styles: ["fs-label-field{margin:0 0 0 -8px}\n"], dependencies: [{ kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -2795,11 +2762,14 @@ class ChipsComponent extends BaseItemComponent {
|
|
|
2795
2762
|
this._cdRef.detectChanges();
|
|
2796
2763
|
});
|
|
2797
2764
|
}
|
|
2765
|
+
ngOnDestroy() {
|
|
2766
|
+
this.item.value = this.value;
|
|
2767
|
+
}
|
|
2798
2768
|
compareFn = (modelValue, chipValue) => {
|
|
2799
2769
|
return String(modelValue.value) === String(chipValue.value);
|
|
2800
2770
|
};
|
|
2801
2771
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChipsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2802
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ChipsComponent, isStandalone: true, selector: "filter-item-chips", usesInheritance: true, ngImport: i0, template: "@if ((item.values$ | async)?.length) {\n <fs-label-field [padless]=\"true\">\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"value\"\n [compare]=\"compareFn\"\n
|
|
2772
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ChipsComponent, isStandalone: true, selector: "filter-item-chips", usesInheritance: true, ngImport: i0, template: "@if ((item.values$ | async)?.length) {\n <fs-label-field [padless]=\"true\">\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"value\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n @for (value of item.values; track value) {\n <fs-chip\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n }\n </fs-chips>\n </fs-label-field>\n}", styles: ["fs-chip{line-height:40px}\n"], dependencies: [{ kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i1$4.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i1$4.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1$5.FsChipsComponent, selector: "fs-chips", inputs: ["compare", "multiple", "sortable", "selectable", "orientation", "width"] }, { kind: "component", type: i1$5.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2803
2773
|
}
|
|
2804
2774
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChipsComponent, decorators: [{
|
|
2805
2775
|
type: Component,
|
|
@@ -2809,7 +2779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2809
2779
|
FormsModule,
|
|
2810
2780
|
FsFormModule,
|
|
2811
2781
|
AsyncPipe,
|
|
2812
|
-
], template: "@if ((item.values$ | async)?.length) {\n <fs-label-field [padless]=\"true\">\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"value\"\n [compare]=\"compareFn\"\n
|
|
2782
|
+
], template: "@if ((item.values$ | async)?.length) {\n <fs-label-field [padless]=\"true\">\n <fs-label>\n {{ item.label }}\n </fs-label>\n <fs-chips\n [(ngModel)]=\"value\"\n [compare]=\"compareFn\"\n [multiple]=\"item.multiple\">\n @for (value of item.values; track value) {\n <fs-chip\n [value]=\"value\"\n [selectable]=\"true\">\n {{ value.name }}\n </fs-chip>\n }\n </fs-chips>\n </fs-label-field>\n}", styles: ["fs-chip{line-height:40px}\n"] }]
|
|
2813
2783
|
}] });
|
|
2814
2784
|
|
|
2815
2785
|
class DateRangeComponent extends BaseItemComponent {
|
|
@@ -2818,25 +2788,23 @@ class DateRangeComponent extends BaseItemComponent {
|
|
|
2818
2788
|
viewType = PickerViewType.Date;
|
|
2819
2789
|
from;
|
|
2820
2790
|
to;
|
|
2821
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
2822
2791
|
ngOnInit() {
|
|
2823
|
-
this.viewType = this.item.type === ItemType.DateTimeRange ?
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
.
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
});
|
|
2792
|
+
this.viewType = this.item.type === ItemType.DateTimeRange ?
|
|
2793
|
+
PickerViewType.DateTime : PickerViewType.Date;
|
|
2794
|
+
if (!this.autofocusName) {
|
|
2795
|
+
this.autofocusName = this.from ? 'to' : 'from';
|
|
2796
|
+
}
|
|
2797
|
+
this.from = this.item.value?.from;
|
|
2798
|
+
this.to = this.item.value?.to;
|
|
2831
2799
|
}
|
|
2832
|
-
|
|
2800
|
+
ngOnDestroy() {
|
|
2833
2801
|
this.item.value = {
|
|
2834
2802
|
from: this.from,
|
|
2835
2803
|
to: this.to,
|
|
2836
2804
|
};
|
|
2837
2805
|
}
|
|
2838
2806
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2839
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeComponent, isStandalone: true, selector: "filter-item-date-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n
|
|
2807
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeComponent, isStandalone: true, selector: "filter-item-date-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateFrom\">\n </mat-form-field>\n <div class=\"to\">\n to\n </div>\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"to\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateTo\">\n </mat-form-field>\n</div>", styles: [".row{display:flex;flex-direction:row;align-items:center;gap:10px}.row mat-form-field{width:200px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2$1.DateRangePickerFromComponent, selector: "[fsDateRangeFrom],[fsDateRangeFromPicker]", inputs: ["fsDateRangeFrom", "fsDateRangeFromPicker"] }, { kind: "component", type: i2$1.DateRangePickerToComponent, selector: "[fsDateRangeTo],[fsDateRangeToPicker]", inputs: ["fsDateRangeTo", "fsDateRangeToPicker"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2840
2808
|
}
|
|
2841
2809
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeComponent, decorators: [{
|
|
2842
2810
|
type: Component,
|
|
@@ -2848,7 +2816,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2848
2816
|
FocusToItemDirective,
|
|
2849
2817
|
FsDatePickerModule,
|
|
2850
2818
|
FsFormModule,
|
|
2851
|
-
], template: "<div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n
|
|
2819
|
+
], template: "<div class=\"row\">\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'from'\"\n [fsDateRangeFrom]=\"item.name\"\n [(ngModel)]=\"from\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateFrom\">\n </mat-form-field>\n <div class=\"to\">\n to\n </div>\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'to'\"\n [fsDateRangeTo]=\"item.name\"\n [(ngModel)]=\"to\"\n [clear]=\"item.clearable\"\n [view]=\"viewType\"\n name=\"dateTo\">\n </mat-form-field>\n</div>", styles: [".row{display:flex;flex-direction:row;align-items:center;gap:10px}.row mat-form-field{width:200px}\n"] }]
|
|
2852
2820
|
}], propDecorators: { autofocusName: [{
|
|
2853
2821
|
type: Input
|
|
2854
2822
|
}], floatLabel: [{
|
|
@@ -2864,23 +2832,20 @@ class DateComponent extends BaseItemComponent {
|
|
|
2864
2832
|
showMonth = true;
|
|
2865
2833
|
showDay = true;
|
|
2866
2834
|
value;
|
|
2867
|
-
_destroyRef = inject(DestroyRef);
|
|
2868
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
2869
2835
|
ngOnInit() {
|
|
2870
2836
|
this.viewType = this.item.type === ItemType.DateTime ?
|
|
2871
2837
|
PickerViewType.DateTime : PickerViewType.Date;
|
|
2872
2838
|
if (this.item.mode === ItemDateMode.ScrollMonthYear) {
|
|
2873
2839
|
this.showDay = false;
|
|
2874
2840
|
}
|
|
2875
|
-
this.item.value
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
});
|
|
2841
|
+
this.value = this.item.value;
|
|
2842
|
+
}
|
|
2843
|
+
change(event) {
|
|
2844
|
+
this.item.value = event;
|
|
2845
|
+
this.close();
|
|
2881
2846
|
}
|
|
2882
2847
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2883
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateComponent, isStandalone: true, selector: "filter-item-date", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"
|
|
2848
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateComponent, isStandalone: true, selector: "filter-item-date", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2$1.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { kind: "component", type: i2$1.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "showMonth", "showYear", "showDay"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2884
2849
|
}
|
|
2885
2850
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateComponent, decorators: [{
|
|
2886
2851
|
type: Component,
|
|
@@ -2892,7 +2857,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2892
2857
|
FsDatePickerModule,
|
|
2893
2858
|
FocusToItemDirective,
|
|
2894
2859
|
FsFormModule,
|
|
2895
|
-
], template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"
|
|
2860
|
+
], template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}" }]
|
|
2896
2861
|
}], propDecorators: { autofocus: [{
|
|
2897
2862
|
type: Input
|
|
2898
2863
|
}], floatLabel: [{
|
|
@@ -2904,32 +2869,18 @@ class RangeComponent extends BaseItemComponent {
|
|
|
2904
2869
|
floatLabel = 'auto';
|
|
2905
2870
|
min;
|
|
2906
2871
|
max;
|
|
2907
|
-
_change$ = new Subject();
|
|
2908
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
2909
2872
|
ngOnInit() {
|
|
2910
2873
|
this.min = this.item.value?.min;
|
|
2911
2874
|
this.max = this.item.value?.max;
|
|
2912
|
-
this.item.value$
|
|
2913
|
-
.pipe(takeUntil$1(this.destroy$))
|
|
2914
|
-
.subscribe((value) => {
|
|
2915
|
-
this.min = value?.min;
|
|
2916
|
-
this.max = value?.max;
|
|
2917
|
-
this._cdRef.detectChanges();
|
|
2918
|
-
});
|
|
2919
|
-
this._change$
|
|
2920
|
-
.pipe(debounceTime$1(300), takeUntil$1(this.destroy$))
|
|
2921
|
-
.subscribe(() => {
|
|
2922
|
-
this.item.value = {
|
|
2923
|
-
min: this.min,
|
|
2924
|
-
max: this.max,
|
|
2925
|
-
};
|
|
2926
|
-
});
|
|
2927
2875
|
}
|
|
2928
|
-
|
|
2929
|
-
this.
|
|
2876
|
+
ngOnDestroy() {
|
|
2877
|
+
this.item.value = {
|
|
2878
|
+
min: this.min,
|
|
2879
|
+
max: this.max,
|
|
2880
|
+
};
|
|
2930
2881
|
}
|
|
2931
2882
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2932
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min'\"\n type=\"number\"\n [(ngModel)]=\"min\"\n
|
|
2883
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2933
2884
|
}
|
|
2934
2885
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, decorators: [{
|
|
2935
2886
|
type: Component,
|
|
@@ -2942,22 +2893,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2942
2893
|
FocusToItemDirective,
|
|
2943
2894
|
FsFormModule,
|
|
2944
2895
|
MatSuffix,
|
|
2945
|
-
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min'\"\n type=\"number\"\n [(ngModel)]=\"min\"\n
|
|
2896
|
+
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
|
|
2946
2897
|
}], propDecorators: { autofocusName: [{
|
|
2947
2898
|
type: Input
|
|
2948
2899
|
}], floatLabel: [{
|
|
2949
2900
|
type: Input
|
|
2950
2901
|
}] } });
|
|
2951
2902
|
|
|
2952
|
-
class SelectComponent {
|
|
2903
|
+
class SelectComponent extends BaseItemComponent {
|
|
2953
2904
|
autofocus = false;
|
|
2954
2905
|
floatLabel = 'auto';
|
|
2955
|
-
item;
|
|
2956
2906
|
select;
|
|
2957
2907
|
value;
|
|
2958
2908
|
_cdRef = inject(ChangeDetectorRef);
|
|
2959
2909
|
_destroyRef = inject(DestroyRef);
|
|
2960
2910
|
changed() {
|
|
2911
|
+
if (!this.item.multiple) {
|
|
2912
|
+
this.change();
|
|
2913
|
+
}
|
|
2914
|
+
}
|
|
2915
|
+
selectOpenedChange(opened) {
|
|
2916
|
+
if (!opened && !this.item.isolate) {
|
|
2917
|
+
this.close();
|
|
2918
|
+
}
|
|
2919
|
+
}
|
|
2920
|
+
change() {
|
|
2961
2921
|
let value = this.value;
|
|
2962
2922
|
if (this.item.isolate) {
|
|
2963
2923
|
if (this.item.multiple) {
|
|
@@ -2969,33 +2929,30 @@ class SelectComponent {
|
|
|
2969
2929
|
}
|
|
2970
2930
|
this.item.value = value;
|
|
2971
2931
|
}
|
|
2972
|
-
|
|
2973
|
-
this.item.
|
|
2974
|
-
.
|
|
2975
|
-
|
|
2976
|
-
this.value = value;
|
|
2977
|
-
if (this.item.isolate && !this.item.hasValue) {
|
|
2978
|
-
this.item.isolated = false;
|
|
2979
|
-
}
|
|
2980
|
-
this._cdRef.detectChanges();
|
|
2981
|
-
});
|
|
2932
|
+
ngOnDestroy() {
|
|
2933
|
+
if (this.item.isolate) {
|
|
2934
|
+
this.change();
|
|
2935
|
+
}
|
|
2982
2936
|
}
|
|
2983
|
-
|
|
2984
|
-
this.
|
|
2937
|
+
ngOnInit() {
|
|
2938
|
+
this.value = this.item.value;
|
|
2939
|
+
if (this.item.isolate && !this.item.hasValue) {
|
|
2940
|
+
this.item.isolated = false;
|
|
2941
|
+
}
|
|
2985
2942
|
}
|
|
2986
2943
|
markForCheck() {
|
|
2987
2944
|
this._cdRef.markForCheck();
|
|
2988
2945
|
}
|
|
2989
2946
|
isolateChange(event) {
|
|
2990
2947
|
if (event.checked) {
|
|
2991
|
-
this.
|
|
2948
|
+
this.value = this.item.multiple ? this.item.isolateValues : this.item.isolateValues[0];
|
|
2992
2949
|
}
|
|
2993
2950
|
else {
|
|
2994
|
-
this.
|
|
2951
|
+
this.value = this.item.multiple ? [] : null;
|
|
2995
2952
|
}
|
|
2996
2953
|
}
|
|
2997
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectComponent, deps:
|
|
2998
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SelectComponent, isStandalone: true, selector: "filter-item-select", inputs: { autofocus: "autofocus", floatLabel: "floatLabel"
|
|
2954
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2955
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SelectComponent, isStandalone: true, selector: "filter-item-select", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, viewQueries: [{ propertyName: "select", first: true, predicate: MatSelect, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [ngClass]=\"{ isolate: item.isolate }\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n [fsFilterFocusTrigger]=\"autofocus && !item.isolate\"\n [(ngModel)]=\"value\"\n (openedChange)=\"selectOpenedChange($event)\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n @if (item.children) {\n @for (option of item.values$ | async; track option) {\n @if (option[item.children]) {\n <mat-optgroup [label]=\"option.name\">\n @for (childOption of option[item.children]; track childOption.value) {\n <mat-option [value]=\"childOption.value\">\n {{ childOption.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n } @else {\n @for (option of item.values$ | async; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n@if (item.isolate) {\n <div class=\"isolate-checkbox\">\n <mat-checkbox\n (change)=\"isolateChange($event)\"\n [(ngModel)]=\"item.isolated\">\n <span class=\"checkbox-label\">\n {{ item.isolateLabel }}\n </span>\n </mat-checkbox>\n </div>\n}", styles: [":host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper{padding-left:0;padding-right:0;padding-top:8px}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field{position:relative}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field .mdc-checkbox{position:absolute}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field .mdc-label{margin-left:32px;font-size:smaller;line-height:normal}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2999
2956
|
}
|
|
3000
2957
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectComponent, decorators: [{
|
|
3001
2958
|
type: Component,
|
|
@@ -3011,13 +2968,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3011
2968
|
MatOptgroup,
|
|
3012
2969
|
MatCheckbox,
|
|
3013
2970
|
AsyncPipe,
|
|
3014
|
-
], template: "<mat-form-field\n [ngClass]=\"{ isolate: item.isolate }\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n [fsFilterFocusTrigger]=\"autofocus && !item.isolate\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n @if (item.children) {\n @for (option of item.values$ | async; track option) {\n @if (option[item.children]) {\n <mat-optgroup [label]=\"option.name\">\n @for (childOption of option[item.children]; track childOption.value) {\n <mat-option [value]=\"childOption.value\">\n {{ childOption.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n } @else {\n @for (option of item.values$ | async; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n@if (item.isolate) {\n <div class=\"isolate-checkbox\">\n <mat-checkbox\n (change)=\"isolateChange($event)\"\n [(ngModel)]=\"item.isolated\">\n <span class=\"checkbox-label\">\n {{ item.isolateLabel }}\n </span>\n </mat-checkbox>\n </div>\n}", styles: [":host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper{padding-left:0;padding-right:0;padding-top:8px}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field{position:relative}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field .mdc-checkbox{position:absolute}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field .mdc-label{margin-left:32px;font-size:smaller;line-height:normal}\n"] }]
|
|
2971
|
+
], template: "<mat-form-field\n [ngClass]=\"{ isolate: item.isolate }\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <mat-select\n [fsFilterFocusTrigger]=\"autofocus && !item.isolate\"\n [(ngModel)]=\"value\"\n (openedChange)=\"selectOpenedChange($event)\"\n (ngModelChange)=\"changed()\"\n [multiple]=\"item.multiple\">\n @if (item.children) {\n @for (option of item.values$ | async; track option) {\n @if (option[item.children]) {\n <mat-optgroup [label]=\"option.name\">\n @for (childOption of option[item.children]; track childOption.value) {\n <mat-option [value]=\"childOption.value\">\n {{ childOption.name }}\n </mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n } @else {\n @for (option of item.values$ | async; track option) {\n <mat-option [value]=\"option.value\">\n {{ option.name }}\n </mat-option>\n }\n }\n </mat-select>\n</mat-form-field>\n@if (item.isolate) {\n <div class=\"isolate-checkbox\">\n <mat-checkbox\n (change)=\"isolateChange($event)\"\n [(ngModel)]=\"item.isolated\">\n <span class=\"checkbox-label\">\n {{ item.isolateLabel }}\n </span>\n </mat-checkbox>\n </div>\n}", styles: [":host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper{padding-left:0;padding-right:0;padding-top:8px}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field{position:relative}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field .mdc-checkbox{position:absolute}:host ::ng-deep .isolate .mat-mdc-form-field-hint-wrapper mat-hint .mat-internal-form-field .mdc-label{margin-left:32px;font-size:smaller;line-height:normal}\n"] }]
|
|
3015
2972
|
}], propDecorators: { autofocus: [{
|
|
3016
2973
|
type: Input
|
|
3017
2974
|
}], floatLabel: [{
|
|
3018
2975
|
type: Input
|
|
3019
|
-
}], item: [{
|
|
3020
|
-
type: Input
|
|
3021
2976
|
}], select: [{
|
|
3022
2977
|
type: ViewChild,
|
|
3023
2978
|
args: [MatSelect, { static: true }]
|
|
@@ -3027,32 +2982,14 @@ class TextComponent extends BaseItemComponent {
|
|
|
3027
2982
|
autofocus = false;
|
|
3028
2983
|
floatLabel = 'auto';
|
|
3029
2984
|
value;
|
|
3030
|
-
_change$ = new Subject();
|
|
3031
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
3032
2985
|
ngOnInit() {
|
|
3033
|
-
this.
|
|
3034
|
-
this._listenValueChanges();
|
|
3035
|
-
}
|
|
3036
|
-
change() {
|
|
3037
|
-
this._change$.next(this.value);
|
|
3038
|
-
}
|
|
3039
|
-
_listenControlValueChanges() {
|
|
3040
|
-
this._change$
|
|
3041
|
-
.pipe(distinctUntilChanged(), debounceTime(200), takeUntil(this.destroy$))
|
|
3042
|
-
.subscribe((value) => {
|
|
3043
|
-
this.item.value = value;
|
|
3044
|
-
});
|
|
2986
|
+
this.value = this.item.value;
|
|
3045
2987
|
}
|
|
3046
|
-
|
|
3047
|
-
this.item.value
|
|
3048
|
-
.pipe(takeUntil(this.destroy$))
|
|
3049
|
-
.subscribe((value) => {
|
|
3050
|
-
this.value = value;
|
|
3051
|
-
this._cdRef.detectChanges();
|
|
3052
|
-
});
|
|
2988
|
+
ngOnDestroy() {
|
|
2989
|
+
this.item.value = this.value;
|
|
3053
2990
|
}
|
|
3054
2991
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3055
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextComponent, isStandalone: true, selector: "filter-item-text", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n
|
|
2992
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextComponent, isStandalone: true, selector: "filter-item-text", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3056
2993
|
}
|
|
3057
2994
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextComponent, decorators: [{
|
|
3058
2995
|
type: Component,
|
|
@@ -3065,7 +3002,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3065
3002
|
ReactiveFormsModule,
|
|
3066
3003
|
FocusToItemDirective,
|
|
3067
3004
|
MatSuffix,
|
|
3068
|
-
|
|
3005
|
+
FsCommonModule,
|
|
3006
|
+
], template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>" }]
|
|
3069
3007
|
}], propDecorators: { autofocus: [{
|
|
3070
3008
|
type: Input
|
|
3071
3009
|
}], floatLabel: [{
|
|
@@ -3076,14 +3014,8 @@ class WeekComponent extends BaseItemComponent {
|
|
|
3076
3014
|
autofocus = false;
|
|
3077
3015
|
floatLabel = 'auto';
|
|
3078
3016
|
value;
|
|
3079
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
3080
3017
|
ngOnInit() {
|
|
3081
|
-
this.item.value
|
|
3082
|
-
.pipe(takeUntil(this.destroy$))
|
|
3083
|
-
.subscribe((value) => {
|
|
3084
|
-
this.value = value;
|
|
3085
|
-
this._cdRef.detectChanges();
|
|
3086
|
-
});
|
|
3018
|
+
this.value = this.item.value;
|
|
3087
3019
|
}
|
|
3088
3020
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WeekComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3089
3021
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WeekComponent, isStandalone: true, selector: "filter-item-week", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateWeekPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"item.value = value\"\n [seedDate]=\"item.seedDate\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n</mat-form-field>", dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2$1.FsDateWeekPickerComponent, selector: "[fsDateWeekPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "seedDate", "period", "view"], outputs: ["change"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -3109,6 +3041,7 @@ class FilterItemComponent {
|
|
|
3109
3041
|
autofocus = false;
|
|
3110
3042
|
floatLabel = 'auto';
|
|
3111
3043
|
autofocusName;
|
|
3044
|
+
overlayRef;
|
|
3112
3045
|
item;
|
|
3113
3046
|
name;
|
|
3114
3047
|
itemType = ItemType;
|
|
@@ -3162,7 +3095,7 @@ class FilterItemComponent {
|
|
|
3162
3095
|
this._destroy$.complete();
|
|
3163
3096
|
}
|
|
3164
3097
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3165
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FilterItemComponent, isStandalone: true, selector: "filter-item", inputs: { autofocus: "autofocus", floatLabel: "floatLabel", autofocusName: "autofocusName", item: "item", name: "name" }, ngImport: i0, template: "@if (item.visible$ | async) {\n <div class=\"filter filter-{{ item.type }}\">\n @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"textItem\"\n [autofocus]=\"autofocus\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"selectItem\"\n [autofocus]=\"autofocus\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-range\"\n [item]=\"rangeItem\"\n [autofocusName]=\"autofocusName\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"autocompleteItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"autocompleteChipsItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateItem\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\"\n [autofocusName]=\"autofocusName\">\n [name]=\"name\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\"\n [autofocusName]=\"autofocusName\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"weekItem\"\n [autofocus]=\"autofocus\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\"\n [autofocus]=\"autofocus\">\n </filter-item-checkbox>\n }\n }\n </div>\n}", styles: [":host ::ng-deep mat-form-field{margin-top:0!important}:host ::ng-deep mat-form-field .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-prefix .text-suffix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-suffix{top:-.25em;position:relative}:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-suffix .text-suffix{display:none}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "filter-item-text", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: SelectComponent, selector: "filter-item-select", inputs: ["autofocus", "floatLabel"
|
|
3098
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FilterItemComponent, isStandalone: true, selector: "filter-item", inputs: { autofocus: "autofocus", floatLabel: "floatLabel", autofocusName: "autofocusName", overlayRef: "overlayRef", item: "item", name: "name" }, ngImport: i0, template: "@if (item.visible$ | async) {\n <div class=\"filter filter-{{ item.type }}\">\n @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"textItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n [overlayRef]=\"overlayRef\"\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"selectItem\"\n [autofocus]=\"autofocus\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\"\n [overlayRef]=\"overlayRef\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-range\"\n [item]=\"rangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteChipsItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\">\n [name]=\"name\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"weekItem\"\n [autofocus]=\"autofocus\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n [overlayRef]=\"overlayRef\"\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\"\n [autofocus]=\"autofocus\">\n </filter-item-checkbox>\n }\n }\n </div>\n}", styles: [":host ::ng-deep mat-form-field{margin-top:0!important}:host ::ng-deep mat-form-field .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-prefix .text-suffix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-suffix{top:-.25em;position:relative}:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-suffix .text-suffix{display:none}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "filter-item-text", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: SelectComponent, selector: "filter-item-select", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: ChipsComponent, selector: "filter-item-chips" }, { kind: "component", type: RangeComponent, selector: "filter-item-range", inputs: ["autofocusName", "floatLabel"] }, { kind: "component", type: AutocompleteComponent, selector: "filter-item-autocomplete", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: AutocompletechipsComponent, selector: "filter-item-autocompletechips", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: DateComponent, selector: "filter-item-date", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: DateRangeComponent, selector: "filter-item-date-range", inputs: ["autofocusName", "floatLabel"] }, { kind: "component", type: WeekComponent, selector: "filter-item-week", inputs: ["autofocus", "floatLabel"] }, { kind: "component", type: CheckboxComponent, selector: "filter-item-checkbox" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3166
3099
|
}
|
|
3167
3100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterItemComponent, decorators: [{
|
|
3168
3101
|
type: Component,
|
|
@@ -3178,13 +3111,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3178
3111
|
WeekComponent,
|
|
3179
3112
|
CheckboxComponent,
|
|
3180
3113
|
AsyncPipe,
|
|
3181
|
-
], template: "@if (item.visible$ | async) {\n <div class=\"filter filter-{{ item.type }}\">\n @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"textItem\"\n [autofocus]=\"autofocus\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"selectItem\"\n [autofocus]=\"autofocus\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-range\"\n [item]=\"rangeItem\"\n [autofocusName]=\"autofocusName\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"autocompleteItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"autocompleteChipsItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateItem\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\"\n [autofocusName]=\"autofocusName\">\n [name]=\"name\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\"\n [autofocusName]=\"autofocusName\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"weekItem\"\n [autofocus]=\"autofocus\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\"\n [autofocus]=\"autofocus\">\n </filter-item-checkbox>\n }\n }\n </div>\n}", styles: [":host ::ng-deep mat-form-field{margin-top:0!important}:host ::ng-deep mat-form-field .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-prefix .text-suffix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-suffix{top:-.25em;position:relative}:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-suffix .text-suffix{display:none}\n"] }]
|
|
3114
|
+
], template: "@if (item.visible$ | async) {\n <div class=\"filter filter-{{ item.type }}\">\n @switch (item.type) {\n @case (itemType.Text) {\n <filter-item-text\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"textItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\">\n </filter-item-text>\n }\n @case (itemType.Select) {\n <filter-item-select\n [overlayRef]=\"overlayRef\"\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [item]=\"selectItem\"\n [autofocus]=\"autofocus\">\n </filter-item-select>\n }\n @case (itemType.Chips) {\n <filter-item-chips\n class=\"interface\"\n [item]=\"chipsItem\"\n [overlayRef]=\"overlayRef\">\n </filter-item-chips>\n }\n @case (itemType.Range) {\n <filter-item-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-range\"\n [item]=\"rangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\">\n </filter-item-range>\n }\n @case (itemType.AutoComplete) {\n <filter-item-autocomplete\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocomplete>\n }\n @case (itemType.AutoCompleteChips) {\n <filter-item-autocompletechips\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"autocompleteChipsItem\"\n [autofocus]=\"autofocus\">\n </filter-item-autocompletechips>\n }\n @case (itemType.Date) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateTime) {\n <filter-item-date\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocus]=\"autofocus\">\n </filter-item-date>\n }\n @case (itemType.DateRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\">\n [name]=\"name\">\n </filter-item-date-range>\n }\n @case (itemType.DateTimeRange) {\n <filter-item-date-range\n [floatLabel]=\"floatLabel\"\n class=\"interface interface-date\"\n [item]=\"dateTimeRangeItem\"\n [overlayRef]=\"overlayRef\"\n [autofocusName]=\"autofocusName\">\n </filter-item-date-range>\n }\n @case (itemType.Week) {\n <filter-item-week\n [floatLabel]=\"floatLabel\"\n class=\"interface\"\n [overlayRef]=\"overlayRef\"\n [item]=\"weekItem\"\n [autofocus]=\"autofocus\">\n </filter-item-week>\n }\n @case (itemType.Checkbox) {\n <filter-item-checkbox\n [overlayRef]=\"overlayRef\"\n class=\"interface interface-checkbox\"\n [item]=\"checkboxItem\"\n [autofocus]=\"autofocus\">\n </filter-item-checkbox>\n }\n }\n </div>\n}", styles: [":host ::ng-deep mat-form-field{margin-top:0!important}:host ::ng-deep mat-form-field .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-prefix .text-suffix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-prefix,:host ::ng-deep mat-form-field .mat-form-field-suffix .text-suffix{top:-.25em;position:relative}:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-prefix .text-prefix,:host ::ng-deep mat-form-field:not(.mat-form-field-should-float) .mat-form-field-suffix .text-suffix{display:none}\n"] }]
|
|
3182
3115
|
}], propDecorators: { autofocus: [{
|
|
3183
3116
|
type: Input
|
|
3184
3117
|
}], floatLabel: [{
|
|
3185
3118
|
type: Input
|
|
3186
3119
|
}], autofocusName: [{
|
|
3187
3120
|
type: Input
|
|
3121
|
+
}], overlayRef: [{
|
|
3122
|
+
type: Input
|
|
3188
3123
|
}], item: [{
|
|
3189
3124
|
type: Input
|
|
3190
3125
|
}], name: [{
|
|
@@ -3194,8 +3129,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3194
3129
|
class FilterItemDialogComponent {
|
|
3195
3130
|
item = inject(FILTER_DRAWER_DATA)?.item;
|
|
3196
3131
|
autofocusName = inject(FILTER_DRAWER_DATA)?.autofocusName;
|
|
3132
|
+
overlayRef = inject(FILTER_DRAWER_DATA)?.overlayRef;
|
|
3197
3133
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterItemDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3198
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FilterItemDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"filter-item-dialog\">\n <filter-item\n class=\"filter-group\"\n [floatLabel]=\"'always'\"\n [autofocus]=\"true\"\n [autofocusName]=\"autofocusName\"\n [item]=\"item\">\n </filter-item>\n</div>", styles: [".filter-item-dialog{background-color:#fff;padding:12px;box-shadow:var(--mat-autocomplete-container-elevation-shadow);border-radius:5px}.filter-item-dialog ::ng-deep mat-form-field{margin-top:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: FsFormModule }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "component", type: FilterItemComponent, selector: "filter-item", inputs: ["autofocus", "floatLabel", "autofocusName", "item", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3134
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FilterItemDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"filter-item-dialog\">\n <filter-item\n class=\"filter-group\"\n [floatLabel]=\"'always'\"\n [autofocus]=\"true\"\n [autofocusName]=\"autofocusName\"\n [overlayRef]=\"overlayRef\"\n [item]=\"item\">\n </filter-item>\n</div>", styles: [".filter-item-dialog{background-color:#fff;padding:12px;box-shadow:var(--mat-autocomplete-container-elevation-shadow);border-radius:5px}.filter-item-dialog ::ng-deep mat-form-field{margin-top:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: FsFormModule }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "component", type: FilterItemComponent, selector: "filter-item", inputs: ["autofocus", "floatLabel", "autofocusName", "overlayRef", "item", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3199
3135
|
}
|
|
3200
3136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterItemDialogComponent, decorators: [{
|
|
3201
3137
|
type: Component,
|
|
@@ -3204,7 +3140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3204
3140
|
FsFormModule,
|
|
3205
3141
|
FsSkeletonModule,
|
|
3206
3142
|
FilterItemComponent,
|
|
3207
|
-
], template: "<div class=\"filter-item-dialog\">\n <filter-item\n class=\"filter-group\"\n [floatLabel]=\"'always'\"\n [autofocus]=\"true\"\n [autofocusName]=\"autofocusName\"\n [item]=\"item\">\n </filter-item>\n</div>", styles: [".filter-item-dialog{background-color:#fff;padding:12px;box-shadow:var(--mat-autocomplete-container-elevation-shadow);border-radius:5px}.filter-item-dialog ::ng-deep mat-form-field{margin-top:0}\n"] }]
|
|
3143
|
+
], template: "<div class=\"filter-item-dialog\">\n <filter-item\n class=\"filter-group\"\n [floatLabel]=\"'always'\"\n [autofocus]=\"true\"\n [autofocusName]=\"autofocusName\"\n [overlayRef]=\"overlayRef\"\n [item]=\"item\">\n </filter-item>\n</div>", styles: [".filter-item-dialog{background-color:#fff;padding:12px;box-shadow:var(--mat-autocomplete-container-elevation-shadow);border-radius:5px}.filter-item-dialog ::ng-deep mat-form-field{margin-top:0}\n"] }]
|
|
3208
3144
|
}] });
|
|
3209
3145
|
|
|
3210
3146
|
class FsFilterSavedFilterChipsComponent {
|
|
@@ -3284,6 +3220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3284
3220
|
}] });
|
|
3285
3221
|
|
|
3286
3222
|
class FsFilterChipsComponent {
|
|
3223
|
+
chips;
|
|
3287
3224
|
ItemType = ItemType;
|
|
3288
3225
|
secondaryItems = [];
|
|
3289
3226
|
_filterController = inject(FilterController);
|
|
@@ -3303,9 +3240,11 @@ class FsFilterChipsComponent {
|
|
|
3303
3240
|
addFilter(event) {
|
|
3304
3241
|
const item = event.value;
|
|
3305
3242
|
item.secondaryShow();
|
|
3306
|
-
|
|
3243
|
+
this.chips.changes
|
|
3244
|
+
.pipe(take(1), delay(100), tap$1(() => {
|
|
3307
3245
|
this.openChip(item);
|
|
3308
|
-
})
|
|
3246
|
+
}), takeUntilDestroyed(this._destroyRef))
|
|
3247
|
+
.subscribe();
|
|
3309
3248
|
}
|
|
3310
3249
|
get disabledItems() {
|
|
3311
3250
|
return this.items
|
|
@@ -3325,7 +3264,6 @@ class FsFilterChipsComponent {
|
|
|
3325
3264
|
this.secondaryItems = this.items
|
|
3326
3265
|
.filter((item) => !item.primary);
|
|
3327
3266
|
this._initHasSecondaryValue();
|
|
3328
|
-
this._initChipClick();
|
|
3329
3267
|
}
|
|
3330
3268
|
clear() {
|
|
3331
3269
|
this._filterController.items
|
|
@@ -3341,7 +3279,8 @@ class FsFilterChipsComponent {
|
|
|
3341
3279
|
}
|
|
3342
3280
|
openChip(item, name = null) {
|
|
3343
3281
|
this._destroyOverlay();
|
|
3344
|
-
const el = this._elementRef.nativeElement
|
|
3282
|
+
const el = this._elementRef.nativeElement
|
|
3283
|
+
.querySelector(`[data-filter-item="${item.name}"]`);
|
|
3345
3284
|
const positions = [
|
|
3346
3285
|
{
|
|
3347
3286
|
originX: 'start',
|
|
@@ -3366,13 +3305,14 @@ class FsFilterChipsComponent {
|
|
|
3366
3305
|
positionStrategy: strategy,
|
|
3367
3306
|
scrollStrategy: this._overlay.scrollStrategies.block(),
|
|
3368
3307
|
disposeOnNavigation: true,
|
|
3308
|
+
hasBackdrop: true,
|
|
3369
3309
|
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
3370
3310
|
panelClass: 'fs-sidenav-menu-overlay-pane',
|
|
3371
3311
|
});
|
|
3372
|
-
if (this._overlayRef) {
|
|
3373
|
-
this._destroyOverlay();
|
|
3374
|
-
}
|
|
3375
3312
|
this._overlayRef = this._overlay.create(overlayConfig);
|
|
3313
|
+
this._overlayRef.backdropClick().pipe(take(1), tap$1(() => {
|
|
3314
|
+
this._destroyOverlay();
|
|
3315
|
+
}), takeUntilDestroyed(this._destroyRef)).subscribe();
|
|
3376
3316
|
this._attachContainer(this._overlayRef, item, name);
|
|
3377
3317
|
}
|
|
3378
3318
|
getNestedElement(el, className) {
|
|
@@ -3420,6 +3360,7 @@ class FsFilterChipsComponent {
|
|
|
3420
3360
|
this._overlayRef.detachBackdrop();
|
|
3421
3361
|
this._overlayRef.detach();
|
|
3422
3362
|
this._overlayRef.dispose();
|
|
3363
|
+
this._overlayRef = null;
|
|
3423
3364
|
}
|
|
3424
3365
|
}
|
|
3425
3366
|
removeChip(item, chip) {
|
|
@@ -3441,28 +3382,13 @@ class FsFilterChipsComponent {
|
|
|
3441
3382
|
}
|
|
3442
3383
|
_createInjector(item, autofocusName) {
|
|
3443
3384
|
const providers = [
|
|
3444
|
-
{ provide: FILTER_DRAWER_DATA, useValue: { item, autofocusName } },
|
|
3385
|
+
{ provide: FILTER_DRAWER_DATA, useValue: { item, autofocusName, overlayRef: this._overlayRef } },
|
|
3445
3386
|
];
|
|
3446
3387
|
return Injector.create({
|
|
3447
3388
|
providers,
|
|
3448
3389
|
parent: this._injector,
|
|
3449
3390
|
});
|
|
3450
3391
|
}
|
|
3451
|
-
_initChipClick() {
|
|
3452
|
-
fromEvent(document, 'click')
|
|
3453
|
-
.subscribe((event) => {
|
|
3454
|
-
const elements = document.elementsFromPoint(event.clientX, event.clientY);
|
|
3455
|
-
const item1 = elements.some((element) => {
|
|
3456
|
-
return !!this.getNestedElement(element, 'cdk-overlay-pane');
|
|
3457
|
-
});
|
|
3458
|
-
const item2 = elements.some((element) => {
|
|
3459
|
-
return !!this.getNestedElement(element, 'filter-chip');
|
|
3460
|
-
});
|
|
3461
|
-
if (!item1 && !item2) {
|
|
3462
|
-
this._destroyOverlay();
|
|
3463
|
-
}
|
|
3464
|
-
});
|
|
3465
|
-
}
|
|
3466
3392
|
_initHasSecondaryValue() {
|
|
3467
3393
|
this._hasSecondaryValue$.next(this.hasSecondaryValue);
|
|
3468
3394
|
this._filterController.change$
|
|
@@ -3472,7 +3398,7 @@ class FsFilterChipsComponent {
|
|
|
3472
3398
|
.subscribe();
|
|
3473
3399
|
}
|
|
3474
3400
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3475
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1$5.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1$5.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption$1, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i3$1.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3401
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1$5.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1$5.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption$1, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i3$1.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3476
3402
|
}
|
|
3477
3403
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, decorators: [{
|
|
3478
3404
|
type: Component,
|
|
@@ -3484,8 +3410,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3484
3410
|
FsSelectButtonModule,
|
|
3485
3411
|
MatButtonModule,
|
|
3486
3412
|
FsButtonDirective,
|
|
3487
|
-
|
|
3488
|
-
}] });
|
|
3413
|
+
FormsModule,
|
|
3414
|
+
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
|
|
3415
|
+
}], propDecorators: { chips: [{
|
|
3416
|
+
type: ViewChildren,
|
|
3417
|
+
args: [FsChipComponent]
|
|
3418
|
+
}] } });
|
|
3489
3419
|
|
|
3490
3420
|
class KeywordInputComponent {
|
|
3491
3421
|
keywordMatInput;
|
|
@@ -3906,7 +3836,7 @@ class FilterComponent {
|
|
|
3906
3836
|
ActionsController,
|
|
3907
3837
|
KeywordController,
|
|
3908
3838
|
SortController,
|
|
3909
|
-
], queries: [{ propertyName: "statusBar", first: true, predicate: FilterStatusBarDirective, descendants: true }, { propertyName: "headingTemplate", first: true, predicate: FilterHeadingDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "keywordInput", first: true, predicate: KeywordInputComponent, descendants: true }, { propertyName: "reloadEl", first: true, predicate: ["reloadEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"filter-container\"\n [ngClass]=\"{ 'has-primary-filter': primaryFilterVisible$ | async }\"\n [ngClass]=\"{ 'keyword-full-width': keywordFullWidth$ | async }\">\n @if (primaryFilterVisible$ | async) {\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n }\n <div class=\"filter-bar-container\">\n @if (primaryFilterVisible$ | async) {\n <div class=\"filter-input-container\">\n @if (keywordVisible$ | async) {\n <fs-keyword-input [autofocus]=\"config.autofocus\"></fs-keyword-input>\n }\n @for (item of primaryItems; track item.name) {\n @if (item.visible$ | async) {\n <filter-item [item]=\"item\"></filter-item>\n }\n }\n </div>\n } @else if (hasHeading) {\n <div class=\"filter-heading-container\">\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"chipsTmpl\"></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"filterActionsTmpl\"></ng-container>\n </div>\n @if ((primaryFilterVisible$ | async) === true || hasHeading) {\n <ng-container\n [ngTemplateOutlet]=\"chipsTmpl\"\n [ngTemplateOutletContext]=\"{ topMargin: true }\">\n </ng-container>\n }\n <ng-container *ngTemplateOutlet=\"statusBarTmpl\"></ng-container>\n</div>\n<ng-template\n #chipsTmpl\n let-topMargin=\"topMargin\">\n <fs-filter-chips\n class=\"filter-chips\"\n [ngClass]=\"{ 'top-margin': topMargin }\">\n </fs-filter-chips>\n</ng-template>\n<ng-template #statusBarTmpl>\n @if (statusBar) {\n <div\n class=\"filter-status-container\"\n [ngClass]=\"{ 'has-status': !!filterStatus.textContent }\">\n <div\n class=\"filter-status\"\n #filterStatus>\n <ng-container *ngTemplateOutlet=\"statusBar.templateRef\"></ng-container>\n </div>\n </div>\n }\n</ng-template>\n<ng-template #filterActionsTmpl>\n @if ((actionsVisible$ | async)) {\n <div class=\"filter-actions\">\n <ng-container [ngTemplateOutlet]=\"filterToolbarTmpl\"></ng-container>\n <fs-filter-actions\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n }\n</ng-template>\n<ng-template #filterToolbarTmpl>\n @if (config.reload || config.autoReload || (filtersVisible$ | async)) {\n <div class=\"filter-toolbar\">\n @if (config.reload) {\n <a\n mat-icon-button\n (click)=\"reload($event)\"\n class=\"button-reload\">\n <mat-icon #reloadEl>\n refresh\n </mat-icon>\n </a>\n }\n @if (config.autoReload) {\n <div class=\"filter-reload\">\n <mat-slide-toggle\n name=\"autoReload\"\n class=\"auto-reload\"\n [ngModel]=\"config.autoReload.enabled\"\n (ngModelChange)=\"config.autoReload.enabled = $event\">\n <span>\n Auto refresh\n </span>\n </mat-slide-toggle>\n </div>\n }\n </div>\n }\n</ng-template>\n<ng-template #headingTmpl>\n @if (headingTemplate) {\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n } @else if (config.heading) {\n <div class=\"heading\">\n <h2>\n {{ config.heading }}\n </h2>\n <div class=\"subheading\">\n {{ config.subheading }}\n </div>\n </div>\n }\n</ng-template>", styles: [":host{margin-bottom:20px;display:block}.filter-status-container{flex-grow:1;display:flex;justify-content:center;flex-direction:column;align-self:flex-end;margin-top:4px}.filter-status-container .filter-status{overflow:hidden;text-overflow:ellipsis}.filter-container{width:100%}.filter-container.has-primary-filter .heading{margin-bottom:10px}.filter-container.has-primary-filter .filter-bar-container{margin-bottom:4px}.filter-container.keyword-full-width .filter-input-container{flex:1}.filter-container.keyword-full-width .filter-input-container fs-keyword-input{flex:1}.filter-container.keyword-full-width .filter-input-container fs-keyword-input ::ng-deep mat-form-field{width:100%}.filter-container .filter-bar-container{flex-direction:row;box-sizing:border-box;display:flex;position:relative;align-items:flex-start}.filter-container .filter-bar-container .filter-input-container{flex-direction:row;box-sizing:border-box;display:flex;align-items:center;min-width:0;gap:5px;flex-wrap:wrap}.filter-container .filter-bar-container .filter-heading-container{flex-direction:row;box-sizing:border-box;display:flex;align-items:center;min-width:0}.filter-container .filter-bar-container .filter-heading-container fs-keyword-input+fs-saved-filter-autocomplete-chips{margin-left:5px}.filter-actions{display:flex;align-items:center;flex:1;justify-content:flex-end}.filter-toolbar{white-space:nowrap;display:flex;align-items:center}.filter-toolbar .button-filters,.filter-toolbar .button-reload{display:flex;--mdc-icon-button-state-layer-size: 40px;padding:8px}.filter-toolbar .button-filters ::ng-deep svg,.filter-toolbar .button-reload ::ng-deep svg{display:flex}.filter-toolbar .button-reload{display:flex;align-items:center}.filter-toolbar .button-reload .auto-reload{margin-right:5px}.filter-toolbar .button-reload .auto-reload span{font-size:80%}.heading{margin-right:8px}.heading h2{margin:0}.heading h2+.subheading{margin:0}@media screen and (min-width: 1200px){html.fs-filter-open body{margin-right:350px}}html.fs-filter-open{scrollbar-width:none}:host ::ng-deep .auto-reload.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(12px,0,0)}:host ::ng-deep .auto-reload:not(.mat-checked) .mat-slide-toggle-content{color:#ccc}:host ::ng-deep .auto-reload .mat-slide-toggle-thumb,:host ::ng-deep .auto-reload .mat-slide-toggle-thumb-container{height:15px;width:15px}:host ::ng-deep .auto-reload .mat-slide-toggle-content{font-size:90%}:host ::ng-deep .auto-reload .mat-slide-toggle-bar{width:26px;height:10px;border-radius:10px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FilterItemComponent, selector: "filter-item", inputs: ["autofocus", "floatLabel", "autofocusName", "item", "name"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "ngmodule", type: FsClearModule }, { kind: "component", type: FsFilterChipsComponent, selector: "fs-filter-chips" }, { kind: "component", type: FsFilterActionsComponent, selector: "fs-filter-actions", inputs: ["kebabActions", "actions"] }, { kind: "component", type: MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: KeywordInputComponent, selector: "fs-keyword-input", inputs: ["autofocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3839
|
+
], queries: [{ propertyName: "statusBar", first: true, predicate: FilterStatusBarDirective, descendants: true }, { propertyName: "headingTemplate", first: true, predicate: FilterHeadingDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "keywordInput", first: true, predicate: KeywordInputComponent, descendants: true }, { propertyName: "reloadEl", first: true, predicate: ["reloadEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"filter-container\"\n [ngClass]=\"{ 'has-primary-filter': primaryFilterVisible$ | async }\"\n [ngClass]=\"{ 'keyword-full-width': keywordFullWidth$ | async }\">\n @if (primaryFilterVisible$ | async) {\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n }\n <div class=\"filter-bar-container\">\n @if (primaryFilterVisible$ | async) {\n <div class=\"filter-input-container\">\n @if (keywordVisible$ | async) {\n <fs-keyword-input [autofocus]=\"config.autofocus\"></fs-keyword-input>\n }\n @for (item of primaryItems; track item.name) {\n @if (item.visible$ | async) {\n <filter-item [item]=\"item\"></filter-item>\n }\n }\n </div>\n } @else if (hasHeading) {\n <div class=\"filter-heading-container\">\n <ng-container *ngTemplateOutlet=\"headingTmpl\"></ng-container>\n </div>\n } @else {\n <ng-container *ngTemplateOutlet=\"chipsTmpl\"></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"filterActionsTmpl\"></ng-container>\n </div>\n @if ((primaryFilterVisible$ | async) === true || hasHeading) {\n <ng-container\n [ngTemplateOutlet]=\"chipsTmpl\"\n [ngTemplateOutletContext]=\"{ topMargin: true }\">\n </ng-container>\n }\n <ng-container *ngTemplateOutlet=\"statusBarTmpl\"></ng-container>\n</div>\n<ng-template\n #chipsTmpl\n let-topMargin=\"topMargin\">\n <fs-filter-chips\n class=\"filter-chips\"\n [ngClass]=\"{ 'top-margin': topMargin }\">\n </fs-filter-chips>\n</ng-template>\n<ng-template #statusBarTmpl>\n @if (statusBar) {\n <div\n class=\"filter-status-container\"\n [ngClass]=\"{ 'has-status': !!filterStatus.textContent }\">\n <div\n class=\"filter-status\"\n #filterStatus>\n <ng-container *ngTemplateOutlet=\"statusBar.templateRef\"></ng-container>\n </div>\n </div>\n }\n</ng-template>\n<ng-template #filterActionsTmpl>\n @if ((actionsVisible$ | async)) {\n <div class=\"filter-actions\">\n <ng-container [ngTemplateOutlet]=\"filterToolbarTmpl\"></ng-container>\n <fs-filter-actions\n [actions]=\"actions$ | async\"\n [kebabActions]=\"menuActions$ | async\">\n </fs-filter-actions>\n </div>\n }\n</ng-template>\n<ng-template #filterToolbarTmpl>\n @if (config.reload || config.autoReload || (filtersVisible$ | async)) {\n <div class=\"filter-toolbar\">\n @if (config.reload) {\n <a\n mat-icon-button\n (click)=\"reload($event)\"\n class=\"button-reload\">\n <mat-icon #reloadEl>\n refresh\n </mat-icon>\n </a>\n }\n @if (config.autoReload) {\n <div class=\"filter-reload\">\n <mat-slide-toggle\n name=\"autoReload\"\n class=\"auto-reload\"\n [ngModel]=\"config.autoReload.enabled\"\n (ngModelChange)=\"config.autoReload.enabled = $event\">\n <span>\n Auto refresh\n </span>\n </mat-slide-toggle>\n </div>\n }\n </div>\n }\n</ng-template>\n<ng-template #headingTmpl>\n @if (headingTemplate) {\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n } @else if (config.heading) {\n <div class=\"heading\">\n <h2>\n {{ config.heading }}\n </h2>\n <div class=\"subheading\">\n {{ config.subheading }}\n </div>\n </div>\n }\n</ng-template>", styles: [":host{margin-bottom:20px;display:block}.filter-status-container{flex-grow:1;display:flex;justify-content:center;flex-direction:column;align-self:flex-end;margin-top:4px}.filter-status-container .filter-status{overflow:hidden;text-overflow:ellipsis}.filter-container{width:100%}.filter-container.has-primary-filter .heading{margin-bottom:10px}.filter-container.has-primary-filter .filter-bar-container{margin-bottom:4px}.filter-container.keyword-full-width .filter-input-container{flex:1}.filter-container.keyword-full-width .filter-input-container fs-keyword-input{flex:1}.filter-container.keyword-full-width .filter-input-container fs-keyword-input ::ng-deep mat-form-field{width:100%}.filter-container .filter-bar-container{flex-direction:row;box-sizing:border-box;display:flex;position:relative;align-items:flex-start}.filter-container .filter-bar-container .filter-input-container{flex-direction:row;box-sizing:border-box;display:flex;align-items:center;min-width:0;gap:5px;flex-wrap:wrap}.filter-container .filter-bar-container .filter-heading-container{flex-direction:row;box-sizing:border-box;display:flex;align-items:center;min-width:0}.filter-container .filter-bar-container .filter-heading-container fs-keyword-input+fs-saved-filter-autocomplete-chips{margin-left:5px}.filter-actions{display:flex;align-items:center;flex:1;justify-content:flex-end}.filter-toolbar{white-space:nowrap;display:flex;align-items:center}.filter-toolbar .button-filters,.filter-toolbar .button-reload{display:flex;--mdc-icon-button-state-layer-size: 40px;padding:8px}.filter-toolbar .button-filters ::ng-deep svg,.filter-toolbar .button-reload ::ng-deep svg{display:flex}.filter-toolbar .button-reload{display:flex;align-items:center}.filter-toolbar .button-reload .auto-reload{margin-right:5px}.filter-toolbar .button-reload .auto-reload span{font-size:80%}.heading{margin-right:8px}.heading h2{margin:0}.heading h2+.subheading{margin:0}@media screen and (min-width: 1200px){html.fs-filter-open body{margin-right:350px}}html.fs-filter-open{scrollbar-width:none}:host ::ng-deep .auto-reload.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(12px,0,0)}:host ::ng-deep .auto-reload:not(.mat-checked) .mat-slide-toggle-content{color:#ccc}:host ::ng-deep .auto-reload .mat-slide-toggle-thumb,:host ::ng-deep .auto-reload .mat-slide-toggle-thumb-container{height:15px;width:15px}:host ::ng-deep .auto-reload .mat-slide-toggle-content{font-size:90%}:host ::ng-deep .auto-reload .mat-slide-toggle-bar{width:26px;height:10px;border-radius:10px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FilterItemComponent, selector: "filter-item", inputs: ["autofocus", "floatLabel", "autofocusName", "overlayRef", "item", "name"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "ngmodule", type: FsClearModule }, { kind: "component", type: FsFilterChipsComponent, selector: "fs-filter-chips" }, { kind: "component", type: FsFilterActionsComponent, selector: "fs-filter-actions", inputs: ["kebabActions", "actions"] }, { kind: "component", type: MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: KeywordInputComponent, selector: "fs-keyword-input", inputs: ["autofocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3910
3840
|
}
|
|
3911
3841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FilterComponent, decorators: [{
|
|
3912
3842
|
type: Component,
|