@wlcm/angular 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/button/README.md +7 -0
- package/button/esm2022/index.mjs +3 -0
- package/button/esm2022/lib/button.module.mjs +16 -0
- package/button/esm2022/lib/components/button/button.component.mjs +37 -0
- package/button/esm2022/lib/models/button.models.mjs +2 -0
- package/button/esm2022/wlcm-angular-button.mjs +5 -0
- package/button/fesm2022/wlcm-angular-button.mjs +57 -0
- package/button/fesm2022/wlcm-angular-button.mjs.map +1 -0
- package/button/index.d.ts +2 -0
- package/button/lib/button.module.d.ts +7 -0
- package/button/lib/components/button/button.component.d.ts +13 -0
- package/button/lib/models/button.models.d.ts +1 -0
- package/core/README.md +7 -0
- package/core/esm2022/index.mjs +10 -0
- package/core/esm2022/lib/components/chevron-down-icon/chevron-down-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/close-icon/close-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/search-icon/search-icon.component.mjs +12 -0
- package/core/esm2022/lib/constants/http.constants.mjs +6 -0
- package/core/esm2022/lib/models/option.models.mjs +15 -0
- package/core/esm2022/lib/models/paginated-data.models.mjs +2 -0
- package/core/esm2022/lib/models/query-params.models.mjs +6 -0
- package/core/esm2022/lib/utils/stream.utils.mjs +28 -0
- package/core/esm2022/wlcm-angular-core.mjs +5 -0
- package/core/fesm2022/wlcm-angular-core.mjs +92 -0
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -0
- package/core/index.d.ts +8 -0
- package/core/lib/components/chevron-down-icon/chevron-down-icon.component.d.ts +5 -0
- package/core/lib/components/close-icon/close-icon.component.d.ts +5 -0
- package/core/lib/components/search-icon/search-icon.component.d.ts +5 -0
- package/core/lib/constants/http.constants.d.ts +2 -0
- package/core/lib/models/option.models.d.ts +11 -0
- package/core/lib/models/paginated-data.models.d.ts +6 -0
- package/core/lib/models/query-params.models.d.ts +26 -0
- package/core/lib/utils/stream.utils.d.ts +7 -0
- package/filters/README.md +7 -0
- package/filters/esm2022/index.mjs +8 -0
- package/filters/esm2022/lib/filters/components/filters/filters.component.mjs +21 -0
- package/filters/esm2022/lib/filters/components/filters-button/filters-button.component.mjs +25 -0
- package/filters/esm2022/lib/filters/components/filters-panel/filters-panel.component.mjs +86 -0
- package/filters/esm2022/lib/filters/components/filters-unit/filters-unit.component.mjs +55 -0
- package/filters/esm2022/lib/filters/directives/filters-content.directive.mjs +11 -0
- package/filters/esm2022/lib/filters/directives/filters-trigger.directive.mjs +69 -0
- package/filters/esm2022/lib/filters/filters.module.mjs +53 -0
- package/filters/esm2022/lib/filters/models/filters-default-selection-model.mjs +56 -0
- package/filters/esm2022/lib/filters/models/filters-trigger.base.mjs +56 -0
- package/filters/esm2022/lib/filters/models/filters.models.mjs +44 -0
- package/filters/esm2022/lib/filters/pipes/is-filters-param-checked.pipe.mjs +21 -0
- package/filters/esm2022/lib/filters/pipes/total-filters-applied.pipe.mjs +18 -0
- package/filters/esm2022/lib/filters/utils/filters.utils.mjs +13 -0
- package/filters/esm2022/wlcm-angular-filters.mjs +5 -0
- package/filters/fesm2022/wlcm-angular-filters.mjs +474 -0
- package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -0
- package/filters/index.d.ts +7 -0
- package/filters/lib/filters/components/filters/filters.component.d.ts +10 -0
- package/filters/lib/filters/components/filters-button/filters-button.component.d.ts +11 -0
- package/filters/lib/filters/components/filters-panel/filters-panel.component.d.ts +25 -0
- package/filters/lib/filters/components/filters-unit/filters-unit.component.d.ts +21 -0
- package/filters/lib/filters/directives/filters-content.directive.d.ts +5 -0
- package/filters/lib/filters/directives/filters-trigger.directive.d.ts +22 -0
- package/filters/lib/filters/filters.module.d.ts +20 -0
- package/filters/lib/filters/models/filters-default-selection-model.d.ts +18 -0
- package/filters/lib/filters/models/filters-trigger.base.d.ts +15 -0
- package/filters/lib/filters/models/filters.models.d.ts +42 -0
- package/filters/lib/filters/pipes/is-filters-param-checked.pipe.d.ts +10 -0
- package/filters/lib/filters/pipes/total-filters-applied.pipe.d.ts +8 -0
- package/filters/lib/filters/utils/filters.utils.d.ts +5 -0
- package/forms/README.md +7 -0
- package/forms/esm2022/index.mjs +10 -0
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +164 -0
- package/forms/esm2022/lib/forms/components/error/error.component.mjs +12 -0
- package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +118 -0
- package/forms/esm2022/lib/forms/components/index.mjs +6 -0
- package/forms/esm2022/lib/forms/components/label/label.component.mjs +23 -0
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +107 -0
- package/forms/esm2022/lib/forms/constants/form-elements.constants.mjs +5 -0
- package/forms/esm2022/lib/forms/constants/form-errors.constants.mjs +7 -0
- package/forms/esm2022/lib/forms/constants/form-state-handlers.constants.mjs +13 -0
- package/forms/esm2022/lib/forms/constants/index.mjs +4 -0
- package/forms/esm2022/lib/forms/directives/ac-input-binder.directive.mjs +33 -0
- package/forms/esm2022/lib/forms/directives/autocomplete.directive.mjs +63 -0
- package/forms/esm2022/lib/forms/directives/form-field-custom-container.directive.mjs +17 -0
- package/forms/esm2022/lib/forms/directives/form-field-hint.directive.mjs +15 -0
- package/forms/esm2022/lib/forms/directives/form-field-suffix.directive.mjs +14 -0
- package/forms/esm2022/lib/forms/directives/input.directive.mjs +35 -0
- package/forms/esm2022/lib/forms/forms.module.mjs +51 -0
- package/forms/esm2022/lib/forms/models/_index.mjs +4 -0
- package/forms/esm2022/lib/forms/models/form-errors.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/form.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/input.models.mjs +2 -0
- package/forms/esm2022/lib/forms/pipes/errors-mapper.pipe.mjs +53 -0
- package/forms/esm2022/lib/forms/services/form-state-handler.service.mjs +19 -0
- package/forms/esm2022/lib/forms/services/index.mjs +2 -0
- package/forms/esm2022/wlcm-angular-forms.mjs +5 -0
- package/forms/fesm2022/wlcm-angular-forms.mjs +675 -0
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -0
- package/forms/index.d.ts +9 -0
- package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +46 -0
- package/forms/lib/forms/components/error/error.component.d.ts +5 -0
- package/forms/lib/forms/components/form-field/form-field.component.d.ts +27 -0
- package/forms/lib/forms/components/index.d.ts +5 -0
- package/forms/lib/forms/components/label/label.component.d.ts +7 -0
- package/forms/lib/forms/components/select/select.component.d.ts +31 -0
- package/forms/lib/forms/constants/form-elements.constants.d.ts +6 -0
- package/forms/lib/forms/constants/form-errors.constants.d.ts +4 -0
- package/forms/lib/forms/constants/form-state-handlers.constants.d.ts +6 -0
- package/forms/lib/forms/constants/index.d.ts +3 -0
- package/forms/lib/forms/directives/ac-input-binder.directive.d.ts +5 -0
- package/forms/lib/forms/directives/autocomplete.directive.d.ts +16 -0
- package/forms/lib/forms/directives/form-field-custom-container.directive.d.ts +8 -0
- package/forms/lib/forms/directives/form-field-hint.directive.d.ts +5 -0
- package/forms/lib/forms/directives/form-field-suffix.directive.d.ts +5 -0
- package/forms/lib/forms/directives/input.directive.d.ts +5 -0
- package/forms/lib/forms/forms.module.d.ts +15 -0
- package/forms/lib/forms/models/_index.d.ts +3 -0
- package/forms/lib/forms/models/form-errors.models.d.ts +5 -0
- package/forms/lib/forms/models/form.models.d.ts +11 -0
- package/forms/lib/forms/models/input.models.d.ts +7 -0
- package/forms/lib/forms/pipes/errors-mapper.pipe.d.ts +17 -0
- package/forms/lib/forms/services/form-state-handler.service.d.ts +10 -0
- package/forms/lib/forms/services/index.d.ts +1 -0
- package/index.d.ts +1 -0
- package/index.mjs +4 -0
- package/package.json +109 -0
- package/search-field/README.md +7 -0
- package/search-field/esm2022/index.mjs +3 -0
- package/search-field/esm2022/lib/components/search-field/search-field.component.mjs +36 -0
- package/search-field/esm2022/lib/search-field.module.mjs +18 -0
- package/search-field/esm2022/wlcm-angular-search-field.mjs +5 -0
- package/search-field/fesm2022/wlcm-angular-search-field.mjs +57 -0
- package/search-field/fesm2022/wlcm-angular-search-field.mjs.map +1 -0
- package/search-field/index.d.ts +2 -0
- package/search-field/lib/components/search-field/search-field.component.d.ts +14 -0
- package/search-field/lib/search-field.module.d.ts +8 -0
- package/styles/components/button/index.scss +91 -0
- package/styles/components/common/index.scss +33 -0
- package/styles/components/filters/_filters-panel.scss +44 -0
- package/styles/components/filters/_filters-unit.scss +92 -0
- package/styles/components/filters/index.scss +7 -0
- package/styles/components/forms/_checkbox.scss +89 -0
- package/styles/components/forms/_error.scss +23 -0
- package/styles/components/forms/_form-field.scss +65 -0
- package/styles/components/forms/_label.scss +42 -0
- package/styles/components/forms/_select.scss +74 -0
- package/styles/components/forms/index.scss +13 -0
- package/styles/components/search-field/index.scss +31 -0
- package/styles/core/_all-theme.scss +15 -0
- package/styles/core/_core.scss +10 -0
- package/styles/core/_utils.scss +53 -0
- package/styles/wlcm.scss +3 -0
@@ -0,0 +1,474 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Directive, inject, Injector, Component, ChangeDetectionStrategy, SkipSelf, Input, TemplateRef, ViewChild, ContentChild, EventEmitter, Output, HostListener, Pipe, Host, NgModule } from '@angular/core';
|
3
|
+
import * as i3 from '@angular/common';
|
4
|
+
import { CommonModule } from '@angular/common';
|
5
|
+
import { __decorate, __metadata } from 'tslib';
|
6
|
+
import { BehaviorSubject, Subject, filter, switchMap, auditTime, skip, map } from 'rxjs';
|
7
|
+
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
|
8
|
+
import * as i5 from '@wlcm/angular/core';
|
9
|
+
import { WlcmStreamUtils, ChevronDownIconComponent, CloseIconComponent } from '@wlcm/angular/core';
|
10
|
+
import * as i2 from '@rx-angular/template/let';
|
11
|
+
import { RxLet } from '@rx-angular/template/let';
|
12
|
+
import * as i4 from '@wlcm/angular/button';
|
13
|
+
import { WlcmButtonComponent } from '@wlcm/angular/button';
|
14
|
+
import * as i1 from '@angular/cdk/overlay';
|
15
|
+
import { OverlayRef, OverlayConfig } from '@angular/cdk/overlay';
|
16
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
17
|
+
import * as i3$1 from '@angular/material/expansion';
|
18
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
19
|
+
import * as i1$1 from '@angular/material/checkbox';
|
20
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
21
|
+
|
22
|
+
class WlcmFiltersContentDirective {
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersContentDirective, selector: "[wlcmFiltersContent]", ngImport: i0 }); }
|
25
|
+
}
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersContentDirective, decorators: [{
|
27
|
+
type: Directive,
|
28
|
+
args: [{ selector: '[wlcmFiltersContent]' }]
|
29
|
+
}] });
|
30
|
+
|
31
|
+
class WlcmFiltersUnit {
|
32
|
+
constructor(param, parent) {
|
33
|
+
this.param = '';
|
34
|
+
this.data = [];
|
35
|
+
this._dataChanges$ = new BehaviorSubject([...this.data]);
|
36
|
+
this.dataChanges$ = this._dataChanges$.asObservable();
|
37
|
+
this.param = param;
|
38
|
+
this.parent = parent;
|
39
|
+
}
|
40
|
+
add(value) {
|
41
|
+
this.data = [...this.data, value];
|
42
|
+
this.notifyChanges();
|
43
|
+
}
|
44
|
+
setAll(value, onlySelf = false) {
|
45
|
+
this.data = [...value];
|
46
|
+
this.notifyChanges(onlySelf);
|
47
|
+
}
|
48
|
+
remove(value) {
|
49
|
+
this.data = this.data.filter((_value) => _value !== value);
|
50
|
+
this.notifyChanges();
|
51
|
+
}
|
52
|
+
reset(onlySelf = false) {
|
53
|
+
this.data = [];
|
54
|
+
this.notifyChanges(onlySelf);
|
55
|
+
}
|
56
|
+
clone(parent) {
|
57
|
+
const unit = new WlcmFiltersUnit(this.param, parent);
|
58
|
+
unit.data = [...this.data];
|
59
|
+
unit.notifyChanges(true);
|
60
|
+
return unit;
|
61
|
+
}
|
62
|
+
notifyChanges(onlySelf = false) {
|
63
|
+
this._dataChanges$.next([...this.data]);
|
64
|
+
if (!onlySelf) {
|
65
|
+
this.parent.syncUnitChanges();
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
class WlcmFiltersSelectionModel {
|
70
|
+
}
|
71
|
+
class WlcmFiltersTriggerControl {
|
72
|
+
}
|
73
|
+
|
74
|
+
class WlcmFiltersUtils {
|
75
|
+
static modelToQueryFilters(model) {
|
76
|
+
const filters = {};
|
77
|
+
Object.keys(model).forEach((key) => {
|
78
|
+
const data = model[key].data;
|
79
|
+
if (data.length > 0) {
|
80
|
+
filters[key] = { oneOf: data };
|
81
|
+
}
|
82
|
+
});
|
83
|
+
return filters;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
let WlcmFiltersPanelComponent = class WlcmFiltersPanelComponent {
|
88
|
+
constructor(injector, panelControl, globalSelectionModel) {
|
89
|
+
this.injector = injector;
|
90
|
+
this.panelControl = panelControl;
|
91
|
+
this.globalSelectionModel = globalSelectionModel;
|
92
|
+
this.loading$ = new BehaviorSubject(false);
|
93
|
+
this.totalResults$ = new BehaviorSubject(null);
|
94
|
+
this._selectionModel = inject(WlcmFiltersSelectionModel);
|
95
|
+
this._countResults$ = new Subject();
|
96
|
+
this.handleCountResultsEvent();
|
97
|
+
this.handleSelectionChanges();
|
98
|
+
}
|
99
|
+
ngOnInit() {
|
100
|
+
this._countResults$.next(this._selectionModel.model);
|
101
|
+
}
|
102
|
+
apply() {
|
103
|
+
this.updateGlobalModel();
|
104
|
+
this.panelControl.close();
|
105
|
+
}
|
106
|
+
reset() {
|
107
|
+
this._selectionModel.reset();
|
108
|
+
}
|
109
|
+
close() {
|
110
|
+
this.panelControl.close();
|
111
|
+
}
|
112
|
+
updateGlobalModel() {
|
113
|
+
this.globalSelectionModel.updateSelection(this._selectionModel.model);
|
114
|
+
}
|
115
|
+
handleSelectionChanges() {
|
116
|
+
this._selectionModel.modelChanges$
|
117
|
+
.pipe(untilDestroyed(this))
|
118
|
+
.subscribe((model) => this._countResults$.next(model));
|
119
|
+
}
|
120
|
+
handleCountResultsEvent() {
|
121
|
+
this._countResults$
|
122
|
+
.pipe(filter(() => this.countResults instanceof Function))
|
123
|
+
.pipe(switchMap((model) => {
|
124
|
+
const filters = WlcmFiltersUtils.modelToQueryFilters(model);
|
125
|
+
return this.countResults(filters).pipe(auditTime(300), WlcmStreamUtils.loadingDetector(this.loading$));
|
126
|
+
}))
|
127
|
+
.subscribe((totalResults) => this.totalResults$.next(totalResults));
|
128
|
+
}
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersPanelComponent, deps: [{ token: i0.Injector }, { token: WlcmFiltersTriggerControl }, { token: WlcmFiltersSelectionModel, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
130
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersPanelComponent, selector: "wlcm-filters-panel", inputs: { countResults: "countResults", filtersContent: "filtersContent" }, providers: [
|
131
|
+
{
|
132
|
+
provide: WlcmFiltersSelectionModel,
|
133
|
+
useFactory: () => inject(WlcmFiltersSelectionModel, { skipSelf: true }).clone(),
|
134
|
+
},
|
135
|
+
], ngImport: i0, template: "<div class=\"wlcm-filters-panel\">\n <div class=\"wlcm-filters-panel-header\">\n <h4 class=\"filters-panel__title\">Filters</h4>\n\n <wlcm-close-icon\n (click)=\"close()\"\n class=\"wlcm-cursor-pointer\"\n ></wlcm-close-icon>\n </div>\n\n <div class=\"wlcm-filters-panel-units\">\n <ng-container\n *ngTemplateOutlet=\"filtersContent; injector: injector\"\n ></ng-container>\n </div>\n\n <div class=\"wlcm-filters-panel-actions\">\n <wlcm-button type=\"borderless\" (clicked)=\"reset()\">Reset All</wlcm-button>\n\n <wlcm-button\n (clicked)=\"apply()\"\n *rxLet=\"loading$ | async as isLoading\"\n [isLoading]=\"isLoading\"\n >\n Show\n\n <ng-container *rxLet=\"totalResults$ | async as totalResults\">\n <ng-container *ngIf=\"totalResults !== null && !isLoading\">\n ({{ totalResults }})\n </ng-container>\n </ng-container>\n </wlcm-button>\n </div>\n</div>\n", styles: [":host{width:100%;display:block}\n"], dependencies: [{ kind: "directive", type: i2.RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.WlcmButtonComponent, selector: "wlcm-button", inputs: ["type", "size", "isDisabled", "isLoading"], outputs: ["clicked"] }, { kind: "component", type: i5.CloseIconComponent, selector: "wlcm-close-icon" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
136
|
+
};
|
137
|
+
WlcmFiltersPanelComponent = __decorate([
|
138
|
+
UntilDestroy(),
|
139
|
+
__metadata("design:paramtypes", [Injector,
|
140
|
+
WlcmFiltersTriggerControl,
|
141
|
+
WlcmFiltersSelectionModel])
|
142
|
+
], WlcmFiltersPanelComponent);
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersPanelComponent, decorators: [{
|
144
|
+
type: Component,
|
145
|
+
args: [{ selector: 'wlcm-filters-panel', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
146
|
+
{
|
147
|
+
provide: WlcmFiltersSelectionModel,
|
148
|
+
useFactory: () => inject(WlcmFiltersSelectionModel, { skipSelf: true }).clone(),
|
149
|
+
},
|
150
|
+
], template: "<div class=\"wlcm-filters-panel\">\n <div class=\"wlcm-filters-panel-header\">\n <h4 class=\"filters-panel__title\">Filters</h4>\n\n <wlcm-close-icon\n (click)=\"close()\"\n class=\"wlcm-cursor-pointer\"\n ></wlcm-close-icon>\n </div>\n\n <div class=\"wlcm-filters-panel-units\">\n <ng-container\n *ngTemplateOutlet=\"filtersContent; injector: injector\"\n ></ng-container>\n </div>\n\n <div class=\"wlcm-filters-panel-actions\">\n <wlcm-button type=\"borderless\" (clicked)=\"reset()\">Reset All</wlcm-button>\n\n <wlcm-button\n (clicked)=\"apply()\"\n *rxLet=\"loading$ | async as isLoading\"\n [isLoading]=\"isLoading\"\n >\n Show\n\n <ng-container *rxLet=\"totalResults$ | async as totalResults\">\n <ng-container *ngIf=\"totalResults !== null && !isLoading\">\n ({{ totalResults }})\n </ng-container>\n </ng-container>\n </wlcm-button>\n </div>\n</div>\n", styles: [":host{width:100%;display:block}\n"] }]
|
151
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: WlcmFiltersTriggerControl }, { type: WlcmFiltersSelectionModel, decorators: [{
|
152
|
+
type: SkipSelf
|
153
|
+
}] }], propDecorators: { countResults: [{
|
154
|
+
type: Input
|
155
|
+
}], filtersContent: [{
|
156
|
+
type: Input
|
157
|
+
}] } });
|
158
|
+
|
159
|
+
class WlcmFiltersComponent {
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersComponent, selector: "wlcm-filters", inputs: { countResults: "countResults" }, queries: [{ propertyName: "filtersContent", first: true, predicate: WlcmFiltersContentDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["filtersPanelTemplate"], descendants: true }], exportAs: ["wlcmFilters"], ngImport: i0, template: "<ng-template #filtersPanelTemplate>\n <wlcm-filters-panel\n [countResults]=\"countResults\"\n [filtersContent]=\"filtersContent\"\n >\n </wlcm-filters-panel>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: WlcmFiltersPanelComponent, selector: "wlcm-filters-panel", inputs: ["countResults", "filtersContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
162
|
+
}
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersComponent, decorators: [{
|
164
|
+
type: Component,
|
165
|
+
args: [{ selector: 'wlcm-filters', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'wlcmFilters', template: "<ng-template #filtersPanelTemplate>\n <wlcm-filters-panel\n [countResults]=\"countResults\"\n [filtersContent]=\"filtersContent\"\n >\n </wlcm-filters-panel>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
|
166
|
+
}], propDecorators: { countResults: [{
|
167
|
+
type: Input
|
168
|
+
}], templateRef: [{
|
169
|
+
type: ViewChild,
|
170
|
+
args: ['filtersPanelTemplate']
|
171
|
+
}], filtersContent: [{
|
172
|
+
type: ContentChild,
|
173
|
+
args: [WlcmFiltersContentDirective, { read: TemplateRef }]
|
174
|
+
}] } });
|
175
|
+
|
176
|
+
class FiltersDefaultSelectionModel extends WlcmFiltersSelectionModel {
|
177
|
+
constructor() {
|
178
|
+
super(...arguments);
|
179
|
+
this.model = {};
|
180
|
+
this._modelChanges$ = new BehaviorSubject({ ...this.model });
|
181
|
+
this.modelChanges$ = this._modelChanges$.asObservable();
|
182
|
+
}
|
183
|
+
add(param, unit, wlcmtChanges = true) {
|
184
|
+
this.model[param] = unit;
|
185
|
+
if (wlcmtChanges) {
|
186
|
+
this.notifyChanges();
|
187
|
+
}
|
188
|
+
}
|
189
|
+
has(param) {
|
190
|
+
return this.model[param] instanceof WlcmFiltersUnit;
|
191
|
+
}
|
192
|
+
get(param) {
|
193
|
+
return this.model[param];
|
194
|
+
}
|
195
|
+
createUnit(param) {
|
196
|
+
return new WlcmFiltersUnit(param, this);
|
197
|
+
}
|
198
|
+
updateSelection(model) {
|
199
|
+
this.model = this.cloneModel(model, this);
|
200
|
+
this.notifyChanges();
|
201
|
+
}
|
202
|
+
syncUnitChanges() {
|
203
|
+
this.notifyChanges();
|
204
|
+
}
|
205
|
+
clone() {
|
206
|
+
const clone = new FiltersDefaultSelectionModel();
|
207
|
+
clone.updateSelection({ ...this.model });
|
208
|
+
return clone;
|
209
|
+
}
|
210
|
+
reset() {
|
211
|
+
Object.values(this.model).forEach((unit) => unit.reset(true));
|
212
|
+
this.notifyChanges();
|
213
|
+
}
|
214
|
+
get isEmpty() {
|
215
|
+
return (Object.keys(this.model).length == 0 ||
|
216
|
+
Object.values(this.model).every((unit) => unit.data.length === 0));
|
217
|
+
}
|
218
|
+
cloneModel(model, parent) {
|
219
|
+
const _model = {};
|
220
|
+
Object.keys(model).forEach((param) => {
|
221
|
+
_model[param] = model[param].clone(parent);
|
222
|
+
});
|
223
|
+
return _model;
|
224
|
+
}
|
225
|
+
notifyChanges() {
|
226
|
+
this._modelChanges$.next({ ...this.model });
|
227
|
+
}
|
228
|
+
}
|
229
|
+
|
230
|
+
let FiltersTriggerBase = class FiltersTriggerBase {
|
231
|
+
set filters(value) {
|
232
|
+
this._filters = value;
|
233
|
+
this.updateSelectionModel();
|
234
|
+
}
|
235
|
+
constructor(selectionModel) {
|
236
|
+
this.selectionModel = selectionModel;
|
237
|
+
this.filtersChanges = new EventEmitter();
|
238
|
+
}
|
239
|
+
updateSelectionModel() {
|
240
|
+
if (!this._filters || Object.values(this._filters).length === 0) {
|
241
|
+
if (!this.selectionModel.isEmpty) {
|
242
|
+
this.selectionModel.reset();
|
243
|
+
}
|
244
|
+
}
|
245
|
+
else {
|
246
|
+
const filters = this._filters;
|
247
|
+
Object.keys(filters).forEach((param) => {
|
248
|
+
const unit = this.selectionModel.createUnit(param);
|
249
|
+
unit.setAll(filters[param].oneOf, true);
|
250
|
+
this.selectionModel.add(param, unit, false);
|
251
|
+
});
|
252
|
+
}
|
253
|
+
}
|
254
|
+
handleModelChanges() {
|
255
|
+
this.selectionModel.modelChanges$.pipe(untilDestroyed(this), skip(1)).subscribe((model) => {
|
256
|
+
const filters = WlcmFiltersUtils.modelToQueryFilters(model);
|
257
|
+
this.filtersChanges.next(filters);
|
258
|
+
});
|
259
|
+
}
|
260
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FiltersTriggerBase, deps: [{ token: WlcmFiltersSelectionModel }], target: i0.ɵɵFactoryTarget.Directive }); }
|
261
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: FiltersTriggerBase, inputs: { filters: ["wlcmFiltersTriggerData", "filters"] }, outputs: { filtersChanges: "wlcmFiltersTriggerDataChanges" }, ngImport: i0 }); }
|
262
|
+
};
|
263
|
+
FiltersTriggerBase = __decorate([
|
264
|
+
UntilDestroy(),
|
265
|
+
__metadata("design:paramtypes", [WlcmFiltersSelectionModel])
|
266
|
+
], FiltersTriggerBase);
|
267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FiltersTriggerBase, decorators: [{
|
268
|
+
type: Directive
|
269
|
+
}], ctorParameters: () => [{ type: WlcmFiltersSelectionModel }], propDecorators: { filters: [{
|
270
|
+
type: Input,
|
271
|
+
args: ['wlcmFiltersTriggerData']
|
272
|
+
}], filtersChanges: [{
|
273
|
+
type: Output,
|
274
|
+
args: ['wlcmFiltersTriggerDataChanges']
|
275
|
+
}] } });
|
276
|
+
|
277
|
+
class WlcmFiltersTriggerDirective extends FiltersTriggerBase {
|
278
|
+
openPanel() {
|
279
|
+
if (this.overlayRef instanceof OverlayRef)
|
280
|
+
return;
|
281
|
+
const config = this.createOverlayConfig();
|
282
|
+
const injector = this.createInjector();
|
283
|
+
this.overlayRef = this.overlay.create(config);
|
284
|
+
this.overlayRef.attach(new TemplatePortal(this.panel.templateRef, this.viewContainerRef, null, injector));
|
285
|
+
}
|
286
|
+
constructor(overlay, injector, elementRef, viewContainerRef, selectionModel) {
|
287
|
+
super(selectionModel);
|
288
|
+
this.overlay = overlay;
|
289
|
+
this.injector = injector;
|
290
|
+
this.elementRef = elementRef;
|
291
|
+
this.viewContainerRef = viewContainerRef;
|
292
|
+
this.selectionModel = selectionModel;
|
293
|
+
this.overlayRef = null;
|
294
|
+
this.handleModelChanges();
|
295
|
+
}
|
296
|
+
close() {
|
297
|
+
this.overlayRef?.dispose();
|
298
|
+
this.overlayRef = null;
|
299
|
+
}
|
300
|
+
createInjector() {
|
301
|
+
return Injector.create({
|
302
|
+
providers: [
|
303
|
+
{ provide: WlcmFiltersSelectionModel, useValue: this.selectionModel },
|
304
|
+
{ provide: WlcmFiltersTriggerControl, useValue: { close: this.close.bind(this) } },
|
305
|
+
],
|
306
|
+
parent: this.injector,
|
307
|
+
});
|
308
|
+
}
|
309
|
+
createOverlayConfig() {
|
310
|
+
const strategy = this.overlay.position().flexibleConnectedTo(this.elementRef);
|
311
|
+
strategy.withPositions([{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]);
|
312
|
+
strategy.withDefaultOffsetY(5);
|
313
|
+
return new OverlayConfig({
|
314
|
+
width: '300px',
|
315
|
+
positionStrategy: strategy,
|
316
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
317
|
+
});
|
318
|
+
}
|
319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersTriggerDirective, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: WlcmFiltersSelectionModel }], target: i0.ɵɵFactoryTarget.Directive }); }
|
320
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersTriggerDirective, selector: "[wlcmFiltersTrigger]", inputs: { panel: ["wlcmFiltersTrigger", "panel"] }, host: { listeners: { "click": "openPanel()" } }, providers: [{ provide: WlcmFiltersSelectionModel, useClass: FiltersDefaultSelectionModel }], usesInheritance: true, ngImport: i0 }); }
|
321
|
+
}
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersTriggerDirective, decorators: [{
|
323
|
+
type: Directive,
|
324
|
+
args: [{
|
325
|
+
selector: '[wlcmFiltersTrigger]',
|
326
|
+
providers: [{ provide: WlcmFiltersSelectionModel, useClass: FiltersDefaultSelectionModel }],
|
327
|
+
}]
|
328
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: WlcmFiltersSelectionModel }], propDecorators: { panel: [{
|
329
|
+
type: Input,
|
330
|
+
args: ['wlcmFiltersTrigger']
|
331
|
+
}], openPanel: [{
|
332
|
+
type: HostListener,
|
333
|
+
args: ['click']
|
334
|
+
}] } });
|
335
|
+
|
336
|
+
class IsFiltersParamCheckedPipe {
|
337
|
+
transform(data) {
|
338
|
+
return data.has(this.checkbox.value);
|
339
|
+
}
|
340
|
+
constructor(checkbox) {
|
341
|
+
this.checkbox = checkbox;
|
342
|
+
}
|
343
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: IsFiltersParamCheckedPipe, deps: [{ token: i1$1.MatCheckbox, host: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
344
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: IsFiltersParamCheckedPipe, name: "isFiltersParamChecked" }); }
|
345
|
+
}
|
346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: IsFiltersParamCheckedPipe, decorators: [{
|
347
|
+
type: Pipe,
|
348
|
+
args: [{ name: 'isFiltersParamChecked' }]
|
349
|
+
}], ctorParameters: () => [{ type: i1$1.MatCheckbox, decorators: [{
|
350
|
+
type: Host
|
351
|
+
}] }] });
|
352
|
+
|
353
|
+
class WlcmFiltersUnitComponent {
|
354
|
+
constructor(selectionModel) {
|
355
|
+
this.selectionModel = selectionModel;
|
356
|
+
this.label = '';
|
357
|
+
this.param = '';
|
358
|
+
this.options = [];
|
359
|
+
}
|
360
|
+
ngOnInit() {
|
361
|
+
this.initializeFiltersUnit();
|
362
|
+
}
|
363
|
+
reset() {
|
364
|
+
this.filtersUnit.reset();
|
365
|
+
}
|
366
|
+
change(event) {
|
367
|
+
if (event.checked) {
|
368
|
+
this.filtersUnit.add(event.source.value);
|
369
|
+
}
|
370
|
+
else {
|
371
|
+
this.filtersUnit.remove(event.source.value);
|
372
|
+
}
|
373
|
+
}
|
374
|
+
initializeFiltersUnit() {
|
375
|
+
if (this.selectionModel.has(this.param)) {
|
376
|
+
this.filtersUnit = this.selectionModel.get(this.param);
|
377
|
+
}
|
378
|
+
else {
|
379
|
+
this.filtersUnit = this.selectionModel.createUnit(this.param);
|
380
|
+
this.selectionModel.add(this.param, this.filtersUnit, false);
|
381
|
+
}
|
382
|
+
this.dataChanges$ = this.filtersUnit.dataChanges$.pipe(map((data) => new Set(data)));
|
383
|
+
}
|
384
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersUnitComponent, deps: [{ token: WlcmFiltersSelectionModel }], target: i0.ɵɵFactoryTarget.Component }); }
|
385
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFiltersUnitComponent, selector: "wlcm-filters-unit", inputs: { label: "label", param: "param", options: "options" }, ngImport: i0, template: "<mat-expansion-panel class=\"wlcm-filters-unit\" hideToggle>\n <mat-expansion-panel-header collapsedHeight=\"30px\" expandedHeight=\"30px\">\n <div class=\"wlcm-filters-unit-header\">\n <section>\n <span class=\"wlcm-filters-unit-header__label\">{{ label }}</span>\n\n <div\n class=\"wlcm-entities-count\"\n *ngIf=\"(dataChanges$ | async)!.size as size\"\n >\n {{ size }}\n </div>\n </section>\n\n <section>\n <button\n class=\"reset-btn cursor-pointer\"\n (click)=\"reset(); $event.stopPropagation()\"\n *ngIf=\"(dataChanges$ | async)!.size > 0\"\n >\n Reset\n </button>\n\n <wlcm-chevron-down-icon\n class=\"wlcm-filters-unit__chevron\"\n ></wlcm-chevron-down-icon>\n </section>\n </div>\n </mat-expansion-panel-header>\n\n <div class=\"wlcm-filters-unit-checkboxes\">\n <ng-container *ngFor=\"let option of options\">\n <mat-checkbox\n [value]=\"$any(option.value)\"\n [checked]=\"(dataChanges$ | async)! | isFiltersParamChecked\"\n (change)=\"change($event)\"\n >\n {{ option.viewValue }}\n </mat-checkbox>\n </ng-container>\n </div>\n</mat-expansion-panel>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "component", type: i1$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.ChevronDownIconComponent, selector: "wlcm-chevron-down-icon" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: IsFiltersParamCheckedPipe, name: "isFiltersParamChecked" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
386
|
+
}
|
387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersUnitComponent, decorators: [{
|
388
|
+
type: Component,
|
389
|
+
args: [{ selector: 'wlcm-filters-unit', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-expansion-panel class=\"wlcm-filters-unit\" hideToggle>\n <mat-expansion-panel-header collapsedHeight=\"30px\" expandedHeight=\"30px\">\n <div class=\"wlcm-filters-unit-header\">\n <section>\n <span class=\"wlcm-filters-unit-header__label\">{{ label }}</span>\n\n <div\n class=\"wlcm-entities-count\"\n *ngIf=\"(dataChanges$ | async)!.size as size\"\n >\n {{ size }}\n </div>\n </section>\n\n <section>\n <button\n class=\"reset-btn cursor-pointer\"\n (click)=\"reset(); $event.stopPropagation()\"\n *ngIf=\"(dataChanges$ | async)!.size > 0\"\n >\n Reset\n </button>\n\n <wlcm-chevron-down-icon\n class=\"wlcm-filters-unit__chevron\"\n ></wlcm-chevron-down-icon>\n </section>\n </div>\n </mat-expansion-panel-header>\n\n <div class=\"wlcm-filters-unit-checkboxes\">\n <ng-container *ngFor=\"let option of options\">\n <mat-checkbox\n [value]=\"$any(option.value)\"\n [checked]=\"(dataChanges$ | async)! | isFiltersParamChecked\"\n (change)=\"change($event)\"\n >\n {{ option.viewValue }}\n </mat-checkbox>\n </ng-container>\n </div>\n</mat-expansion-panel>\n", styles: [":host{display:block}\n"] }]
|
390
|
+
}], ctorParameters: () => [{ type: WlcmFiltersSelectionModel }], propDecorators: { label: [{
|
391
|
+
type: Input
|
392
|
+
}], param: [{
|
393
|
+
type: Input
|
394
|
+
}], options: [{
|
395
|
+
type: Input
|
396
|
+
}] } });
|
397
|
+
|
398
|
+
class WlcmTotalFiltersAppliedPipe {
|
399
|
+
transform(filters) {
|
400
|
+
if (!filters)
|
401
|
+
return 0;
|
402
|
+
return Object.values(filters).reduce((total, filter) => {
|
403
|
+
return total + (filter.oneOf?.length || 0);
|
404
|
+
}, 0);
|
405
|
+
}
|
406
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTotalFiltersAppliedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
407
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmTotalFiltersAppliedPipe, isStandalone: true, name: "totalFiltersApplied" }); }
|
408
|
+
}
|
409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTotalFiltersAppliedPipe, decorators: [{
|
410
|
+
type: Pipe,
|
411
|
+
args: [{ name: 'totalFiltersApplied', standalone: true }]
|
412
|
+
}] });
|
413
|
+
|
414
|
+
class WlcmFiltersButtonComponent {
|
415
|
+
constructor() {
|
416
|
+
this.filtersChange = new EventEmitter();
|
417
|
+
}
|
418
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
419
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmFiltersButtonComponent, selector: "wlcm-filters-button", inputs: { panel: "panel", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, ngImport: i0, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters @if(filtersCount>0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n", styles: [":host{display:block}:host .wlcm-entities-count{margin-left:8px}\n"], dependencies: [{ kind: "directive", type: i2.RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }, { kind: "component", type: i4.WlcmButtonComponent, selector: "wlcm-button", inputs: ["type", "size", "isDisabled", "isLoading"], outputs: ["clicked"] }, { kind: "directive", type: WlcmFiltersTriggerDirective, selector: "[wlcmFiltersTrigger]", inputs: ["wlcmFiltersTrigger"] }, { kind: "pipe", type: WlcmTotalFiltersAppliedPipe, name: "totalFiltersApplied" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
420
|
+
}
|
421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersButtonComponent, decorators: [{
|
422
|
+
type: Component,
|
423
|
+
args: [{ selector: 'wlcm-filters-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters @if(filtersCount>0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n", styles: [":host{display:block}:host .wlcm-entities-count{margin-left:8px}\n"] }]
|
424
|
+
}], propDecorators: { panel: [{
|
425
|
+
type: Input
|
426
|
+
}], filters: [{
|
427
|
+
type: Input
|
428
|
+
}], filtersChange: [{
|
429
|
+
type: Output
|
430
|
+
}] } });
|
431
|
+
|
432
|
+
const publicComponents = [WlcmFiltersComponent, WlcmFiltersUnitComponent, WlcmFiltersButtonComponent];
|
433
|
+
const publicDirectives = [WlcmFiltersTriggerDirective, WlcmFiltersContentDirective];
|
434
|
+
class WlcmFiltersModule {
|
435
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
436
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, declarations: [WlcmFiltersComponent, WlcmFiltersUnitComponent, WlcmFiltersButtonComponent, WlcmFiltersTriggerDirective, WlcmFiltersContentDirective, WlcmFiltersPanelComponent, IsFiltersParamCheckedPipe], imports: [RxLet,
|
437
|
+
CommonModule,
|
438
|
+
MatExpansionModule,
|
439
|
+
MatCheckboxModule,
|
440
|
+
WlcmTotalFiltersAppliedPipe,
|
441
|
+
ChevronDownIconComponent,
|
442
|
+
WlcmButtonComponent,
|
443
|
+
CloseIconComponent], exports: [WlcmFiltersComponent, WlcmFiltersUnitComponent, WlcmFiltersButtonComponent, WlcmFiltersTriggerDirective, WlcmFiltersContentDirective] }); }
|
444
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule,
|
445
|
+
MatExpansionModule,
|
446
|
+
MatCheckboxModule,
|
447
|
+
ChevronDownIconComponent,
|
448
|
+
WlcmButtonComponent,
|
449
|
+
CloseIconComponent] }); }
|
450
|
+
}
|
451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersModule, decorators: [{
|
452
|
+
type: NgModule,
|
453
|
+
args: [{
|
454
|
+
imports: [
|
455
|
+
RxLet,
|
456
|
+
CommonModule,
|
457
|
+
MatExpansionModule,
|
458
|
+
MatCheckboxModule,
|
459
|
+
WlcmTotalFiltersAppliedPipe,
|
460
|
+
ChevronDownIconComponent,
|
461
|
+
WlcmButtonComponent,
|
462
|
+
CloseIconComponent,
|
463
|
+
],
|
464
|
+
declarations: [...publicComponents, ...publicDirectives, WlcmFiltersPanelComponent, IsFiltersParamCheckedPipe],
|
465
|
+
exports: [...publicComponents, ...publicDirectives],
|
466
|
+
}]
|
467
|
+
}] });
|
468
|
+
|
469
|
+
/**
|
470
|
+
* Generated bundle index. Do not edit.
|
471
|
+
*/
|
472
|
+
|
473
|
+
export { WlcmFiltersButtonComponent, WlcmFiltersComponent, WlcmFiltersContentDirective, WlcmFiltersModule, WlcmFiltersSelectionModel, WlcmFiltersTriggerControl, WlcmFiltersTriggerDirective, WlcmFiltersUnit, WlcmFiltersUnitComponent };
|
474
|
+
//# sourceMappingURL=wlcm-angular-filters.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"wlcm-angular-filters.mjs","sources":["../../../../modules/filters/src/lib/filters/directives/filters-content.directive.ts","../../../../modules/filters/src/lib/filters/models/filters.models.ts","../../../../modules/filters/src/lib/filters/utils/filters.utils.ts","../../../../modules/filters/src/lib/filters/components/filters-panel/filters-panel.component.ts","../../../../modules/filters/src/lib/filters/components/filters-panel/filters-panel.component.html","../../../../modules/filters/src/lib/filters/components/filters/filters.component.ts","../../../../modules/filters/src/lib/filters/components/filters/filters.component.html","../../../../modules/filters/src/lib/filters/models/filters-default-selection-model.ts","../../../../modules/filters/src/lib/filters/models/filters-trigger.base.ts","../../../../modules/filters/src/lib/filters/directives/filters-trigger.directive.ts","../../../../modules/filters/src/lib/filters/pipes/is-filters-param-checked.pipe.ts","../../../../modules/filters/src/lib/filters/components/filters-unit/filters-unit.component.ts","../../../../modules/filters/src/lib/filters/components/filters-unit/filters-unit.component.html","../../../../modules/filters/src/lib/filters/pipes/total-filters-applied.pipe.ts","../../../../modules/filters/src/lib/filters/components/filters-button/filters-button.component.ts","../../../../modules/filters/src/lib/filters/components/filters-button/filters-button.component.html","../../../../modules/filters/src/lib/filters/filters.module.ts","../../../../modules/filters/src/wlcm-angular-filters.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[wlcmFiltersContent]' })\nexport class WlcmFiltersContentDirective {}\n","import { QueryFilters } from '@wlcm/angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class WlcmFiltersUnit {\n param: string = '';\n\n data: string[] = [];\n\n parent: WlcmFiltersSelectionModel;\n\n private readonly _dataChanges$: BehaviorSubject<string[]> = new BehaviorSubject([...this.data]);\n\n readonly dataChanges$: Observable<string[]> = this._dataChanges$.asObservable();\n\n constructor(param: string, parent: WlcmFiltersSelectionModel) {\n this.param = param;\n this.parent = parent;\n }\n\n add(value: string): void {\n this.data = [...this.data, value];\n\n this.notifyChanges();\n }\n\n setAll(value: string[], onlySelf: boolean = false): void {\n this.data = [...value];\n\n this.notifyChanges(onlySelf);\n }\n\n remove(value: string): void {\n this.data = this.data.filter((_value: string) => _value !== value);\n\n this.notifyChanges();\n }\n\n reset(onlySelf: boolean = false): void {\n this.data = [];\n\n this.notifyChanges(onlySelf);\n }\n\n clone(parent: WlcmFiltersSelectionModel): WlcmFiltersUnit {\n const unit: WlcmFiltersUnit = new WlcmFiltersUnit(this.param, parent);\n\n unit.data = [...this.data];\n\n unit.notifyChanges(true);\n\n return unit;\n }\n\n private notifyChanges(onlySelf: boolean = false): void {\n this._dataChanges$.next([...this.data]);\n\n if (!onlySelf) {\n this.parent.syncUnitChanges();\n }\n }\n}\n\nexport interface WlcmFiltersModel {\n [key: string]: WlcmFiltersUnit;\n}\n\nexport abstract class WlcmFiltersSelectionModel {\n abstract model: WlcmFiltersModel;\n\n abstract readonly modelChanges$: Observable<WlcmFiltersModel>;\n\n abstract add(param: string, unit: WlcmFiltersUnit, wlcmtChanges?: boolean): void;\n\n abstract has(param: string): boolean;\n\n abstract get(param: string): WlcmFiltersUnit;\n\n abstract createUnit(param: string): WlcmFiltersUnit;\n\n abstract updateSelection(model: WlcmFiltersModel): void;\n\n abstract syncUnitChanges(): void;\n\n abstract clone(): WlcmFiltersSelectionModel;\n\n abstract reset(): void;\n\n abstract get isEmpty(): boolean;\n}\n\nexport abstract class WlcmFiltersTriggerControl {\n abstract close(): void;\n}\n\nexport type CountResultsFn = (filters: QueryFilters) => Observable<number>;\n\nexport interface WlcmFiltersPanelControl {\n readonly loading$: Observable<boolean>;\n\n readonly totalResults$: Observable<number | null>;\n\n apply(): void;\n\n reset(): void;\n}\n","import { QueryFilter, QueryFilters } from '@wlcm/angular/core';\nimport { WlcmFiltersModel } from '../models/filters.models';\n\nexport class WlcmFiltersUtils {\n static modelToQueryFilters(model: WlcmFiltersModel): QueryFilters {\n const filters: QueryFilters = {};\n\n Object.keys(model).forEach((key: string) => {\n const data: string[] = model[key].data;\n\n if (data.length > 0) {\n filters[key] = { oneOf: data } as QueryFilter;\n }\n });\n\n return filters;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Injector,\n Input,\n OnInit,\n SkipSelf,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n CountResultsFn,\n WlcmFiltersModel,\n WlcmFiltersTriggerControl,\n WlcmFiltersSelectionModel,\n} from '../../models/filters.models';\nimport { BehaviorSubject, Subject, auditTime, filter, switchMap } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmFiltersUtils } from '../../utils/filters.utils';\nimport { QueryFilters, WlcmStreamUtils } from '@wlcm/angular/core';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-filters-panel',\n templateUrl: './filters-panel.component.html',\n styleUrls: ['./filters-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: WlcmFiltersSelectionModel,\n useFactory: () => inject(WlcmFiltersSelectionModel, { skipSelf: true }).clone(),\n },\n ],\n})\nexport class WlcmFiltersPanelComponent implements OnInit {\n @Input() countResults?: CountResultsFn;\n\n @Input() filtersContent!: TemplateRef<void>;\n\n readonly loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n readonly totalResults$: BehaviorSubject<number | null> = new BehaviorSubject<number | null>(null);\n\n private _selectionModel: WlcmFiltersSelectionModel = inject(WlcmFiltersSelectionModel);\n\n private _countResults$: Subject<WlcmFiltersModel> = new Subject();\n\n constructor(\n protected injector: Injector,\n private panelControl: WlcmFiltersTriggerControl,\n @SkipSelf() private globalSelectionModel: WlcmFiltersSelectionModel\n ) {\n this.handleCountResultsEvent();\n this.handleSelectionChanges();\n }\n\n ngOnInit(): void {\n this._countResults$.next(this._selectionModel.model);\n }\n\n apply(): void {\n this.updateGlobalModel();\n\n this.panelControl.close();\n }\n\n reset(): void {\n this._selectionModel.reset();\n }\n\n close(): void {\n this.panelControl.close();\n }\n\n private updateGlobalModel(): void {\n this.globalSelectionModel.updateSelection(this._selectionModel.model);\n }\n\n private handleSelectionChanges(): void {\n this._selectionModel.modelChanges$\n .pipe(untilDestroyed(this))\n .subscribe((model: WlcmFiltersModel) => this._countResults$.next(model));\n }\n\n private handleCountResultsEvent(): void {\n this._countResults$\n .pipe(filter(() => this.countResults instanceof Function))\n .pipe(\n switchMap((model: WlcmFiltersModel) => {\n const filters: QueryFilters = WlcmFiltersUtils.modelToQueryFilters(model);\n\n return (this.countResults as CountResultsFn)(filters).pipe(\n auditTime(300),\n WlcmStreamUtils.loadingDetector(this.loading$)\n );\n })\n )\n .subscribe((totalResults: number) => this.totalResults$.next(totalResults));\n }\n}\n","<div class=\"wlcm-filters-panel\">\n <div class=\"wlcm-filters-panel-header\">\n <h4 class=\"filters-panel__title\">Filters</h4>\n\n <wlcm-close-icon\n (click)=\"close()\"\n class=\"wlcm-cursor-pointer\"\n ></wlcm-close-icon>\n </div>\n\n <div class=\"wlcm-filters-panel-units\">\n <ng-container\n *ngTemplateOutlet=\"filtersContent; injector: injector\"\n ></ng-container>\n </div>\n\n <div class=\"wlcm-filters-panel-actions\">\n <wlcm-button type=\"borderless\" (clicked)=\"reset()\">Reset All</wlcm-button>\n\n <wlcm-button\n (clicked)=\"apply()\"\n *rxLet=\"loading$ | async as isLoading\"\n [isLoading]=\"isLoading\"\n >\n Show\n\n <ng-container *rxLet=\"totalResults$ | async as totalResults\">\n <ng-container *ngIf=\"totalResults !== null && !isLoading\">\n ({{ totalResults }})\n </ng-container>\n </ng-container>\n </wlcm-button>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, Type, ViewChild } from '@angular/core';\nimport { WlcmFiltersContentDirective } from '../../directives/filters-content.directive';\nimport { CountResultsFn } from '../../models/filters.models';\n\n@Component({\n selector: 'wlcm-filters',\n templateUrl: './filters.component.html',\n styleUrls: ['./filters.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'wlcmFilters',\n})\nexport class WlcmFiltersComponent {\n @Input() countResults?: CountResultsFn;\n\n @ViewChild('filtersPanelTemplate') public templateRef!: TemplateRef<void>;\n\n @ContentChild(WlcmFiltersContentDirective, { read: TemplateRef }) protected filtersContent!: TemplateRef<void>;\n}\n","<ng-template #filtersPanelTemplate>\n <wlcm-filters-panel\n [countResults]=\"countResults\"\n [filtersContent]=\"filtersContent\"\n >\n </wlcm-filters-panel>\n</ng-template>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';\n\nexport class FiltersDefaultSelectionModel extends WlcmFiltersSelectionModel {\n model: WlcmFiltersModel = {};\n\n private readonly _modelChanges$: BehaviorSubject<WlcmFiltersModel> = new BehaviorSubject({ ...this.model });\n\n readonly modelChanges$: Observable<WlcmFiltersModel> = this._modelChanges$.asObservable();\n\n add(param: string, unit: WlcmFiltersUnit, wlcmtChanges: boolean = true): void {\n this.model[param] = unit;\n\n if (wlcmtChanges) {\n this.notifyChanges();\n }\n }\n\n has(param: string): boolean {\n return this.model[param] instanceof WlcmFiltersUnit;\n }\n\n get(param: string): WlcmFiltersUnit {\n return this.model[param];\n }\n\n createUnit(param: string): WlcmFiltersUnit {\n return new WlcmFiltersUnit(param, this);\n }\n\n updateSelection(model: WlcmFiltersModel): void {\n this.model = this.cloneModel(model, this);\n\n this.notifyChanges();\n }\n\n syncUnitChanges(): void {\n this.notifyChanges();\n }\n\n clone(): WlcmFiltersSelectionModel {\n const clone: WlcmFiltersSelectionModel = new FiltersDefaultSelectionModel();\n\n clone.updateSelection({ ...this.model });\n\n return clone;\n }\n\n reset(): void {\n Object.values(this.model).forEach((unit: WlcmFiltersUnit) => unit.reset(true));\n\n this.notifyChanges();\n }\n\n get isEmpty(): boolean {\n return (\n Object.keys(this.model).length == 0 ||\n Object.values(this.model).every((unit: WlcmFiltersUnit) => unit.data.length === 0)\n );\n }\n\n private cloneModel(model: WlcmFiltersModel, parent: WlcmFiltersSelectionModel): WlcmFiltersModel {\n const _model: WlcmFiltersModel = {};\n\n Object.keys(model).forEach((param: string) => {\n _model[param] = model[param].clone(parent);\n });\n\n return _model;\n }\n\n private notifyChanges(): void {\n this._modelChanges$.next({ ...this.model });\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmFiltersUtils } from '../utils/filters.utils';\nimport { QueryFilters } from '@wlcm/angular/core';\nimport { skip } from 'rxjs';\n\n@UntilDestroy()\n@Directive()\nexport class FiltersTriggerBase {\n @Input('wlcmFiltersTriggerData') set filters(value: QueryFilters | undefined) {\n this._filters = value;\n\n this.updateSelectionModel();\n }\n\n @Output('wlcmFiltersTriggerDataChanges') filtersChanges: EventEmitter<QueryFilters> = new EventEmitter();\n\n private _filters: QueryFilters | undefined;\n\n constructor(protected selectionModel: WlcmFiltersSelectionModel) {}\n\n protected updateSelectionModel(): void {\n if (!this._filters || Object.values(this._filters).length === 0) {\n if (!this.selectionModel.isEmpty) {\n this.selectionModel.reset();\n }\n } else {\n const filters: QueryFilters = this._filters;\n\n Object.keys(filters).forEach((param: string) => {\n const unit: WlcmFiltersUnit = this.selectionModel.createUnit(param);\n\n unit.setAll(filters[param].oneOf as string[], true);\n\n this.selectionModel.add(param, unit, false);\n });\n }\n }\n\n protected handleModelChanges(): void {\n this.selectionModel.modelChanges$.pipe(untilDestroyed(this), skip(1)).subscribe((model: WlcmFiltersModel) => {\n const filters: QueryFilters = WlcmFiltersUtils.modelToQueryFilters(model);\n\n this.filtersChanges.next(filters);\n });\n }\n}\n","import { Directive, ElementRef, HostListener, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { FiltersDefaultSelectionModel } from '../models/filters-default-selection-model';\nimport { WlcmFiltersSelectionModel, WlcmFiltersTriggerControl } from '../models/filters.models';\nimport { WlcmFiltersComponent } from '../components/filters/filters.component';\nimport { FiltersTriggerBase } from '../models/filters-trigger.base';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[wlcmFiltersTrigger]',\n providers: [{ provide: WlcmFiltersSelectionModel, useClass: FiltersDefaultSelectionModel }],\n})\nexport class WlcmFiltersTriggerDirective extends FiltersTriggerBase {\n @Input('wlcmFiltersTrigger') panel!: WlcmFiltersComponent;\n\n @HostListener('click') openPanel(): void {\n if (this.overlayRef instanceof OverlayRef) return;\n\n const config: OverlayConfig = this.createOverlayConfig();\n\n const injector: Injector = this.createInjector();\n\n this.overlayRef = this.overlay.create(config);\n\n this.overlayRef.attach(new TemplatePortal(this.panel.templateRef, this.viewContainerRef, null, injector));\n }\n\n private overlayRef: OverlayRef | null = null;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n protected override selectionModel: WlcmFiltersSelectionModel\n ) {\n super(selectionModel);\n\n this.handleModelChanges();\n }\n\n close(): void {\n this.overlayRef?.dispose();\n\n this.overlayRef = null;\n }\n\n private createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: WlcmFiltersSelectionModel, useValue: this.selectionModel },\n { provide: WlcmFiltersTriggerControl, useValue: { close: this.close.bind(this) } },\n ],\n parent: this.injector,\n });\n }\n\n private createOverlayConfig(): OverlayConfig {\n const strategy: FlexibleConnectedPositionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef);\n\n strategy.withPositions([{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]);\n\n strategy.withDefaultOffsetY(5);\n\n return new OverlayConfig({\n width: '300px',\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n }\n}\n","import { Host, Pipe, PipeTransform } from '@angular/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\n\n@Pipe({ name: 'isFiltersParamChecked' })\nexport class IsFiltersParamCheckedPipe implements PipeTransform {\n transform(data: Set<string>): boolean {\n return data.has(this.checkbox.value);\n }\n\n constructor(@Host() private checkbox: MatCheckbox) {}\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { WlcmFiltersSelectionModel, WlcmFiltersUnit } from '../../models/filters.models';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { WlcmOption } from '@wlcm/angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Component({\n selector: 'wlcm-filters-unit',\n templateUrl: './filters-unit.component.html',\n styleUrls: ['./filters-unit.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmFiltersUnitComponent implements OnInit {\n @Input() label: string = '';\n\n @Input() param: string = '';\n\n @Input() options: WlcmOption[] = [];\n\n protected filtersUnit!: WlcmFiltersUnit;\n\n protected dataChanges$!: Observable<Set<string>>;\n\n constructor(private selectionModel: WlcmFiltersSelectionModel) {}\n\n ngOnInit(): void {\n this.initializeFiltersUnit();\n }\n\n reset(): void {\n this.filtersUnit.reset();\n }\n\n change(event: MatCheckboxChange): void {\n if (event.checked) {\n this.filtersUnit.add(event.source.value);\n } else {\n this.filtersUnit.remove(event.source.value);\n }\n }\n\n private initializeFiltersUnit(): void {\n if (this.selectionModel.has(this.param)) {\n this.filtersUnit = this.selectionModel.get(this.param);\n } else {\n this.filtersUnit = this.selectionModel.createUnit(this.param);\n\n this.selectionModel.add(this.param, this.filtersUnit, false);\n }\n\n this.dataChanges$ = this.filtersUnit.dataChanges$.pipe(map((data: string[]) => new Set(data)));\n }\n}\n","<mat-expansion-panel class=\"wlcm-filters-unit\" hideToggle>\n <mat-expansion-panel-header collapsedHeight=\"30px\" expandedHeight=\"30px\">\n <div class=\"wlcm-filters-unit-header\">\n <section>\n <span class=\"wlcm-filters-unit-header__label\">{{ label }}</span>\n\n <div\n class=\"wlcm-entities-count\"\n *ngIf=\"(dataChanges$ | async)!.size as size\"\n >\n {{ size }}\n </div>\n </section>\n\n <section>\n <button\n class=\"reset-btn cursor-pointer\"\n (click)=\"reset(); $event.stopPropagation()\"\n *ngIf=\"(dataChanges$ | async)!.size > 0\"\n >\n Reset\n </button>\n\n <wlcm-chevron-down-icon\n class=\"wlcm-filters-unit__chevron\"\n ></wlcm-chevron-down-icon>\n </section>\n </div>\n </mat-expansion-panel-header>\n\n <div class=\"wlcm-filters-unit-checkboxes\">\n <ng-container *ngFor=\"let option of options\">\n <mat-checkbox\n [value]=\"$any(option.value)\"\n [checked]=\"(dataChanges$ | async)! | isFiltersParamChecked\"\n (change)=\"change($event)\"\n >\n {{ option.viewValue }}\n </mat-checkbox>\n </ng-container>\n </div>\n</mat-expansion-panel>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { QueryFilter, QueryFilters } from '@wlcm/angular/core';\n\n@Pipe({ name: 'totalFiltersApplied', standalone: true })\nexport class WlcmTotalFiltersAppliedPipe implements PipeTransform {\n transform(filters: QueryFilters | undefined): number {\n if (!filters) return 0;\n\n return Object.values(filters).reduce((total: number, filter: QueryFilter) => {\n return total + (filter.oneOf?.length || 0);\n }, 0);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { WlcmFiltersComponent } from '../filters/filters.component';\nimport { QueryFilters } from '@wlcm/angular/core';\n\n@Component({\n selector: 'wlcm-filters-button',\n templateUrl: './filters-button.component.html',\n styleUrls: ['./filters-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmFiltersButtonComponent {\n @Input() panel!: WlcmFiltersComponent;\n\n @Input() filters!: QueryFilters;\n\n @Output() filtersChange: EventEmitter<QueryFilters> = new EventEmitter();\n}\n","<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters @if(filtersCount>0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFiltersComponent } from './components/filters/filters.component';\nimport { WlcmFiltersTriggerDirective } from './directives/filters-trigger.directive';\nimport { WlcmFiltersUnitComponent } from './components/filters-unit/filters-unit.component';\nimport { WlcmFiltersPanelComponent } from './components/filters-panel/filters-panel.component';\nimport { WlcmFiltersContentDirective } from './directives/filters-content.directive';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { IsFiltersParamCheckedPipe } from './pipes/is-filters-param-checked.pipe';\nimport { WlcmTotalFiltersAppliedPipe } from './pipes/total-filters-applied.pipe';\nimport { ChevronDownIconComponent, CloseIconComponent } from '@wlcm/angular/core';\nimport { WlcmButtonComponent } from '@wlcm/angular/button';\nimport { WlcmFiltersButtonComponent } from './components/filters-button/filters-button.component';\nimport { RxLet } from '@rx-angular/template/let';\n\nconst publicComponents: Type<unknown>[] = [WlcmFiltersComponent, WlcmFiltersUnitComponent, WlcmFiltersButtonComponent];\n\nconst publicDirectives: Type<unknown>[] = [WlcmFiltersTriggerDirective, WlcmFiltersContentDirective];\n\n@NgModule({\n imports: [\n RxLet,\n CommonModule,\n MatExpansionModule,\n MatCheckboxModule,\n WlcmTotalFiltersAppliedPipe,\n ChevronDownIconComponent,\n WlcmButtonComponent,\n CloseIconComponent,\n ],\n declarations: [...publicComponents, ...publicDirectives, WlcmFiltersPanelComponent, IsFiltersParamCheckedPipe],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmFiltersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WlcmFiltersTriggerControl","i1.WlcmFiltersSelectionModel","i1.WlcmFiltersPanelComponent","i2.WlcmFiltersSelectionModel","i1","i2","i3","i4","i6.IsFiltersParamCheckedPipe","i3.WlcmFiltersTriggerDirective","i4.WlcmTotalFiltersAppliedPipe"],"mappings":"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"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
export * from './lib/filters/filters.module';
|
2
|
+
export * from './lib/filters/models/filters.models';
|
3
|
+
export * from './lib/filters/directives/filters-content.directive';
|
4
|
+
export * from './lib/filters/components/filters/filters.component';
|
5
|
+
export * from './lib/filters/directives/filters-trigger.directive';
|
6
|
+
export * from './lib/filters/components/filters-unit/filters-unit.component';
|
7
|
+
export * from './lib/filters/components/filters-button/filters-button.component';
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
2
|
+
import { CountResultsFn } from '../../models/filters.models';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class WlcmFiltersComponent {
|
5
|
+
countResults?: CountResultsFn;
|
6
|
+
templateRef: TemplateRef<void>;
|
7
|
+
protected filtersContent: TemplateRef<void>;
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersComponent, never>;
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmFiltersComponent, "wlcm-filters", ["wlcmFilters"], { "countResults": { "alias": "countResults"; "required": false; }; }, {}, ["filtersContent"], never, false, never>;
|
10
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import { WlcmFiltersComponent } from '../filters/filters.component';
|
3
|
+
import { QueryFilters } from '@wlcm/angular/core';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export declare class WlcmFiltersButtonComponent {
|
6
|
+
panel: WlcmFiltersComponent;
|
7
|
+
filters: QueryFilters;
|
8
|
+
filtersChange: EventEmitter<QueryFilters>;
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersButtonComponent, never>;
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmFiltersButtonComponent, "wlcm-filters-button", never, { "panel": { "alias": "panel"; "required": false; }; "filters": { "alias": "filters"; "required": false; }; }, { "filtersChange": "filtersChange"; }, never, never, false, never>;
|
11
|
+
}
|