@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.
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 +329 -500
  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 +375 -401
  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 +67 -85
  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 +0 -3
  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 -18
  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 -37
  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 -5
  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 -19
  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
@@ -1 +1 @@
1
- {"version":3,"file":"wlcm-angular-forms.mjs","sources":["../../../../modules/forms/src/lib/forms/components/error/error.component.ts","../../../../modules/forms/src/lib/forms/components/error/error.component.html","../../../../modules/forms/src/lib/forms/services/form-state-handler.service.ts","../../../../modules/forms/src/lib/forms/constants/form-errors.constants.ts","../../../../modules/forms/src/lib/forms/constants/form-elements.constants.ts","../../../../modules/forms/src/lib/forms/constants/select.constants.ts","../../../../modules/forms/src/lib/forms/constants/index.ts","../../../../modules/forms/src/lib/forms/services/places.api.ts","../../../../modules/forms/src/lib/forms/constants/form-state-handlers.constants.ts","../../../../modules/forms/src/lib/forms/directives/form-field-custom-container.directive.ts","../../../../modules/forms/src/lib/forms/pipes/errors-mapper.pipe.ts","../../../../modules/forms/src/lib/forms/directives/form-field-prefix.directive.ts","../../../../modules/forms/src/lib/forms/directives/form-field-suffix.directive.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.html","../../../../modules/forms/src/lib/forms/constants/form-field.constants.ts","../../../../modules/forms/src/lib/forms/directives/input.directive.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.html","../../../../modules/forms/src/lib/forms/directives/autocomplete.directive.ts","../../../../modules/forms/src/lib/forms/models/autocomplete.models.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.html","../../../../modules/forms/src/lib/forms/components/checkbox/checkbox.component.ts","../../../../modules/forms/src/lib/forms/components/checkbox/checkbox.component.html","../../../../modules/forms/src/lib/forms/components/checkbox-group/checkbox-group.component.ts","../../../../modules/forms/src/lib/forms/components/checkbox-group/checkbox-group.component.html","../../../../modules/forms/src/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.ts","../../../../modules/forms/src/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.html","../../../../modules/forms/src/lib/forms/directives/select-input-binder.directive.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.html","../../../../modules/forms/src/lib/forms/directives/form-field-hint.directive.ts","../../../../modules/forms/src/lib/forms/forms.module.ts","../../../../modules/forms/src/wlcm-angular-forms.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-error',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-error' },\n templateUrl: './error.component.html',\n styleUrls: ['./error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmErrorComponent {}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class FormStateHandlerService implements WlcmForm, WlcmFormControl {\n private readonly _stateChanges$: Subject<void> = new Subject();\n\n readonly stateChanges$: Observable<void> = this._stateChanges$.asObservable();\n\n updateFormState(): void {\n this._stateChanges$.next();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFormErrors } from '../models/form-errors.models';\n\nexport const WLCM_ERRORS: InjectionToken<WlcmFormErrors> = new InjectionToken('WLCM_ERRORS');\n\nexport const WLCM_PRIORITY_ERRORS: InjectionToken<Set<string>> = new InjectionToken('WLCM_PRIORITY_ERRORS', {\n providedIn: 'root',\n factory: () => new Set(),\n});\n","import { InjectionToken } from '@angular/core';\nimport { WlcmInputBinder, WlcmInputGetter } from '../models/input.models';\nimport { WlcmFormField } from '../models/form.models';\n\nexport const WLCM_INPUT: InjectionToken<WlcmInputGetter> = new InjectionToken('WLCM_INPUT');\n\nexport const WLCM_INPUT_BINDER: InjectionToken<WlcmInputBinder> = new InjectionToken('WLCM_INPUT_BINDER');\n\nexport const WLCM_FORM_FIELD: InjectionToken<WlcmFormField> = new InjectionToken('WLCM_FORM_FIELD');\n","import { InjectionToken } from '@angular/core';\nimport { WlcmSelectConfig } from '../models/select.models';\n\nexport const WLCM_SELECT_CONFIG: InjectionToken<WlcmSelectConfig> = new InjectionToken('WLCM_SELECT_CONFIG');\n","export * from './form-errors.constants';\nexport * from './form-elements.constants';\nexport * from './form-state-handlers.constants';\nexport * from './select.constants';\n\nexport const WLCM_MAPS_API_ERROR: string = `Google Maps JavaScript API not loaded. Please ensure the following script is included in your HTML: <script src=\"https://maps.googleapis.com/maps/api/js?key=[apiKey]&libraries=places\"></script>`;\n","import { Injectable } from '@angular/core';\nimport { WlcmAutocompleteOption } from '@wlcm/angular/core';\nimport { WLCM_MAPS_API_ERROR } from '../constants';\nimport { Observable, Subscriber } from 'rxjs';\nimport { WlcmPaginatedData } from '@wlcm/common';\n\nconst DEFAULT_PAGINATED_DATA: WlcmPaginatedData<WlcmAutocompleteOption> = {\n totalPages: 1,\n totalItems: 1,\n currPage: 1,\n data: [],\n};\n\n@Injectable()\nclass WlcmDefaultPlacesApi implements WlcmPlacesApi {\n private _autocompleteService = new google.maps.places.AutocompleteService();\n\n private _placesService = new google.maps.places.PlacesService(document.createElement('div'));\n\n constructor() {\n if (typeof google === 'undefined') {\n throw new Error(WLCM_MAPS_API_ERROR);\n }\n }\n\n getPlacesPaginated(query: string): Observable<WlcmPaginatedData<WlcmAutocompleteOption>> {\n return new Observable((subscriber: Subscriber<WlcmPaginatedData<WlcmAutocompleteOption>>) => {\n if (query.length === 0) {\n subscriber.next({ ...DEFAULT_PAGINATED_DATA });\n\n return subscriber.complete();\n }\n\n const request: google.maps.places.AutocompletionRequest = { input: query };\n\n this._autocompleteService.getPlacePredictions(request, (predictions, status) => {\n const result: WlcmPaginatedData<WlcmAutocompleteOption> = { ...DEFAULT_PAGINATED_DATA };\n\n if (status === google.maps.places.PlacesServiceStatus.OK) {\n result.data = predictions!.map((prediction: google.maps.places.AutocompletePrediction) => {\n return new WlcmAutocompleteOption(\n prediction.place_id,\n prediction.description,\n prediction.description,\n prediction,\n );\n });\n }\n\n subscriber.next(result);\n\n subscriber.complete();\n });\n });\n }\n\n get placesService(): google.maps.places.PlacesService {\n return this._placesService;\n }\n\n get autocompleteService(): google.maps.places.AutocompleteService {\n return this._autocompleteService;\n }\n}\n\n@Injectable({\n providedIn: 'root',\n useClass: WlcmDefaultPlacesApi,\n})\nexport abstract class WlcmPlacesApi {\n abstract getPlacesPaginated(query: string): Observable<WlcmPaginatedData<WlcmAutocompleteOption>>;\n\n abstract get placesService(): google.maps.places.PlacesService;\n\n abstract get autocompleteService(): google.maps.places.AutocompleteService;\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { FormStateHandlerService } from '../services';\n\nexport const WLCM_FORM: InjectionToken<WlcmForm> = new InjectionToken(\n 'WLCM_FORM'\n);\n\nexport const WLCM_FORM_PROVIDER: Provider = {\n provide: WLCM_FORM,\n useClass: FormStateHandlerService,\n};\n\nexport const WLCM_FORM_CONTROL: InjectionToken<WlcmFormControl> =\n new InjectionToken('WLCM_FORM_CONTROL');\n\nexport const WLCM_FORM_CONTROL_PROVIDER: Provider = {\n provide: WLCM_FORM_CONTROL,\n useFactory: () => inject(WLCM_FORM, { optional: true, skipSelf: true }),\n};\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldCustomContainer]',\n standalone: true,\n})\nexport class WlcmFormFieldCustomContainerDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import { ChangeDetectorRef, Inject, Pipe, PipeTransform } from '@angular/core';\nimport { FormControl, ValidationErrors } from '@angular/forms';\nimport { WlcmFormErrorFn, WlcmFormErrors } from '../models/form-errors.models';\nimport {\n WLCM_ERRORS,\n WLCM_PRIORITY_ERRORS,\n} from '../constants/form-errors.constants';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Pipe({\n name: 'errorsMapper',\n standalone: true,\n pure: false,\n})\nexport class ErrorsMapperPipe implements PipeTransform {\n private destroy$: Subject<void> = new Subject();\n\n currentError: string | null = null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(WLCM_ERRORS) private errors: WlcmFormErrors,\n @Inject(WLCM_PRIORITY_ERRORS) private priorityErrors: Set<string>\n ) {}\n\n transform(control: FormControl): string | null {\n this.handleStatusChanges(control);\n\n this.retrieveFirstError(control.errors);\n\n return this.currentError;\n }\n\n private retrieveFirstError(errors: ValidationErrors | null): void {\n if (!errors) return;\n\n Object.keys(errors).forEach(\n (key: string) => !errors[key] && delete errors[key]\n );\n\n const errorsTypes: string[] = Object.getOwnPropertyNames(errors);\n\n const priorityType: string | undefined = errorsTypes.find((type: string) =>\n this.priorityErrors.has(type)\n );\n\n const outputError: string = priorityType || errorsTypes[0];\n\n if (outputError) {\n this.currentError = (this.errors[outputError] as WlcmFormErrorFn)?.(\n errors[outputError]\n );\n }\n }\n\n private handleStatusChanges(control: FormControl): void {\n this.destroy$.next();\n\n control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.retrieveFirstError(control.errors);\n\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldPrefix]',\n standalone: true,\n})\nexport class WlcmFormFieldPrefixDirective {\n @HostListener('click', ['$event']) handlerClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldSuffix]',\n standalone: true,\n})\nexport class WlcmFormFieldSuffixDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { Validators, AbstractControl, ControlContainer, NgControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { WlcmErrorComponent } from '../error/error.component';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants/form-state-handlers.constants';\nimport { WlcmFormFieldCustomContainerDirective } from '../../directives/form-field-custom-container.directive';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ErrorsMapperPipe } from '../../pipes/errors-mapper.pipe';\nimport { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants/form-elements.constants';\nimport { WlcmFormFieldPrefixDirective } from '../../directives/form-field-prefix.directive';\nimport { WlcmFormFieldInput, WlcmInputGetter } from '../../models/input.models';\nimport { WlcmFormControl } from '../../models/form.models';\nimport { Observable, merge } from 'rxjs';\nimport { WlcmFormFieldSuffixDirective } from '../../directives/form-field-suffix.directive';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-form-field',\n standalone: true,\n imports: [CommonModule, WlcmErrorComponent, ErrorsMapperPipe],\n host: { class: 'wlcm-form-field' },\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },\n ],\n})\nexport class WlcmFormFieldComponent implements AfterViewInit {\n @Input() displayErrorMessages: boolean = true;\n\n @ContentChild(NgControl, { descendants: true }) private ngControl?: NgControl;\n\n @ContentChild(ControlContainer, { descendants: true }) private controlContainer?: ControlContainer;\n\n @ContentChild(WLCM_INPUT) private _inputRef?: WlcmInputGetter;\n\n @ContentChild(WlcmFormFieldPrefixDirective) protected prefix?: WlcmFormFieldPrefixDirective;\n\n @ContentChild(WlcmFormFieldSuffixDirective) protected suffix?: WlcmFormFieldSuffixDirective;\n\n @ContentChild(WlcmFormFieldCustomContainerDirective)\n protected customContainer?: WlcmFormFieldCustomContainerDirective;\n\n @ViewChild('defaultContainer')\n protected defaultContainer?: ElementRef<HTMLElement>;\n\n @HostBinding('class.wlcm-field-focused') get isFocused() {\n return this.inputRef?.isFocused() ?? false;\n }\n\n @HostBinding('class.wlcm-field-required') get isRequired() {\n return this.control?.hasValidator(Validators.required);\n }\n\n @HostBinding('class.wlcm-field-invalid') get isInvalid() {\n return this.control?.invalid;\n }\n\n @HostBinding('class.wlcm-field-touched') get isTouched() {\n return this.control?.touched;\n }\n\n @HostBinding('class.wlcm-field-disabled') get isDisabled() {\n return this.control?.disabled;\n }\n\n constructor(\n @Optional()\n @Inject(WLCM_FORM_CONTROL)\n private parentFormMember: WlcmFormControl,\n private changeDetectorRef: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.inputRef && !this.customContainer) {\n throw new Error('Input element should be bound to the wlcmInput directive.');\n }\n\n this.handleStateChanges();\n }\n\n focus(): void {\n if (this.isFocused || this.isDisabled) return;\n\n this.inputRef?.focus();\n }\n\n get control(): AbstractControl | null {\n return (this.controlContainer?.control || this.ngControl?.control) ?? null;\n }\n\n get inputContainer(): ElementRef<HTMLElement> {\n return this.customContainer?.elementRef || (this.defaultContainer as ElementRef<HTMLElement>);\n }\n\n private handleStateChanges(): void {\n const events: Observable<unknown>[] = this.controlEvents;\n\n if (this.parentFormMember) {\n events.push(this.parentFormMember.stateChanges$);\n }\n\n merge(...events)\n .pipe(untilDestroyed(this))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n private get inputRef(): WlcmFormFieldInput | undefined {\n return this._inputRef?.get();\n }\n\n private get controlEvents(): Observable<unknown>[] {\n const events: Observable<unknown>[] = [];\n\n if (this.inputRef) {\n events.push(this.inputRef.focus$, this.inputRef.blur$);\n }\n\n if (this.control) {\n events.push(this.control.statusChanges);\n }\n\n return events;\n }\n}\n","<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <div class=\"wlcm-field-prefix\" [class.contains-children]=\"prefix\">\n <ng-content select=\"[wlcmFormFieldPrefix]\"></ng-content>\n </div>\n\n <ng-content select=\"[wlcmInput]\"></ng-content>\n\n <div class=\"wlcm-field-suffix\" [class.contains-children]=\"suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control && displayErrorMessages\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n","export const WLCM_FORM_FIELD_INPUT_CLASS: string = 'wlcm-form-field-input';\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { WLCM_INPUT, WLCM_INPUT_BINDER } from '../constants/form-elements.constants';\nimport { WlcmFormFieldInput, WlcmInputBinder } from '../models/input.models';\nimport { WLCM_FORM_FIELD_INPUT_CLASS } from '../constants/form-field.constants';\nimport { Observable, fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[wlcmInput]',\n providers: [\n {\n provide: WLCM_INPUT,\n useFactory: () => {\n const input: WlcmInputDirective = inject(WlcmInputDirective, { self: true });\n\n const binder: WlcmInputBinder | null = inject(WLCM_INPUT_BINDER, { self: true, optional: true });\n\n return { get: () => (binder ? binder.bind() : input) };\n },\n },\n ],\n standalone: true,\n})\nexport class WlcmInputDirective implements WlcmFormFieldInput {\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n const element: HTMLElement = _elementRef.nativeElement;\n\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n element.classList.add(WLCM_FORM_FIELD_INPUT_CLASS);\n }\n }\n\n focus = (): void => this._elementRef.nativeElement.focus();\n\n isFocused = (): boolean => this._elementRef.nativeElement === document.activeElement;\n\n focus$: Observable<unknown> = fromEvent(this._elementRef.nativeElement, 'focus');\n\n blur$: Observable<unknown> = fromEvent(this._elementRef.nativeElement, 'blur');\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-label',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-label' },\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmLabelComponent {\n @Input() required: boolean = false;\n\n @HostBinding('class.required') get isRequired(): boolean {\n return this.required;\n }\n}\n","<span class=\"wlcm-label-asterisk\">*</span>\n\n<ng-content></ng-content>\n","import { Directive, EventEmitter, Host, NgZone, Optional, Output } from '@angular/core';\nimport { asyncScheduler, fromEvent, observeOn, takeUntil } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmAutocomplete]',\n standalone: true,\n})\nexport class AutocompleteDirective {\n @Output() panelScrolled: EventEmitter<void> = new EventEmitter();\n\n private _scrollHeight: number = 0;\n\n private _scrollHeightChanged: boolean = false;\n\n constructor(\n private zone: NgZone,\n @Host() @Optional() private autocomplete: MatAutocomplete,\n ) {\n this.handleOpenEvent();\n }\n\n private handleOpenEvent(): void {\n this.autocomplete.opened\n .pipe(untilDestroyed(this))\n .pipe(observeOn(asyncScheduler))\n .subscribe(() => this.zone.runOutsideAngular(() => this.handleScrolling()));\n }\n\n private handleScrolling(): void {\n const panel: HTMLElement = this.autocomplete.panel.nativeElement;\n\n this.setScrollHscrollHeight(panel.scrollHeight);\n\n fromEvent(panel, 'scroll')\n .pipe(takeUntil(this.autocomplete.closed))\n .subscribe(() => {\n if (this._scrollHeight !== panel.scrollHeight) {\n this.setScrollHscrollHeight(panel.scrollHeight);\n }\n\n if (panel.scrollHeight * 0.8 <= panel.scrollTop + panel.clientHeight && this._scrollHeightChanged) {\n this.zone.run(() => this.panelScrolled.emit());\n\n this._scrollHeightChanged = false;\n }\n });\n }\n\n private setScrollHscrollHeight(height: number): void {\n this._scrollHeight = height;\n\n this._scrollHeightChanged = true;\n }\n}\n","import { Directive } from '@angular/core';\nimport { WlcmAutocompleteOption } from '@wlcm/angular/core';\nimport { Observable } from 'rxjs';\n\nexport type WlcmAutocompleteValue = WlcmAutocompleteOption | string | null;\n\n@Directive()\nexport abstract class WlcmAutocomplete {\n abstract loading$: Observable<boolean>;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n Inject,\n inject,\n Injector,\n Input,\n input,\n InputSignal,\n OnInit,\n output,\n OutputEmitterRef,\n runInInjectionContext,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { WlcmInputDirective } from '../../directives/input.directive';\nimport {\n MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\n MatAutocomplete,\n MatAutocompleteModule,\n MatAutocompleteOrigin,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n BehaviorSubject,\n concatMap,\n EMPTY,\n filter,\n first,\n fromEvent,\n map,\n merge,\n Observable,\n Subject,\n switchMap,\n take,\n tap,\n timer,\n} from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { AutocompleteDirective } from '../../directives/autocomplete.directive';\nimport { DEFAULT_QUERY_PARAMS, WlcmAutocompleteOption, WlcmSelectOptionFormat } from '@wlcm/angular/core';\nimport { WLCM_FORM_FIELD, WLCM_INPUT, WLCM_INPUT_BINDER } from '../../constants';\nimport { WlcmAutocomplete, WlcmAutocompleteValue } from '../../models/autocomplete.models';\nimport { WlcmPaginatedData, WlcmQueryParams } from '@wlcm/common';\nimport { WlcmFormFieldInput } from '../../models/input.models';\nimport { WlcmFormField } from '../../models/form.models';\nimport { RxLet } from '@rx-angular/template/let';\nimport { cloneDeep } from 'lodash-es';\n\ntype Option = WlcmAutocompleteOption;\n\nconst PANEL_CLASS = 'wlcm-autocomplete-panel';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-autocomplete',\n exportAs: 'wlcmAutocomplete',\n host: { class: 'wlcm-autocomplete' },\n standalone: true,\n imports: [CommonModule, MatAutocompleteModule, AutocompleteDirective, ReactiveFormsModule, WlcmInputDirective, RxLet],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const autocomplete = inject(WlcmAutocompleteComponent, { self: true });\n\n return { bind: () => autocomplete };\n },\n },\n ],\n})\nexport class WlcmAutocompleteComponent\n extends WlcmAutocomplete\n implements OnInit, ControlValueAccessor, Validator, AfterViewInit, WlcmFormFieldInput\n{\n @Input() fetchPaginatedOptions!: (params: WlcmQueryParams) => Observable<WlcmPaginatedData<Option>>;\n\n @Input() label!: string;\n\n @Input() required = false;\n\n @Input() placeholder = '';\n\n @Input() optionTemplate?: TemplateRef<{ $implicit: WlcmAutocompleteOption }>;\n\n @Input({ transform: (params: WlcmQueryParams) => cloneDeep(params) }) queryParams: WlcmQueryParams = cloneDeep({\n ...DEFAULT_QUERY_PARAMS,\n limit: 15,\n });\n\n selectOptionFormat: InputSignal<WlcmSelectOptionFormat> = input<WlcmSelectOptionFormat>('ValueOnly');\n\n noResultsTemplate: InputSignal<TemplateRef<{ $implicit: WlcmAutocompleteValue; loading: boolean }> | undefined> =\n input();\n\n selected: OutputEmitterRef<WlcmAutocompleteValue> = output();\n\n readonly control: FormControl<WlcmAutocompleteValue> = new FormControl('');\n\n private readonly _loadMore$: Subject<void> = new Subject();\n\n private readonly _options$: BehaviorSubject<Option[]> = new BehaviorSubject<Option[]>([]);\n\n protected readonly options$: Observable<Option[]> = this._options$.asObservable();\n\n protected readonly closed$: Subject<void> = new Subject();\n\n private readonly _focusStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _blurStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n focus$: Observable<unknown> = this._focusStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n blur$: Observable<unknown> = this._blurStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n loading$: Observable<boolean> = this._loading$.asObservable();\n\n private _changed?: (value: WlcmAutocompleteValue) => void;\n\n private _touched?: () => void;\n\n private _onValidatorChange?: () => void;\n\n private adjustedValue$: BehaviorSubject<WlcmAutocompleteValue | null> =\n new BehaviorSubject<WlcmAutocompleteValue | null>(null);\n\n private _paginatedData: WlcmPaginatedData<Option> | null = null;\n\n private _reloadOptions$: Subject<void> = new Subject();\n\n private viewReady$: Subject<void> = new Subject();\n\n private _preferredOverlayOrigin!: MatAutocompleteOrigin;\n\n @ViewChild(WLCM_INPUT, { read: ElementRef }) public inputElement!: ElementRef<HTMLInputElement>;\n\n @ViewChild(MatAutocompleteTrigger) private autocompleteTrigger!: MatAutocompleteTrigger;\n\n @ViewChild(MatAutocomplete) private autocomplete!: MatAutocomplete;\n\n constructor(\n private injector: Injector,\n @Inject(WLCM_FORM_FIELD) private formField: WlcmFormField,\n ) {\n super();\n\n this.handleLoadMoreEvent();\n\n this.handleControlValueChanges();\n\n this.handleAdjustedValue();\n }\n\n ngOnInit(): void {\n this.loadOptions().pipe(first()).subscribe();\n }\n\n ngAfterViewInit(): void {\n this.viewReady$.next();\n\n this.autocompleteTrigger.connectedTo = runInInjectionContext(this.injector, () => {\n return new MatAutocompleteOrigin(this.formField.inputContainer);\n });\n\n this.attachFocusBlurListeners();\n }\n\n displayWith(value: Option | string): string {\n if (value instanceof Object) {\n return value.viewValue;\n }\n\n return value;\n }\n\n focus(): void {\n this.inputElement.nativeElement.focus();\n }\n\n isFocused(): boolean {\n return this.inputElement?.nativeElement === document.activeElement || this.autocomplete?.isOpen;\n }\n\n loadMore(): void {\n this._loadMore$.next();\n }\n\n writeValue(value: WlcmAutocompleteValue): void {\n const formattedValue: WlcmAutocompleteValue = this.prepareValueForPatch(value);\n\n this.control.setValue(formattedValue);\n }\n\n registerOnChange(callback: (value: WlcmAutocompleteValue) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n reloadOptions(): void {\n this._reloadOptions$.next();\n }\n\n blured(): void {\n if (!this.autocomplete.isOpen) this._touched?.();\n\n this.autocomplete.closed.pipe(take(1)).subscribe(() => this._touched?.());\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.control.value) {\n if (this.control.value instanceof Object) return null;\n\n return { ...control.errors, unselected: true, required: false };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n\n private prepareValueForPatch(value: WlcmAutocompleteValue): WlcmAutocompleteValue {\n if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {\n this.adjustedValue$.next(value.value);\n }\n\n return value;\n }\n\n private loadOptions(query = ''): Observable<WlcmPaginatedData<Option>> {\n this._loading$.next(true);\n\n this.queryParams = { ...this.queryParams, query, page: 1 };\n\n return this.fetchPaginatedOptions(this.queryParams).pipe(\n tap((paginatedData: WlcmPaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this._options$.next(paginatedData.data);\n\n this._loading$.next(false);\n }),\n );\n }\n\n private handleLoadMoreEvent(): void {\n this._loadMore$\n .pipe(\n concatMap(() => {\n if (this._paginatedData && this._paginatedData.currPage + 1 <= this._paginatedData.totalPages) {\n this.queryParams.page++;\n\n this._loading$.next(true);\n\n return this.fetchPaginatedOptions(this.queryParams).pipe(\n tap((paginatedData: WlcmPaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this._options$.next([...this._options$.value, ...paginatedData.data]);\n\n this._loading$.next(false);\n }),\n );\n }\n\n return EMPTY;\n }),\n )\n .subscribe();\n }\n\n private handleControlValueChanges(): void {\n merge(this.control.valueChanges, this._reloadOptions$.pipe(map(() => this.control.value)))\n .pipe(untilDestroyed(this))\n .pipe(\n filter((value: WlcmAutocompleteValue) => {\n let _value: WlcmAutocompleteValue = value ?? '';\n\n if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') _value = value.value;\n\n this._changed?.(_value);\n\n this.selected.emit(_value);\n\n return !(value instanceof Object);\n }),\n )\n .pipe(\n switchMap((value: WlcmAutocompleteValue) =>\n timer(200).pipe(switchMap(() => this.loadOptions(value as string))),\n ),\n )\n .subscribe();\n }\n\n private attachFocusBlurListeners(): void {\n const inputFocus: Observable<Event> = fromEvent(this.inputElement.nativeElement, 'focus');\n\n const inputBlur: Observable<Event> = fromEvent(this.inputElement.nativeElement, 'blur');\n\n const focusObservables: Observable<unknown>[] = [inputFocus, this.autocomplete.opened];\n\n const blurObservables: Observable<unknown>[] = [inputBlur, this.autocomplete.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(() => undefined)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));\n }\n\n private handleAdjustedValue(): void {\n this.viewReady$\n .pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))\n .subscribe((value: WlcmAutocompleteValue) => this._changed?.(value));\n }\n}\n","<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n>\n <ng-container *rxLet=\"$any(options$ | async); let options\">\n <mat-option\n *ngFor=\"let option of options\"\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate }\"\n [value]=\"option\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value, loading: loading$ | async }\n \"\n ></ng-container>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n defaultNoResultsTemplate;\n context: { $implicit: control.value, loading: loading$ | async }\n \"\n ></ng-container>\n }\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #defaultNoResultsTemplate let-loading=\"loading\">\n @if (loading) {\n Please wait...\n } @else {\n No results found\n }\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n InputSignal,\n Optional,\n Output,\n forwardRef,\n input,\n} from '@angular/core';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { WlcmFormControl } from '../../models/form.models';\nimport { CommonModule } from '@angular/common';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-checkbox',\n host: { class: 'wlcm-checkbox' },\n standalone: true,\n imports: [CommonModule, MatCheckboxModule, ReactiveFormsModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmCheckboxComponent), multi: true },\n ],\n})\nexport class WlcmCheckboxComponent implements ControlValueAccessor, Validator {\n value: InputSignal<string | undefined> = input();\n\n @Output() changed: EventEmitter<boolean> = new EventEmitter();\n\n private _changed?: (value: boolean) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n protected control: FormControl = new FormControl(false);\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(WLCM_FORM_CONTROL) private parentFormMember: WlcmFormControl,\n ) {\n if (this.parentFormMember) {\n this.handleStateChange();\n }\n }\n\n handleChange(value: MatCheckboxChange): void {\n this.changed.emit(value.checked);\n\n this._changed?.(value.checked);\n\n this._touched?.();\n }\n\n writeValue(value: boolean): void {\n this.control.setValue(value);\n }\n\n validate = (): ValidationErrors | null => null;\n\n registerOnChange(callback: (value: boolean) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n get checked(): boolean {\n return this.control.value;\n }\n\n set checked(value: boolean) {\n this.control.setValue(value);\n }\n\n private handleStateChange(): void {\n this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<mat-checkbox [formControl]=\"control\" (change)=\"handleChange($event)\">\n <ng-content></ng-content>\n</mat-checkbox>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n Signal,\n WritableSignal,\n computed,\n contentChildren,\n effect,\n forwardRef,\n signal,\n} from '@angular/core';\nimport { WlcmCheckboxComponent } from '../checkbox/checkbox.component';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable, Subject, merge, takeUntil, tap } from 'rxjs';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-checkbox-group',\n host: { class: 'wlcm-checkbox-group' },\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox-group.component.html',\n styleUrl: './checkbox-group.component.scss',\n providers: [\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },\n ],\n})\nexport class WlcmCheckboxGroupComponent implements AfterContentInit, ControlValueAccessor, Validator {\n checkboxes: Signal<readonly WlcmCheckboxComponent[]> = contentChildren(WlcmCheckboxComponent);\n\n private checkboxesMap: Signal<Map<string, WlcmCheckboxComponent>> = computed(() => {\n return new Map(this.checkboxes().map((checkbox: WlcmCheckboxComponent) => [checkbox.value()!, checkbox]));\n });\n\n private values: WritableSignal<Set<string>> = signal(new Set());\n\n private checkboxesListUpdated: Subject<void> = new Subject();\n\n private _changed?: (value: string[]) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n constructor() {\n effect(() => this.handleCheckboxesToggle(this.checkboxes()));\n }\n\n ngAfterContentInit(): void {\n this.updateCheckboxes(this.values());\n }\n\n writeValue(value: string[]): void {\n this.values.set(new Set(value));\n\n if (this.checkboxes()) this.updateCheckboxes(this.values());\n }\n\n validate = (): ValidationErrors | null => null;\n\n registerOnChange(callback: (value: string[]) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n private updateControl(values: Set<string>): void {\n this._changed?.(Array.from(values.values()));\n\n this._touched?.();\n }\n\n private updateCheckboxes(values: Set<string>): void {\n const checkboxesMap: Map<string, WlcmCheckboxComponent> = this.checkboxesMap();\n\n for (const checkbox of checkboxesMap.values()) {\n checkbox.checked = values.has(checkbox.value()!);\n }\n }\n\n private handleCheckboxesToggle(checkboxes: readonly WlcmCheckboxComponent[]): void {\n this.checkboxesListUpdated.next();\n\n const handleCheck = (checkbox: WlcmCheckboxComponent) => {\n this.values.update((values: Set<string>) => {\n if (checkbox.checked) {\n values.add(checkbox.value()!);\n } else {\n values.delete(checkbox.value()!);\n }\n\n this.updateControl(values);\n\n return values;\n });\n };\n\n const changeHandlers: Observable<unknown>[] = Array.from(checkboxes.values()).map(\n (checkbox: WlcmCheckboxComponent) => {\n return checkbox.changed.asObservable().pipe(tap(() => handleCheck(checkbox)));\n },\n );\n\n merge(...changeHandlers)\n .pipe(untilDestroyed(this))\n .pipe(takeUntil(this.checkboxesListUpdated))\n .subscribe();\n }\n}\n","<ng-content select=\"wlcm-checkbox\"></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { Component, InputSignal, input } from '@angular/core';\nimport { WlcmIconDirective, WlcmIconName, WlcmLoaderComponent } from '@wlcm/angular/core';\nimport { WlcmAutocomplete } from '../../../models/autocomplete.models';\nimport { RxLet } from '@rx-angular/template/let';\n\n@Component({\n selector: 'wlcm-autocomplete-suffix',\n host: { class: 'wlcm-autocomplete-suffix' },\n standalone: true,\n imports: [CommonModule, WlcmIconDirective, WlcmLoaderComponent, RxLet],\n templateUrl: './autocomplete-suffix.component.html',\n styleUrl: './autocomplete-suffix.component.scss',\n})\nexport class WlcmAutocompleteSuffixComponent {\n autocomplete: InputSignal<WlcmAutocomplete> = input.required();\n\n readonly WlcmIconName = WlcmIconName;\n}\n","<ng-container *rxLet=\"autocomplete().loading$ | async; let loading\">\n @if (!loading) {\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n }\n\n <wlcm-loader [hidden]=\"!loading\"></wlcm-loader>\n</ng-container>\n","import { Directive, inject } from '@angular/core';\nimport { WLCM_INPUT_BINDER } from '../constants';\nimport { WlcmSelectComponent } from '../components';\n\n@Directive({\n standalone: true,\n selector: '[wlcmSelectInputBinder]',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const select: WlcmSelectComponent = inject(WlcmSelectComponent, { self: true });\n\n return { bind: () => select };\n },\n },\n ],\n})\nexport class WlcmSelectInputBinderDirective {}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Inject,\n Input,\n InputSignal,\n NgZone,\n Optional,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n ViewChild,\n WritableSignal,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChildren,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MAT_SELECT_CONFIG, MatOption, MatSelect, MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport {\n DEFAULT_QUERY_PARAMS,\n ScrollDetectionApi,\n WlcmIconDirective,\n WlcmIconName,\n WlcmOption,\n WlcmSelectOptionFormat,\n} from '@wlcm/angular/core';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER, WLCM_FORM_FIELD } from '../../constants';\nimport { WlcmSelectInputBinderDirective } from '../../directives/select-input-binder.directive';\nimport { WlcmFormControl, WlcmFormField, WlcmFormFieldInput } from '../../models/_index';\nimport { BehaviorSubject, EMPTY, Observable, Subject, Subscriber, filter, first, of, switchMap, takeUntil } from 'rxjs';\nimport { IsOptionDisabledFn, WlcmCanSelectFn, WlcmSelectConfig, WlcmSelectValue } from '../../models/select.models';\nimport { WLCM_SELECT_CONFIG } from '../../constants/select.constants';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmQueryParams, WlcmPaginatedData } from '@wlcm/common';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { mergeWith } from 'lodash-es';\n\ntype OptionTemplateContext = TemplateRef<{ $implicit: WlcmOption }>;\n\nconst PANEL_CLASS: string = 'wlcm-select-panel';\n\nconst DEFAULT_CONFIG: WlcmSelectConfig = { overlayPanelClass: [PANEL_CLASS] };\n\nconst mergeConfig = (config: WlcmSelectConfig): WlcmSelectConfig => {\n const customizer = (_default: WlcmSelectConfig, _new: WlcmSelectConfig): Array<unknown> | void => {\n if (Array.isArray(_default)) return _default.concat(_new);\n };\n\n return mergeWith({ ...DEFAULT_CONFIG }, config, customizer);\n};\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-select',\n standalone: true,\n host: { class: 'wlcm-select' },\n imports: [CommonModule, MatSelectModule, ReactiveFormsModule, WlcmIconDirective],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [WlcmSelectInputBinderDirective],\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n {\n provide: MAT_SELECT_CONFIG,\n useFactory: () => {\n const wlcmConfig: WlcmSelectConfig = inject(WLCM_SELECT_CONFIG, { optional: true }) ?? {};\n\n return mergeConfig(wlcmConfig);\n },\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n ],\n})\nexport class WlcmSelectComponent implements WlcmFormFieldInput, ControlValueAccessor, Validator {\n @Input() multiple: boolean = false;\n\n @Input() placeholder: string = 'Not selected';\n\n @Input() fetchPaginatedOptions?: (params: WlcmQueryParams) => Observable<WlcmPaginatedData<WlcmOption>>;\n\n @Input() canSelect: WlcmCanSelectFn = (_: WlcmSelectValue) => true;\n\n @Input() queryParams: WlcmQueryParams = { ...DEFAULT_QUERY_PARAMS };\n\n paginated: InputSignal<boolean> = input(false);\n\n options: InputSignal<WlcmOption[]> = input<WlcmOption[]>([]);\n\n paginatedOptions: WritableSignal<WlcmOption[]> = signal([]);\n\n selectOptionFormat: InputSignal<WlcmSelectOptionFormat> = input<WlcmSelectOptionFormat>('ValueOnly');\n\n optionTemplate: InputSignal<TemplateRef<OptionTemplateContext> | null> =\n input<TemplateRef<OptionTemplateContext> | null>(null);\n\n triggerTemplate: InputSignal<TemplateRef<MatOption | MatOption[]> | undefined> = input();\n\n isOptionDisabled: InputSignal<IsOptionDisabledFn> = input<IsOptionDisabledFn>(() => false);\n\n selectionChange: OutputEmitterRef<MatSelectChange> = output();\n\n opened: OutputEmitterRef<void> = output();\n\n closed: OutputEmitterRef<void> = output();\n\n readonly value: WritableSignal<WlcmSelectValue | null> = signal(null);\n\n readonly disabled: WritableSignal<boolean> = signal(false);\n\n readonly WlcmIconName = WlcmIconName;\n\n private _changed?: (value: WlcmSelectValue) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n private _paginatedData: WlcmPaginatedData<WlcmOption> | null = null;\n\n private _previousValue: WlcmSelectValue | null = null;\n\n private _optionsCache: Set<unknown> = new Set();\n\n computedOptions: Signal<WlcmOption[]> = computed(() => {\n const options: WlcmOption[] = this.paginated() ? this.paginatedOptions() : this.options();\n\n if (this.isOptionDisabled() && options.length > 0) {\n this.updateOptionsStatus();\n }\n\n return options;\n });\n\n prefilledOptions: WritableSignal<WlcmOption[]> = signal([]);\n\n @ViewChild(MatSelect) matSelect!: MatSelect;\n\n @HostListener('click') openPanel(): void {\n this.matSelect.open();\n }\n\n protected matOptions: Signal<ReadonlyArray<MatOption>> = viewChildren(MatOption);\n\n private readonly _focusStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _blurStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n focus$: Observable<unknown> = this._focusStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n blur$: Observable<unknown> = this._blurStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n private adjustedValue$: BehaviorSubject<WlcmSelectValue | null> = new BehaviorSubject<WlcmSelectValue | null>(null);\n\n private viewReady$: Subject<void> = new Subject();\n\n private selected$: Subject<void> = new Subject();\n\n constructor(\n private zone: NgZone,\n private changeDetectorRef: ChangeDetectorRef,\n private scrollDetectionApi: ScrollDetectionApi,\n @Inject(WLCM_FORM_FIELD) private formField: WlcmFormField,\n @Optional() @Inject(WLCM_FORM_CONTROL) private parentFormMember: WlcmFormControl,\n ) {\n if (this.parentFormMember) {\n this.handleStateChange();\n }\n\n this.handleAdjustedValue();\n\n toObservable(this.paginated)\n .pipe(untilDestroyed(this))\n .subscribe((paginated: boolean) => {\n if (paginated) this.loadPaginatedOptions();\n });\n }\n\n ngAfterViewInit(): void {\n this.viewReady$.next();\n\n if (this.formField) {\n this.matSelect._preferredOverlayOrigin = this.formField.inputContainer;\n }\n\n this._focusStream$.next(this.matSelect._openedStream);\n\n this._blurStream$.next(this.matSelect._closedStream);\n }\n\n compareWith = (optionA: WlcmOption | string, optionB: WlcmOption | string): boolean => {\n if (this.areOptionsEqual(optionA, optionB)) {\n if (this.selectOptionFormat() === 'CompleteOption' && typeof optionB !== 'object') {\n this._changed?.(optionA);\n }\n\n return true;\n }\n\n return false;\n };\n\n focus = (): void => this.matSelect.open();\n\n isFocused = (): boolean => this.isOpen;\n\n select(event: MatSelectChange): void {\n this.selected$.next();\n\n this.matSelect.value = event.value;\n\n this.validateSelectedOption(event.value)\n .pipe(takeUntil(this.selected$))\n .subscribe((canSelect: boolean) => {\n if (!canSelect) return this.revertPreviousValue();\n\n this.updateValue(event.value);\n\n this._changed?.(event.value);\n\n this._validatorChanged?.();\n\n this.selectionChange.emit(event);\n });\n }\n\n private areOptionsEqual(optionA: WlcmOption | string, optionB: WlcmOption | string) {\n return ((optionA as WlcmOption)?.value || optionA) === ((optionB as WlcmOption)?.value || optionB);\n }\n\n private revertPreviousValue(): void {\n this.matSelect.value = this._previousValue;\n }\n\n private updateValue(value: WlcmSelectValue): void {\n this.value.set(value);\n\n this._previousValue = value;\n }\n\n private validateSelectedOption(value: WlcmSelectValue): Observable<boolean> {\n return new Observable<boolean>((observer: Subscriber<boolean>) => {\n const response: Observable<boolean> | boolean = this.canSelect(value);\n\n const source: Observable<boolean> = response instanceof Observable ? response.pipe(first()) : of(response);\n\n source.subscribe((result: boolean) => {\n observer.next(result);\n observer.complete();\n });\n });\n }\n\n protected panelOpened(): void {\n this.opened.emit();\n\n this.handleScrollDown();\n }\n\n protected panelClosed(): void {\n this.closed.emit();\n\n this._touched?.();\n }\n\n updateOptionsStatus(): void {\n this.matOptions().forEach((matOption: MatOption) => {\n matOption.disabled = this.isOptionDisabled()(matOption.value);\n });\n }\n\n writeValue(value: WlcmSelectValue): void {\n if (this.paginated()) this.prefillOptions(value);\n\n const formattedValue: WlcmSelectValue = this.prepareValueForPatch(value);\n\n this.updateValue(formattedValue);\n }\n\n registerOnChange(callback: (value: WlcmSelectValue) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n validate(): ValidationErrors | null {\n return null;\n }\n\n get isOpen(): boolean {\n return this.matSelect?.panelOpen ?? false;\n }\n\n private prepareValueForPatch(value: WlcmSelectValue): WlcmSelectValue {\n const formatedValue: { changed: boolean; value: WlcmSelectValue } = this.formatValue(value);\n\n if (formatedValue.changed) this.adjustedValue$.next(formatedValue.value);\n\n return formatedValue.value;\n }\n\n private formatValue(value: WlcmSelectValue): { changed: boolean; value: WlcmSelectValue } {\n let changed: boolean = false;\n\n const _formatOption = (value: WlcmOption | string): WlcmOption | string => {\n const formatedOption: { changed: boolean; value: WlcmOption | string } = this.formatOption(value);\n\n if (formatedOption.changed) changed = true;\n\n return formatedOption.value;\n };\n\n if (value instanceof Array) {\n const options: WlcmSelectValue = value.map(_formatOption) as WlcmSelectValue;\n\n return { changed, value: options };\n }\n\n const option: WlcmSelectValue = _formatOption(value);\n\n return { changed, value: option };\n }\n\n private formatOption(value: WlcmOption | string): { changed: boolean; value: WlcmOption | string } {\n if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {\n return { changed: true, value: value.value as string };\n }\n\n return { changed: false, value };\n }\n\n private loadPaginatedOptions(): void {\n this.queryParams.page = 1;\n\n this.fetchPaginatedOptions!(this.queryParams)\n .pipe(untilDestroyed(this), first())\n .subscribe((paginatedData: WlcmPaginatedData<WlcmOption>) => {\n this._optionsCache.clear();\n\n this.cacheOptions(paginatedData.data);\n\n this._paginatedData = paginatedData;\n\n this.paginatedOptions.set(paginatedData.data);\n });\n }\n\n private loadMorePaginatedOptions(): void {\n if (!this._paginatedData || this._paginatedData.currPage + 1 > this._paginatedData.totalPages) return;\n\n this.queryParams.page++;\n\n this.fetchPaginatedOptions!({ ...this.queryParams })\n .pipe(untilDestroyed(this), first())\n .subscribe((paginatedData: WlcmPaginatedData<WlcmOption>) => {\n this.cacheOptions(paginatedData.data);\n\n this._paginatedData = paginatedData;\n\n this.paginatedOptions.update((options: WlcmOption[]) => [...options, ...paginatedData.data]);\n });\n }\n\n private cacheOptions(options: WlcmOption[]): void {\n options.forEach((option: WlcmOption) => this._optionsCache.add(option.value));\n\n this.syncPrefilledOptions();\n }\n\n private syncPrefilledOptions(): void {\n if (this.prefilledOptions().length === 0) return;\n\n this.prefilledOptions.update((options: WlcmOption[]) => {\n return options.filter((option: WlcmOption) => !this._optionsCache.has(option.value));\n });\n }\n\n private prefillOptions(value: WlcmSelectValue): void {\n let prefilledOptions: WlcmOption[] = [];\n\n if (value instanceof Array) {\n prefilledOptions = value.filter((option: WlcmOption | string) => option instanceof Object) as WlcmOption[];\n } else if (value instanceof Object) {\n prefilledOptions = [value];\n }\n\n this.prefilledOptions.set(prefilledOptions);\n }\n\n private handleScrollDown(): void {\n const element: HTMLElement = document.querySelector('.mat-mdc-select-panel')!;\n\n this.zone.runOutsideAngular(() => {\n this.scrollDetectionApi.onScrolledDown(element).subscribe(() => {\n this.zone.run(() => this.loadMorePaginatedOptions());\n });\n });\n }\n\n private handleStateChange(): void {\n this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private handleAdjustedValue(): void {\n this.viewReady$\n .pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))\n .subscribe((value: WlcmSelectValue) => this._changed?.(value));\n }\n}\n","<mat-select\n #selectComponent\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n [compareWith]=\"compareWith\"\n (opened)=\"panelOpened()\"\n (closed)=\"panelClosed()\"\n>\n @if (triggerTemplate()) {\n <mat-select-trigger>\n <ng-container\n *ngTemplateOutlet=\"\n triggerTemplate()!;\n context: $any({ $implicit: selectComponent.selected })\n \"\n ></ng-container>\n </mat-select-trigger>\n }\n\n <mat-option\n *ngFor=\"let option of prefilledOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\n </mat-option>\n\n <mat-option\n *ngFor=\"let option of computedOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\n </mat-option>\n</mat-select>\n\n<div class=\"wlcm-select-arrow\">\n <ng-container\n [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"\n [wlcmIconStopPropagation]=\"false\"\n ></ng-container>\n</div>\n\n<ng-template #wlcmSelectOptionContent let-option>\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate(); context: $any({ $implicit: option })\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldHint]',\n host: { class: 'wlcm-hint' },\n standalone: true,\n})\nexport class WlcmFormFieldHintDirective {}\n","import { NgModule, Type } from '@angular/core';\nimport { WlcmFormFieldComponent } from './components/form-field/form-field.component';\nimport { WlcmInputDirective } from './directives/input.directive';\nimport { WlcmLabelComponent } from './components/label/label.component';\nimport { WlcmSelectComponent } from './components/select/select.component';\nimport { WlcmFormFieldCustomContainerDirective } from './directives/form-field-custom-container.directive';\nimport { WlcmAutocompleteComponent } from './components/autocomplete/autocomplete.component';\nimport { WlcmFormFieldSuffixDirective } from './directives/form-field-suffix.directive';\nimport { WlcmFormFieldHintDirective } from './directives/form-field-hint.directive';\nimport { WlcmFormFieldPrefixDirective } from './directives/form-field-prefix.directive';\nimport { MAT_RADIO_DEFAULT_OPTIONS, MatRadioModule } from '@angular/material/radio';\nimport { WlcmCheckboxComponent, WlcmCheckboxGroupComponent } from './components';\nimport { WlcmAutocompleteSuffixComponent } from './components/partials';\n\nconst directives: Type<unknown>[] = [\n WlcmInputDirective,\n WlcmFormFieldCustomContainerDirective,\n WlcmFormFieldSuffixDirective,\n WlcmFormFieldPrefixDirective,\n WlcmFormFieldHintDirective,\n];\n\nconst components: Type<unknown>[] = [\n WlcmFormFieldComponent,\n WlcmAutocompleteComponent,\n WlcmAutocompleteSuffixComponent,\n WlcmCheckboxGroupComponent,\n WlcmCheckboxComponent,\n WlcmSelectComponent,\n WlcmLabelComponent,\n];\n\n@NgModule({\n imports: [...components, ...directives, MatRadioModule],\n exports: [...components, ...directives, MatRadioModule],\n providers: [{ provide: MAT_RADIO_DEFAULT_OPTIONS, useValue: { color: 'primary' } }],\n})\nexport class WlcmFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","PANEL_CLASS","i2","i2.WlcmSelectInputBinderDirective","i3","i5"],"mappings":"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"}
1
+ {"version":3,"file":"wlcm-angular-forms.mjs","sources":["../../../../modules/forms/src/lib/forms/components/error/error.component.ts","../../../../modules/forms/src/lib/forms/components/error/error.component.html","../../../../modules/forms/src/lib/forms/services/form-state-handler.service.ts","../../../../modules/forms/src/lib/forms/constants/form-errors.constants.ts","../../../../modules/forms/src/lib/forms/constants/form-elements.constants.ts","../../../../modules/forms/src/lib/forms/constants/select.constants.ts","../../../../modules/forms/src/lib/forms/constants/index.ts","../../../../modules/forms/src/lib/forms/services/places.api.ts","../../../../modules/forms/src/lib/forms/constants/form-state-handlers.constants.ts","../../../../modules/forms/src/lib/forms/directives/form-field-custom-container.directive.ts","../../../../modules/forms/src/lib/forms/pipes/errors-mapper.pipe.ts","../../../../modules/forms/src/lib/forms/directives/form-field-prefix.directive.ts","../../../../modules/forms/src/lib/forms/directives/form-field-suffix.directive.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.html","../../../../modules/forms/src/lib/forms/constants/form-field.constants.ts","../../../../modules/forms/src/lib/forms/directives/input.directive.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.html","../../../../modules/forms/src/lib/forms/directives/autocomplete.directive.ts","../../../../modules/forms/src/lib/forms/models/autocomplete.models.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.html","../../../../modules/forms/src/lib/forms/components/checkbox/checkbox.component.ts","../../../../modules/forms/src/lib/forms/components/checkbox/checkbox.component.html","../../../../modules/forms/src/lib/forms/components/checkbox-group/checkbox-group.component.ts","../../../../modules/forms/src/lib/forms/components/checkbox-group/checkbox-group.component.html","../../../../modules/forms/src/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.ts","../../../../modules/forms/src/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.html","../../../../modules/forms/src/lib/forms/directives/select-input-binder.directive.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.html","../../../../modules/forms/src/lib/forms/directives/form-field-hint.directive.ts","../../../../modules/forms/src/lib/forms/forms.module.ts","../../../../modules/forms/src/wlcm-angular-forms.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n\n@Component({\n selector: 'wlcm-error',\n imports: [],\n host: { class: 'wlcm-error' },\n templateUrl: './error.component.html',\n styleUrls: ['./error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmErrorComponent {}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class FormStateHandlerService implements WlcmForm, WlcmFormControl {\n private readonly _stateChanges$: Subject<void> = new Subject();\n\n readonly stateChanges$: Observable<void> = this._stateChanges$.asObservable();\n\n updateFormState(): void {\n this._stateChanges$.next();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFormErrors } from '../models/form-errors.models';\n\nexport const WLCM_ERRORS: InjectionToken<WlcmFormErrors> = new InjectionToken('WLCM_ERRORS');\n\nexport const WLCM_PRIORITY_ERRORS: InjectionToken<Set<string>> = new InjectionToken('WLCM_PRIORITY_ERRORS', {\n providedIn: 'root',\n factory: () => new Set(),\n});\n","import { InjectionToken } from '@angular/core';\nimport { WlcmInputBinder, WlcmInputGetter } from '../models/input.models';\nimport { WlcmFormField } from '../models/form.models';\n\nexport const WLCM_INPUT: InjectionToken<WlcmInputGetter> = new InjectionToken('WLCM_INPUT');\n\nexport const WLCM_INPUT_BINDER: InjectionToken<WlcmInputBinder> = new InjectionToken('WLCM_INPUT_BINDER');\n\nexport const WLCM_FORM_FIELD: InjectionToken<WlcmFormField> = new InjectionToken('WLCM_FORM_FIELD');\n","import { InjectionToken } from '@angular/core';\nimport { WlcmSelectConfig } from '../models/select.models';\n\nexport const WLCM_SELECT_CONFIG: InjectionToken<WlcmSelectConfig> = new InjectionToken('WLCM_SELECT_CONFIG');\n","export * from './form-errors.constants';\nexport * from './form-elements.constants';\nexport * from './form-state-handlers.constants';\nexport * from './select.constants';\n\nexport const WLCM_MAPS_API_ERROR = `Google Maps JavaScript API not loaded. Please ensure the following script is included in your HTML: <script src=\"https://maps.googleapis.com/maps/api/js?key=[apiKey]&libraries=places\"></script>`;\n","import { Injectable } from '@angular/core';\nimport { WlcmAutocompleteOption } from '@wlcm/angular/core';\nimport { WLCM_MAPS_API_ERROR } from '../constants';\nimport { Observable, Subscriber } from 'rxjs';\nimport { WlcmPaginatedData } from '@wlcm/common';\n\nconst DEFAULT_PAGINATED_DATA: WlcmPaginatedData<WlcmAutocompleteOption> = {\n totalPages: 1,\n totalItems: 1,\n currPage: 1,\n data: [],\n};\n\n@Injectable()\nclass WlcmDefaultPlacesApi implements WlcmPlacesApi {\n private _autocompleteService = new google.maps.places.AutocompleteService();\n\n private _placesService = new google.maps.places.PlacesService(document.createElement('div'));\n\n constructor() {\n if (typeof google === 'undefined') {\n throw new Error(WLCM_MAPS_API_ERROR);\n }\n }\n\n getPlacesPaginated(query: string): Observable<WlcmPaginatedData<WlcmAutocompleteOption>> {\n return new Observable((subscriber: Subscriber<WlcmPaginatedData<WlcmAutocompleteOption>>) => {\n if (query.length === 0) {\n subscriber.next({ ...DEFAULT_PAGINATED_DATA });\n\n return subscriber.complete();\n }\n\n const request: google.maps.places.AutocompletionRequest = { input: query };\n\n this._autocompleteService.getPlacePredictions(request, (predictions, status) => {\n const result: WlcmPaginatedData<WlcmAutocompleteOption> = { ...DEFAULT_PAGINATED_DATA };\n\n if (status === google.maps.places.PlacesServiceStatus.OK) {\n result.data = predictions!.map((prediction: google.maps.places.AutocompletePrediction) => {\n return new WlcmAutocompleteOption(\n prediction.place_id,\n prediction.description,\n prediction.description,\n prediction,\n );\n });\n }\n\n subscriber.next(result);\n\n subscriber.complete();\n });\n });\n }\n\n get placesService(): google.maps.places.PlacesService {\n return this._placesService;\n }\n\n get autocompleteService(): google.maps.places.AutocompleteService {\n return this._autocompleteService;\n }\n}\n\n@Injectable({\n providedIn: 'root',\n useClass: WlcmDefaultPlacesApi,\n})\nexport abstract class WlcmPlacesApi {\n abstract getPlacesPaginated(query: string): Observable<WlcmPaginatedData<WlcmAutocompleteOption>>;\n\n abstract get placesService(): google.maps.places.PlacesService;\n\n abstract get autocompleteService(): google.maps.places.AutocompleteService;\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { FormStateHandlerService } from '../services';\n\nexport const WLCM_FORM: InjectionToken<WlcmForm> = new InjectionToken(\n 'WLCM_FORM'\n);\n\nexport const WLCM_FORM_PROVIDER: Provider = {\n provide: WLCM_FORM,\n useClass: FormStateHandlerService,\n};\n\nexport const WLCM_FORM_CONTROL: InjectionToken<WlcmFormControl> =\n new InjectionToken('WLCM_FORM_CONTROL');\n\nexport const WLCM_FORM_CONTROL_PROVIDER: Provider = {\n provide: WLCM_FORM_CONTROL,\n useFactory: () => inject(WLCM_FORM, { optional: true, skipSelf: true }),\n};\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldCustomContainer]',\n})\nexport class WlcmFormFieldCustomContainerDirective {\n elementRef = inject(ElementRef<HTMLElement>);\n}\n","import { ChangeDetectorRef, Pipe, PipeTransform, inject } from '@angular/core';\nimport { FormControl, ValidationErrors } from '@angular/forms';\nimport { WlcmFormErrorFn } from '../models/form-errors.models';\nimport {\n WLCM_ERRORS,\n WLCM_PRIORITY_ERRORS,\n} from '../constants/form-errors.constants';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Pipe({\n name: 'errorsMapper',\n pure: false,\n})\nexport class ErrorsMapperPipe implements PipeTransform {\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private errors = inject(WLCM_ERRORS);\n\n private priorityErrors = inject(WLCM_PRIORITY_ERRORS);\n\n private destroy$: Subject<void> = new Subject();\n\n currentError: string | null = null;\n\n transform(control: FormControl): string | null {\n this.handleStatusChanges(control);\n\n this.retrieveFirstError(control.errors);\n\n return this.currentError;\n }\n\n private retrieveFirstError(errors: ValidationErrors | null): void {\n if (!errors) return;\n\n Object.keys(errors).forEach(\n (key: string) => !errors[key] && delete errors[key]\n );\n\n const errorsTypes: string[] = Object.getOwnPropertyNames(errors);\n\n const priorityType: string | undefined = errorsTypes.find((type: string) =>\n this.priorityErrors.has(type)\n );\n\n const outputError: string = priorityType || errorsTypes[0];\n\n if (outputError) {\n this.currentError = (this.errors[outputError] as WlcmFormErrorFn)?.(\n errors[outputError]\n );\n }\n }\n\n private handleStatusChanges(control: FormControl): void {\n this.destroy$.next();\n\n control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.retrieveFirstError(control.errors);\n\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldPrefix]',\n})\nexport class WlcmFormFieldPrefixDirective {\n @HostListener('click', ['$event']) handlerClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldSuffix]',\n})\nexport class WlcmFormFieldSuffixDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n contentChild,\n forwardRef,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Validators, AbstractControl, ControlContainer, NgControl } from '@angular/forms';\n\nimport { WlcmErrorComponent } from '../error/error.component';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants/form-state-handlers.constants';\nimport { WlcmFormFieldCustomContainerDirective } from '../../directives/form-field-custom-container.directive';\nimport { ErrorsMapperPipe } from '../../pipes/errors-mapper.pipe';\nimport { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants/form-elements.constants';\nimport { WlcmFormFieldPrefixDirective } from '../../directives/form-field-prefix.directive';\nimport { WlcmFormFieldInput, WlcmInputGetter } from '../../models/input.models';\nimport { WlcmFormControl } from '../../models/form.models';\nimport { Observable, merge } from 'rxjs';\nimport { WlcmFormFieldSuffixDirective } from '../../directives/form-field-suffix.directive';\n\n@Component({\n selector: 'wlcm-form-field',\n imports: [WlcmErrorComponent, ErrorsMapperPipe],\n host: {\n class: 'wlcm-form-field',\n '[class.wlcm-field-focused]': 'isFocused',\n '[class.wlcm-field-required]': 'isRequired',\n '[class.wlcm-field-invalid]': 'isInvalid',\n '[class.wlcm-field-touched]': 'isTouched',\n '[class.wlcm-field-disabled]': 'isDisabled',\n },\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },\n ],\n})\nexport class WlcmFormFieldComponent implements AfterViewInit {\n displayErrorMessages = input(true);\n\n private ngControl = contentChild(NgControl, { descendants: true });\n\n private controlContainer = contentChild(ControlContainer, { descendants: true });\n\n private _inputRef = contentChild<WlcmInputGetter>(WLCM_INPUT);\n\n protected prefix = contentChild(WlcmFormFieldPrefixDirective);\n\n protected suffix = contentChild(WlcmFormFieldSuffixDirective);\n\n protected customContainer = contentChild(WlcmFormFieldCustomContainerDirective);\n\n protected defaultContainer = viewChild<ElementRef<HTMLElement>>('defaultContainer');\n\n get isFocused() {\n return this.inputRef?.isFocused() ?? false;\n }\n\n get isRequired() {\n return this.control?.hasValidator(Validators.required);\n }\n\n get isInvalid() {\n return this.control?.invalid;\n }\n\n get isTouched() {\n return this.control?.touched;\n }\n\n get isDisabled() {\n return this.control?.disabled;\n }\n\n private parentFormMember = inject<WlcmFormControl>(WLCM_FORM_CONTROL, { optional: true });\n\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n if (!this.inputRef && !this.customContainer()) {\n throw new Error('Input element should be bound to the wlcmInput directive.');\n }\n\n this.handleStateChanges();\n }\n\n focus(): void {\n if (this.isFocused || this.isDisabled) return;\n\n this.inputRef?.focus();\n }\n\n get control(): AbstractControl | null {\n return (this.controlContainer()?.control || this.ngControl()?.control) ?? null;\n }\n\n get inputContainer(): ElementRef<HTMLElement> {\n return this.customContainer()?.elementRef || (this.defaultContainer() as ElementRef<HTMLElement>);\n }\n\n private handleStateChanges(): void {\n const events: Observable<unknown>[] = this.controlEvents;\n\n if (this.parentFormMember) {\n events.push(this.parentFormMember.stateChanges$);\n }\n\n merge(...events)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n private get inputRef(): WlcmFormFieldInput | undefined {\n return this._inputRef()?.get();\n }\n\n private get controlEvents(): Observable<unknown>[] {\n const events: Observable<unknown>[] = [];\n\n if (this.inputRef) {\n events.push(this.inputRef.focus$, this.inputRef.blur$);\n }\n\n if (this.control) {\n // control.events fires on status, value, touched and pristine changes —\n // statusChanges alone never emits on touched changes, so the\n // wlcm-field-touched host class would go stale under OnPush.\n events.push(this.control.events);\n }\n\n return events;\n }\n}\n","<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n@if (!customContainer()) {\n <div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n >\n <div class=\"wlcm-field-prefix\" [class.contains-children]=\"prefix()\">\n <ng-content select=\"[wlcmFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content select=\"[wlcmInput]\"></ng-content>\n <div class=\"wlcm-field-suffix\" [class.contains-children]=\"suffix()\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n@if (control && displayErrorMessages()) {\n <div class=\"wlcm-field-error-container\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n </div>\n}\n","export const WLCM_FORM_FIELD_INPUT_CLASS = 'wlcm-form-field-input';\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { WLCM_INPUT, WLCM_INPUT_BINDER } from '../constants/form-elements.constants';\nimport { WlcmFormFieldInput, WlcmInputBinder } from '../models/input.models';\nimport { WLCM_FORM_FIELD_INPUT_CLASS } from '../constants/form-field.constants';\nimport { Observable, fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[wlcmInput]',\n providers: [\n {\n provide: WLCM_INPUT,\n useFactory: () => {\n const input: WlcmInputDirective = inject(WlcmInputDirective, { self: true });\n\n const binder: WlcmInputBinder | null = inject(WLCM_INPUT_BINDER, { self: true, optional: true });\n\n return { get: () => (binder ? binder.bind() : input) };\n },\n },\n ],\n})\nexport class WlcmInputDirective implements WlcmFormFieldInput {\n private _elementRef = inject(ElementRef<HTMLElement>);\n\n constructor() {\n const element: HTMLElement = this._elementRef.nativeElement;\n\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n element.classList.add(WLCM_FORM_FIELD_INPUT_CLASS);\n }\n }\n\n focus = (): void => this._elementRef.nativeElement.focus();\n\n isFocused = (): boolean => this._elementRef.nativeElement === document.activeElement;\n\n focus$: Observable<unknown> = fromEvent(this._elementRef.nativeElement, 'focus');\n\n blur$: Observable<unknown> = fromEvent(this._elementRef.nativeElement, 'blur');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n\n@Component({\n selector: 'wlcm-label',\n imports: [],\n host: { class: 'wlcm-label', '[class.required]': 'required()' },\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmLabelComponent {\n required = input(false);\n}\n","<span class=\"wlcm-label-asterisk\">*</span>\n\n<ng-content></ng-content>\n","import { DestroyRef, Directive, inject, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { asyncScheduler, fromEvent, observeOn, takeUntil } from 'rxjs';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\n\n@Directive({\n selector: '[wlcmAutocomplete]',\n})\nexport class AutocompleteDirective {\n panelScrolled = output<void>();\n\n private _scrollHeight = 0;\n\n private _scrollHeightChanged = false;\n\n private autocomplete = inject(MatAutocomplete, { host: true, optional: true })!;\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n this.handleOpenEvent();\n }\n\n private handleOpenEvent(): void {\n this.autocomplete.opened\n .pipe(observeOn(asyncScheduler), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleScrolling());\n }\n\n private handleScrolling(): void {\n const panel: HTMLElement = this.autocomplete.panel.nativeElement;\n\n this.setScrollHscrollHeight(panel.scrollHeight);\n\n // Zone-free: the scroll listener no longer runs outside/inside NgZone.\n // Under zoneless CD the panelScrolled output drives change detection on\n // its own, so no zone.run wrapper is needed.\n fromEvent(panel, 'scroll', { passive: true })\n .pipe(takeUntil(this.autocomplete.closed))\n .subscribe(() => {\n if (this._scrollHeight !== panel.scrollHeight) {\n this.setScrollHscrollHeight(panel.scrollHeight);\n }\n\n if (panel.scrollHeight * 0.8 <= panel.scrollTop + panel.clientHeight && this._scrollHeightChanged) {\n this.panelScrolled.emit();\n\n this._scrollHeightChanged = false;\n }\n });\n }\n\n private setScrollHscrollHeight(height: number): void {\n this._scrollHeight = height;\n\n this._scrollHeightChanged = true;\n }\n}\n","import { Directive } from '@angular/core';\nimport { WlcmAutocompleteOption } from '@wlcm/angular/core';\nimport { Observable } from 'rxjs';\n\nexport type WlcmAutocompleteValue = WlcmAutocompleteOption | string | null;\n\n@Directive()\nexport abstract class WlcmAutocomplete {\n abstract loading$: Observable<boolean>;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n InputSignal,\n linkedSignal,\n OnInit,\n output,\n OutputEmitterRef,\n runInInjectionContext,\n Signal,\n signal,\n TemplateRef,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { WlcmInputDirective } from '../../directives/input.directive';\nimport {\n MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\n MatAutocomplete,\n MatAutocompleteModule,\n MatAutocompleteOrigin,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n BehaviorSubject,\n concatMap,\n EMPTY,\n filter,\n first,\n fromEvent,\n map,\n merge,\n Observable,\n Subject,\n switchMap,\n take,\n tap,\n timer,\n} from 'rxjs';\nimport { AutocompleteDirective } from '../../directives/autocomplete.directive';\nimport { DEFAULT_QUERY_PARAMS, WlcmAutocompleteOption, WlcmSelectOptionFormat } from '@wlcm/angular/core';\nimport { WLCM_FORM_FIELD, WLCM_INPUT, WLCM_INPUT_BINDER } from '../../constants';\nimport { WlcmAutocomplete, WlcmAutocompleteValue } from '../../models/autocomplete.models';\nimport { WlcmPaginatedData, WlcmQueryParams } from '@wlcm/common';\nimport { WlcmFormFieldInput } from '../../models/input.models';\nimport { WlcmFormField } from '../../models/form.models';\nimport { cloneDeep } from 'lodash-es';\n\ntype Option = WlcmAutocompleteOption;\n\nconst PANEL_CLASS = 'wlcm-autocomplete-panel';\n\n@Component({\n selector: 'wlcm-autocomplete',\n exportAs: 'wlcmAutocomplete',\n host: { class: 'wlcm-autocomplete' },\n imports: [CommonModule, MatAutocompleteModule, AutocompleteDirective, ReactiveFormsModule, WlcmInputDirective],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const autocomplete = inject(WlcmAutocompleteComponent, { self: true });\n\n return { bind: () => autocomplete };\n },\n },\n ],\n})\nexport class WlcmAutocompleteComponent\n extends WlcmAutocomplete\n implements OnInit, ControlValueAccessor, Validator, AfterViewInit, WlcmFormFieldInput\n{\n fetchPaginatedOptions = input.required<(params: WlcmQueryParams) => Observable<WlcmPaginatedData<Option>>>();\n\n // Unused internally and not always bound by consumers (e.g. sandbox); keep optional\n // to preserve the previous non-required @Input() label!: string contract.\n label = input<string>('');\n\n required = input(false);\n\n placeholder = input('');\n\n optionTemplate = input<TemplateRef<{ $implicit: WlcmAutocompleteOption }> | undefined>(undefined);\n\n // queryParams is a public input that is also mutated internally (query text and\n // page cursor on every load). A read-only signal input can't be written, so the\n // input seeds a mutable linkedSignal working copy (cloneDeep preserves the\n // original transform semantics: never mutate the caller's object).\n queryParams = input<WlcmQueryParams, WlcmQueryParams>(cloneDeep({ ...DEFAULT_QUERY_PARAMS, limit: 15 }), {\n transform: (params: WlcmQueryParams) => cloneDeep(params),\n });\n\n private _queryParams: WritableSignal<WlcmQueryParams> = linkedSignal(() => cloneDeep(this.queryParams()));\n\n selectOptionFormat: InputSignal<WlcmSelectOptionFormat> = input<WlcmSelectOptionFormat>('ValueOnly');\n\n noResultsTemplate: InputSignal<TemplateRef<{ $implicit: WlcmAutocompleteValue; loading: boolean }> | undefined> =\n input();\n\n selected: OutputEmitterRef<WlcmAutocompleteValue> = output();\n\n readonly control: FormControl<WlcmAutocompleteValue> = new FormControl('');\n\n private readonly _loadMore$: Subject<void> = new Subject();\n\n readonly options: WritableSignal<Option[]> = signal<Option[]>([]);\n\n protected readonly closed$: Subject<void> = new Subject();\n\n private readonly _focusStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _blurStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n readonly loading: WritableSignal<boolean> = signal(false);\n\n // WlcmAutocomplete contract + the autocomplete-suffix partial consume loading$\n // as an observable, so bridge the internal loading signal back to an observable.\n loading$: Observable<boolean> = toObservable(this.loading);\n\n focus$: Observable<unknown> = this._focusStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n blur$: Observable<unknown> = this._blurStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n private _changed?: (value: WlcmAutocompleteValue) => void;\n\n private _touched?: () => void;\n\n private _onValidatorChange?: () => void;\n\n private adjustedValue$: BehaviorSubject<WlcmAutocompleteValue | null> =\n new BehaviorSubject<WlcmAutocompleteValue | null>(null);\n\n private _paginatedData: WlcmPaginatedData<Option> | null = null;\n\n private _reloadOptions$: Subject<void> = new Subject();\n\n private viewReady$: Subject<void> = new Subject();\n\n inputElement: Signal<ElementRef<HTMLInputElement> | undefined> = viewChild(WLCM_INPUT, { read: ElementRef });\n\n private autocompleteTrigger: Signal<MatAutocompleteTrigger | undefined> = viewChild(MatAutocompleteTrigger);\n\n private autocomplete: Signal<MatAutocomplete | undefined> = viewChild(MatAutocomplete);\n\n private injector = inject(Injector);\n\n private formField = inject<WlcmFormField>(WLCM_FORM_FIELD);\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.handleLoadMoreEvent();\n\n this.handleControlValueChanges();\n\n this.handleAdjustedValue();\n }\n\n ngOnInit(): void {\n this.loadOptions().pipe(first()).subscribe();\n }\n\n ngAfterViewInit(): void {\n this.viewReady$.next();\n\n const trigger: MatAutocompleteTrigger | undefined = this.autocompleteTrigger();\n\n if (trigger) {\n trigger.connectedTo = runInInjectionContext(this.injector, () => {\n // Material 22 made MatAutocompleteOrigin a directive with a no-arg constructor that injects\n // its own ElementRef; point it at the form-field input container after construction.\n const origin = new MatAutocompleteOrigin();\n origin.elementRef = this.formField.inputContainer;\n return origin;\n });\n }\n\n this.attachFocusBlurListeners();\n }\n\n displayWith(value: Option | string): string {\n if (value instanceof Object) {\n return value.viewValue;\n }\n\n return value;\n }\n\n focus(): void {\n this.inputElement()?.nativeElement.focus();\n }\n\n isFocused(): boolean {\n return this.inputElement()?.nativeElement === document.activeElement || (this.autocomplete()?.isOpen ?? false);\n }\n\n loadMore(): void {\n this._loadMore$.next();\n }\n\n writeValue(value: WlcmAutocompleteValue): void {\n const formattedValue: WlcmAutocompleteValue = this.prepareValueForPatch(value);\n\n this.control.setValue(formattedValue);\n }\n\n registerOnChange(callback: (value: WlcmAutocompleteValue) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n reloadOptions(): void {\n this._reloadOptions$.next();\n }\n\n blured(): void {\n const autocomplete: MatAutocomplete | undefined = this.autocomplete();\n\n if (!autocomplete) return;\n\n if (!autocomplete.isOpen) this._touched?.();\n\n autocomplete.closed.pipe(take(1)).subscribe(() => this._touched?.());\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.control.value) {\n if (this.control.value instanceof Object) return null;\n\n return { ...control.errors, unselected: true, required: false };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n\n private prepareValueForPatch(value: WlcmAutocompleteValue): WlcmAutocompleteValue {\n if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {\n this.adjustedValue$.next(value.value);\n }\n\n return value;\n }\n\n private loadOptions(query = ''): Observable<WlcmPaginatedData<Option>> {\n this.loading.set(true);\n\n this._queryParams.update((params: WlcmQueryParams) => ({ ...params, query, page: 1 }));\n\n return this.fetchPaginatedOptions()(this._queryParams()).pipe(\n tap((paginatedData: WlcmPaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this.options.set(paginatedData.data);\n\n this.loading.set(false);\n }),\n );\n }\n\n private handleLoadMoreEvent(): void {\n this._loadMore$\n .pipe(\n concatMap(() => {\n if (this._paginatedData && this._paginatedData.currPage + 1 <= this._paginatedData.totalPages) {\n this._queryParams.update((params: WlcmQueryParams) => ({ ...params, page: params.page + 1 }));\n\n this.loading.set(true);\n\n return this.fetchPaginatedOptions()(this._queryParams()).pipe(\n tap((paginatedData: WlcmPaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this.options.update((options: Option[]) => [...options, ...paginatedData.data]);\n\n this.loading.set(false);\n }),\n );\n }\n\n return EMPTY;\n }),\n )\n .subscribe();\n }\n\n private handleControlValueChanges(): void {\n merge(this.control.valueChanges, this._reloadOptions$.pipe(map(() => this.control.value)))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(\n filter((value: WlcmAutocompleteValue) => {\n let _value: WlcmAutocompleteValue = value ?? '';\n\n if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') _value = value.value;\n\n this._changed?.(_value);\n\n this.selected.emit(_value);\n\n return !(value instanceof Object);\n }),\n )\n .pipe(\n switchMap((value: WlcmAutocompleteValue) =>\n timer(200).pipe(switchMap(() => this.loadOptions(value as string))),\n ),\n )\n .subscribe();\n }\n\n private attachFocusBlurListeners(): void {\n const inputElement: ElementRef<HTMLInputElement> | undefined = this.inputElement();\n\n const autocomplete: MatAutocomplete | undefined = this.autocomplete();\n\n if (!inputElement || !autocomplete) return;\n\n const inputFocus: Observable<Event> = fromEvent(inputElement.nativeElement, 'focus');\n\n const inputBlur: Observable<Event> = fromEvent(inputElement.nativeElement, 'blur');\n\n const focusObservables: Observable<unknown>[] = [inputFocus, autocomplete.opened];\n\n const blurObservables: Observable<unknown>[] = [inputBlur, autocomplete.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(() => undefined)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));\n }\n\n private handleAdjustedValue(): void {\n this.viewReady$\n .pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))\n .subscribe((value: WlcmAutocompleteValue) => this._changed?.(value));\n }\n}\n","<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n />\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n >\n <ng-container>\n @for (option of options(); track option) {\n <mat-option\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate() }\"\n [value]=\"option\"\n >\n @if (optionTemplate(); as optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n }\n\n @if (options().length === 0) {\n <mat-option [disabled]=\"true\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value, loading: loading() }\n \"\n ></ng-container>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n defaultNoResultsTemplate;\n context: { $implicit: control.value, loading: loading() }\n \"\n ></ng-container>\n }\n </mat-option>\n }\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #defaultNoResultsTemplate let-loading=\"loading\">\n @if (loading) {\n Please wait...\n } @else {\n No results found\n }\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n InputSignal,\n OutputEmitterRef,\n forwardRef,\n inject,\n input,\n output,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { WlcmFormControl } from '../../models/form.models';\n\n\n@Component({\n selector: 'wlcm-checkbox',\n host: { class: 'wlcm-checkbox' },\n imports: [MatCheckboxModule, ReactiveFormsModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmCheckboxComponent), multi: true },\n ],\n})\nexport class WlcmCheckboxComponent implements ControlValueAccessor, Validator {\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private parentFormMember = inject<WlcmFormControl>(WLCM_FORM_CONTROL, { optional: true });\n\n private destroyRef = inject(DestroyRef);\n\n value: InputSignal<string | undefined> = input();\n\n changed: OutputEmitterRef<boolean> = output();\n\n private _changed?: (value: boolean) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n protected control: FormControl = new FormControl(false);\n\n constructor() {\n if (this.parentFormMember) {\n this.handleStateChange();\n }\n }\n\n handleChange(value: MatCheckboxChange): void {\n this.changed.emit(value.checked);\n\n this._changed?.(value.checked);\n\n this._touched?.();\n }\n\n writeValue(value: boolean): void {\n this.control.setValue(value);\n }\n\n validate = (): ValidationErrors | null => null;\n\n registerOnChange(callback: (value: boolean) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n get checked(): boolean {\n return this.control.value;\n }\n\n set checked(value: boolean) {\n this.control.setValue(value);\n }\n\n private handleStateChange(): void {\n this.parentFormMember!.stateChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<mat-checkbox [formControl]=\"control\" (change)=\"handleChange($event)\">\n <ng-content></ng-content>\n</mat-checkbox>\n","\nimport {\n AfterContentInit,\n Component,\n DestroyRef,\n Signal,\n WritableSignal,\n computed,\n contentChildren,\n effect,\n forwardRef,\n inject,\n signal,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WlcmCheckboxComponent } from '../checkbox/checkbox.component';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { Observable, Subject, merge, takeUntil, tap } from 'rxjs';\n\n@Component({\n selector: 'wlcm-checkbox-group',\n host: { class: 'wlcm-checkbox-group' },\n imports: [],\n templateUrl: './checkbox-group.component.html',\n styleUrl: './checkbox-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmCheckboxGroupComponent), multi: true },\n ],\n})\nexport class WlcmCheckboxGroupComponent implements AfterContentInit, ControlValueAccessor, Validator {\n private destroyRef = inject(DestroyRef);\n\n checkboxes: Signal<readonly WlcmCheckboxComponent[]> = contentChildren(WlcmCheckboxComponent);\n\n private checkboxesMap: Signal<Map<string, WlcmCheckboxComponent>> = computed(() => {\n return new Map(this.checkboxes().map((checkbox: WlcmCheckboxComponent) => [checkbox.value()!, checkbox]));\n });\n\n private values: WritableSignal<Set<string>> = signal(new Set());\n\n private checkboxesListUpdated: Subject<void> = new Subject();\n\n private _changed?: (value: string[]) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n constructor() {\n effect(() => this.handleCheckboxesToggle(this.checkboxes()));\n }\n\n ngAfterContentInit(): void {\n this.updateCheckboxes(this.values());\n }\n\n writeValue(value: string[]): void {\n this.values.set(new Set(value));\n\n if (this.checkboxes()) this.updateCheckboxes(this.values());\n }\n\n validate = (): ValidationErrors | null => null;\n\n registerOnChange(callback: (value: string[]) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n private updateControl(values: Set<string>): void {\n this._changed?.(Array.from(values.values()));\n\n this._touched?.();\n }\n\n private updateCheckboxes(values: Set<string>): void {\n const checkboxesMap: Map<string, WlcmCheckboxComponent> = this.checkboxesMap();\n\n for (const checkbox of checkboxesMap.values()) {\n checkbox.checked = values.has(checkbox.value()!);\n }\n }\n\n private handleCheckboxesToggle(checkboxes: readonly WlcmCheckboxComponent[]): void {\n this.checkboxesListUpdated.next();\n\n const handleCheck = (checkbox: WlcmCheckboxComponent) => {\n this.values.update((values: Set<string>) => {\n if (checkbox.checked) {\n values.add(checkbox.value()!);\n } else {\n values.delete(checkbox.value()!);\n }\n\n this.updateControl(values);\n\n return values;\n });\n };\n\n const changeHandlers: Observable<unknown>[] = Array.from(checkboxes.values()).map(\n (checkbox: WlcmCheckboxComponent) => {\n return outputToObservable(checkbox.changed).pipe(tap(() => handleCheck(checkbox)));\n },\n );\n\n merge(...changeHandlers)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(takeUntil(this.checkboxesListUpdated))\n .subscribe();\n }\n}\n","<ng-content select=\"wlcm-checkbox\"></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { Component, InputSignal, input, ChangeDetectionStrategy } from '@angular/core';\nimport { WlcmIconDirective, WlcmIconName, WlcmLoaderComponent } from '@wlcm/angular/core';\nimport { WlcmAutocomplete } from '../../../models/autocomplete.models';\n\n@Component({\n selector: 'wlcm-autocomplete-suffix',\n host: { class: 'wlcm-autocomplete-suffix' },\n imports: [CommonModule, WlcmIconDirective, WlcmLoaderComponent],\n templateUrl: './autocomplete-suffix.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './autocomplete-suffix.component.scss',\n})\nexport class WlcmAutocompleteSuffixComponent {\n autocomplete: InputSignal<WlcmAutocomplete> = input.required();\n\n readonly WlcmIconName = WlcmIconName;\n}\n","@let loading = autocomplete().loading$ | async;\n<ng-container>\n @if (!loading) {\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n }\n\n <wlcm-loader [hidden]=\"!loading\"></wlcm-loader>\n</ng-container>\n","import { Directive, inject } from '@angular/core';\nimport { WLCM_INPUT_BINDER } from '../constants';\nimport { WlcmSelectComponent } from '../components';\n\n@Directive({\n selector: '[wlcmSelectInputBinder]',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const select: WlcmSelectComponent = inject(WlcmSelectComponent, { self: true });\n\n return { bind: () => select };\n },\n },\n ],\n})\nexport class WlcmSelectInputBinderDirective {}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n InputSignal,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n WritableSignal,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n viewChild,\n viewChildren,\n AfterViewInit,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MAT_SELECT_CONFIG, MatOption, MatSelect, MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport {\n DEFAULT_QUERY_PARAMS,\n ScrollDetectionApi,\n WlcmIconDirective,\n WlcmIconName,\n WlcmOption,\n WlcmSelectOptionFormat,\n} from '@wlcm/angular/core';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER, WLCM_FORM_FIELD } from '../../constants';\nimport { WlcmSelectInputBinderDirective } from '../../directives/select-input-binder.directive';\nimport { WlcmFormControl, WlcmFormField, WlcmFormFieldInput } from '../../models/_index';\nimport {\n BehaviorSubject,\n EMPTY,\n Observable,\n Subject,\n Subscriber,\n filter,\n first,\n map,\n of,\n switchMap,\n takeUntil,\n} from 'rxjs';\nimport { IsOptionDisabledFn, WlcmCanSelectFn, WlcmSelectConfig, WlcmSelectValue } from '../../models/select.models';\nimport { WLCM_SELECT_CONFIG } from '../../constants/select.constants';\nimport { WlcmQueryParams, WlcmPaginatedData } from '@wlcm/common';\nimport { mergeWith } from 'lodash-es';\n\ntype OptionTemplateContext = TemplateRef<{ $implicit: WlcmOption }>;\n\nconst PANEL_CLASS = 'wlcm-select-panel';\n\nconst DEFAULT_CONFIG: WlcmSelectConfig = { overlayPanelClass: [PANEL_CLASS] };\n\nconst mergeConfig = (config: WlcmSelectConfig): WlcmSelectConfig => {\n const customizer = (_default: WlcmSelectConfig, _new: WlcmSelectConfig): Array<unknown> | void => {\n if (Array.isArray(_default)) return _default.concat(_new);\n };\n\n return mergeWith({ ...DEFAULT_CONFIG }, config, customizer);\n};\n\n@Component({\n selector: 'wlcm-select',\n host: { class: 'wlcm-select', '(click)': 'openPanel()' },\n imports: [CommonModule, MatSelectModule, ReactiveFormsModule, WlcmIconDirective],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [WlcmSelectInputBinderDirective],\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n {\n provide: MAT_SELECT_CONFIG,\n useFactory: () => {\n const wlcmConfig: WlcmSelectConfig = inject(WLCM_SELECT_CONFIG, { optional: true }) ?? {};\n\n return mergeConfig(wlcmConfig);\n },\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n ],\n})\nexport class WlcmSelectComponent implements WlcmFormFieldInput, ControlValueAccessor, Validator, AfterViewInit {\n multiple: InputSignal<boolean> = input(false);\n\n placeholder: InputSignal<string> = input('Not selected');\n\n fetchPaginatedOptions: InputSignal<\n ((params: WlcmQueryParams) => Observable<WlcmPaginatedData<WlcmOption>>) | undefined\n > = input();\n\n canSelect: InputSignal<WlcmCanSelectFn> = input<WlcmCanSelectFn>((_: WlcmSelectValue) => true);\n\n // queryParams is both a public input AND mutated internally (page pagination),\n // so it can't be a plain read-only signal input. linkedSignal seeds a mutable\n // working copy from the input (structuredClone so we never mutate the caller's\n // object) and re-seeds if the input changes.\n queryParams: InputSignal<WlcmQueryParams> = input<WlcmQueryParams>({ ...DEFAULT_QUERY_PARAMS });\n\n protected _queryParams: WritableSignal<WlcmQueryParams> = linkedSignal(() => structuredClone(this.queryParams()));\n\n paginated: InputSignal<boolean> = input(false);\n\n options: InputSignal<WlcmOption[]> = input<WlcmOption[]>([]);\n\n paginatedOptions: WritableSignal<WlcmOption[]> = signal([]);\n\n selectOptionFormat: InputSignal<WlcmSelectOptionFormat> = input<WlcmSelectOptionFormat>('ValueOnly');\n\n optionTemplate: InputSignal<TemplateRef<OptionTemplateContext> | null> =\n input<TemplateRef<OptionTemplateContext> | null>(null);\n\n triggerTemplate: InputSignal<TemplateRef<MatOption | MatOption[]> | undefined> = input();\n\n isOptionDisabled: InputSignal<IsOptionDisabledFn> = input<IsOptionDisabledFn>(() => false);\n\n selectionChange: OutputEmitterRef<MatSelectChange> = output();\n\n opened: OutputEmitterRef<void> = output();\n\n closed: OutputEmitterRef<void> = output();\n\n readonly value: WritableSignal<WlcmSelectValue | null> = signal(null);\n\n readonly disabled: WritableSignal<boolean> = signal(false);\n\n readonly WlcmIconName = WlcmIconName;\n\n private _changed?: (value: WlcmSelectValue) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n private _paginatedData: WlcmPaginatedData<WlcmOption> | null = null;\n\n private _previousValue: WlcmSelectValue | null = null;\n\n private _optionsCache: Set<unknown> = new Set();\n\n computedOptions: Signal<WlcmOption[]> = computed(() =>\n this.paginated() ? this.paginatedOptions() : this.options(),\n );\n\n prefilledOptions: WritableSignal<WlcmOption[]> = signal([]);\n\n matSelect: Signal<MatSelect | undefined> = viewChild(MatSelect);\n\n openPanel(): void {\n this.matSelect()?.open();\n }\n\n protected matOptions: Signal<ReadonlyArray<MatOption>> = viewChildren(MatOption);\n\n private readonly _focusStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _blurStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n focus$: Observable<unknown> = this._focusStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n blur$: Observable<unknown> = this._blurStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n private adjustedValue$: BehaviorSubject<WlcmSelectValue | null> = new BehaviorSubject<WlcmSelectValue | null>(null);\n\n private viewReady$: Subject<void> = new Subject();\n\n private selected$: Subject<void> = new Subject();\n\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private scrollDetectionApi = inject(ScrollDetectionApi);\n\n private formField = inject<WlcmFormField>(WLCM_FORM_FIELD);\n\n private parentFormMember = inject<WlcmFormControl>(WLCM_FORM_CONTROL, { optional: true });\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n if (this.parentFormMember) {\n this.handleStateChange();\n }\n\n this.handleAdjustedValue();\n\n // Keep each rendered MatOption's disabled state in sync with the\n // isOptionDisabled predicate. Runs as an effect (not inside computedOptions)\n // because MatOption.disabled is a signal-backed setter as of Material 20 and\n // writing to it from within a computed throws NG0600.\n effect(() => {\n const options: WlcmOption[] = this.computedOptions();\n\n if (this.isOptionDisabled() && options.length > 0) {\n this.updateOptionsStatus();\n }\n });\n\n toObservable(this.paginated)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((paginated: boolean) => {\n if (paginated) this.loadPaginatedOptions();\n });\n }\n\n ngAfterViewInit(): void {\n this.viewReady$.next();\n\n // At runtime the MatSelect view query always resolves; under\n // jest-preset-angular the lookup can return undefined in the harness, so\n // every access is guarded.\n const matSelect: MatSelect | undefined = this.matSelect();\n\n if (this.formField && matSelect) {\n this.setPreferredOverlayOrigin(matSelect);\n }\n\n if (matSelect) {\n // Material exposes no public focus/blur streams for MatSelect. Derive both\n // from the public openedChange emitter (true = opened/focus, false =\n // closed/blur) instead of the private _openedStream/_closedStream.\n this._focusStream$.next(matSelect.openedChange.pipe(filter(Boolean), map(() => undefined)));\n\n this._blurStream$.next(matSelect.openedChange.pipe(filter((opened) => !opened), map(() => undefined)));\n }\n }\n\n // MatSelect has no public API to override the overlay origin; _preferredOverlayOrigin\n // is the only lever. Isolated here with a dev-mode assertion so a Material upgrade\n // that renames/removes the field fails loudly instead of silently misplacing the panel.\n private setPreferredOverlayOrigin(matSelect: MatSelect): void {\n if (typeof ngDevMode !== 'undefined' && ngDevMode && !('_preferredOverlayOrigin' in matSelect)) {\n throw new Error(\n 'WlcmSelect: MatSelect._preferredOverlayOrigin is no longer available — the overlay origin ' +\n 'override needs to be reworked for this @angular/material version.',\n );\n }\n\n matSelect._preferredOverlayOrigin = this.formField.inputContainer;\n }\n\n compareWith = (optionA: WlcmOption | string, optionB: WlcmOption | string): boolean => {\n if (this.areOptionsEqual(optionA, optionB)) {\n if (this.selectOptionFormat() === 'CompleteOption' && typeof optionB !== 'object') {\n this._changed?.(optionA);\n }\n\n return true;\n }\n\n return false;\n };\n\n focus = (): void => this.matSelect()?.open();\n\n isFocused = (): boolean => this.isOpen;\n\n select(event: MatSelectChange): void {\n this.selected$.next();\n\n const matSelect: MatSelect | undefined = this.matSelect();\n\n if (matSelect) matSelect.value = event.value;\n\n this.validateSelectedOption(event.value)\n .pipe(takeUntil(this.selected$))\n .subscribe((canSelect: boolean) => {\n if (!canSelect) return this.revertPreviousValue();\n\n this.updateValue(event.value);\n\n this._changed?.(event.value);\n\n this._validatorChanged?.();\n\n this.selectionChange.emit(event);\n });\n }\n\n private areOptionsEqual(optionA: WlcmOption | string, optionB: WlcmOption | string) {\n return ((optionA as WlcmOption)?.value || optionA) === ((optionB as WlcmOption)?.value || optionB);\n }\n\n private revertPreviousValue(): void {\n const matSelect: MatSelect | undefined = this.matSelect();\n\n if (matSelect) matSelect.value = this._previousValue;\n }\n\n private updateValue(value: WlcmSelectValue): void {\n this.value.set(value);\n\n this._previousValue = value;\n }\n\n private validateSelectedOption(value: WlcmSelectValue): Observable<boolean> {\n return new Observable<boolean>((observer: Subscriber<boolean>) => {\n const response: Observable<boolean> | boolean = this.canSelect()(value);\n\n const source: Observable<boolean> = response instanceof Observable ? response.pipe(first()) : of(response);\n\n source.subscribe((result: boolean) => {\n observer.next(result);\n observer.complete();\n });\n });\n }\n\n protected panelOpened(): void {\n this.opened.emit();\n\n this.handleScrollDown();\n }\n\n protected panelClosed(): void {\n this.closed.emit();\n\n this._touched?.();\n }\n\n updateOptionsStatus(): void {\n this.matOptions().forEach((matOption: MatOption) => {\n matOption.disabled = this.isOptionDisabled()(matOption.value);\n });\n }\n\n writeValue(value: WlcmSelectValue): void {\n if (this.paginated()) this.prefillOptions(value);\n\n const formattedValue: WlcmSelectValue = this.prepareValueForPatch(value);\n\n this.updateValue(formattedValue);\n }\n\n registerOnChange(callback: (value: WlcmSelectValue) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n validate(): ValidationErrors | null {\n return null;\n }\n\n get isOpen(): boolean {\n return this.matSelect()?.panelOpen ?? false;\n }\n\n private prepareValueForPatch(value: WlcmSelectValue): WlcmSelectValue {\n const formatedValue: { changed: boolean; value: WlcmSelectValue } = this.formatValue(value);\n\n if (formatedValue.changed) this.adjustedValue$.next(formatedValue.value);\n\n return formatedValue.value;\n }\n\n private formatValue(value: WlcmSelectValue): { changed: boolean; value: WlcmSelectValue } {\n let changed = false;\n\n const _formatOption = (value: WlcmOption | string): WlcmOption | string => {\n const formatedOption: { changed: boolean; value: WlcmOption | string } = this.formatOption(value);\n\n if (formatedOption.changed) changed = true;\n\n return formatedOption.value;\n };\n\n if (value instanceof Array) {\n const options: WlcmSelectValue = value.map(_formatOption) as WlcmSelectValue;\n\n return { changed, value: options };\n }\n\n const option: WlcmSelectValue = _formatOption(value);\n\n return { changed, value: option };\n }\n\n private formatOption(value: WlcmOption | string): { changed: boolean; value: WlcmOption | string } {\n if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {\n return { changed: true, value: value.value as string };\n }\n\n return { changed: false, value };\n }\n\n private loadPaginatedOptions(): void {\n this._queryParams.update((params: WlcmQueryParams) => ({ ...params, page: 1 }));\n\n this.fetchPaginatedOptions()!(this._queryParams())\n .pipe(takeUntilDestroyed(this.destroyRef), first())\n .subscribe((paginatedData: WlcmPaginatedData<WlcmOption>) => {\n this._optionsCache.clear();\n\n this.cacheOptions(paginatedData.data);\n\n this._paginatedData = paginatedData;\n\n this.paginatedOptions.set(paginatedData.data);\n });\n }\n\n private loadMorePaginatedOptions(): void {\n if (!this._paginatedData || this._paginatedData.currPage + 1 > this._paginatedData.totalPages) return;\n\n this._queryParams.update((params: WlcmQueryParams) => ({ ...params, page: params.page + 1 }));\n\n this.fetchPaginatedOptions()!({ ...this._queryParams() })\n .pipe(takeUntilDestroyed(this.destroyRef), first())\n .subscribe((paginatedData: WlcmPaginatedData<WlcmOption>) => {\n this.cacheOptions(paginatedData.data);\n\n this._paginatedData = paginatedData;\n\n this.paginatedOptions.update((options: WlcmOption[]) => [...options, ...paginatedData.data]);\n });\n }\n\n private cacheOptions(options: WlcmOption[]): void {\n options.forEach((option: WlcmOption) => this._optionsCache.add(option.value));\n\n this.syncPrefilledOptions();\n }\n\n private syncPrefilledOptions(): void {\n if (this.prefilledOptions().length === 0) return;\n\n this.prefilledOptions.update((options: WlcmOption[]) => {\n return options.filter((option: WlcmOption) => !this._optionsCache.has(option.value));\n });\n }\n\n private prefillOptions(value: WlcmSelectValue): void {\n let prefilledOptions: WlcmOption[] = [];\n\n if (value instanceof Array) {\n prefilledOptions = value.filter((option: WlcmOption | string) => option instanceof Object) as WlcmOption[];\n } else if (value instanceof Object) {\n prefilledOptions = [value];\n }\n\n this.prefilledOptions.set(prefilledOptions);\n }\n\n private handleScrollDown(): void {\n const panel: ElementRef<HTMLElement> | undefined = this.matSelect()?.panel;\n\n if (!panel) return;\n\n // ScrollDetectionApi is zone-free (fromEvent with passive listener); no NgZone\n // dance needed under zoneless CD. panel.nativeElement replaces the old\n // document.querySelector('.mat-mdc-select-panel') internal-DOM lookup.\n this.scrollDetectionApi\n .onScrolledDown(panel.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.loadMorePaginatedOptions());\n }\n\n private handleStateChange(): void {\n this.parentFormMember!.stateChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private handleAdjustedValue(): void {\n this.viewReady$\n .pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))\n .subscribe((value: WlcmSelectValue) => this._changed?.(value));\n }\n}\n","<mat-select\n #selectComponent\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple()\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder()\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n [compareWith]=\"compareWith\"\n (opened)=\"panelOpened()\"\n (closed)=\"panelClosed()\"\n >\n @if (triggerTemplate()) {\n <mat-select-trigger>\n <ng-container\n *ngTemplateOutlet=\"\n triggerTemplate()!;\n context: $any({ $implicit: selectComponent.selected })\n \"\n ></ng-container>\n </mat-select-trigger>\n }\n\n @for (option of prefilledOptions(); track option) {\n <mat-option\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\n </mat-option>\n }\n\n @for (option of computedOptions(); track option) {\n <mat-option\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\n </mat-option>\n }\n</mat-select>\n\n<div class=\"wlcm-select-arrow\">\n <ng-container\n [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"\n [wlcmIconStopPropagation]=\"false\"\n ></ng-container>\n</div>\n\n<ng-template #wlcmSelectOptionContent let-option>\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate(); context: $any({ $implicit: option })\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldHint]',\n host: { class: 'wlcm-hint' },\n})\nexport class WlcmFormFieldHintDirective {}\n","import { NgModule, Type } from '@angular/core';\nimport { WlcmFormFieldComponent } from './components/form-field/form-field.component';\nimport { WlcmInputDirective } from './directives/input.directive';\nimport { WlcmLabelComponent } from './components/label/label.component';\nimport { WlcmSelectComponent } from './components/select/select.component';\nimport { WlcmFormFieldCustomContainerDirective } from './directives/form-field-custom-container.directive';\nimport { WlcmAutocompleteComponent } from './components/autocomplete/autocomplete.component';\nimport { WlcmFormFieldSuffixDirective } from './directives/form-field-suffix.directive';\nimport { WlcmFormFieldHintDirective } from './directives/form-field-hint.directive';\nimport { WlcmFormFieldPrefixDirective } from './directives/form-field-prefix.directive';\nimport { MAT_RADIO_DEFAULT_OPTIONS, MatRadioModule } from '@angular/material/radio';\nimport { WlcmCheckboxComponent, WlcmCheckboxGroupComponent } from './components';\nimport { WlcmAutocompleteSuffixComponent } from './components/partials';\n\nconst directives: Type<unknown>[] = [\n WlcmInputDirective,\n WlcmFormFieldCustomContainerDirective,\n WlcmFormFieldSuffixDirective,\n WlcmFormFieldPrefixDirective,\n WlcmFormFieldHintDirective,\n];\n\nconst components: Type<unknown>[] = [\n WlcmFormFieldComponent,\n WlcmAutocompleteComponent,\n WlcmAutocompleteSuffixComponent,\n WlcmCheckboxGroupComponent,\n WlcmCheckboxComponent,\n WlcmSelectComponent,\n WlcmLabelComponent,\n];\n\n@NgModule({\n imports: [...components, ...directives, MatRadioModule],\n exports: [...components, ...directives, MatRadioModule],\n providers: [{ provide: MAT_RADIO_DEFAULT_OPTIONS, useValue: { color: 'primary' } }],\n})\nexport class WlcmFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PANEL_CLASS","i1","i2","i1.WlcmSelectInputBinderDirective","i3","i4"],"mappings":"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"}