@wlcm/angular 19.2.5 → 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.
Files changed (217) hide show
  1. package/README.md +37 -0
  2. package/button/fesm2022/wlcm-angular-button.mjs +25 -31
  3. package/button/fesm2022/wlcm-angular-button.mjs.map +1 -1
  4. package/button/package.json +25 -0
  5. package/button/types/wlcm-angular-button.d.ts +28 -0
  6. package/core/fesm2022/wlcm-angular-core.mjs +76 -92
  7. package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
  8. package/core/package.json +26 -0
  9. package/core/types/wlcm-angular-core.d.ts +102 -0
  10. package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +341 -497
  11. package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
  12. package/datepicker/package.json +33 -0
  13. package/datepicker/types/wlcm-angular-datepicker.d.ts +285 -0
  14. package/filters/fesm2022/wlcm-angular-filters.mjs +32 -38
  15. package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -1
  16. package/filters/package.json +25 -0
  17. package/filters/types/wlcm-angular-filters.d.ts +81 -0
  18. package/forms/fesm2022/wlcm-angular-forms.mjs +378 -405
  19. package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
  20. package/forms/package.json +31 -0
  21. package/forms/types/wlcm-angular-forms.d.ts +365 -0
  22. package/package.json +27 -46
  23. package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +66 -84
  24. package/phone-input/fesm2022/wlcm-angular-phone-input.mjs.map +1 -1
  25. package/phone-input/package.json +32 -0
  26. package/phone-input/types/wlcm-angular-phone-input.d.ts +81 -0
  27. package/search-field/fesm2022/wlcm-angular-search-field.mjs +25 -30
  28. package/search-field/fesm2022/wlcm-angular-search-field.mjs.map +1 -1
  29. package/search-field/package.json +28 -0
  30. package/search-field/types/wlcm-angular-search-field.d.ts +24 -0
  31. package/stepper/fesm2022/wlcm-angular-stepper.mjs +171 -294
  32. package/stepper/fesm2022/wlcm-angular-stepper.mjs.map +1 -1
  33. package/stepper/package.json +24 -0
  34. package/stepper/types/wlcm-angular-stepper.d.ts +114 -0
  35. package/styles/components/button/index.scss +25 -82
  36. package/styles/components/calendar/_calendar-header.scss +3 -6
  37. package/styles/components/calendar/_calendar.scss +10 -13
  38. package/styles/components/common/index.scss +4 -7
  39. package/styles/components/datepicker/_datepicker-input-container.scss +0 -3
  40. package/styles/components/datepicker/_datepicker-panel.scss +2 -5
  41. package/styles/components/datepicker/_datepicker-trigger.scss +0 -3
  42. package/styles/components/datepicker/date-range-picker/_date-range-picker-body.scss +10 -5
  43. package/styles/components/datepicker/date-range-picker/_date-range-picker-input.scss +4 -7
  44. package/styles/components/datepicker/date-range-picker/_date-range-picker-panel.scss +2 -5
  45. package/styles/components/forms/_autocomplete.scss +0 -3
  46. package/styles/components/forms/_checkbox-group.scss +0 -3
  47. package/styles/components/forms/_checkbox.scss +6 -8
  48. package/styles/components/forms/_error.scss +2 -13
  49. package/styles/components/forms/_form-field.scss +9 -10
  50. package/styles/components/forms/_label.scss +2 -11
  51. package/styles/components/forms/_radio.scss +13 -12
  52. package/styles/components/forms/_select.scss +5 -8
  53. package/styles/components/forms/partials/_dropdown-panel.scss +4 -6
  54. package/styles/components/loader/_loader.scss +5 -9
  55. package/styles/components/phone-input/_country-code-select.scss +0 -5
  56. package/styles/components/phone-input/_phone-input-container.scss +1 -6
  57. package/styles/components/search-field/index.scss +0 -4
  58. package/styles/components/stepper/_step-header.scss +8 -11
  59. package/styles/components/stepper/_step.scss +0 -5
  60. package/styles/components/stepper/_stepper-header.scss +0 -5
  61. package/styles/components/stepper/_stepper.scss +0 -4
  62. package/styles/components/table/_table-head-data.scss +6 -9
  63. package/styles/components/table/_table-head.scss +0 -5
  64. package/styles/components/table/_table-row-data.scss +2 -7
  65. package/styles/components/table/_table-row.scss +0 -5
  66. package/styles/components/table/_table.scss +0 -5
  67. package/styles/core/_all-theme.scss +8 -3
  68. package/styles/core/_tokens.scss +41 -0
  69. package/styles/core/_utils.scss +11 -44
  70. package/styles/wlcm.scss +1 -3
  71. package/table/fesm2022/wlcm-angular-table.mjs +130 -160
  72. package/table/fesm2022/wlcm-angular-table.mjs.map +1 -1
  73. package/table/package.json +27 -0
  74. package/table/types/wlcm-angular-table.d.ts +115 -0
  75. package/button/index.d.ts +0 -2
  76. package/button/lib/button.module.d.ts +0 -7
  77. package/button/lib/components/button/button.component.d.ts +0 -19
  78. package/button/lib/models/button.models.d.ts +0 -4
  79. package/core/index.d.ts +0 -11
  80. package/core/lib/components/default-loader/default-loader.component.d.ts +0 -5
  81. package/core/lib/components/icons/calendar-icon/calendar-icon.component.d.ts +0 -5
  82. package/core/lib/components/icons/chevron-down-icon/chevron-down-icon.component.d.ts +0 -5
  83. package/core/lib/components/icons/close-icon/close-icon.component.d.ts +0 -5
  84. package/core/lib/components/icons/search-icon/search-icon.component.d.ts +0 -5
  85. package/core/lib/components/loader/loader.component.d.ts +0 -11
  86. package/core/lib/constants/_index.d.ts +0 -2
  87. package/core/lib/constants/http.constants.d.ts +0 -2
  88. package/core/lib/constants/icon.contants.d.ts +0 -4
  89. package/core/lib/constants/loader.constants.d.ts +0 -2
  90. package/core/lib/directives/_index.d.ts +0 -1
  91. package/core/lib/directives/icon.directive.d.ts +0 -15
  92. package/core/lib/models/_index.d.ts +0 -2
  93. package/core/lib/models/icon.models.d.ts +0 -9
  94. package/core/lib/models/option.models.d.ts +0 -14
  95. package/core/lib/services/scroll-detection.api.d.ts +0 -10
  96. package/core/lib/utils/paginated-data-emulator.utils.d.ts +0 -9
  97. package/core/lib/utils/stream.utils.d.ts +0 -6
  98. package/datepicker/index.d.ts +0 -17
  99. package/datepicker/lib/components/calendar-header/calendar-header.component.d.ts +0 -24
  100. package/datepicker/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.d.ts +0 -24
  101. package/datepicker/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.d.ts +0 -8
  102. package/datepicker/lib/components/range/date-range-picker-input/date-range-picker-input.component.d.ts +0 -36
  103. package/datepicker/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.d.ts +0 -35
  104. package/datepicker/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.d.ts +0 -27
  105. package/datepicker/lib/components/single/datepicker-input-container/datepicker-input-container.component.d.ts +0 -30
  106. package/datepicker/lib/components/single/datepicker-panel/datepicker-panel.component.d.ts +0 -17
  107. package/datepicker/lib/constants/datepicker.constants.d.ts +0 -7
  108. package/datepicker/lib/constants/range/date-range-picker.constants.d.ts +0 -4
  109. package/datepicker/lib/constants/range/date-range-selection-model.constants.d.ts +0 -4
  110. package/datepicker/lib/constants/range/date-range-trigger-selection-model.constants.d.ts +0 -4
  111. package/datepicker/lib/datepicker.module.d.ts +0 -12
  112. package/datepicker/lib/directives/calendar.directive.d.ts +0 -5
  113. package/datepicker/lib/directives/datepicker-input.base.d.ts +0 -33
  114. package/datepicker/lib/directives/datepicker-trigger.base.d.ts +0 -33
  115. package/datepicker/lib/directives/ragne/date-range-picker-input-end.directive.d.ts +0 -20
  116. package/datepicker/lib/directives/ragne/date-range-picker-input-start.directive.d.ts +0 -20
  117. package/datepicker/lib/directives/ragne/date-range-picker-input.base.d.ts +0 -23
  118. package/datepicker/lib/directives/ragne/left-calendar.directive.d.ts +0 -17
  119. package/datepicker/lib/directives/ragne/right-calendar.directive.d.ts +0 -20
  120. package/datepicker/lib/directives/single/datepicker-input.directive.d.ts +0 -21
  121. package/datepicker/lib/models/date-picker.models.d.ts +0 -18
  122. package/datepicker/lib/models/range/data-range-calendar.models.d.ts +0 -25
  123. package/datepicker/lib/models/range/date-range-picker.models.d.ts +0 -18
  124. package/datepicker/lib/models/range/date-range-validation.models.d.ts +0 -3
  125. package/datepicker/lib/utils/range/date-range-input.validators.d.ts +0 -2
  126. package/datepicker/lib/utils/range/date-range-picker-errors.d.ts +0 -4
  127. package/filters/index.d.ts +0 -5
  128. package/filters/lib/components/filters-group/filters-group.component.d.ts +0 -6
  129. package/filters/lib/constants/filter.constants.d.ts +0 -3
  130. package/filters/lib/constants/index.d.ts +0 -1
  131. package/filters/lib/directives/filter.directive.d.ts +0 -5
  132. package/filters/lib/directives/index.d.ts +0 -1
  133. package/filters/lib/filters.module.d.ts +0 -9
  134. package/filters/lib/models/array-filter.models.d.ts +0 -19
  135. package/filters/lib/models/filter.models.d.ts +0 -19
  136. package/filters/lib/models/filters-group.models.d.ts +0 -22
  137. package/filters/lib/models/index.d.ts +0 -3
  138. package/forms/index.d.ts +0 -12
  139. package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +0 -76
  140. package/forms/lib/forms/components/checkbox/checkbox.component.d.ts +0 -28
  141. package/forms/lib/forms/components/checkbox-group/checkbox-group.component.d.ts +0 -25
  142. package/forms/lib/forms/components/error/error.component.d.ts +0 -5
  143. package/forms/lib/forms/components/form-field/form-field.component.d.ts +0 -34
  144. package/forms/lib/forms/components/index.d.ts +0 -8
  145. package/forms/lib/forms/components/label/label.component.d.ts +0 -7
  146. package/forms/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.d.ts +0 -10
  147. package/forms/lib/forms/components/partials/index.d.ts +0 -1
  148. package/forms/lib/forms/components/select/select.component.d.ts +0 -90
  149. package/forms/lib/forms/constants/form-elements.constants.d.ts +0 -6
  150. package/forms/lib/forms/constants/form-errors.constants.d.ts +0 -4
  151. package/forms/lib/forms/constants/form-field.constants.d.ts +0 -1
  152. package/forms/lib/forms/constants/form-state-handlers.constants.d.ts +0 -6
  153. package/forms/lib/forms/constants/index.d.ts +0 -5
  154. package/forms/lib/forms/constants/select.constants.d.ts +0 -3
  155. package/forms/lib/forms/directives/autocomplete.directive.d.ts +0 -16
  156. package/forms/lib/forms/directives/form-field-custom-container.directive.d.ts +0 -8
  157. package/forms/lib/forms/directives/form-field-hint.directive.d.ts +0 -5
  158. package/forms/lib/forms/directives/form-field-prefix.directive.d.ts +0 -6
  159. package/forms/lib/forms/directives/form-field-suffix.directive.d.ts +0 -5
  160. package/forms/lib/forms/directives/input.directive.d.ts +0 -14
  161. package/forms/lib/forms/directives/select-input-binder.directive.d.ts +0 -5
  162. package/forms/lib/forms/forms.module.d.ts +0 -19
  163. package/forms/lib/forms/models/_index.d.ts +0 -5
  164. package/forms/lib/forms/models/autocomplete.models.d.ts +0 -9
  165. package/forms/lib/forms/models/form-errors.models.d.ts +0 -5
  166. package/forms/lib/forms/models/form.models.d.ts +0 -11
  167. package/forms/lib/forms/models/input.models.d.ts +0 -13
  168. package/forms/lib/forms/models/select.models.d.ts +0 -9
  169. package/forms/lib/forms/pipes/errors-mapper.pipe.d.ts +0 -17
  170. package/forms/lib/forms/services/form-state-handler.service.d.ts +0 -10
  171. package/forms/lib/forms/services/index.d.ts +0 -2
  172. package/forms/lib/forms/services/places.api.d.ts +0 -11
  173. package/phone-input/index.d.ts +0 -4
  174. package/phone-input/lib/components/country-code-select/country-code-select.component.d.ts +0 -15
  175. package/phone-input/lib/components/phone-input-container/phone-input-container.component.d.ts +0 -30
  176. package/phone-input/lib/constants/country-code-options.constants.d.ts +0 -3
  177. package/phone-input/lib/constants/phone-adapter.constants.d.ts +0 -3
  178. package/phone-input/lib/directives/phone-input.directive.d.ts +0 -36
  179. package/phone-input/lib/models/country-code.models.d.ts +0 -7
  180. package/phone-input/lib/models/phone-adapter.models.d.ts +0 -10
  181. package/phone-input/lib/models/phone.models.d.ts +0 -3
  182. package/phone-input/lib/phone-input.module.d.ts +0 -9
  183. package/phone-input/lib/pipes/phone-code.pipe.d.ts +0 -8
  184. package/search-field/index.d.ts +0 -2
  185. package/search-field/lib/components/search-field/search-field.component.d.ts +0 -16
  186. package/search-field/lib/search-field.module.d.ts +0 -8
  187. package/stepper/index.d.ts +0 -10
  188. package/stepper/lib/components/step/step.component.d.ts +0 -16
  189. package/stepper/lib/components/step-header/step-header.component.d.ts +0 -20
  190. package/stepper/lib/components/stepper/stepper.component.d.ts +0 -6
  191. package/stepper/lib/components/stepper-header/stepper-header.component.d.ts +0 -8
  192. package/stepper/lib/constants/step.constants.d.ts +0 -4
  193. package/stepper/lib/constants/stepper.stepper.d.ts +0 -3
  194. package/stepper/lib/directives/load-on-active-step.directive.d.ts +0 -13
  195. package/stepper/lib/models/step.models.d.ts +0 -43
  196. package/stepper/lib/models/stepper.models.d.ts +0 -44
  197. package/stepper/lib/stepper.module.d.ts +0 -12
  198. package/styles/core/_core.scss +0 -10
  199. package/table/index.d.ts +0 -9
  200. package/table/lib/components/table/table.component.d.ts +0 -24
  201. package/table/lib/components/table-head/table-head.component.d.ts +0 -8
  202. package/table/lib/components/table-head-actions/table-head-actions.component.d.ts +0 -12
  203. package/table/lib/components/table-head-data/table-head-data.component.d.ts +0 -5
  204. package/table/lib/components/table-row/table-row.component.d.ts +0 -23
  205. package/table/lib/components/table-row-actions/table-row-actions.component.d.ts +0 -5
  206. package/table/lib/components/table-row-data/table-row-data.component.d.ts +0 -5
  207. package/table/lib/components/table-row-spacer/table-row-spacer.component.d.ts +0 -5
  208. package/table/lib/constants/table-row.constants.d.ts +0 -3
  209. package/table/lib/constants/table.constants.d.ts +0 -3
  210. package/table/lib/directives/scrollable-table-container.directive.d.ts +0 -13
  211. package/table/lib/models/table-config-manager.models.d.ts +0 -12
  212. package/table/lib/models/table-row.models.d.ts +0 -10
  213. package/table/lib/models/table-selection-model.d.ts +0 -25
  214. package/table/lib/models/table.models.d.ts +0 -4
  215. package/table/lib/pipes/table-row-injector.pipe.d.ts +0 -9
  216. package/table/lib/table.module.d.ts +0 -13
  217. 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, startWith, switchMap, combineLatest, map } from 'rxjs';
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, Directive, ContentChildren, forwardRef, Component, NgModule } from '@angular/core';
5
- import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
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
- let WlcmFiltersGroup = class WlcmFiltersGroup {
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.changes
149
- .pipe(untilDestroyed(this))
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: "19.1.4", ngImport: i0, type: WlcmFiltersGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
161
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: WlcmFiltersGroup, isStandalone: true, queries: [{ propertyName: "filters", predicate: WLCM_FILTER, descendants: true }], ngImport: i0 }); }
162
- };
163
- WlcmFiltersGroup = __decorate([
164
- UntilDestroy()
165
- ], WlcmFiltersGroup);
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", 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: "19.1.4", ngImport: i0, type: FilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
175
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: FilterDirective, isStandalone: true, selector: "[wlcmFilter]", ngImport: i0 }); }
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: "19.1.4", ngImport: i0, type: FilterDirective, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FilterDirective, decorators: [{
178
172
  type: Directive,
179
- args: [{ selector: '[wlcmFilter]', standalone: true }]
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: "19.1.4", ngImport: i0, type: FiltersGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
184
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
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: "19.1.4", ngImport: i0, type: FiltersGroupComponent, decorators: [{
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', standalone: true, imports: [CommonModule], host: { class: 'wlcm-filters-group' }, providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }], template: "<ng-content select=\"[wlcmFilter]\"></ng-content>\n", styles: [":host{display:block}\n"] }]
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: "19.1.4", ngImport: i0, type: WlcmFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
195
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, FiltersGroupComponent, FilterDirective], exports: [FiltersGroupComponent, FilterDirective] }); }
196
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WlcmFiltersModule, imports: [CommonModule, publicComponents] }); }
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: "19.1.4", ngImport: i0, type: WlcmFiltersModule, decorators: [{
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 };