@wlcm/angular 19.2.6 → 22.0.1
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 +37 -0
- package/button/fesm2022/wlcm-angular-button.mjs +25 -31
- package/button/fesm2022/wlcm-angular-button.mjs.map +1 -1
- package/button/package.json +25 -0
- package/button/types/wlcm-angular-button.d.ts +28 -0
- package/core/fesm2022/wlcm-angular-core.mjs +76 -92
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
- package/core/package.json +26 -0
- package/core/types/wlcm-angular-core.d.ts +102 -0
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +329 -500
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
- package/datepicker/package.json +33 -0
- package/datepicker/types/wlcm-angular-datepicker.d.ts +285 -0
- package/filters/fesm2022/wlcm-angular-filters.mjs +32 -38
- package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -1
- package/filters/package.json +25 -0
- package/filters/types/wlcm-angular-filters.d.ts +81 -0
- package/forms/fesm2022/wlcm-angular-forms.mjs +375 -401
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
- package/forms/package.json +31 -0
- package/forms/types/wlcm-angular-forms.d.ts +365 -0
- package/package.json +27 -46
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +67 -85
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs.map +1 -1
- package/phone-input/package.json +32 -0
- package/phone-input/types/wlcm-angular-phone-input.d.ts +81 -0
- package/search-field/fesm2022/wlcm-angular-search-field.mjs +25 -30
- package/search-field/fesm2022/wlcm-angular-search-field.mjs.map +1 -1
- package/search-field/package.json +28 -0
- package/search-field/types/wlcm-angular-search-field.d.ts +24 -0
- package/stepper/fesm2022/wlcm-angular-stepper.mjs +171 -294
- package/stepper/fesm2022/wlcm-angular-stepper.mjs.map +1 -1
- package/stepper/package.json +24 -0
- package/stepper/types/wlcm-angular-stepper.d.ts +114 -0
- package/styles/components/button/index.scss +25 -82
- package/styles/components/calendar/_calendar-header.scss +3 -6
- package/styles/components/calendar/_calendar.scss +10 -13
- package/styles/components/common/index.scss +4 -7
- package/styles/components/datepicker/_datepicker-input-container.scss +0 -3
- package/styles/components/datepicker/_datepicker-panel.scss +2 -5
- package/styles/components/datepicker/_datepicker-trigger.scss +0 -3
- package/styles/components/datepicker/date-range-picker/_date-range-picker-body.scss +0 -3
- package/styles/components/datepicker/date-range-picker/_date-range-picker-input.scss +4 -7
- package/styles/components/datepicker/date-range-picker/_date-range-picker-panel.scss +2 -5
- package/styles/components/forms/_autocomplete.scss +0 -3
- package/styles/components/forms/_checkbox-group.scss +0 -3
- package/styles/components/forms/_checkbox.scss +6 -8
- package/styles/components/forms/_error.scss +2 -13
- package/styles/components/forms/_form-field.scss +9 -10
- package/styles/components/forms/_label.scss +2 -11
- package/styles/components/forms/_radio.scss +13 -12
- package/styles/components/forms/_select.scss +5 -8
- package/styles/components/forms/partials/_dropdown-panel.scss +4 -6
- package/styles/components/loader/_loader.scss +5 -9
- package/styles/components/phone-input/_country-code-select.scss +0 -5
- package/styles/components/phone-input/_phone-input-container.scss +1 -6
- package/styles/components/search-field/index.scss +0 -4
- package/styles/components/stepper/_step-header.scss +8 -11
- package/styles/components/stepper/_step.scss +0 -5
- package/styles/components/stepper/_stepper-header.scss +0 -5
- package/styles/components/stepper/_stepper.scss +0 -4
- package/styles/components/table/_table-head-data.scss +6 -9
- package/styles/components/table/_table-head.scss +0 -5
- package/styles/components/table/_table-row-data.scss +2 -7
- package/styles/components/table/_table-row.scss +0 -5
- package/styles/components/table/_table.scss +0 -5
- package/styles/core/_all-theme.scss +8 -3
- package/styles/core/_tokens.scss +41 -0
- package/styles/core/_utils.scss +11 -44
- package/styles/wlcm.scss +1 -3
- package/table/fesm2022/wlcm-angular-table.mjs +130 -160
- package/table/fesm2022/wlcm-angular-table.mjs.map +1 -1
- package/table/package.json +27 -0
- package/table/types/wlcm-angular-table.d.ts +115 -0
- package/button/index.d.ts +0 -2
- package/button/lib/button.module.d.ts +0 -7
- package/button/lib/components/button/button.component.d.ts +0 -19
- package/button/lib/models/button.models.d.ts +0 -4
- package/core/index.d.ts +0 -11
- package/core/lib/components/default-loader/default-loader.component.d.ts +0 -5
- package/core/lib/components/icons/calendar-icon/calendar-icon.component.d.ts +0 -5
- package/core/lib/components/icons/chevron-down-icon/chevron-down-icon.component.d.ts +0 -5
- package/core/lib/components/icons/close-icon/close-icon.component.d.ts +0 -5
- package/core/lib/components/icons/search-icon/search-icon.component.d.ts +0 -5
- package/core/lib/components/loader/loader.component.d.ts +0 -11
- package/core/lib/constants/_index.d.ts +0 -2
- package/core/lib/constants/http.constants.d.ts +0 -2
- package/core/lib/constants/icon.contants.d.ts +0 -4
- package/core/lib/constants/loader.constants.d.ts +0 -2
- package/core/lib/directives/_index.d.ts +0 -1
- package/core/lib/directives/icon.directive.d.ts +0 -15
- package/core/lib/models/_index.d.ts +0 -2
- package/core/lib/models/icon.models.d.ts +0 -9
- package/core/lib/models/option.models.d.ts +0 -14
- package/core/lib/services/scroll-detection.api.d.ts +0 -10
- package/core/lib/utils/paginated-data-emulator.utils.d.ts +0 -9
- package/core/lib/utils/stream.utils.d.ts +0 -6
- package/datepicker/index.d.ts +0 -18
- package/datepicker/lib/components/calendar-header/calendar-header.component.d.ts +0 -24
- package/datepicker/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.d.ts +0 -24
- package/datepicker/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.d.ts +0 -8
- package/datepicker/lib/components/range/date-range-picker-input/date-range-picker-input.component.d.ts +0 -36
- package/datepicker/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.d.ts +0 -37
- package/datepicker/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.d.ts +0 -27
- package/datepicker/lib/components/single/datepicker-input-container/datepicker-input-container.component.d.ts +0 -30
- package/datepicker/lib/components/single/datepicker-panel/datepicker-panel.component.d.ts +0 -17
- package/datepicker/lib/constants/datepicker.constants.d.ts +0 -7
- package/datepicker/lib/constants/range/date-range-picker.constants.d.ts +0 -5
- package/datepicker/lib/constants/range/date-range-selection-model.constants.d.ts +0 -4
- package/datepicker/lib/constants/range/date-range-trigger-selection-model.constants.d.ts +0 -4
- package/datepicker/lib/datepicker.module.d.ts +0 -12
- package/datepicker/lib/directives/calendar.directive.d.ts +0 -5
- package/datepicker/lib/directives/datepicker-input.base.d.ts +0 -33
- package/datepicker/lib/directives/datepicker-trigger.base.d.ts +0 -33
- package/datepicker/lib/directives/ragne/date-range-picker-input-end.directive.d.ts +0 -20
- package/datepicker/lib/directives/ragne/date-range-picker-input-start.directive.d.ts +0 -20
- package/datepicker/lib/directives/ragne/date-range-picker-input.base.d.ts +0 -23
- package/datepicker/lib/directives/ragne/left-calendar.directive.d.ts +0 -17
- package/datepicker/lib/directives/ragne/right-calendar.directive.d.ts +0 -20
- package/datepicker/lib/directives/single/datepicker-input.directive.d.ts +0 -21
- package/datepicker/lib/models/date-picker.models.d.ts +0 -18
- package/datepicker/lib/models/range/data-range-calendar.models.d.ts +0 -25
- package/datepicker/lib/models/range/date-range-picker.models.d.ts +0 -19
- package/datepicker/lib/models/range/date-range-validation.models.d.ts +0 -3
- package/datepicker/lib/utils/range/date-range-input.validators.d.ts +0 -2
- package/datepicker/lib/utils/range/date-range-picker-errors.d.ts +0 -4
- package/filters/index.d.ts +0 -5
- package/filters/lib/components/filters-group/filters-group.component.d.ts +0 -6
- package/filters/lib/constants/filter.constants.d.ts +0 -3
- package/filters/lib/constants/index.d.ts +0 -1
- package/filters/lib/directives/filter.directive.d.ts +0 -5
- package/filters/lib/directives/index.d.ts +0 -1
- package/filters/lib/filters.module.d.ts +0 -9
- package/filters/lib/models/array-filter.models.d.ts +0 -19
- package/filters/lib/models/filter.models.d.ts +0 -19
- package/filters/lib/models/filters-group.models.d.ts +0 -22
- package/filters/lib/models/index.d.ts +0 -3
- package/forms/index.d.ts +0 -12
- package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +0 -76
- package/forms/lib/forms/components/checkbox/checkbox.component.d.ts +0 -28
- package/forms/lib/forms/components/checkbox-group/checkbox-group.component.d.ts +0 -25
- package/forms/lib/forms/components/error/error.component.d.ts +0 -5
- package/forms/lib/forms/components/form-field/form-field.component.d.ts +0 -34
- package/forms/lib/forms/components/index.d.ts +0 -8
- package/forms/lib/forms/components/label/label.component.d.ts +0 -7
- package/forms/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.d.ts +0 -10
- package/forms/lib/forms/components/partials/index.d.ts +0 -1
- package/forms/lib/forms/components/select/select.component.d.ts +0 -90
- package/forms/lib/forms/constants/form-elements.constants.d.ts +0 -6
- package/forms/lib/forms/constants/form-errors.constants.d.ts +0 -4
- package/forms/lib/forms/constants/form-field.constants.d.ts +0 -1
- package/forms/lib/forms/constants/form-state-handlers.constants.d.ts +0 -6
- package/forms/lib/forms/constants/index.d.ts +0 -5
- package/forms/lib/forms/constants/select.constants.d.ts +0 -3
- package/forms/lib/forms/directives/autocomplete.directive.d.ts +0 -16
- package/forms/lib/forms/directives/form-field-custom-container.directive.d.ts +0 -8
- package/forms/lib/forms/directives/form-field-hint.directive.d.ts +0 -5
- package/forms/lib/forms/directives/form-field-prefix.directive.d.ts +0 -6
- package/forms/lib/forms/directives/form-field-suffix.directive.d.ts +0 -5
- package/forms/lib/forms/directives/input.directive.d.ts +0 -14
- package/forms/lib/forms/directives/select-input-binder.directive.d.ts +0 -5
- package/forms/lib/forms/forms.module.d.ts +0 -19
- package/forms/lib/forms/models/_index.d.ts +0 -5
- package/forms/lib/forms/models/autocomplete.models.d.ts +0 -9
- package/forms/lib/forms/models/form-errors.models.d.ts +0 -5
- package/forms/lib/forms/models/form.models.d.ts +0 -11
- package/forms/lib/forms/models/input.models.d.ts +0 -13
- package/forms/lib/forms/models/select.models.d.ts +0 -9
- package/forms/lib/forms/pipes/errors-mapper.pipe.d.ts +0 -17
- package/forms/lib/forms/services/form-state-handler.service.d.ts +0 -10
- package/forms/lib/forms/services/index.d.ts +0 -2
- package/forms/lib/forms/services/places.api.d.ts +0 -11
- package/phone-input/index.d.ts +0 -4
- package/phone-input/lib/components/country-code-select/country-code-select.component.d.ts +0 -15
- package/phone-input/lib/components/phone-input-container/phone-input-container.component.d.ts +0 -30
- package/phone-input/lib/constants/country-code-options.constants.d.ts +0 -3
- package/phone-input/lib/constants/phone-adapter.constants.d.ts +0 -3
- package/phone-input/lib/directives/phone-input.directive.d.ts +0 -36
- package/phone-input/lib/models/country-code.models.d.ts +0 -7
- package/phone-input/lib/models/phone-adapter.models.d.ts +0 -10
- package/phone-input/lib/models/phone.models.d.ts +0 -3
- package/phone-input/lib/phone-input.module.d.ts +0 -9
- package/phone-input/lib/pipes/phone-code.pipe.d.ts +0 -8
- package/search-field/index.d.ts +0 -2
- package/search-field/lib/components/search-field/search-field.component.d.ts +0 -16
- package/search-field/lib/search-field.module.d.ts +0 -8
- package/stepper/index.d.ts +0 -10
- package/stepper/lib/components/step/step.component.d.ts +0 -16
- package/stepper/lib/components/step-header/step-header.component.d.ts +0 -20
- package/stepper/lib/components/stepper/stepper.component.d.ts +0 -6
- package/stepper/lib/components/stepper-header/stepper-header.component.d.ts +0 -8
- package/stepper/lib/constants/step.constants.d.ts +0 -4
- package/stepper/lib/constants/stepper.stepper.d.ts +0 -3
- package/stepper/lib/directives/load-on-active-step.directive.d.ts +0 -13
- package/stepper/lib/models/step.models.d.ts +0 -43
- package/stepper/lib/models/stepper.models.d.ts +0 -44
- package/stepper/lib/stepper.module.d.ts +0 -12
- package/styles/core/_core.scss +0 -10
- package/table/index.d.ts +0 -9
- package/table/lib/components/table/table.component.d.ts +0 -24
- package/table/lib/components/table-head/table-head.component.d.ts +0 -8
- package/table/lib/components/table-head-actions/table-head-actions.component.d.ts +0 -12
- package/table/lib/components/table-head-data/table-head-data.component.d.ts +0 -5
- package/table/lib/components/table-row/table-row.component.d.ts +0 -23
- package/table/lib/components/table-row-actions/table-row-actions.component.d.ts +0 -5
- package/table/lib/components/table-row-data/table-row-data.component.d.ts +0 -5
- package/table/lib/components/table-row-spacer/table-row-spacer.component.d.ts +0 -5
- package/table/lib/constants/table-row.constants.d.ts +0 -3
- package/table/lib/constants/table.constants.d.ts +0 -3
- package/table/lib/directives/scrollable-table-container.directive.d.ts +0 -13
- package/table/lib/models/table-config-manager.models.d.ts +0 -12
- package/table/lib/models/table-row.models.d.ts +0 -10
- package/table/lib/models/table-selection-model.d.ts +0 -25
- package/table/lib/models/table.models.d.ts +0 -4
- package/table/lib/pipes/table-row-injector.pipe.d.ts +0 -9
- package/table/lib/table.module.d.ts +0 -13
- package/table/lib/utils/table-errors.utils.d.ts +0 -3
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wlcm/angular/datepicker",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^22.0.0",
|
|
6
|
+
"@angular/core": "^22.0.0",
|
|
7
|
+
"@angular/material": "^22.0.0",
|
|
8
|
+
"@wlcm/angular/core": "0.0.1",
|
|
9
|
+
"date-fns": "^4.1.0",
|
|
10
|
+
"@wlcm/angular/button": "0.0.1",
|
|
11
|
+
"@wlcm/angular/forms": "0.0.1",
|
|
12
|
+
"rxjs": "~7.8.1",
|
|
13
|
+
"@angular/forms": "^22.0.0",
|
|
14
|
+
"@angular/cdk": "^22.0.0",
|
|
15
|
+
"@angular/material-date-fns-adapter": "^22.0.0"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"tslib": "^2.3.0"
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"module": "fesm2022/wlcm-angular-datepicker.mjs",
|
|
22
|
+
"typings": "types/wlcm-angular-datepicker.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
"./package.json": {
|
|
25
|
+
"default": "./package.json"
|
|
26
|
+
},
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./types/wlcm-angular-datepicker.d.ts",
|
|
29
|
+
"default": "./fesm2022/wlcm-angular-datepicker.mjs"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"type": "module"
|
|
33
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { WritableSignal, Signal, ViewContainerRef, InputSignal, ElementRef, Type, ComponentRef, Injector, AfterContentInit, AfterViewInit, InjectionToken, Provider } from '@angular/core';
|
|
3
|
+
import { MatDateSelectionModel, DateRange, MatDateRangeSelectionStrategy, MatCalendarUserEvent, MatCalendar, MatMonthView } from '@angular/material/datepicker';
|
|
4
|
+
import { WlcmFormFieldInput } from '@wlcm/angular/forms';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
import { Overlay, OverlayRef } from '@angular/cdk/overlay';
|
|
7
|
+
import { DateAdapter, MatDateFormats } from '@angular/material/core';
|
|
8
|
+
import { WlcmIconName } from '@wlcm/angular/core';
|
|
9
|
+
import { ControlValueAccessor, Validator, ValidationErrors, ValidatorFn } from '@angular/forms';
|
|
10
|
+
import * as i1 from '@angular/common';
|
|
11
|
+
|
|
12
|
+
declare abstract class WlcmDateRangePicker {
|
|
13
|
+
protected _isComplete: WritableSignal<boolean>;
|
|
14
|
+
readonly isComplete: Signal<boolean>;
|
|
15
|
+
protected localSelectionModel: MatDateSelectionModel<DateRange<Date>>;
|
|
16
|
+
protected rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>;
|
|
17
|
+
private readonly _destroyRef;
|
|
18
|
+
protected constructor();
|
|
19
|
+
abstract apply(): void;
|
|
20
|
+
abstract reset(): void;
|
|
21
|
+
setSelection(selection: DateRange<Date>): void;
|
|
22
|
+
get selected(): DateRange<Date>;
|
|
23
|
+
protected calendarSelection(event: MatCalendarUserEvent<Date | null>): void;
|
|
24
|
+
protected calendarDragDrop(event: MatCalendarUserEvent<DateRange<Date>>): void;
|
|
25
|
+
private handleSelectionChanged;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare enum WlcmDateValidation {
|
|
29
|
+
Format = "WlcmInvalidDateFormat",
|
|
30
|
+
MinDate = "WlcmDateIsBeforeMinDate",
|
|
31
|
+
MaxDate = "WlcmDateIsAfterMaxDate"
|
|
32
|
+
}
|
|
33
|
+
interface WlcmDatepickerConfig {
|
|
34
|
+
minDate?: Signal<Date | undefined>;
|
|
35
|
+
maxDate?: Signal<Date | undefined>;
|
|
36
|
+
selectOnly?: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare abstract class WlcmDatepickerTrigger<T, _D = Date> {
|
|
40
|
+
protected overlay: Overlay;
|
|
41
|
+
protected viewContainerRef: ViewContainerRef;
|
|
42
|
+
private readonly destroyRef;
|
|
43
|
+
minDate: InputSignal<Date | undefined>;
|
|
44
|
+
maxDate: InputSignal<Date | undefined>;
|
|
45
|
+
selectOnly: InputSignal<boolean>;
|
|
46
|
+
protected overlayRef: OverlayRef;
|
|
47
|
+
protected abstract connectedTo: ElementRef<HTMLElement>;
|
|
48
|
+
protected abstract componentType: Type<T>;
|
|
49
|
+
protected componentRef?: ComponentRef<T>;
|
|
50
|
+
protected constructor();
|
|
51
|
+
open(): void;
|
|
52
|
+
close(): void;
|
|
53
|
+
get isOpen(): boolean;
|
|
54
|
+
get opened(): Observable<void>;
|
|
55
|
+
get closed(): Observable<void>;
|
|
56
|
+
get datepickerInjector(): Injector;
|
|
57
|
+
get defaultDatepickerConfig(): WlcmDatepickerConfig;
|
|
58
|
+
get datepickerConfig(): WlcmDatepickerConfig;
|
|
59
|
+
private handleBackdropClick;
|
|
60
|
+
private updatePositionStrategy;
|
|
61
|
+
private createOverlayConfig;
|
|
62
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDatepickerTrigger<any, any>, never>;
|
|
63
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmDatepickerTrigger<any, any>, never, never, { "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "selectOnly": { "alias": "selectOnly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
declare class WlcmDateRangePickerInputComponent extends WlcmDatepickerTrigger<WlcmDateRangePicker, DateRange<Date>> implements WlcmFormFieldInput, AfterContentInit, AfterViewInit {
|
|
67
|
+
private readonly _focusStream$;
|
|
68
|
+
private readonly _blurStream$;
|
|
69
|
+
focus$: Observable<unknown>;
|
|
70
|
+
blur$: Observable<unknown>;
|
|
71
|
+
protected componentType: Type<WlcmDateRangePicker>;
|
|
72
|
+
private startInput;
|
|
73
|
+
private endInput;
|
|
74
|
+
protected connectedTo: ElementRef<HTMLElement>;
|
|
75
|
+
private formField;
|
|
76
|
+
private controlContainer;
|
|
77
|
+
constructor();
|
|
78
|
+
ngAfterContentInit(): void;
|
|
79
|
+
ngAfterViewInit(): void;
|
|
80
|
+
isFocused(): boolean;
|
|
81
|
+
focus(): void;
|
|
82
|
+
private get control();
|
|
83
|
+
private get startInputElement();
|
|
84
|
+
private get endInputElement();
|
|
85
|
+
private checkInputs;
|
|
86
|
+
private attachFocusBlurListeners;
|
|
87
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerInputComponent, never>;
|
|
88
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerInputComponent, "wlcm-date-range-picker-input", ["wlcmDateRangePickerInput"], {}, {}, ["startInput", "endInput"], ["[wlcmDateRangePickerInputStart]", "[wlcmDateRangePickerInputEnd]"], true, never>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare class DoubleCalendarRangePickerComponent extends WlcmDateRangePicker implements AfterViewInit {
|
|
92
|
+
protected headerComponent: Type<unknown>;
|
|
93
|
+
private _isViewInitialized;
|
|
94
|
+
private rangeConfig;
|
|
95
|
+
protected triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>;
|
|
96
|
+
protected trigger: WlcmDatepickerTrigger<DoubleCalendarRangePickerComponent>;
|
|
97
|
+
protected datepickerConfig: WlcmDatepickerConfig;
|
|
98
|
+
protected pickerBottomPanel: Type<unknown>;
|
|
99
|
+
protected pickerLeftPanel: Type<unknown> | null;
|
|
100
|
+
protected dateAdapter: DateAdapter<Date>;
|
|
101
|
+
private readonly destroyRef;
|
|
102
|
+
readonly leftCalendar: Signal<MatCalendar<Date> | undefined>;
|
|
103
|
+
readonly rightCalendar: Signal<MatCalendar<Date> | undefined>;
|
|
104
|
+
readonly leftCalendarElement: Signal<ElementRef<HTMLElement> | undefined>;
|
|
105
|
+
readonly bottomPanelContainer: Signal<ViewContainerRef | undefined>;
|
|
106
|
+
readonly leftPanelContainer: Signal<ViewContainerRef | undefined>;
|
|
107
|
+
readonly monthView: Signal<MatMonthView<Date> | undefined>;
|
|
108
|
+
startDate: WritableSignal<Date>;
|
|
109
|
+
leftCalendarYearViewActivated: WritableSignal<boolean>;
|
|
110
|
+
rightCalendarYearViewActivated: WritableSignal<boolean>;
|
|
111
|
+
constructor();
|
|
112
|
+
ngAfterViewInit(): void;
|
|
113
|
+
apply(): void;
|
|
114
|
+
reset(): void;
|
|
115
|
+
private get leftCalendarActiveCell();
|
|
116
|
+
private handleRightCalendarPreviewChange;
|
|
117
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DoubleCalendarRangePickerComponent, never>;
|
|
118
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DoubleCalendarRangePickerComponent, "wlcm-double-calendar-range-picker", never, {}, {}, never, never, true, never>;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
declare class WlcmCalendarHeaderComponent {
|
|
122
|
+
readonly WlcmIconName: typeof WlcmIconName;
|
|
123
|
+
next: InputSignal<(() => void) | undefined>;
|
|
124
|
+
previous: InputSignal<(() => void) | undefined>;
|
|
125
|
+
disableLeftArrow: InputSignal<boolean>;
|
|
126
|
+
disableRightArrow: InputSignal<boolean>;
|
|
127
|
+
displayLeftArrow: InputSignal<boolean>;
|
|
128
|
+
displayRightArrow: InputSignal<boolean>;
|
|
129
|
+
private dateAdapter;
|
|
130
|
+
protected dateFormats: MatDateFormats | null;
|
|
131
|
+
calendar: MatCalendar<Date>;
|
|
132
|
+
previousClicked(): void;
|
|
133
|
+
nextClicked(): void;
|
|
134
|
+
changeCalendarView(): void;
|
|
135
|
+
get periodLabel(): string;
|
|
136
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmCalendarHeaderComponent, never>;
|
|
137
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmCalendarHeaderComponent, "wlcm-calendar-header", never, { "next": { "alias": "next"; "required": false; "isSignal": true; }; "previous": { "alias": "previous"; "required": false; "isSignal": true; }; "disableLeftArrow": { "alias": "disableLeftArrow"; "required": false; "isSignal": true; }; "disableRightArrow": { "alias": "disableRightArrow"; "required": false; "isSignal": true; }; "displayLeftArrow": { "alias": "displayLeftArrow"; "required": false; "isSignal": true; }; "displayRightArrow": { "alias": "displayRightArrow"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
declare class SingleCalendarRangePickerComponent extends WlcmDateRangePicker implements AfterViewInit {
|
|
141
|
+
protected headerComponent: Type<WlcmCalendarHeaderComponent>;
|
|
142
|
+
bottomPanelContainer: Signal<ViewContainerRef | undefined>;
|
|
143
|
+
protected triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>;
|
|
144
|
+
protected trigger: WlcmDatepickerTrigger<SingleCalendarRangePickerComponent>;
|
|
145
|
+
protected datepickerConfig: WlcmDatepickerConfig;
|
|
146
|
+
protected pickerBottomPanel: Type<unknown>;
|
|
147
|
+
protected dateAdapter: DateAdapter<Date>;
|
|
148
|
+
constructor();
|
|
149
|
+
ngAfterViewInit(): void;
|
|
150
|
+
get minDate(): Date | undefined;
|
|
151
|
+
get maxDate(): Date | undefined;
|
|
152
|
+
apply(): void;
|
|
153
|
+
reset(): void;
|
|
154
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SingleCalendarRangePickerComponent, never>;
|
|
155
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SingleCalendarRangePickerComponent, "wlcm-single-calendar-range-picker", never, {}, {}, never, never, true, never>;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
declare class WlcmDatepickerPanelComponent<D> {
|
|
159
|
+
protected headerComponent: typeof WlcmCalendarHeaderComponent;
|
|
160
|
+
matCalendar: Signal<MatCalendar<D> | undefined>;
|
|
161
|
+
protected selectionModel: MatDateSelectionModel<Date>;
|
|
162
|
+
protected trigger: WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<D>>;
|
|
163
|
+
protected config: WlcmDatepickerConfig;
|
|
164
|
+
select(date: Date): void;
|
|
165
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDatepickerPanelComponent<any>, never>;
|
|
166
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDatepickerPanelComponent<any>, "wlcm-datepicker-panel", never, {}, {}, never, never, true, never>;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
declare class WlcmDatepickerInputContainerComponent<T> extends WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<T>> implements WlcmFormFieldInput, AfterContentInit, AfterViewInit {
|
|
170
|
+
private readonly _focusStream$;
|
|
171
|
+
private readonly _blurStream$;
|
|
172
|
+
focus$: Observable<unknown>;
|
|
173
|
+
blur$: Observable<unknown>;
|
|
174
|
+
inputRef: Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
175
|
+
protected componentType: typeof WlcmDatepickerPanelComponent;
|
|
176
|
+
protected connectedTo: ElementRef<HTMLElement>;
|
|
177
|
+
private formField;
|
|
178
|
+
constructor();
|
|
179
|
+
ngAfterContentInit(): void;
|
|
180
|
+
ngAfterViewInit(): void;
|
|
181
|
+
focus: () => void;
|
|
182
|
+
isFocused: () => boolean;
|
|
183
|
+
private get inputElement();
|
|
184
|
+
private attachFocusBlurListeners;
|
|
185
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDatepickerInputContainerComponent<any>, never>;
|
|
186
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDatepickerInputContainerComponent<any>, "wlcm-datepicker-input-container", ["wlcmDatepicker"], {}, {}, ["inputRef"], ["[wlcmDatepickerInput]"], true, never>;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
declare abstract class WlcmDatepickerInputBase implements ControlValueAccessor, Validator {
|
|
190
|
+
protected element: ElementRef;
|
|
191
|
+
protected dateAdapter: DateAdapter<Date>;
|
|
192
|
+
protected dateFormats: MatDateFormats;
|
|
193
|
+
protected trigger: WlcmDatepickerTrigger<unknown>;
|
|
194
|
+
handleBlur(): void;
|
|
195
|
+
handleInput(): void;
|
|
196
|
+
protected _changed?: (value: Date | null) => void;
|
|
197
|
+
protected _touched?: () => void;
|
|
198
|
+
protected _validatorChanged?: () => void;
|
|
199
|
+
writeValue(value: Date | null): void;
|
|
200
|
+
registerOnChange(callback: (value: Date | null) => void): void;
|
|
201
|
+
registerOnTouched(callback: () => void): void;
|
|
202
|
+
registerOnValidatorChange(callback: () => void): void;
|
|
203
|
+
validate(): ValidationErrors | null;
|
|
204
|
+
parseCurrentValue(): Date | null;
|
|
205
|
+
protected isValidFormat(value: string, pattern: string): boolean;
|
|
206
|
+
protected abstract updateSelection(): void;
|
|
207
|
+
protected get minDate(): Date | undefined;
|
|
208
|
+
protected get maxDate(): Date | undefined;
|
|
209
|
+
protected get inputElement(): HTMLInputElement;
|
|
210
|
+
protected get currentValue(): string;
|
|
211
|
+
protected updateInputValue(value: Date | null): void;
|
|
212
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDatepickerInputBase, never>;
|
|
213
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmDatepickerInputBase, never, never, {}, {}, never, never, true, never>;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
declare abstract class WlcmDateRangePickerInputBase extends WlcmDatepickerInputBase implements AfterViewInit, ControlValueAccessor, Validator {
|
|
217
|
+
element: ElementRef<HTMLInputElement>;
|
|
218
|
+
private _inputMirror;
|
|
219
|
+
ngAfterViewInit(): void;
|
|
220
|
+
writeValue(value: Date | null): void;
|
|
221
|
+
handleInput(): void;
|
|
222
|
+
protected updateInputValue(value: Date | null): void;
|
|
223
|
+
private changeInputSize;
|
|
224
|
+
private createInputMirror;
|
|
225
|
+
private copyInputElementStyles;
|
|
226
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerInputBase, never>;
|
|
227
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmDateRangePickerInputBase, never, never, {}, {}, never, never, true, never>;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
declare class DateRangePickerInputEndDirective extends WlcmDateRangePickerInputBase {
|
|
231
|
+
protected selectionModel: MatDateSelectionModel<DateRange<Date>>;
|
|
232
|
+
private readonly destroyRef;
|
|
233
|
+
constructor();
|
|
234
|
+
validate(): ValidationErrors | null;
|
|
235
|
+
updateSelection: () => void;
|
|
236
|
+
private handleSelectionChange;
|
|
237
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerInputEndDirective, never>;
|
|
238
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DateRangePickerInputEndDirective, "[wlcmDateRangePickerInputEnd]", never, {}, {}, never, never, true, never>;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
declare class DateRangePickerInputStartDirective extends WlcmDateRangePickerInputBase {
|
|
242
|
+
protected selectionModel: MatDateSelectionModel<DateRange<Date>>;
|
|
243
|
+
private readonly destroyRef;
|
|
244
|
+
constructor();
|
|
245
|
+
validate(): ValidationErrors | null;
|
|
246
|
+
updateSelection: () => void;
|
|
247
|
+
private handleSelectionChange;
|
|
248
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerInputStartDirective, never>;
|
|
249
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DateRangePickerInputStartDirective, "[wlcmDateRangePickerInputStart]", never, {}, {}, never, never, true, never>;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
declare class WlcmDatepickerInputDirective extends WlcmDatepickerInputBase implements ControlValueAccessor, Validator {
|
|
253
|
+
protected selectionModel: MatDateSelectionModel<Date | null>;
|
|
254
|
+
private readonly destroyRef;
|
|
255
|
+
constructor();
|
|
256
|
+
updateSelection(): void;
|
|
257
|
+
private handleClosePanel;
|
|
258
|
+
private handleSelectionChange;
|
|
259
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDatepickerInputDirective, never>;
|
|
260
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmDatepickerInputDirective, "[wlcmDatepickerInput]", ["wlcmDatepickerInput"], {}, {}, never, never, true, never>;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
declare function WlcmDateRangeInputValidator(): ValidatorFn;
|
|
264
|
+
|
|
265
|
+
declare enum WlcmDateRangeValidation {
|
|
266
|
+
StartExceedsEnd = "wlcmDateRangeStartExceedsEnd"
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
declare class WlcmDatepickerModule {
|
|
270
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDatepickerModule, never>;
|
|
271
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmDatepickerModule, never, [typeof i1.CommonModule, typeof WlcmDatepickerInputContainerComponent, typeof WlcmDateRangePickerInputComponent, typeof WlcmDatepickerInputDirective, typeof DateRangePickerInputStartDirective, typeof DateRangePickerInputEndDirective], [typeof WlcmDatepickerInputContainerComponent, typeof WlcmDateRangePickerInputComponent, typeof WlcmDatepickerInputDirective, typeof DateRangePickerInputStartDirective, typeof DateRangePickerInputEndDirective]>;
|
|
272
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<WlcmDatepickerModule>;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
declare const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<Date>>;
|
|
276
|
+
declare const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER: Provider;
|
|
277
|
+
|
|
278
|
+
declare const WLCM_DATE_RANGE_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<Date>>;
|
|
279
|
+
|
|
280
|
+
declare const WLCM_DATE_RANGE_PICKER_BP: InjectionToken<Type<unknown>>;
|
|
281
|
+
declare const WLCM_DATE_RANGE_PICKER_LEFT_PANEL: InjectionToken<Type<unknown>>;
|
|
282
|
+
|
|
283
|
+
declare const WLCM_DATEPICKER_CONFIG: InjectionToken<WlcmDatepickerConfig>;
|
|
284
|
+
|
|
285
|
+
export { DateRangePickerInputEndDirective, DateRangePickerInputStartDirective, DoubleCalendarRangePickerComponent, SingleCalendarRangePickerComponent, WLCM_DATEPICKER_CONFIG, WLCM_DATE_RANGE_PICKER_BP, WLCM_DATE_RANGE_PICKER_LEFT_PANEL, WLCM_DATE_RANGE_SELECTION_MODEL, WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL, WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER, WlcmDateRangeInputValidator, WlcmDateRangePicker, WlcmDateRangePickerInputComponent, WlcmDateRangeValidation, WlcmDateValidation, WlcmDatepickerInputContainerComponent, WlcmDatepickerInputDirective, WlcmDatepickerModule, WlcmDatepickerTrigger };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { BehaviorSubject,
|
|
2
|
-
import { __decorate } from 'tslib';
|
|
1
|
+
import { BehaviorSubject, switchMap, of, combineLatest, map } from 'rxjs';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken,
|
|
5
|
-
import {
|
|
3
|
+
import { InjectionToken, contentChildren, Directive, forwardRef, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
4
|
+
import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
5
|
import { CommonModule } from '@angular/common';
|
|
7
6
|
|
|
8
7
|
class WlcmFilter {
|
|
@@ -117,85 +116,80 @@ class WlcmArrayFilter extends WlcmFilter {
|
|
|
117
116
|
|
|
118
117
|
const WLCM_FILTER = new InjectionToken('WLCM_FILTER');
|
|
119
118
|
|
|
120
|
-
|
|
119
|
+
class WlcmFiltersGroup {
|
|
121
120
|
constructor() {
|
|
122
121
|
this._size$ = new BehaviorSubject(0);
|
|
123
122
|
this.size$ = this._size$.asObservable();
|
|
124
|
-
|
|
125
|
-
ngAfterContentInit() {
|
|
123
|
+
this.filters = contentChildren(WLCM_FILTER, { ...(ngDevMode ? { debugName: "filters" } : /* istanbul ignore next */ {}), descendants: true });
|
|
126
124
|
this.handleFiltersListChange();
|
|
127
125
|
}
|
|
128
126
|
resetAll() {
|
|
129
|
-
this.filters.forEach((filter) => filter.reset());
|
|
127
|
+
this.filters().forEach((filter) => filter.reset());
|
|
130
128
|
}
|
|
131
129
|
getAppliedFilters() {
|
|
132
130
|
const appliedFilters = {};
|
|
133
|
-
this.filters.forEach((filter) => {
|
|
131
|
+
this.filters().forEach((filter) => {
|
|
134
132
|
appliedFilters[filter.key] = filter.getAppliedFilters();
|
|
135
133
|
});
|
|
136
134
|
return appliedFilters;
|
|
137
135
|
}
|
|
138
136
|
cacheValues() {
|
|
139
|
-
this.filters.forEach((filter) => filter.cacheValue());
|
|
137
|
+
this.filters().forEach((filter) => filter.cacheValue());
|
|
140
138
|
}
|
|
141
139
|
restoreCachedValues() {
|
|
142
|
-
this.filters.forEach((filter) => filter.restoreCachedValue());
|
|
140
|
+
this.filters().forEach((filter) => filter.restoreCachedValue());
|
|
143
141
|
}
|
|
144
142
|
get size() {
|
|
145
143
|
return this._size$.value;
|
|
146
144
|
}
|
|
147
145
|
handleFiltersListChange() {
|
|
148
|
-
this.filters
|
|
149
|
-
.pipe(
|
|
150
|
-
.pipe(startWith(this.filters))
|
|
151
|
-
.pipe(switchMap((filters) => this.handleSizeChange(filters.toArray())))
|
|
146
|
+
toObservable(this.filters)
|
|
147
|
+
.pipe(switchMap((filters) => this.handleSizeChange([...filters])), takeUntilDestroyed())
|
|
152
148
|
.subscribe();
|
|
153
149
|
}
|
|
154
150
|
handleSizeChange(list) {
|
|
151
|
+
if (list.length === 0) {
|
|
152
|
+
this._size$.next(0);
|
|
153
|
+
return of(list);
|
|
154
|
+
}
|
|
155
155
|
return combineLatest(list.map((filter) => filter.size$)).pipe(map((sizes) => {
|
|
156
156
|
this._size$.next(sizes.reduce((a, b) => a + b, 0));
|
|
157
157
|
return list;
|
|
158
158
|
}));
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
162
|
-
}
|
|
163
|
-
WlcmFiltersGroup
|
|
164
|
-
UntilDestroy()
|
|
165
|
-
], WlcmFiltersGroup);
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: WlcmFiltersGroup, decorators: [{
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: WlcmFiltersGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
161
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.5", type: WlcmFiltersGroup, isStandalone: true, queries: [{ propertyName: "filters", predicate: WLCM_FILTER, descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: WlcmFiltersGroup, decorators: [{
|
|
167
164
|
type: Directive
|
|
168
|
-
}], propDecorators: { filters: [{
|
|
169
|
-
type: ContentChildren,
|
|
170
|
-
args: [WLCM_FILTER, { descendants: true }]
|
|
171
|
-
}] } });
|
|
165
|
+
}], ctorParameters: () => [], propDecorators: { filters: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => WLCM_FILTER), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
172
166
|
|
|
173
167
|
class FilterDirective {
|
|
174
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
175
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
168
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
169
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: FilterDirective, isStandalone: true, selector: "[wlcmFilter]", ngImport: i0 }); }
|
|
176
170
|
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FilterDirective, decorators: [{
|
|
178
172
|
type: Directive,
|
|
179
|
-
args: [{ selector: '[wlcmFilter]'
|
|
173
|
+
args: [{ selector: '[wlcmFilter]' }]
|
|
180
174
|
}] });
|
|
181
175
|
|
|
182
176
|
class FiltersGroupComponent extends WlcmFiltersGroup {
|
|
183
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
184
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
177
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FiltersGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
178
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: FiltersGroupComponent, isStandalone: true, selector: "wlcm-filters-group", host: { classAttribute: "wlcm-filters-group" }, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
185
179
|
}
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FiltersGroupComponent, decorators: [{
|
|
187
181
|
type: Component,
|
|
188
|
-
args: [{ selector: 'wlcm-filters-group',
|
|
182
|
+
args: [{ selector: 'wlcm-filters-group', imports: [], host: { class: 'wlcm-filters-group' }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"] }]
|
|
189
183
|
}] });
|
|
190
184
|
|
|
191
185
|
const publicComponents = [FiltersGroupComponent];
|
|
192
186
|
const publicDirectives = [FilterDirective];
|
|
193
187
|
class WlcmFiltersModule {
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
195
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
196
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
188
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: WlcmFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
189
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, FiltersGroupComponent, FilterDirective], exports: [FiltersGroupComponent, FilterDirective] }); }
|
|
190
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule] }); }
|
|
197
191
|
}
|
|
198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: WlcmFiltersModule, decorators: [{
|
|
199
193
|
type: NgModule,
|
|
200
194
|
args: [{
|
|
201
195
|
imports: [CommonModule, ...publicComponents, ...publicDirectives],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wlcm-angular-filters.mjs","sources":["../../../../modules/filters/src/lib/models/filter.models.ts","../../../../modules/filters/src/lib/models/array-filter.models.ts","../../../../modules/filters/src/lib/constants/filter.constants.ts","../../../../modules/filters/src/lib/models/filters-group.models.ts","../../../../modules/filters/src/lib/directives/filter.directive.ts","../../../../modules/filters/src/lib/components/filters-group/filters-group.component.ts","../../../../modules/filters/src/lib/components/filters-group/filters-group.component.html","../../../../modules/filters/src/lib/filters.module.ts","../../../../modules/filters/src/wlcm-angular-filters.ts"],"sourcesContent":["import { BehaviorSubject, Observable } from 'rxjs';\n\nexport abstract class WlcmFilter<T = unknown, O = T> {\n private _cachedValue: T | null = null;\n\n private readonly _size$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n readonly size$: Observable<number> = this._size$.asObservable();\n\n private readonly _value$: BehaviorSubject<T | null> = new BehaviorSubject<T | null>(this.initialValue);\n\n readonly value$: Observable<T | null> = this._value$.asObservable();\n\n abstract get key(): string;\n\n abstract computeSize(value: T | null): number;\n\n reset(): void {\n this.value = this.initialValue;\n }\n\n cacheValue(): void {\n this._cachedValue = this.prepareValueForCache(this.value);\n }\n\n restoreCachedValue(): void {\n this.value = this._cachedValue;\n }\n\n prepareValueForCache(value: T | null): T | null {\n return value;\n }\n\n getAppliedFilters(): O {\n return this.value as O;\n }\n\n get initialValue(): T | null {\n return null;\n }\n\n get size(): number {\n return this._size$.value;\n }\n\n get value(): T | null {\n return this._value$.value;\n }\n\n set value(data: T | null) {\n this._value$.next(data);\n\n this._size$.next(this.computeSize(data));\n }\n}\n","import { WlcmFilter } from './filter.models';\n\ntype ArrayFilterValue<T> = Map<unknown, T>;\n\nexport abstract class WlcmArrayFilter<T, O = T[]> extends WlcmFilter<ArrayFilterValue<T>, O> {\n constructor() {\n super();\n\n this.prepareValue();\n }\n\n override get initialValue(): ArrayFilterValue<T> {\n return new Map();\n }\n\n override getAppliedFilters(): O {\n if (!this.value) return [] as O;\n\n return Array.from(this.value.values()) as O;\n }\n\n override prepareValueForCache(value: ArrayFilterValue<T> | null): ArrayFilterValue<T> | null {\n if (!value) return null;\n\n return new Map(value);\n }\n\n override computeSize(value: ArrayFilterValue<T>): number {\n return value.size;\n }\n\n selectId(value: T): unknown {\n return value;\n }\n\n contains(value: T): boolean {\n if (!this.value) return false;\n\n return this.value.has(this.selectId(value));\n }\n\n addOne(value: T): void {\n this.prepareValue();\n\n this.value = (this.value as ArrayFilterValue<T>).set(this.selectId(value), value);\n }\n\n addMany(values: T[]): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n values.forEach((value: T) => currentValue.set(this.selectId(value), value));\n\n this.value = currentValue;\n }\n\n setAll(values: T[]): void {\n const newValue: ArrayFilterValue<T> = new Map();\n\n values.forEach((value: T) => newValue.set(this.selectId(value), value));\n\n this.value = newValue;\n }\n\n removeOne(value: T): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n currentValue.delete(this.selectId(value));\n\n this.value = currentValue;\n }\n\n removeAll(): void {\n this.value = new Map();\n }\n\n toggle(value: T): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n const id: unknown = this.selectId(value);\n\n if (currentValue.has(id)) {\n currentValue.delete(id);\n } else {\n currentValue.set(id, value);\n }\n\n this.value = currentValue;\n }\n\n private prepareValue(): void {\n if (this.value instanceof Map) return;\n\n this.value = new Map();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFilter } from '../models/filter.models';\n\nexport const WLCM_FILTER: InjectionToken<WlcmFilter> = new InjectionToken('WLCM_FILTER');\n","import { AfterContentInit, ContentChildren, Directive, QueryList } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map, Observable, startWith, switchMap } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WLCM_FILTER } from '../constants/filter.constants';\nimport { WlcmFilter } from './filter.models';\n\nexport type WlcmAppliedFilters = { [key: string]: unknown };\n\n@UntilDestroy()\n@Directive()\nexport abstract class WlcmFiltersGroup implements AfterContentInit {\n private readonly _size$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n readonly size$: Observable<number> = this._size$.asObservable();\n\n @ContentChildren(WLCM_FILTER, { descendants: true }) protected filters!: QueryList<WlcmFilter>;\n\n ngAfterContentInit(): void {\n this.handleFiltersListChange();\n }\n\n resetAll(): void {\n this.filters.forEach((filter: WlcmFilter) => filter.reset());\n }\n\n getAppliedFilters(): WlcmAppliedFilters {\n const appliedFilters: WlcmAppliedFilters = {};\n\n this.filters.forEach((filter: WlcmFilter) => {\n appliedFilters[filter.key] = filter.getAppliedFilters();\n });\n\n return appliedFilters;\n }\n\n cacheValues(): void {\n this.filters.forEach((filter: WlcmFilter) => filter.cacheValue());\n }\n\n restoreCachedValues(): void {\n this.filters.forEach((filter: WlcmFilter) => filter.restoreCachedValue());\n }\n\n get size(): number {\n return this._size$.value;\n }\n\n private handleFiltersListChange(): void {\n this.filters.changes\n .pipe(untilDestroyed(this))\n .pipe(startWith(this.filters))\n .pipe(switchMap((filters: QueryList<WlcmFilter>) => this.handleSizeChange(filters.toArray())))\n .subscribe();\n }\n\n private handleSizeChange(list: WlcmFilter[]): Observable<WlcmFilter[]> {\n return combineLatest(list.map((filter: WlcmFilter) => filter.size$)).pipe(\n map((sizes: number[]) => {\n this._size$.next(sizes.reduce((a, b) => a + b, 0));\n\n return list;\n }),\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[wlcmFilter]', standalone: true })\nexport class FilterDirective {}\n","import { Component, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFiltersGroup } from '../../models/filters-group.models';\n\n@Component({\n selector: 'wlcm-filters-group',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-filters-group' },\n templateUrl: './filters-group.component.html',\n styleUrl: './filters-group.component.scss',\n providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }],\n})\nexport class FiltersGroupComponent extends WlcmFiltersGroup {}\n","<ng-content select=\"[wlcmFilter]\"></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FiltersGroupComponent } from './components/filters-group/filters-group.component';\nimport { FilterDirective } from './directives/filter.directive';\n\nconst publicComponents: Type<unknown>[] = [FiltersGroupComponent];\n\nconst publicDirectives: Type<unknown>[] = [FilterDirective];\n\n@NgModule({\n imports: [CommonModule, ...publicComponents, ...publicDirectives],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmFiltersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wlcm-angular-filters.mjs","sources":["../../../../modules/filters/src/lib/models/filter.models.ts","../../../../modules/filters/src/lib/models/array-filter.models.ts","../../../../modules/filters/src/lib/constants/filter.constants.ts","../../../../modules/filters/src/lib/models/filters-group.models.ts","../../../../modules/filters/src/lib/directives/filter.directive.ts","../../../../modules/filters/src/lib/components/filters-group/filters-group.component.ts","../../../../modules/filters/src/lib/components/filters-group/filters-group.component.html","../../../../modules/filters/src/lib/filters.module.ts","../../../../modules/filters/src/wlcm-angular-filters.ts"],"sourcesContent":["import { BehaviorSubject, Observable } from 'rxjs';\n\nexport abstract class WlcmFilter<T = unknown, O = T> {\n private _cachedValue: T | null = null;\n\n private readonly _size$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n readonly size$: Observable<number> = this._size$.asObservable();\n\n private readonly _value$: BehaviorSubject<T | null> = new BehaviorSubject<T | null>(this.initialValue);\n\n readonly value$: Observable<T | null> = this._value$.asObservable();\n\n abstract get key(): string;\n\n abstract computeSize(value: T | null): number;\n\n reset(): void {\n this.value = this.initialValue;\n }\n\n cacheValue(): void {\n this._cachedValue = this.prepareValueForCache(this.value);\n }\n\n restoreCachedValue(): void {\n this.value = this._cachedValue;\n }\n\n prepareValueForCache(value: T | null): T | null {\n return value;\n }\n\n getAppliedFilters(): O {\n return this.value as O;\n }\n\n get initialValue(): T | null {\n return null;\n }\n\n get size(): number {\n return this._size$.value;\n }\n\n get value(): T | null {\n return this._value$.value;\n }\n\n set value(data: T | null) {\n this._value$.next(data);\n\n this._size$.next(this.computeSize(data));\n }\n}\n","import { WlcmFilter } from './filter.models';\n\ntype ArrayFilterValue<T> = Map<unknown, T>;\n\nexport abstract class WlcmArrayFilter<T, O = T[]> extends WlcmFilter<ArrayFilterValue<T>, O> {\n constructor() {\n super();\n\n this.prepareValue();\n }\n\n override get initialValue(): ArrayFilterValue<T> {\n return new Map();\n }\n\n override getAppliedFilters(): O {\n if (!this.value) return [] as O;\n\n return Array.from(this.value.values()) as O;\n }\n\n override prepareValueForCache(value: ArrayFilterValue<T> | null): ArrayFilterValue<T> | null {\n if (!value) return null;\n\n return new Map(value);\n }\n\n override computeSize(value: ArrayFilterValue<T>): number {\n return value.size;\n }\n\n selectId(value: T): unknown {\n return value;\n }\n\n contains(value: T): boolean {\n if (!this.value) return false;\n\n return this.value.has(this.selectId(value));\n }\n\n addOne(value: T): void {\n this.prepareValue();\n\n this.value = (this.value as ArrayFilterValue<T>).set(this.selectId(value), value);\n }\n\n addMany(values: T[]): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n values.forEach((value: T) => currentValue.set(this.selectId(value), value));\n\n this.value = currentValue;\n }\n\n setAll(values: T[]): void {\n const newValue: ArrayFilterValue<T> = new Map();\n\n values.forEach((value: T) => newValue.set(this.selectId(value), value));\n\n this.value = newValue;\n }\n\n removeOne(value: T): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n currentValue.delete(this.selectId(value));\n\n this.value = currentValue;\n }\n\n removeAll(): void {\n this.value = new Map();\n }\n\n toggle(value: T): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n const id: unknown = this.selectId(value);\n\n if (currentValue.has(id)) {\n currentValue.delete(id);\n } else {\n currentValue.set(id, value);\n }\n\n this.value = currentValue;\n }\n\n private prepareValue(): void {\n if (this.value instanceof Map) return;\n\n this.value = new Map();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFilter } from '../models/filter.models';\n\nexport const WLCM_FILTER: InjectionToken<WlcmFilter> = new InjectionToken('WLCM_FILTER');\n","import { Directive, contentChildren } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, combineLatest, map, Observable, of, switchMap } from 'rxjs';\nimport { WLCM_FILTER } from '../constants/filter.constants';\nimport { WlcmFilter } from './filter.models';\n\nexport type WlcmAppliedFilters = { [key: string]: unknown };\n\n@Directive()\nexport abstract class WlcmFiltersGroup {\n private readonly _size$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n readonly size$: Observable<number> = this._size$.asObservable();\n\n protected readonly filters = contentChildren(WLCM_FILTER, { descendants: true });\n\n constructor() {\n this.handleFiltersListChange();\n }\n\n resetAll(): void {\n this.filters().forEach((filter: WlcmFilter) => filter.reset());\n }\n\n getAppliedFilters(): WlcmAppliedFilters {\n const appliedFilters: WlcmAppliedFilters = {};\n\n this.filters().forEach((filter: WlcmFilter) => {\n appliedFilters[filter.key] = filter.getAppliedFilters();\n });\n\n return appliedFilters;\n }\n\n cacheValues(): void {\n this.filters().forEach((filter: WlcmFilter) => filter.cacheValue());\n }\n\n restoreCachedValues(): void {\n this.filters().forEach((filter: WlcmFilter) => filter.restoreCachedValue());\n }\n\n get size(): number {\n return this._size$.value;\n }\n\n private handleFiltersListChange(): void {\n toObservable(this.filters)\n .pipe(\n switchMap((filters: readonly WlcmFilter[]) => this.handleSizeChange([...filters])),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n private handleSizeChange(list: WlcmFilter[]): Observable<WlcmFilter[]> {\n if (list.length === 0) {\n this._size$.next(0);\n\n return of(list);\n }\n\n return combineLatest(list.map((filter: WlcmFilter) => filter.size$)).pipe(\n map((sizes: number[]) => {\n this._size$.next(sizes.reduce((a, b) => a + b, 0));\n\n return list;\n }),\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[wlcmFilter]' })\nexport class FilterDirective {}\n","import { Component, forwardRef, ChangeDetectionStrategy } from '@angular/core';\n\nimport { WlcmFiltersGroup } from '../../models/filters-group.models';\n\n@Component({\n selector: 'wlcm-filters-group',\n imports: [],\n host: { class: 'wlcm-filters-group' },\n templateUrl: './filters-group.component.html',\n styleUrl: './filters-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }],\n})\nexport class FiltersGroupComponent extends WlcmFiltersGroup {}\n","<ng-content select=\"[wlcmFilter]\"></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FiltersGroupComponent } from './components/filters-group/filters-group.component';\nimport { FilterDirective } from './directives/filter.directive';\n\nconst publicComponents: Type<unknown>[] = [FiltersGroupComponent];\n\nconst publicDirectives: Type<unknown>[] = [FilterDirective];\n\n@NgModule({\n imports: [CommonModule, ...publicComponents, ...publicDirectives],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmFiltersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wlcm/angular/filters",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^22.0.0",
|
|
6
|
+
"@angular/core": "^22.0.0",
|
|
7
|
+
"rxjs": "~7.8.1"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"module": "fesm2022/wlcm-angular-filters.mjs",
|
|
14
|
+
"typings": "types/wlcm-angular-filters.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": {
|
|
17
|
+
"default": "./package.json"
|
|
18
|
+
},
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./types/wlcm-angular-filters.d.ts",
|
|
21
|
+
"default": "./fesm2022/wlcm-angular-filters.mjs"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"type": "module"
|
|
25
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { InjectionToken } from '@angular/core';
|
|
4
|
+
import * as i1 from '@angular/common';
|
|
5
|
+
|
|
6
|
+
declare abstract class WlcmFilter<T = unknown, O = T> {
|
|
7
|
+
private _cachedValue;
|
|
8
|
+
private readonly _size$;
|
|
9
|
+
readonly size$: Observable<number>;
|
|
10
|
+
private readonly _value$;
|
|
11
|
+
readonly value$: Observable<T | null>;
|
|
12
|
+
abstract get key(): string;
|
|
13
|
+
abstract computeSize(value: T | null): number;
|
|
14
|
+
reset(): void;
|
|
15
|
+
cacheValue(): void;
|
|
16
|
+
restoreCachedValue(): void;
|
|
17
|
+
prepareValueForCache(value: T | null): T | null;
|
|
18
|
+
getAppliedFilters(): O;
|
|
19
|
+
get initialValue(): T | null;
|
|
20
|
+
get size(): number;
|
|
21
|
+
get value(): T | null;
|
|
22
|
+
set value(data: T | null);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type ArrayFilterValue<T> = Map<unknown, T>;
|
|
26
|
+
declare abstract class WlcmArrayFilter<T, O = T[]> extends WlcmFilter<ArrayFilterValue<T>, O> {
|
|
27
|
+
constructor();
|
|
28
|
+
get initialValue(): ArrayFilterValue<T>;
|
|
29
|
+
getAppliedFilters(): O;
|
|
30
|
+
prepareValueForCache(value: ArrayFilterValue<T> | null): ArrayFilterValue<T> | null;
|
|
31
|
+
computeSize(value: ArrayFilterValue<T>): number;
|
|
32
|
+
selectId(value: T): unknown;
|
|
33
|
+
contains(value: T): boolean;
|
|
34
|
+
addOne(value: T): void;
|
|
35
|
+
addMany(values: T[]): void;
|
|
36
|
+
setAll(values: T[]): void;
|
|
37
|
+
removeOne(value: T): void;
|
|
38
|
+
removeAll(): void;
|
|
39
|
+
toggle(value: T): void;
|
|
40
|
+
private prepareValue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type WlcmAppliedFilters = {
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
};
|
|
46
|
+
declare abstract class WlcmFiltersGroup {
|
|
47
|
+
private readonly _size$;
|
|
48
|
+
readonly size$: Observable<number>;
|
|
49
|
+
protected readonly filters: i0.Signal<readonly WlcmFilter<unknown, unknown>[]>;
|
|
50
|
+
constructor();
|
|
51
|
+
resetAll(): void;
|
|
52
|
+
getAppliedFilters(): WlcmAppliedFilters;
|
|
53
|
+
cacheValues(): void;
|
|
54
|
+
restoreCachedValues(): void;
|
|
55
|
+
get size(): number;
|
|
56
|
+
private handleFiltersListChange;
|
|
57
|
+
private handleSizeChange;
|
|
58
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersGroup, never>;
|
|
59
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmFiltersGroup, never, never, {}, {}, ["filters"], never, true, never>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
declare const WLCM_FILTER: InjectionToken<WlcmFilter>;
|
|
63
|
+
|
|
64
|
+
declare class FilterDirective {
|
|
65
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterDirective, never>;
|
|
66
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FilterDirective, "[wlcmFilter]", never, {}, {}, never, never, true, never>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
declare class FiltersGroupComponent extends WlcmFiltersGroup {
|
|
70
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FiltersGroupComponent, never>;
|
|
71
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FiltersGroupComponent, "wlcm-filters-group", never, {}, {}, never, ["[wlcmFilter]"], true, never>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
declare class WlcmFiltersModule {
|
|
75
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersModule, never>;
|
|
76
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmFiltersModule, never, [typeof i1.CommonModule, typeof FiltersGroupComponent, typeof FilterDirective], [typeof FiltersGroupComponent, typeof FilterDirective]>;
|
|
77
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<WlcmFiltersModule>;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { FilterDirective, FiltersGroupComponent, WLCM_FILTER, WlcmArrayFilter, WlcmFilter, WlcmFiltersGroup, WlcmFiltersModule };
|
|
81
|
+
export type { WlcmAppliedFilters };
|