@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-datepicker.mjs","sources":["../../../../modules/datepicker/src/lib/constants/range/date-range-trigger-selection-model.constants.ts","../../../../modules/datepicker/src/lib/models/date-picker.models.ts","../../../../modules/datepicker/src/lib/constants/datepicker.constants.ts","../../../../modules/datepicker/src/lib/directives/datepicker-trigger.base.ts","../../../../modules/datepicker/src/lib/directives/datepicker-input.base.ts","../../../../modules/datepicker/src/lib/directives/ragne/date-range-picker-input.base.ts","../../../../modules/datepicker/src/lib/models/range/date-range-validation.models.ts","../../../../modules/datepicker/src/lib/directives/ragne/date-range-picker-input-start.directive.ts","../../../../modules/datepicker/src/lib/constants/range/date-range-selection-model.constants.ts","../../../../modules/datepicker/src/lib/models/range/date-range-picker.models.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.html","../../../../modules/datepicker/src/lib/constants/range/date-range-picker.constants.ts","../../../../modules/datepicker/src/lib/components/calendar-header/calendar-header.component.ts","../../../../modules/datepicker/src/lib/components/calendar-header/calendar-header.component.html","../../../../modules/datepicker/src/lib/directives/calendar.directive.ts","../../../../modules/datepicker/src/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.ts","../../../../modules/datepicker/src/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.html","../../../../modules/datepicker/src/lib/directives/ragne/date-range-picker-input-end.directive.ts","../../../../modules/datepicker/src/lib/utils/range/date-range-picker-errors.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-input/date-range-picker-input.component.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-input/date-range-picker-input.component.html","../../../../modules/datepicker/src/lib/models/range/data-range-calendar.models.ts","../../../../modules/datepicker/src/lib/directives/ragne/left-calendar.directive.ts","../../../../modules/datepicker/src/lib/directives/ragne/right-calendar.directive.ts","../../../../modules/datepicker/src/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.ts","../../../../modules/datepicker/src/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.html","../../../../modules/datepicker/src/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.ts","../../../../modules/datepicker/src/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.html","../../../../modules/datepicker/src/lib/directives/single/datepicker-input.directive.ts","../../../../modules/datepicker/src/lib/components/single/datepicker-panel/datepicker-panel.component.ts","../../../../modules/datepicker/src/lib/components/single/datepicker-panel/datepicker-panel.component.html","../../../../modules/datepicker/src/lib/components/single/datepicker-input-container/datepicker-input-container.component.ts","../../../../modules/datepicker/src/lib/components/single/datepicker-input-container/datepicker-input-container.component.html","../../../../modules/datepicker/src/lib/utils/range/date-range-input.validators.ts","../../../../modules/datepicker/src/lib/datepicker.module.ts","../../../../modules/datepicker/src/wlcm-angular-datepicker.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { MatDateSelectionModel, MatRangeDateSelectionModel } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\n\nexport const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<Date>> = new InjectionToken(\n 'WLCM_DATE_RANGE_SELECTION_MODEL'\n);\n\nexport const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER: Provider = {\n provide: WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n useFactory: (adapter: DateAdapter<Date>) => new MatRangeDateSelectionModel(adapter),\n deps: [DateAdapter],\n};\n","import { Injectable, Signal } from '@angular/core';\nimport { DateFnsAdapter } from '@angular/material-date-fns-adapter';\nimport { format } from 'date-fns';\n\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n@Injectable()\nexport class WlcmDateAdapter extends DateFnsAdapter {\n override getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const formatString = style === 'long' ? 'EEEE' : 'EEEEEE';\n\n return range(7, (i) => format(new Date(2017, 0, i + 1), formatString));\n }\n}\n\nexport enum WlcmDateValidation {\n Format = 'WlcmInvalidDateFormat',\n MinDate = 'WlcmDateIsBeforeMinDate',\n MaxDate = 'WlcmDateIsAfterMaxDate',\n}\n\nexport interface WlcmDatepickerConfig {\n minDate?: Signal<Date | undefined>;\n\n maxDate?: Signal<Date | undefined>;\n\n selectOnly?: boolean;\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats } from '@angular/material/core';\n\nimport { WlcmDateAdapter, WlcmDatepickerConfig } from '../models/date-picker.models';\nimport { enUS } from 'date-fns/locale';\n\nexport const WLCM_DEFAULT_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MMM/dd/yyyy',\n },\n display: {\n dateInput: 'MMM/dd/yyyy',\n monthYearLabel: 'MMMM yyyy',\n dateA11yLabel: 'MMM/dd/yyyy',\n monthYearA11yLabel: 'MMM yyyy',\n },\n};\n\nexport const WLCM_DEFAULT_DATEPICKER_PROVIDERS: Provider[] = [\n { provide: MAT_DATE_LOCALE, useValue: enUS },\n { provide: MAT_DATE_FORMATS, useValue: WLCM_DEFAULT_DATE_FORMATS },\n { provide: DateAdapter, useClass: WlcmDateAdapter, deps: [MAT_DATE_LOCALE] },\n];\n\nexport const WLCM_DATEPICKER_CONFIG: InjectionToken<WlcmDatepickerConfig> = new InjectionToken(\n 'WLCM_DATEPICKER_CONFIG',\n { providedIn: 'root', factory: () => ({ selectOnly: false }) },\n);\n\nexport const WLCM_DATEPICKER_INPUT_CLASS = 'wlcm-datepicker-input';\n","import { OverlayRef, Overlay, FlexibleConnectedPositionStrategy, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Directive,\n ElementRef,\n Type,\n ComponentRef,\n ViewContainerRef,\n Injector,\n InputSignal,\n input,\n HostBinding,\n} from '@angular/core';\nimport { WLCM_DATEPICKER_CONFIG } from '../constants/datepicker.constants';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { MatDateSelectionModel } from '@angular/material/datepicker';\nimport { WlcmDatepickerConfig } from '../models/date-picker.models';\nimport { Observable, merge, EMPTY, filter } from 'rxjs';\n\n@UntilDestroy()\n@Directive()\nexport abstract class WlcmDatepickerTrigger<T, D = Date> {\n minDate: InputSignal<Date | undefined> = input(this.defaultDatepickerConfig.minDate?.());\n\n maxDate: InputSignal<Date | undefined> = input(this.defaultDatepickerConfig.maxDate?.());\n\n selectOnly: InputSignal<boolean> = input(this.defaultDatepickerConfig.selectOnly || false);\n\n @HostBinding('class.wlcm-datepicker-select-only-mode') get isOnlySelect(): boolean {\n return this.selectOnly();\n }\n\n protected overlayRef: OverlayRef = this.overlay.create(this.createOverlayConfig());\n\n protected abstract connectedTo: ElementRef<HTMLElement>;\n\n protected abstract componentType: Type<T>;\n\n protected componentRef?: ComponentRef<T>;\n\n protected constructor(\n protected overlay: Overlay,\n protected viewContainerRef: ViewContainerRef,\n protected selectionModel: MatDateSelectionModel<D>,\n ) {\n this.handleBackdropClick();\n }\n\n open(): void {\n const injector: Injector = Injector.create({\n providers: [{ provide: OverlayRef, useValue: this.overlayRef }],\n parent: this.datepickerInjector,\n });\n\n const portal: ComponentPortal<T> = new ComponentPortal(this.componentType, this.viewContainerRef, injector);\n\n this.updatePositionStrategy();\n\n this.componentRef = this.overlayRef.attach(portal);\n }\n\n close(): void {\n this.overlayRef.detach();\n }\n\n get isOpen(): boolean {\n return this.overlayRef.hasAttached();\n }\n\n get opened(): Observable<void> {\n return merge(this.overlayRef?.attachments() || EMPTY).pipe(filter(() => this.overlayRef.hasAttached()));\n }\n\n get closed(): Observable<void> {\n return (this.overlayRef?.detachments() || EMPTY).pipe(filter(() => !this.overlayRef.hasAttached()));\n }\n\n get datepickerInjector(): Injector {\n const parent: Injector = this.viewContainerRef.injector;\n\n return Injector.create({\n parent,\n providers: [{ provide: WLCM_DATEPICKER_CONFIG, useValue: this.datepickerConfig }],\n });\n }\n\n get defaultDatepickerConfig(): WlcmDatepickerConfig {\n return this.viewContainerRef.injector.get(WLCM_DATEPICKER_CONFIG, {}, { optional: true });\n }\n\n get datepickerConfig(): WlcmDatepickerConfig {\n const config: WlcmDatepickerConfig = { ...this.defaultDatepickerConfig };\n\n if (this.minDate()) config.minDate = this.minDate;\n\n if (this.maxDate()) config.maxDate = this.maxDate;\n\n config.selectOnly = this.selectOnly();\n\n return config;\n }\n\n private handleBackdropClick(): void {\n this.overlayRef\n .backdropClick()\n .pipe(untilDestroyed(this))\n .subscribe(() => this.close());\n }\n\n private updatePositionStrategy(): void {\n const strategy: FlexibleConnectedPositionStrategy = this.overlay.position().flexibleConnectedTo(this.connectedTo);\n\n strategy.withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ]);\n\n strategy.withLockedPosition(false);\n\n strategy.withDefaultOffsetY(4);\n\n this.overlayRef.updatePositionStrategy(strategy);\n }\n\n private createOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: 'transparent',\n });\n }\n}\n","import { Directive, ElementRef, HostBinding, HostListener } from '@angular/core';\nimport { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { format, isAfter, isBefore, isValid, parse, startOfDay } from 'date-fns';\nimport { WLCM_DATEPICKER_INPUT_CLASS } from '../constants/datepicker.constants';\nimport { DateAdapter, MatDateFormats } from '@angular/material/core';\nimport { WlcmDateValidation } from '../models/date-picker.models';\nimport { WlcmDatepickerTrigger } from './datepicker-trigger.base';\n\n@Directive()\nexport abstract class WlcmDatepickerInputBase implements ControlValueAccessor, Validator {\n @HostListener('blur') handleBlur() {\n this.updateSelection();\n\n this._touched?.();\n }\n\n @HostListener('input') handleInput() {\n if (this.isValidFormat(this.currentValue, this.dateFormats.parse.dateInput)) {\n this.updateSelection();\n }\n\n this._validatorChanged?.();\n }\n\n @HostBinding('class') get datepickerInputClass(): string {\n return WLCM_DATEPICKER_INPUT_CLASS;\n }\n\n protected _changed?: (value: Date | null) => void;\n\n protected _touched?: () => void;\n\n protected _validatorChanged?: () => void;\n\n constructor(\n protected element: ElementRef,\n protected dateAdapter: DateAdapter<Date>,\n protected dateFormats: MatDateFormats,\n protected trigger: WlcmDatepickerTrigger<unknown>,\n ) {}\n\n writeValue(value: Date | null): void {\n this.updateInputValue(value);\n }\n\n registerOnChange(callback: (value: Date | null) => 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 validate(): ValidationErrors | null {\n if (!this.currentValue) return null;\n\n const isValid: boolean = this.isValidFormat(this.currentValue, this.dateFormats.parse.dateInput);\n\n if (!isValid) {\n return {\n [WlcmDateValidation.Format]: { value: this.currentValue, format: this.dateFormats.parse.dateInput },\n required: false,\n };\n }\n\n const date: Date = this.parseCurrentValue()!;\n\n if (this.minDate && isBefore(startOfDay(date), startOfDay(this.minDate))) {\n return { [WlcmDateValidation.MinDate]: { minDate: this.minDate, currentDate: date } };\n }\n\n if (this.maxDate && isAfter(startOfDay(date), startOfDay(this.maxDate))) {\n return { [WlcmDateValidation.MaxDate]: { maxDate: this.maxDate, currentDate: date } };\n }\n\n return null;\n }\n\n parseCurrentValue(): Date | null {\n const date: Date | null = this.dateAdapter.parse(this.currentValue, this.dateFormats.parse.dateInput);\n\n return this.dateAdapter.getValidDateOrNull(date);\n }\n\n protected isValidFormat(value: string, pattern: string): boolean {\n const parsedDate = parse(value, pattern, new Date());\n\n return isValid(parsedDate) && value === format(parsedDate, pattern);\n }\n\n protected abstract updateSelection(): void;\n\n protected get minDate(): Date | undefined {\n return this.trigger.minDate?.();\n }\n\n protected get maxDate(): Date | undefined {\n return this.trigger.maxDate?.();\n }\n\n protected get inputElement(): HTMLInputElement {\n return this.element.nativeElement;\n }\n\n protected get currentValue(): string {\n return this.inputElement.value;\n }\n\n protected updateInputValue(value: Date | null): void {\n let newValue: string = '';\n\n if (value) {\n newValue = this.dateAdapter.format(value, this.dateFormats.display.dateInput);\n }\n\n this.inputElement.value = newValue;\n }\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { DateAdapter, MatDateFormats } from '@angular/material/core';\nimport { WlcmDatepickerInputBase } from '../datepicker-input.base';\nimport { WlcmDatepickerTrigger } from '../datepicker-trigger.base';\n\n@Directive()\nexport abstract class WlcmDateRangePickerInputBase\n extends WlcmDatepickerInputBase\n implements AfterViewInit, ControlValueAccessor, Validator\n{\n private _inputMirror: HTMLElement = this.createInputMirror();\n\n constructor(\n public override element: ElementRef<HTMLInputElement>,\n protected override dateAdapter: DateAdapter<Date>,\n protected override dateFormats: MatDateFormats,\n protected override trigger: WlcmDatepickerTrigger<unknown>,\n ) {\n super(element, dateAdapter, dateFormats, trigger);\n }\n\n ngAfterViewInit(): void {\n this.inputElement.parentElement?.appendChild(this._inputMirror);\n\n this.copyInputElementStyles(this._inputMirror);\n\n document.fonts.ready.then(() => this.changeInputSize());\n }\n\n override writeValue(value: Date | null): void {\n super.writeValue(value);\n\n this.updateSelection();\n }\n\n override handleInput() {\n this.changeInputSize();\n\n super.handleInput();\n }\n\n protected override updateInputValue(value: Date | null): void {\n super.updateInputValue(value);\n\n this.changeInputSize();\n }\n\n private changeInputSize(): void {\n requestAnimationFrame(() => {\n const value: string = this.currentValue || this.inputElement.placeholder;\n\n this._inputMirror.innerHTML = value;\n\n this.inputElement.style.width = `${this._inputMirror.offsetWidth + 2}px`;\n });\n }\n\n private createInputMirror(): HTMLElement {\n const inputMirror: HTMLElement = document.createElement('div');\n\n inputMirror.classList.add('wlcm-date-range-picker-input-field-mirror');\n\n return inputMirror;\n }\n\n private copyInputElementStyles(target: HTMLElement): void {\n const inputElementStyles: CSSStyleDeclaration = window.getComputedStyle(this.inputElement);\n\n target.style.fontSize = inputElementStyles.fontSize;\n target.style.fontFamily = inputElementStyles.fontFamily;\n target.style.letterSpacing = inputElementStyles.letterSpacing;\n }\n}\n","export enum WlcmDateRangeValidation {\n StartExceedsEnd = 'wlcmDateRangeStartExceedsEnd',\n}\n","import { Directive, ElementRef, Inject, Optional, forwardRef } from '@angular/core';\nimport { WlcmDateRangePickerInputBase } from './date-range-picker-input.base';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../constants/range/date-range-trigger-selection-model.constants';\nimport { WlcmDateRangeValidation } from '../../models/range/date-range-validation.models';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { isAfter, isValid } from 'date-fns';\nimport { WlcmDatepickerTrigger } from '../datepicker-trigger.base';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmDateRangePickerInputStart]',\n host: { class: 'wlcm-date-range-picker-input-field' },\n standalone: true,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePickerInputStartDirective), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateRangePickerInputStartDirective), multi: true },\n ],\n})\nexport class DateRangePickerInputStartDirective extends WlcmDateRangePickerInputBase {\n constructor(\n public override element: ElementRef<HTMLInputElement>,\n protected override dateAdapter: DateAdapter<Date>,\n @Optional() @Inject(MAT_DATE_FORMATS) protected override dateFormats: MatDateFormats,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected selectionModel: MatDateSelectionModel<DateRange<Date>>,\n protected override trigger: WlcmDatepickerTrigger<unknown>\n ) {\n super(element, dateAdapter, dateFormats, trigger);\n\n this.handleSelectionChange();\n }\n\n override validate(): ValidationErrors | null {\n const defaultErrors: ValidationErrors | null = super.validate();\n\n if (this.selectionModel.isComplete() && isValid(this.selectionModel.selection.end)) {\n const startDate: Date | null = this.parseCurrentValue();\n\n if (startDate && isAfter(startDate, this.selectionModel.selection.end!)) {\n return { [WlcmDateRangeValidation.StartExceedsEnd]: true, ...(defaultErrors ?? {}) };\n }\n }\n\n return defaultErrors;\n }\n\n override updateSelection = (): void => {\n let start: Date | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(new DateRange(start, this.selectionModel.selection.end), this);\n };\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(untilDestroyed(this)).subscribe(({ selection }) => {\n const validDate: Date | null = this.dateAdapter.getValidDateOrNull(selection.start);\n\n this._changed?.(validDate);\n\n this.updateInputValue(validDate);\n\n this._validatorChanged?.();\n });\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatDateSelectionModel, MatRangeDateSelectionModel } from '@angular/material/datepicker';\n\nexport const WLCM_DATE_RANGE_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<Date>> = new InjectionToken(\n 'WLCM_DATE_RANGE_SELECTION_MODEL'\n);\n\nexport const WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER: Provider = {\n provide: WLCM_DATE_RANGE_SELECTION_MODEL,\n useFactory: (adapter: DateAdapter<Date>) => new MatRangeDateSelectionModel(adapter),\n deps: [DateAdapter],\n};\n","import { computed, Signal, signal, Type, WritableSignal } from '@angular/core';\nimport {\n MatDateSelectionModel,\n DateRange,\n MatCalendarUserEvent,\n MatDateRangeSelectionStrategy,\n} from '@angular/material/datepicker';\nimport { untilDestroyed } from '@ngneat/until-destroy';\n\nexport abstract class WlcmDateRangePicker {\n protected _isComplete: WritableSignal<boolean> = signal(false);\n\n readonly isComplete: Signal<boolean> = computed(() => this._isComplete());\n\n protected constructor(\n protected localSelectionModel: MatDateSelectionModel<DateRange<Date>>,\n protected rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>,\n ) {\n this.handleSelectionChanged();\n }\n\n abstract apply(): void;\n\n abstract reset(): void;\n\n setSelection(selection: DateRange<Date>): void {\n this.localSelectionModel.updateSelection(selection, this);\n }\n\n get selected(): DateRange<Date> {\n return this.localSelectionModel.selection;\n }\n\n protected calendarSelection(event: MatCalendarUserEvent<Date | null>): void {\n const newSelection: DateRange<Date> = this.rangeSelectionStrategy.selectionFinished(\n event.value,\n this.localSelectionModel.selection,\n event.event,\n );\n\n this.localSelectionModel.updateSelection(newSelection, this);\n }\n\n protected calendarDragDrop(event: MatCalendarUserEvent<DateRange<Date>>): void {\n this.localSelectionModel.updateSelection(event.value, this);\n }\n\n private handleSelectionChanged(): void {\n this.localSelectionModel.selectionChanged\n .pipe(untilDestroyed(this))\n .subscribe(() => this._isComplete.set(this.localSelectionModel.isComplete()));\n }\n}\n\nexport interface WlcmDateRangePickerConfig {\n headerComponent?: Type<unknown>;\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmButtonModule } from '@wlcm/angular/button';\nimport { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';\n\n@Component({\n selector: 'wlcm-date-range-picker-bottom-panel',\n standalone: true,\n imports: [CommonModule, WlcmButtonModule],\n templateUrl: './date-range-picker-bottom-panel.component.html',\n styleUrl: './date-range-picker-bottom-panel.component.scss',\n})\nexport class WlcmDateRangePickerBottomPanelComponent {\n constructor(protected picker: WlcmDateRangePicker) {}\n}\n","<div class=\"wlcm-date-range-picker-bottom-panel\">\n <wlcm-button type=\"paddingless\" (clicked)=\"picker.reset()\">Reset</wlcm-button>\n\n <wlcm-button (clicked)=\"picker.apply()\" [isDisabled]=\"!picker.isComplete()\">\n Apply\n </wlcm-button>\n</div>\n","import { InjectionToken, Type } from '@angular/core';\nimport { WlcmDateRangePickerConfig } from '../../models/range/date-range-picker.models';\nimport { WlcmDateRangePickerBottomPanelComponent } from '../../components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component';\n\nexport const WLCM_DATE_RANGE_PICKER_CONFIG: InjectionToken<WlcmDateRangePickerConfig> = new InjectionToken(\n 'WLCM_DATE_RANGE_PICKER_CONFIG',\n { providedIn: 'root', factory: () => ({}) },\n);\n\nexport const WLCM_DATE_RANGE_PICKER_BP: InjectionToken<Type<unknown>> = new InjectionToken(\n 'WLCM_DATE_RANGE_PICKER_BP',\n { providedIn: 'root', factory: () => WlcmDateRangePickerBottomPanelComponent },\n);\n\nexport const WLCM_DATE_RANGE_PICKER_LEFT_PANEL: InjectionToken<Type<unknown>> = new InjectionToken(\n 'WLCM_DATE_RANGE_PICKER_LEFT_PANEL',\n);\n","import { Component, Inject, InputSignal, Optional, forwardRef, input } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmIconDirective, WlcmIconName } from '@wlcm/angular/core';\nimport { MatCalendar, yearsPerPage } from '@angular/material/datepicker';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-calendar-header',\n host: { class: 'wlcm-calendar-header' },\n standalone: true,\n imports: [CommonModule, WlcmIconDirective],\n templateUrl: './calendar-header.component.html',\n styleUrl: './calendar-header.component.scss',\n})\nexport class WlcmCalendarHeaderComponent {\n readonly WlcmIconName = WlcmIconName;\n\n next: InputSignal<(() => void) | undefined> = input();\n\n previous: InputSignal<(() => void) | undefined> = input();\n\n disableLeftArrow: InputSignal<boolean> = input(false);\n\n disableRightArrow: InputSignal<boolean> = input(false);\n\n displayLeftArrow: InputSignal<boolean> = input(true);\n\n displayRightArrow: InputSignal<boolean> = input(true);\n\n constructor(\n private dateAdapter: DateAdapter<Date>,\n @Optional() @Inject(MAT_DATE_FORMATS) protected dateFormats: MatDateFormats,\n @Inject(forwardRef(() => MatCalendar)) public calendar: MatCalendar<Date>\n ) {}\n\n previousClicked(): void {\n if (this.previous()) return this.previous()!();\n\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n : this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n );\n }\n\n nextClicked(): void {\n if (this.next()) return this.next()!();\n\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n : this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n );\n }\n\n changeCalendarView(): void {\n if (this.calendar.currentView === 'multi-year') {\n this.calendar.currentView = 'month';\n\n return;\n }\n\n this.calendar.currentView = 'multi-year';\n }\n\n get periodLabel(): string {\n return this.dateAdapter.format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel);\n }\n}\n","<div class=\"wlcm-calendar-header-button-container\">\n @if (displayLeftArrow()) {\n <button\n class=\"wlcm-calendar-header-button wlcm-calendar-header-button-left\"\n [disabled]=\"disableLeftArrow()\"\n (click)=\"previousClicked()\"\n >\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n }\n</div>\n\n<button\n class=\"wlcm-calendar-header-change-view-button\"\n (click)=\"changeCalendarView()\"\n>\n <div class=\"wlcm-calendar-header-period-label\">\n {{ periodLabel }}\n </div>\n\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n</button>\n\n<div class=\"wlcm-calendar-header-button-container\">\n @if (displayRightArrow()) {\n <button\n class=\"wlcm-calendar-header-button wlcm-calendar-header-button-right\"\n [disabled]=\"disableRightArrow()\"\n (click)=\"nextClicked()\"\n >\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmCalendar]',\n host: { class: 'wlcm-calendar' },\n standalone: true,\n})\nexport class WlcmCalendarDirective {}\n","import { AfterViewInit, Component, forwardRef, Inject, Type, ViewChild, ViewContainerRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DateAdapter } from '@angular/material/core';\nimport {\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n MatDateRangeSelectionStrategy,\n MatDateSelectionModel,\n DateRange,\n DefaultMatCalendarRangeStrategy,\n MatDatepickerModule,\n} from '@angular/material/datepicker';\nimport {\n WLCM_DATE_RANGE_SELECTION_MODEL,\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n} from '../../../constants/range/date-range-selection-model.constants';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../../constants/range/date-range-trigger-selection-model.constants';\nimport { WLCM_DATE_RANGE_PICKER_BP } from '../../../constants/range/date-range-picker.constants';\nimport { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';\nimport { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport { WlcmCalendarDirective } from '../../../directives/calendar.directive';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\nimport { UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-single-calendar-range-picker',\n imports: [CommonModule, MatDatepickerModule, WlcmCalendarDirective],\n templateUrl: './single-calendar-range-picker.component.html',\n styleUrl: './single-calendar-range-picker.component.scss',\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultMatCalendarRangeStrategy,\n },\n { provide: WlcmDateRangePicker, useExisting: forwardRef(() => SingleCalendarRangePickerComponent) },\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n ],\n})\nexport class SingleCalendarRangePickerComponent extends WlcmDateRangePicker implements AfterViewInit {\n protected headerComponent: Type<WlcmCalendarHeaderComponent> = WlcmCalendarHeaderComponent;\n\n @ViewChild('bottomPanelContainer', { read: ViewContainerRef }) bottomPanelContainer!: ViewContainerRef;\n\n constructor(\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n protected override rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>,\n @Inject(WLCM_DATE_RANGE_SELECTION_MODEL)\n protected override localSelectionModel: MatDateSelectionModel<DateRange<Date>>,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>,\n protected trigger: WlcmDatepickerTrigger<SingleCalendarRangePickerComponent>,\n @Inject(WLCM_DATEPICKER_CONFIG) protected datepickerConfig: WlcmDatepickerConfig,\n @Inject(WLCM_DATE_RANGE_PICKER_BP) protected pickerBottomPanel: Type<unknown>,\n protected dateAdapter: DateAdapter<Date>,\n ) {\n super(localSelectionModel, rangeSelectionStrategy);\n\n this.localSelectionModel.updateSelection(this.triggerSelectionModel.selection, this);\n }\n\n ngAfterViewInit() {\n this.bottomPanelContainer.createComponent(this.pickerBottomPanel);\n }\n\n get minDate(): Date | undefined {\n return this.datepickerConfig.minDate?.();\n }\n\n get maxDate(): Date | undefined {\n return this.datepickerConfig.maxDate?.();\n }\n\n override apply(): void {\n this.triggerSelectionModel.updateSelection(this.localSelectionModel.selection, this);\n\n this.trigger.close();\n }\n\n override reset(): void {\n this.trigger.close();\n }\n}\n","<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"signal-calendar-range-picker-body\">\n <mat-calendar\n wlcmCalendar\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selected]=\"selected\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n ></mat-calendar>\n </div>\n\n <ng-container #bottomPanelContainer></ng-container>\n</div>\n","import { Directive, ElementRef, Inject, Optional, forwardRef } from '@angular/core';\nimport { WlcmDateRangePickerInputBase } from './date-range-picker-input.base';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../constants/range/date-range-trigger-selection-model.constants';\nimport { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { WlcmDateRangeValidation } from '../../models/range/date-range-validation.models';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmDatepickerTrigger } from '../datepicker-trigger.base';\nimport { isValid, isAfter } from 'date-fns';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmDateRangePickerInputEnd]',\n host: { class: 'wlcm-date-range-picker-input-field' },\n standalone: true,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePickerInputEndDirective), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateRangePickerInputEndDirective), multi: true },\n ],\n})\nexport class DateRangePickerInputEndDirective extends WlcmDateRangePickerInputBase {\n constructor(\n public override element: ElementRef<HTMLInputElement>,\n protected override dateAdapter: DateAdapter<Date>,\n @Optional() @Inject(MAT_DATE_FORMATS) protected override dateFormats: MatDateFormats,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected selectionModel: MatDateSelectionModel<DateRange<Date>>,\n protected override trigger: WlcmDatepickerTrigger<unknown>,\n ) {\n super(element, dateAdapter, dateFormats, trigger);\n\n this.handleSelectionChange();\n }\n\n override validate(): ValidationErrors | null {\n const defaultErrors: ValidationErrors | null = super.validate();\n\n if (isValid(this.selectionModel.selection.start)) {\n const endDate: Date | null = this.parseCurrentValue();\n\n if (endDate && isAfter(this.selectionModel.selection.start!, endDate)) {\n return { [WlcmDateRangeValidation.StartExceedsEnd]: true, ...(defaultErrors ?? {}) };\n }\n }\n\n return defaultErrors;\n }\n\n override updateSelection = (): void => {\n let end: Date | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(new DateRange(this.selectionModel.selection.start, end), this);\n };\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(untilDestroyed(this)).subscribe(({ selection }) => {\n const validDate: Date | null = this.dateAdapter.getValidDateOrNull(selection.end);\n\n this._changed?.(validDate);\n\n this.updateInputValue(validDate);\n\n this._validatorChanged?.();\n });\n }\n}\n","export class DateRangePickerErrors {\n static throwNoStartInputError() {\n throw new Error('The input element with the wlcmDateRangePickerInputStart directive is missing');\n }\n\n static throwNoEndInputError() {\n throw new Error('The input element with the wlcmDateRangePickerInputEnd directive is missing');\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n Host,\n Inject,\n Input,\n Type,\n ViewContainerRef,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DateRange, MatDateSelectionModel } from '@angular/material/datepicker';\nimport {\n WLCM_FORM_CONTROL_PROVIDER,\n WLCM_FORM_FIELD,\n WLCM_INPUT_BINDER,\n WlcmFormField,\n WlcmFormFieldInput,\n WlcmFormsModule,\n} from '@wlcm/angular/forms';\n\nimport { BehaviorSubject, EMPTY, Observable, fromEvent, map, merge, switchMap } from 'rxjs';\nimport { ControlContainer, FormGroup } from '@angular/forms';\nimport {\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER,\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n} from '../../../constants/range/date-range-trigger-selection-model.constants';\nimport { DateRangePickerInputStartDirective } from '../../../directives/ragne/date-range-picker-input-start.directive';\nimport { SingleCalendarRangePickerComponent } from '../single-calendar-range-picker/single-calendar-range-picker.component';\nimport { DateRangePickerInputEndDirective } from '../../../directives/ragne/date-range-picker-input-end.directive';\nimport { DateRangePickerErrors } from '../../../utils/range/date-range-picker-errors';\nimport { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { Overlay } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'wlcm-date-range-picker-input',\n host: { class: 'wlcm-date-range-picker-input' },\n exportAs: 'wlcmDateRangePickerInput',\n standalone: true,\n imports: [CommonModule, WlcmFormsModule],\n templateUrl: './date-range-picker-input.component.html',\n styleUrl: './date-range-picker-input.component.scss',\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER,\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const input = inject(WlcmDateRangePickerInputComponent, { self: true });\n\n return { bind: () => input };\n },\n },\n { provide: WlcmDatepickerTrigger, useExisting: forwardRef(() => WlcmDateRangePickerInputComponent) },\n ],\n})\nexport class WlcmDateRangePickerInputComponent\n extends WlcmDatepickerTrigger<WlcmDateRangePicker, DateRange<Date>>\n implements WlcmFormFieldInput, AfterContentInit, AfterViewInit\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 @Input() override componentType: Type<WlcmDateRangePicker> = SingleCalendarRangePickerComponent;\n\n @ContentChild(DateRangePickerInputStartDirective) private startInput!: DateRangePickerInputStartDirective;\n\n @ContentChild(DateRangePickerInputEndDirective) private endInput!: DateRangePickerInputEndDirective;\n\n protected override connectedTo!: ElementRef<HTMLElement>;\n\n constructor(\n protected override overlay: Overlay,\n protected override viewContainerRef: ViewContainerRef,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected override selectionModel: MatDateSelectionModel<DateRange<Date>>,\n @Host() @Inject(WLCM_FORM_FIELD) private formField: WlcmFormField,\n @Host() @Inject(ControlContainer) private controlContainer: ControlContainer,\n ) {\n super(overlay, viewContainerRef, selectionModel);\n }\n\n ngAfterContentInit(): void {\n this.checkInputs();\n\n this.attachFocusBlurListeners();\n }\n\n ngAfterViewInit(): void {\n this.connectedTo = this.formField.inputContainer;\n }\n\n isFocused(): boolean {\n return (\n this.startInputElement === document.activeElement ||\n this.endInputElement === document.activeElement ||\n this.isOpen\n );\n }\n\n focus(): void {\n if (this.selectOnly()) return this.open();\n\n if (!this.isFocused()) this.startInputElement.focus();\n }\n\n private get control(): FormGroup | null {\n return this.controlContainer?.control as FormGroup;\n }\n\n private get startInputElement(): HTMLElement {\n return this.startInput.element.nativeElement;\n }\n\n private get endInputElement(): HTMLElement {\n return this.endInput.element.nativeElement;\n }\n\n private checkInputs(): void {\n if (!this.startInput) DateRangePickerErrors.throwNoStartInputError();\n\n if (!this.endInput) DateRangePickerErrors.throwNoEndInputError();\n }\n\n private attachFocusBlurListeners(): void {\n const voidFn = () => {};\n\n const startInputFocus: Observable<Event> = fromEvent(this.startInputElement, 'focus');\n\n const endInputFocus: Observable<Event> = fromEvent(this.endInputElement, 'focus');\n\n const startInputBlur: Observable<Event> = fromEvent(this.startInputElement, 'blur');\n\n const endInputBlur: Observable<Event> = fromEvent(this.endInputElement, 'blur');\n\n const focusObservables: Observable<unknown>[] = [startInputFocus, endInputFocus, this.opened];\n\n const blurObservables: Observable<unknown>[] = [startInputBlur, endInputBlur, this.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));\n }\n}\n","<div class=\"wlcm-date-range-picker-inputs-container\">\n <div class=\"wlcm-date-range-picker-input-field-wrapper\">\n <ng-content select=\"[wlcmDateRangePickerInputStart]\"></ng-content>\n </div>\n\n <div class=\"wlcm-date-range-picker-input-dash\"></div>\n\n <div class=\"wlcm-date-range-picker-input-field-wrapper\">\n <ng-content select=\"[wlcmDateRangePickerInputEnd]\"></ng-content>\n </div>\n</div>\n","import { Directive, ElementRef, InputSignal, OutputEmitterRef, effect, input, output } from '@angular/core';\nimport { MatCalendar, MatCalendarView, yearsPerPage } from '@angular/material/datepicker';\nimport { WlcmDatepickerConfig } from '../date-picker.models';\nimport { isBefore, startOfDay, isAfter } from 'date-fns';\nimport { DateAdapter } from '@angular/material/core';\n\n@Directive()\nexport class WlcmDataRangeCalendar {\n public location!: 'left' | 'right';\n\n readonly dateChange: OutputEmitterRef<Date> = output();\n\n readonly viewChange: OutputEmitterRef<MatCalendarView> = output();\n\n readonly disabled: InputSignal<boolean> = input(false);\n\n constructor(\n location: 'left' | 'right',\n public element: ElementRef<HTMLElement>,\n protected calendar: MatCalendar<Date>,\n protected dateAdapter: DateAdapter<Date>,\n protected datepickerConfig: WlcmDatepickerConfig,\n ) {\n this.location = location;\n\n effect(() => {\n if (this.disabled()) {\n this.element.nativeElement.classList.add('wlcm-calendar-disabled');\n } else {\n this.element.nativeElement.classList.remove('wlcm-calendar-disabled');\n }\n });\n\n this.handleConfigValues();\n }\n\n get minDate(): Date | undefined {\n return this.datepickerConfig.minDate?.();\n }\n\n get maxDate(): Date | undefined {\n return this.datepickerConfig.maxDate?.();\n }\n\n prevMonth(): void {\n this.dateChange.emit(this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1));\n }\n\n nextMonth(): void {\n this.dateChange.emit(this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1));\n }\n\n prevYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage,\n ),\n );\n }\n\n nextYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage,\n ),\n );\n }\n\n handleConfigValues(): void {\n this.calendar.dateFilter = (date: Date): boolean => {\n if (this.minDate && isBefore(startOfDay(date), startOfDay(this.minDate!))) return false;\n\n if (this.maxDate && isAfter(startOfDay(date), startOfDay(this.maxDate!))) return false;\n\n return true;\n };\n }\n}\n","import { Directive, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmDataRangeCalendar } from '../../models/range/data-range-calendar.models';\nimport { WLCM_DATEPICKER_CONFIG } from '../../constants/datepicker.constants';\nimport { WlcmDatepickerConfig } from '../../models/date-picker.models';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmLeftCalendar]',\n standalone: true,\n providers: [{ provide: WlcmDataRangeCalendar, useExisting: forwardRef(() => WlcmLeftCalendarDirective) }],\n})\nexport class WlcmLeftCalendarDirective extends WlcmDataRangeCalendar {\n constructor(\n public override element: ElementRef<HTMLElement>,\n protected override dateAdapter: DateAdapter<Date>,\n @Inject(forwardRef(() => MatCalendar)) protected override calendar: MatCalendar<Date>,\n @Inject(WLCM_DATEPICKER_CONFIG) protected override datepickerConfig: WlcmDatepickerConfig\n ) {\n super('left', element, calendar, dateAdapter, datepickerConfig);\n\n this.handleYearChange();\n\n this.handleMonthChange();\n }\n\n handleYearChange(): void {\n this.calendar.yearSelected.pipe(untilDestroyed(this)).subscribe((date: Date) => this.dateChange.emit(date));\n }\n\n handleMonthChange(): void {\n this.calendar.monthSelected.pipe(untilDestroyed(this)).subscribe((date: Date) => this.dateChange.emit(date));\n }\n}\n","import { Directive, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmDataRangeCalendar } from '../../models/range/data-range-calendar.models';\nimport { MatCalendar, yearsPerPage } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\nimport { WLCM_DATEPICKER_CONFIG } from '../../constants/datepicker.constants';\nimport { WlcmDatepickerConfig } from '../../models/date-picker.models';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmRightCalendar]',\n standalone: true,\n providers: [{ provide: WlcmDataRangeCalendar, useExisting: forwardRef(() => WlcmRightCalendarDirective) }],\n})\nexport class WlcmRightCalendarDirective extends WlcmDataRangeCalendar {\n constructor(\n public override element: ElementRef<HTMLElement>,\n protected override dateAdapter: DateAdapter<Date>,\n @Inject(forwardRef(() => MatCalendar)) protected override calendar: MatCalendar<Date>,\n @Inject(WLCM_DATEPICKER_CONFIG) protected override datepickerConfig: WlcmDatepickerConfig\n ) {\n super('right', element, calendar, dateAdapter, datepickerConfig);\n\n this.handleYearChange();\n\n this.handleMonthChange();\n }\n\n handleYearChange(): void {\n this.calendar.yearSelected\n .pipe(untilDestroyed(this))\n .subscribe((date: Date) => this.dateChange.emit(this.dateAdapter.addCalendarMonths(date, -1)));\n }\n\n handleMonthChange(): void {\n this.calendar.monthSelected\n .pipe(untilDestroyed(this))\n .subscribe((date: Date) => this.dateChange.emit(this.dateAdapter.addCalendarMonths(date, -1)));\n }\n\n override nextMonth(): void {\n this.dateChange.emit(this.calendar.activeDate);\n }\n\n override prevYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarMonths(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n ),\n -1\n )\n );\n }\n\n override nextYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarMonths(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n ),\n -1\n )\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Optional, forwardRef } from '@angular/core';\nimport { MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmDataRangeCalendar } from '../../../models/range/data-range-calendar.models';\nimport { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\nimport { add, endOfMonth, isBefore, startOfMonth } from 'date-fns';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { WlcmIconName } from '@wlcm/angular/core';\n\n@Component({\n selector: 'wlcm-date-range-calendar-header',\n standalone: true,\n imports: [CommonModule, WlcmCalendarHeaderComponent],\n templateUrl: './date-range-calendar-header.component.html',\n styleUrl: './date-range-calendar-header.component.scss',\n})\nexport class WlcmDateRangeCalendarHeaderComponent {\n readonly WlcmIconName = WlcmIconName;\n\n constructor(\n @Optional() protected rangeCalendar: WlcmDataRangeCalendar,\n @Optional() @Inject(MAT_DATE_FORMATS) protected dateFormats: MatDateFormats,\n @Inject(forwardRef(() => MatCalendar)) public calendar: MatCalendar<Date>,\n @Inject(WLCM_DATEPICKER_CONFIG) protected datepickerConfig: WlcmDatepickerConfig,\n ) {}\n\n previous = (): void => {\n if (this.isPreviousDisabled) return;\n\n if (this.calendar.currentView !== 'month') {\n return this.rangeCalendar.prevYear();\n }\n\n return this.rangeCalendar.prevMonth();\n };\n\n next = (): void => {\n if (this.isNextDisabled) return;\n\n if (this.calendar.currentView !== 'month') {\n return this.rangeCalendar.nextYear();\n }\n\n return this.rangeCalendar.nextMonth();\n };\n\n get minDate(): Date | undefined {\n return this.datepickerConfig.minDate?.();\n }\n\n get maxDate(): Date | undefined {\n return this.datepickerConfig.maxDate?.();\n }\n\n get isPreviousDisabled(): boolean {\n if (!this.minDate) return false;\n\n let previousPeriod: Date = endOfMonth(add(this.calendar.activeDate, { months: -1 }));\n\n if (this.calendar.currentView !== 'month') {\n previousPeriod = add(this.calendar.activeDate, { years: -1 });\n }\n\n return isBefore(previousPeriod, this.minDate);\n }\n\n get isNextDisabled(): boolean {\n if (!this.maxDate) return false;\n\n let nextPeriod: Date = startOfMonth(add(this.calendar.activeDate, { months: 1 }));\n\n if (this.calendar.currentView !== 'month') {\n nextPeriod = add(this.calendar.activeDate, { years: 1 });\n }\n\n return isBefore(this.maxDate, nextPeriod);\n }\n\n get canDisplayLeftArrow(): boolean {\n return !this.rangeCalendar || this.rangeCalendar.location === 'left' || this.calendar.currentView !== 'month';\n }\n\n get canDisplayRightArrow(): boolean {\n return !this.rangeCalendar || this.rangeCalendar.location === 'right' || this.calendar.currentView !== 'month';\n }\n}\n","<wlcm-calendar-header\n [next]=\"next\"\n [previous]=\"previous\"\n [disableLeftArrow]=\"isPreviousDisabled\"\n [disableRightArrow]=\"isNextDisabled\"\n [displayLeftArrow]=\"canDisplayLeftArrow && !rangeCalendar.disabled()\"\n [displayRightArrow]=\"canDisplayRightArrow && !rangeCalendar.disabled()\"\n></wlcm-calendar-header>\n","import {\n AfterViewInit,\n Component,\n effect,\n ElementRef,\n forwardRef,\n Inject,\n Optional,\n signal,\n Type,\n ViewChild,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmDateRangePicker, WlcmDateRangePickerConfig } from '../../../models/range/date-range-picker.models';\nimport { DateAdapter } from '@angular/material/core';\nimport {\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n MatDateRangeSelectionStrategy,\n MatDateSelectionModel,\n DateRange,\n MatCalendar,\n MatMonthView,\n MatCalendarView,\n DefaultMatCalendarRangeStrategy,\n MatDatepickerModule,\n} from '@angular/material/datepicker';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Subject, tap, startWith, takeUntil } from 'rxjs';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport {\n WLCM_DATE_RANGE_PICKER_BP,\n WLCM_DATE_RANGE_PICKER_CONFIG,\n WLCM_DATE_RANGE_PICKER_LEFT_PANEL,\n} from '../../../constants/range/date-range-picker.constants';\nimport {\n WLCM_DATE_RANGE_SELECTION_MODEL,\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n} from '../../../constants/range/date-range-selection-model.constants';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../../constants/range/date-range-trigger-selection-model.constants';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { WlcmLeftCalendarDirective } from '../../../directives/ragne/left-calendar.directive';\nimport { WlcmRightCalendarDirective } from '../../../directives/ragne/right-calendar.directive';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\nimport { WlcmDateRangeCalendarHeaderComponent } from '../date-range-calendar-header/date-range-calendar-header.component';\nimport { WlcmCalendarDirective } from '../../../directives/calendar.directive';\nimport { WlcmDateRangePickerBottomPanelComponent } from '../date-range-picker-bottom-panel/date-range-picker-bottom-panel.component';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-double-calendar-range-picker',\n imports: [\n CommonModule,\n MatDatepickerModule,\n WlcmCalendarDirective,\n WlcmLeftCalendarDirective,\n WlcmRightCalendarDirective,\n ],\n templateUrl: './double-calendar-range-picker.component.html',\n styleUrl: './double-calendar-range-picker.component.scss',\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultMatCalendarRangeStrategy,\n },\n { provide: WlcmDateRangePicker, useExisting: forwardRef(() => DoubleCalendarRangePickerComponent) },\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n ],\n})\nexport class DoubleCalendarRangePickerComponent extends WlcmDateRangePicker implements AfterViewInit {\n protected headerComponent: Type<unknown> = WlcmDateRangeCalendarHeaderComponent;\n\n private _isViewInitialized: WritableSignal<boolean> = signal(false);\n\n constructor(\n @Optional() @Inject(WLCM_DATE_RANGE_PICKER_CONFIG) private rangeConfig: WlcmDateRangePickerConfig,\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n protected override rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>,\n @Inject(WLCM_DATE_RANGE_SELECTION_MODEL)\n protected override localSelectionModel: MatDateSelectionModel<DateRange<Date>>,\n @Inject(WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL)\n protected triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>,\n protected trigger: WlcmDatepickerTrigger<DoubleCalendarRangePickerComponent>,\n @Inject(WLCM_DATEPICKER_CONFIG) protected datepickerConfig: WlcmDatepickerConfig,\n @Inject(WLCM_DATE_RANGE_PICKER_BP) protected pickerBottomPanel: Type<unknown>,\n @Optional() @Inject(WLCM_DATE_RANGE_PICKER_LEFT_PANEL) protected pickerLeftPanel: Type<unknown> | null,\n protected dateAdapter: DateAdapter<Date>,\n ) {\n super(localSelectionModel, rangeSelectionStrategy);\n\n this.localSelectionModel.updateSelection(this.triggerSelectionModel.selection, this);\n\n if (this.triggerSelectionModel.selection.start) {\n this.startDate.set(this.triggerSelectionModel.selection.start);\n }\n\n if (this.rangeConfig.headerComponent) {\n this.headerComponent = this.rangeConfig.headerComponent;\n }\n\n effect(() => {\n if (!this._isViewInitialized()) return;\n\n const startDate = this.startDate();\n\n this.leftCalendar.activeDate = startDate;\n\n this.rightCalendar.activeDate = this.dateAdapter.addCalendarMonths(startDate, 1);\n\n this.rightCalendar.startAt = this.rightCalendar.activeDate;\n });\n }\n\n @ViewChild(WlcmLeftCalendarDirective, { read: MatCalendar }) leftCalendar!: MatCalendar<Date>;\n\n @ViewChild(WlcmRightCalendarDirective, { read: MatCalendar }) rightCalendar!: MatCalendar<Date>;\n\n @ViewChild(WlcmLeftCalendarDirective, { read: ElementRef }) leftCalendarElement!: ElementRef<HTMLElement>;\n\n @ViewChild('bottomPanelContainer', { read: ViewContainerRef }) bottomPanelContainer!: ViewContainerRef;\n\n @ViewChild('leftPanelContainer', { read: ViewContainerRef }) leftPanelContainer!: ViewContainerRef;\n\n @ViewChild(MatMonthView) monthView!: MatMonthView<Date>;\n\n startDate: WritableSignal<Date> = signal(new Date());\n\n leftCalendarYearViewActivated: WritableSignal<boolean> = signal(false);\n\n rightCalendarYearViewActivated: WritableSignal<boolean> = signal(false);\n\n ngAfterViewInit(): void {\n this._isViewInitialized.set(true);\n\n this.leftCalendar.viewChanged.pipe(untilDestroyed(this)).subscribe((view: MatCalendarView) => {\n this.leftCalendarYearViewActivated.set(view !== 'month');\n });\n\n this.rightCalendar.viewChanged.pipe(untilDestroyed(this)).subscribe((view: MatCalendarView) => {\n this.rightCalendarYearViewActivated.set(view !== 'month');\n });\n\n this.bottomPanelContainer.createComponent(this.pickerBottomPanel);\n\n if (this.pickerLeftPanel) {\n this.leftPanelContainer.createComponent(this.pickerLeftPanel).changeDetectorRef.detectChanges();\n }\n\n this.handleRightCalendarPreviewChange();\n }\n\n override apply(): void {\n this.triggerSelectionModel.updateSelection(this.localSelectionModel.selection, this);\n\n this.trigger.close();\n }\n\n override reset(): void {\n this.trigger.close();\n }\n\n private get leftCalendarActiveCell(): HTMLElement | null {\n return this.leftCalendarElement.nativeElement.querySelector('.mat-calendar-body-active');\n }\n\n private handleRightCalendarPreviewChange(): void {\n const viewChanged: Subject<void> = new Subject();\n\n this.rightCalendar.viewChanged\n .pipe(untilDestroyed(this))\n .pipe(tap(() => viewChanged.next()))\n .pipe(startWith(this.rightCalendar.currentView))\n .subscribe((view: MatCalendarView) => {\n if (view !== 'month') return;\n\n this.rightCalendar.monthView._matCalendarBody.previewChange\n .pipe(takeUntil(viewChanged), untilDestroyed(this))\n .subscribe(() => {\n if (this.leftCalendar.currentView !== 'month' || !this.leftCalendar.monthView._rangeStart) return;\n\n this.leftCalendar.monthView._previewStart = this.rightCalendar.monthView._previewStart;\n\n this.leftCalendar.monthView._previewEnd = this.rightCalendar.monthView._previewEnd;\n\n const activeCell = this.leftCalendarActiveCell;\n\n if (activeCell && activeCell === document.activeElement) activeCell.blur();\n\n this.leftCalendar.monthView._changeDetectorRef.markForCheck();\n });\n });\n }\n}\n","<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"double-calendar-range-picker-body\">\n <div class=\"double-calendar-range-picker__left-section\">\n <ng-container #leftPanelContainer></ng-container>\n </div>\n\n <div class=\"double-calendar-range-picker__calendars-container\">\n <mat-calendar\n wlcmCalendar\n wlcmLeftCalendar\n [selected]=\"selected\"\n [disabled]=\"rightCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n\n <mat-calendar\n wlcmCalendar\n wlcmRightCalendar\n [selected]=\"selected\"\n [disabled]=\"leftCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n </div>\n </div>\n\n <ng-container #bottomPanelContainer></ng-container>\n</div>\n","import { Directive, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmDatepickerPanelComponent } from '../../components/single/datepicker-panel/datepicker-panel.component';\nimport { MatDateSelectionModel } from '@angular/material/datepicker';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmDatepickerInputBase } from '../datepicker-input.base';\nimport { WlcmDatepickerTrigger } from '../datepicker-trigger.base';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmDatepickerInput]',\n exportAs: 'wlcmDatepickerInput',\n host: { class: 'wlcm-form-field-input' },\n standalone: true,\n providers: [\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmDatepickerInputDirective), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmDatepickerInputDirective), multi: true },\n ],\n})\nexport class WlcmDatepickerInputDirective<T>\n extends WlcmDatepickerInputBase\n implements ControlValueAccessor, Validator\n{\n constructor(\n protected override element: ElementRef,\n protected override dateAdapter: DateAdapter<Date>,\n @Inject(MAT_DATE_FORMATS) protected override dateFormats: MatDateFormats,\n protected selectionModel: MatDateSelectionModel<Date | null>,\n protected override trigger: WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<T>>\n ) {\n super(element, dateAdapter, dateFormats, trigger);\n\n this.handleSelectionChange();\n\n this.handleClosePanel();\n }\n\n override updateSelection(): void {\n let date: Date | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(date, this);\n }\n\n private handleClosePanel(): void {\n this.trigger.closed.pipe(untilDestroyed(this)).subscribe(() => this._touched?.());\n }\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(untilDestroyed(this)).subscribe(({ selection }) => {\n this.updateInputValue(selection);\n\n this._changed?.(selection);\n\n this._touched?.();\n });\n }\n}\n","import { Component, Inject, Signal, viewChild } from '@angular/core';\nimport { MatCalendar, MatDateSelectionModel, MatDatepickerModule } from '@angular/material/datepicker';\nimport { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport { WlcmCalendarDirective } from '../../../directives/calendar.directive';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-datepicker-panel',\n host: { class: 'wlcm-datepicker-panel' },\n standalone: true,\n imports: [CommonModule, MatDatepickerModule, WlcmCalendarDirective],\n templateUrl: './datepicker-panel.component.html',\n styleUrl: './datepicker-panel.component.scss',\n})\nexport class WlcmDatepickerPanelComponent<D> {\n protected headerComponent = WlcmCalendarHeaderComponent;\n\n public matCalendar: Signal<MatCalendar<D> | undefined> = viewChild(MatCalendar);\n\n constructor(\n protected selectionModel: MatDateSelectionModel<Date>,\n protected trigger: WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<D>>,\n @Inject(WLCM_DATEPICKER_CONFIG) protected config: WlcmDatepickerConfig\n ) {}\n\n select(date: Date): void {\n this.selectionModel.updateSelection(date, this);\n\n this.trigger.close();\n }\n}\n","<mat-calendar\n wlcmCalendar\n [minDate]=\"config.minDate?.()\"\n [maxDate]=\"config.maxDate?.()\"\n [startAt]=\"selectionModel.selection\"\n [selected]=\"selectionModel.selection\"\n [headerComponent]=\"headerComponent\"\n (selectedChange)=\"select($event)\"\n></mat-calendar>\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n Host,\n Inject,\n Signal,\n ViewContainerRef,\n contentChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { MatDateSelectionModel, MatSingleDateSelectionModel } from '@angular/material/datepicker';\nimport { WLCM_FORM_FIELD, WLCM_INPUT_BINDER, WlcmFormField, WlcmFormFieldInput } from '@wlcm/angular/forms';\nimport { WlcmDatepickerInputDirective } from '../../../directives/single/datepicker-input.directive';\nimport { WlcmDatepickerPanelComponent } from '../datepicker-panel/datepicker-panel.component';\nimport { BehaviorSubject, Observable, EMPTY, switchMap, fromEvent, merge, map } from 'rxjs';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { Overlay } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'wlcm-datepicker-input-container',\n host: { class: 'wlcm-datepicker-input-container' },\n exportAs: 'wlcmDatepicker',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './datepicker-input-container.component.html',\n styleUrl: './datepicker-input-container.component.scss',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const input = inject(WlcmDatepickerInputContainerComponent, { self: true });\n\n return { bind: () => input };\n },\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmDatepickerInputContainerComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmDatepickerInputContainerComponent), multi: true },\n { provide: WlcmDatepickerTrigger, useExisting: forwardRef(() => WlcmDatepickerInputContainerComponent) },\n { provide: MatDateSelectionModel, useClass: MatSingleDateSelectionModel },\n ],\n})\nexport class WlcmDatepickerInputContainerComponent<T>\n extends WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<T>>\n implements WlcmFormFieldInput, AfterContentInit\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 inputRef: Signal<ElementRef<HTMLInputElement> | undefined> = contentChild(WlcmDatepickerInputDirective, {\n read: ElementRef,\n });\n\n protected override componentType = WlcmDatepickerPanelComponent;\n\n protected override connectedTo!: ElementRef<HTMLElement>;\n\n constructor(\n protected override overlay: Overlay,\n protected override viewContainerRef: ViewContainerRef,\n protected override selectionModel: MatDateSelectionModel<Date>,\n @Host() @Inject(WLCM_FORM_FIELD) private formField: WlcmFormField,\n ) {\n super(overlay, viewContainerRef, selectionModel);\n }\n\n ngAfterContentInit(): void {\n this.attachFocusBlurListeners();\n }\n\n ngAfterViewInit(): void {\n this.connectedTo = this.formField.inputContainer;\n }\n\n focus = (): void => {\n if (this.selectOnly()) return this.open();\n\n this.inputElement?.focus();\n };\n\n isFocused = (): boolean => {\n return this.inputElement === document.activeElement || this.isOpen;\n };\n\n private get inputElement(): HTMLInputElement | undefined {\n return this.inputRef()?.nativeElement;\n }\n\n private attachFocusBlurListeners(): void {\n const voidFn = () => {};\n\n const inputFocus: Observable<Event> = fromEvent(this.inputElement!, 'focus');\n\n const inputBlur: Observable<Event> = fromEvent(this.inputElement!, 'blur');\n\n const focusObservables: Observable<unknown>[] = [inputFocus, this.opened];\n\n const blurObservables: Observable<unknown>[] = [inputBlur, this.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(voidFn)));\n }\n}\n","<ng-content select=\"[wlcmDatepickerInput]\"></ng-content>\n","import { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { WlcmDateValidation } from '../../models/date-picker.models';\n\nexport function WlcmDateRangeInputValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const formGroup: FormGroup = control as FormGroup;\n\n let errors: ValidationErrors | null = {};\n\n for (const childControl of Object.values(formGroup.controls)) {\n errors = { ...errors, ...childControl.errors };\n }\n\n errors = Object.keys(errors).length > 0 ? errors : null;\n\n if (errors instanceof Object && errors[WlcmDateValidation.Format] && errors['required']) {\n errors['required'] = false;\n }\n\n return errors;\n };\n}\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmDatepickerInputContainerComponent } from './components/single/datepicker-input-container/datepicker-input-container.component';\nimport { WlcmDateRangePickerInputComponent } from './components/range/date-range-picker-input/date-range-picker-input.component';\nimport { DateRangePickerInputStartDirective } from './directives/ragne/date-range-picker-input-start.directive';\nimport { DateRangePickerInputEndDirective } from './directives/ragne/date-range-picker-input-end.directive';\nimport { WlcmDatepickerInputDirective } from './directives/single/datepicker-input.directive';\nimport { WLCM_DEFAULT_DATEPICKER_PROVIDERS } from './constants/datepicker.constants';\n\nconst publicComponents: Type<unknown>[] = [WlcmDatepickerInputContainerComponent, WlcmDateRangePickerInputComponent];\n\nconst publicDirectives: Type<unknown>[] = [\n WlcmDatepickerInputDirective,\n DateRangePickerInputStartDirective,\n DateRangePickerInputEndDirective,\n];\n\n@NgModule({\n imports: [CommonModule, ...publicComponents, ...publicDirectives],\n exports: [...publicComponents, ...publicDirectives],\n providers: [...WLCM_DEFAULT_DATEPICKER_PROVIDERS],\n})\nexport class WlcmDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.WlcmDatepickerTrigger","i1.WlcmDateRangePicker","i2","i1.WlcmDatepickerTrigger","i1.WlcmDataRangeCalendar","i3","i3.WlcmDatepickerTrigger"],"mappings":"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"}
1
+ {"version":3,"file":"wlcm-angular-datepicker.mjs","sources":["../../../../modules/datepicker/src/lib/constants/range/date-range-trigger-selection-model.constants.ts","../../../../modules/datepicker/src/lib/models/date-picker.models.ts","../../../../modules/datepicker/src/lib/constants/datepicker.constants.ts","../../../../modules/datepicker/src/lib/directives/datepicker-trigger.base.ts","../../../../modules/datepicker/src/lib/directives/datepicker-input.base.ts","../../../../modules/datepicker/src/lib/directives/ragne/date-range-picker-input.base.ts","../../../../modules/datepicker/src/lib/models/range/date-range-validation.models.ts","../../../../modules/datepicker/src/lib/directives/ragne/date-range-picker-input-start.directive.ts","../../../../modules/datepicker/src/lib/constants/range/date-range-selection-model.constants.ts","../../../../modules/datepicker/src/lib/models/range/date-range-picker.models.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.html","../../../../modules/datepicker/src/lib/constants/range/date-range-picker.constants.ts","../../../../modules/datepicker/src/lib/components/calendar-header/calendar-header.component.ts","../../../../modules/datepicker/src/lib/components/calendar-header/calendar-header.component.html","../../../../modules/datepicker/src/lib/directives/calendar.directive.ts","../../../../modules/datepicker/src/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.ts","../../../../modules/datepicker/src/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.html","../../../../modules/datepicker/src/lib/directives/ragne/date-range-picker-input-end.directive.ts","../../../../modules/datepicker/src/lib/utils/range/date-range-picker-errors.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-input/date-range-picker-input.component.ts","../../../../modules/datepicker/src/lib/components/range/date-range-picker-input/date-range-picker-input.component.html","../../../../modules/datepicker/src/lib/models/range/data-range-calendar.models.ts","../../../../modules/datepicker/src/lib/directives/ragne/left-calendar.directive.ts","../../../../modules/datepicker/src/lib/directives/ragne/right-calendar.directive.ts","../../../../modules/datepicker/src/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.ts","../../../../modules/datepicker/src/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.html","../../../../modules/datepicker/src/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.ts","../../../../modules/datepicker/src/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.html","../../../../modules/datepicker/src/lib/directives/single/datepicker-input.directive.ts","../../../../modules/datepicker/src/lib/components/single/datepicker-panel/datepicker-panel.component.ts","../../../../modules/datepicker/src/lib/components/single/datepicker-panel/datepicker-panel.component.html","../../../../modules/datepicker/src/lib/components/single/datepicker-input-container/datepicker-input-container.component.ts","../../../../modules/datepicker/src/lib/components/single/datepicker-input-container/datepicker-input-container.component.html","../../../../modules/datepicker/src/lib/utils/range/date-range-input.validators.ts","../../../../modules/datepicker/src/lib/datepicker.module.ts","../../../../modules/datepicker/src/wlcm-angular-datepicker.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { MatDateSelectionModel, MatRangeDateSelectionModel } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\n\nexport const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<Date>> = new InjectionToken(\n 'WLCM_DATE_RANGE_SELECTION_MODEL'\n);\n\nexport const WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER: Provider = {\n provide: WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n useFactory: (adapter: DateAdapter<Date>) => new MatRangeDateSelectionModel(adapter),\n deps: [DateAdapter],\n};\n","import { Injectable, Signal } from '@angular/core';\nimport { DateFnsAdapter } from '@angular/material-date-fns-adapter';\nimport { format } from 'date-fns';\n\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n@Injectable()\nexport class WlcmDateAdapter extends DateFnsAdapter {\n override getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const formatString = style === 'long' ? 'EEEE' : 'EEEEEE';\n\n return range(7, (i) => format(new Date(2017, 0, i + 1), formatString));\n }\n}\n\nexport enum WlcmDateValidation {\n Format = 'WlcmInvalidDateFormat',\n MinDate = 'WlcmDateIsBeforeMinDate',\n MaxDate = 'WlcmDateIsAfterMaxDate',\n}\n\nexport interface WlcmDatepickerConfig {\n minDate?: Signal<Date | undefined>;\n\n maxDate?: Signal<Date | undefined>;\n\n selectOnly?: boolean;\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats } from '@angular/material/core';\n\nimport { WlcmDateAdapter, WlcmDatepickerConfig } from '../models/date-picker.models';\nimport { enUS } from 'date-fns/locale';\n\nexport const WLCM_DEFAULT_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MMM/dd/yyyy',\n },\n display: {\n dateInput: 'MMM/dd/yyyy',\n monthYearLabel: 'MMMM yyyy',\n dateA11yLabel: 'MMM/dd/yyyy',\n monthYearA11yLabel: 'MMM yyyy',\n },\n};\n\nexport const WLCM_DEFAULT_DATEPICKER_PROVIDERS: Provider[] = [\n { provide: MAT_DATE_LOCALE, useValue: enUS },\n { provide: MAT_DATE_FORMATS, useValue: WLCM_DEFAULT_DATE_FORMATS },\n { provide: DateAdapter, useClass: WlcmDateAdapter, deps: [MAT_DATE_LOCALE] },\n];\n\nexport const WLCM_DATEPICKER_CONFIG: InjectionToken<WlcmDatepickerConfig> = new InjectionToken(\n 'WLCM_DATEPICKER_CONFIG',\n { providedIn: 'root', factory: () => ({ selectOnly: false }) },\n);\n\nexport const WLCM_DATEPICKER_INPUT_CLASS = 'wlcm-datepicker-input';\n","import { OverlayRef, Overlay, FlexibleConnectedPositionStrategy, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Directive,\n ElementRef,\n Type,\n ComponentRef,\n ViewContainerRef,\n Injector,\n InputSignal,\n input,\n inject,\n DestroyRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WLCM_DATEPICKER_CONFIG } from '../constants/datepicker.constants';\nimport { WlcmDatepickerConfig } from '../models/date-picker.models';\nimport { Observable, merge, EMPTY, filter } from 'rxjs';\n\n// The second generic parameter (`_D`) is retained for subclass typing of the date-range\n// selection model they provide (e.g. `DateRange<Date>`); it is not referenced in the base body.\n@Directive({\n host: {\n '[class.wlcm-datepicker-select-only-mode]': 'selectOnly()',\n },\n})\nexport abstract class WlcmDatepickerTrigger<T, _D = Date> {\n protected overlay: Overlay = inject(Overlay);\n\n protected viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n minDate: InputSignal<Date | undefined> = input(this.defaultDatepickerConfig.minDate?.());\n\n maxDate: InputSignal<Date | undefined> = input(this.defaultDatepickerConfig.maxDate?.());\n\n selectOnly: InputSignal<boolean> = input(this.defaultDatepickerConfig.selectOnly || false);\n\n protected overlayRef: OverlayRef = this.overlay.create(this.createOverlayConfig());\n\n protected abstract connectedTo: ElementRef<HTMLElement>;\n\n protected abstract componentType: Type<T>;\n\n protected componentRef?: ComponentRef<T>;\n\n protected constructor() {\n this.handleBackdropClick();\n }\n\n open(): void {\n const injector: Injector = Injector.create({\n providers: [{ provide: OverlayRef, useValue: this.overlayRef }],\n parent: this.datepickerInjector,\n });\n\n const portal: ComponentPortal<T> = new ComponentPortal(this.componentType, this.viewContainerRef, injector);\n\n this.updatePositionStrategy();\n\n this.componentRef = this.overlayRef.attach(portal);\n }\n\n close(): void {\n this.overlayRef.detach();\n }\n\n get isOpen(): boolean {\n return this.overlayRef.hasAttached();\n }\n\n get opened(): Observable<void> {\n return merge(this.overlayRef?.attachments() || EMPTY).pipe(filter(() => this.overlayRef.hasAttached()));\n }\n\n get closed(): Observable<void> {\n return (this.overlayRef?.detachments() || EMPTY).pipe(filter(() => !this.overlayRef.hasAttached()));\n }\n\n get datepickerInjector(): Injector {\n const parent: Injector = this.viewContainerRef.injector;\n\n return Injector.create({\n parent,\n providers: [{ provide: WLCM_DATEPICKER_CONFIG, useValue: this.datepickerConfig }],\n });\n }\n\n get defaultDatepickerConfig(): WlcmDatepickerConfig {\n return this.viewContainerRef.injector.get(WLCM_DATEPICKER_CONFIG, {}, { optional: true });\n }\n\n get datepickerConfig(): WlcmDatepickerConfig {\n const config: WlcmDatepickerConfig = { ...this.defaultDatepickerConfig };\n\n if (this.minDate()) config.minDate = this.minDate;\n\n if (this.maxDate()) config.maxDate = this.maxDate;\n\n config.selectOnly = this.selectOnly();\n\n return config;\n }\n\n private handleBackdropClick(): void {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.close());\n }\n\n private updatePositionStrategy(): void {\n const strategy: FlexibleConnectedPositionStrategy = this.overlay.position().flexibleConnectedTo(this.connectedTo);\n\n strategy.withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ]);\n\n strategy.withLockedPosition(false);\n\n strategy.withDefaultOffsetY(4);\n\n this.overlayRef.updatePositionStrategy(strategy);\n }\n\n private createOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: 'transparent',\n });\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { format, isAfter, isBefore, isValid, parse, startOfDay } from 'date-fns';\nimport { WLCM_DATEPICKER_INPUT_CLASS } from '../constants/datepicker.constants';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmDateValidation } from '../models/date-picker.models';\nimport { WlcmDatepickerTrigger } from './datepicker-trigger.base';\n\n@Directive({\n host: {\n class: WLCM_DATEPICKER_INPUT_CLASS,\n '(blur)': 'handleBlur()',\n '(input)': 'handleInput()',\n },\n})\nexport abstract class WlcmDatepickerInputBase implements ControlValueAccessor, Validator {\n protected element: ElementRef = inject(ElementRef);\n\n protected dateAdapter: DateAdapter<Date> = inject<DateAdapter<Date>>(DateAdapter);\n\n protected dateFormats: MatDateFormats = inject(MAT_DATE_FORMATS, { optional: true })!;\n\n protected trigger: WlcmDatepickerTrigger<unknown> = inject(WlcmDatepickerTrigger);\n\n handleBlur() {\n this.updateSelection();\n\n this._touched?.();\n }\n\n handleInput() {\n if (this.isValidFormat(this.currentValue, this.dateFormats.parse.dateInput)) {\n this.updateSelection();\n }\n\n this._validatorChanged?.();\n }\n\n protected _changed?: (value: Date | null) => void;\n\n protected _touched?: () => void;\n\n protected _validatorChanged?: () => void;\n\n writeValue(value: Date | null): void {\n this.updateInputValue(value);\n }\n\n registerOnChange(callback: (value: Date | null) => 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 validate(): ValidationErrors | null {\n if (!this.currentValue) return null;\n\n const isValid: boolean = this.isValidFormat(this.currentValue, this.dateFormats.parse.dateInput);\n\n if (!isValid) {\n return {\n [WlcmDateValidation.Format]: { value: this.currentValue, format: this.dateFormats.parse.dateInput },\n required: false,\n };\n }\n\n const date: Date = this.parseCurrentValue()!;\n\n if (this.minDate && isBefore(startOfDay(date), startOfDay(this.minDate))) {\n return { [WlcmDateValidation.MinDate]: { minDate: this.minDate, currentDate: date } };\n }\n\n if (this.maxDate && isAfter(startOfDay(date), startOfDay(this.maxDate))) {\n return { [WlcmDateValidation.MaxDate]: { maxDate: this.maxDate, currentDate: date } };\n }\n\n return null;\n }\n\n parseCurrentValue(): Date | null {\n const date: Date | null = this.dateAdapter.parse(this.currentValue, this.dateFormats.parse.dateInput);\n\n return this.dateAdapter.getValidDateOrNull(date);\n }\n\n protected isValidFormat(value: string, pattern: string): boolean {\n const parsedDate = parse(value, pattern, new Date());\n\n return isValid(parsedDate) && value === format(parsedDate, pattern);\n }\n\n protected abstract updateSelection(): void;\n\n protected get minDate(): Date | undefined {\n return this.trigger.minDate?.();\n }\n\n protected get maxDate(): Date | undefined {\n return this.trigger.maxDate?.();\n }\n\n protected get inputElement(): HTMLInputElement {\n return this.element.nativeElement;\n }\n\n protected get currentValue(): string {\n return this.inputElement.value;\n }\n\n protected updateInputValue(value: Date | null): void {\n let newValue = '';\n\n if (value) {\n newValue = this.dateAdapter.format(value, this.dateFormats.display.dateInput);\n }\n\n this.inputElement.value = newValue;\n }\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { WlcmDatepickerInputBase } from '../datepicker-input.base';\n\n@Directive()\nexport abstract class WlcmDateRangePickerInputBase\n extends WlcmDatepickerInputBase\n implements AfterViewInit, ControlValueAccessor, Validator\n{\n // Widen visibility from the base's `protected element` so the range-picker-input\n // component can read the start/end host elements for focus tracking.\n public override element: ElementRef<HTMLInputElement> = this.element;\n\n private _inputMirror: HTMLElement = this.createInputMirror();\n\n ngAfterViewInit(): void {\n this.inputElement.parentElement?.appendChild(this._inputMirror);\n\n this.copyInputElementStyles(this._inputMirror);\n\n document.fonts.ready.then(() => this.changeInputSize());\n }\n\n override writeValue(value: Date | null): void {\n super.writeValue(value);\n\n this.updateSelection();\n }\n\n override handleInput() {\n this.changeInputSize();\n\n super.handleInput();\n }\n\n protected override updateInputValue(value: Date | null): void {\n super.updateInputValue(value);\n\n this.changeInputSize();\n }\n\n private changeInputSize(): void {\n requestAnimationFrame(() => {\n const value: string = this.currentValue || this.inputElement.placeholder;\n\n this._inputMirror.innerHTML = value;\n\n this.inputElement.style.width = `${this._inputMirror.offsetWidth + 2}px`;\n });\n }\n\n private createInputMirror(): HTMLElement {\n const inputMirror: HTMLElement = document.createElement('div');\n\n inputMirror.classList.add('wlcm-date-range-picker-input-field-mirror');\n\n return inputMirror;\n }\n\n private copyInputElementStyles(target: HTMLElement): void {\n const inputElementStyles: CSSStyleDeclaration = window.getComputedStyle(this.inputElement);\n\n target.style.fontSize = inputElementStyles.fontSize;\n target.style.fontFamily = inputElementStyles.fontFamily;\n target.style.letterSpacing = inputElementStyles.letterSpacing;\n }\n}\n","export enum WlcmDateRangeValidation {\n StartExceedsEnd = 'wlcmDateRangeStartExceedsEnd',\n}\n","import { Directive, forwardRef, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WlcmDateRangePickerInputBase } from './date-range-picker-input.base';\nimport { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../constants/range/date-range-trigger-selection-model.constants';\nimport { WlcmDateRangeValidation } from '../../models/range/date-range-validation.models';\nimport { isAfter, isValid } from 'date-fns';\n\n@Directive({\n selector: '[wlcmDateRangePickerInputStart]',\n host: { class: 'wlcm-date-range-picker-input-field' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePickerInputStartDirective), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateRangePickerInputStartDirective), multi: true },\n ],\n})\nexport class DateRangePickerInputStartDirective extends WlcmDateRangePickerInputBase {\n protected selectionModel = inject(\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n ) as unknown as MatDateSelectionModel<DateRange<Date>>;\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.handleSelectionChange();\n }\n\n override validate(): ValidationErrors | null {\n const defaultErrors: ValidationErrors | null = super.validate();\n\n if (this.selectionModel.isComplete() && isValid(this.selectionModel.selection.end)) {\n const startDate: Date | null = this.parseCurrentValue();\n\n if (startDate && isAfter(startDate, this.selectionModel.selection.end!)) {\n return { [WlcmDateRangeValidation.StartExceedsEnd]: true, ...(defaultErrors ?? {}) };\n }\n }\n\n return defaultErrors;\n }\n\n override updateSelection = (): void => {\n const start: Date | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(new DateRange(start, this.selectionModel.selection.end), this);\n };\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ selection }) => {\n const validDate: Date | null = this.dateAdapter.getValidDateOrNull(selection.start);\n\n this._changed?.(validDate);\n\n this.updateInputValue(validDate);\n\n this._validatorChanged?.();\n });\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatDateSelectionModel, MatRangeDateSelectionModel } from '@angular/material/datepicker';\n\nexport const WLCM_DATE_RANGE_SELECTION_MODEL: InjectionToken<MatDateSelectionModel<Date>> = new InjectionToken(\n 'WLCM_DATE_RANGE_SELECTION_MODEL'\n);\n\nexport const WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER: Provider = {\n provide: WLCM_DATE_RANGE_SELECTION_MODEL,\n useFactory: (adapter: DateAdapter<Date>) => new MatRangeDateSelectionModel(adapter),\n deps: [DateAdapter],\n};\n","import { computed, DestroyRef, inject, Signal, signal, Type, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n MatDateSelectionModel,\n DateRange,\n MatCalendarUserEvent,\n MatDateRangeSelectionStrategy,\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n} from '@angular/material/datepicker';\nimport { WLCM_DATE_RANGE_SELECTION_MODEL } from '../../constants/range/date-range-selection-model.constants';\n\nexport abstract class WlcmDateRangePicker {\n protected _isComplete: WritableSignal<boolean> = signal(false);\n\n readonly isComplete: Signal<boolean> = computed(() => this._isComplete());\n\n protected localSelectionModel = inject(\n WLCM_DATE_RANGE_SELECTION_MODEL,\n ) as unknown as MatDateSelectionModel<DateRange<Date>>;\n\n protected rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date> = inject(MAT_DATE_RANGE_SELECTION_STRATEGY);\n\n private readonly _destroyRef: DestroyRef = inject(DestroyRef);\n\n protected constructor() {\n this.handleSelectionChanged();\n }\n\n abstract apply(): void;\n\n abstract reset(): void;\n\n setSelection(selection: DateRange<Date>): void {\n this.localSelectionModel.updateSelection(selection, this);\n }\n\n get selected(): DateRange<Date> {\n return this.localSelectionModel.selection;\n }\n\n protected calendarSelection(event: MatCalendarUserEvent<Date | null>): void {\n const newSelection: DateRange<Date> = this.rangeSelectionStrategy.selectionFinished(\n event.value,\n this.localSelectionModel.selection,\n event.event,\n );\n\n this.localSelectionModel.updateSelection(newSelection, this);\n }\n\n protected calendarDragDrop(event: MatCalendarUserEvent<DateRange<Date>>): void {\n this.localSelectionModel.updateSelection(event.value, this);\n }\n\n private handleSelectionChanged(): void {\n this.localSelectionModel.selectionChanged\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._isComplete.set(this.localSelectionModel.isComplete()));\n }\n}\n\nexport interface WlcmDateRangePickerConfig {\n headerComponent?: Type<unknown>;\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport { WlcmButtonModule } from '@wlcm/angular/button';\nimport { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';\n\n@Component({\n selector: 'wlcm-date-range-picker-bottom-panel',\n imports: [WlcmButtonModule],\n templateUrl: './date-range-picker-bottom-panel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './date-range-picker-bottom-panel.component.scss',\n})\nexport class WlcmDateRangePickerBottomPanelComponent {\n protected picker: WlcmDateRangePicker = inject(WlcmDateRangePicker);\n}\n","<div class=\"wlcm-date-range-picker-bottom-panel\">\n <wlcm-button styleType=\"compact\" (clicked)=\"picker.reset()\">Reset</wlcm-button>\n\n <wlcm-button (clicked)=\"picker.apply()\" [isDisabled]=\"!picker.isComplete()\">\n Apply\n </wlcm-button>\n</div>\n","import { InjectionToken, Type } from '@angular/core';\nimport { WlcmDateRangePickerConfig } from '../../models/range/date-range-picker.models';\nimport { WlcmDateRangePickerBottomPanelComponent } from '../../components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component';\n\nexport const WLCM_DATE_RANGE_PICKER_CONFIG: InjectionToken<WlcmDateRangePickerConfig> = new InjectionToken(\n 'WLCM_DATE_RANGE_PICKER_CONFIG',\n { providedIn: 'root', factory: () => ({}) },\n);\n\nexport const WLCM_DATE_RANGE_PICKER_BP: InjectionToken<Type<unknown>> = new InjectionToken(\n 'WLCM_DATE_RANGE_PICKER_BP',\n { providedIn: 'root', factory: () => WlcmDateRangePickerBottomPanelComponent },\n);\n\nexport const WLCM_DATE_RANGE_PICKER_LEFT_PANEL: InjectionToken<Type<unknown>> = new InjectionToken(\n 'WLCM_DATE_RANGE_PICKER_LEFT_PANEL',\n);\n","import { Component, InputSignal, forwardRef, input, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmIconDirective, WlcmIconName } from '@wlcm/angular/core';\nimport { MatCalendar, yearsPerPage } from '@angular/material/datepicker';\n\n\n@Component({\n selector: 'wlcm-calendar-header',\n host: { class: 'wlcm-calendar-header' },\n imports: [WlcmIconDirective],\n templateUrl: './calendar-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './calendar-header.component.scss',\n})\nexport class WlcmCalendarHeaderComponent {\n readonly WlcmIconName = WlcmIconName;\n\n next: InputSignal<(() => void) | undefined> = input();\n\n previous: InputSignal<(() => void) | undefined> = input();\n\n disableLeftArrow: InputSignal<boolean> = input(false);\n\n disableRightArrow: InputSignal<boolean> = input(false);\n\n displayLeftArrow: InputSignal<boolean> = input(true);\n\n displayRightArrow: InputSignal<boolean> = input(true);\n\n private dateAdapter: DateAdapter<Date> = inject<DateAdapter<Date>>(DateAdapter);\n\n protected dateFormats: MatDateFormats | null = inject(MAT_DATE_FORMATS, { optional: true });\n\n public calendar: MatCalendar<Date> = inject<MatCalendar<Date>>(forwardRef(() => MatCalendar));\n\n previousClicked(): void {\n if (this.previous()) return this.previous()!();\n\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n : this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n );\n }\n\n nextClicked(): void {\n if (this.next()) return this.next()!();\n\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n : this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n );\n }\n\n changeCalendarView(): void {\n if (this.calendar.currentView === 'multi-year') {\n this.calendar.currentView = 'month';\n\n return;\n }\n\n this.calendar.currentView = 'multi-year';\n }\n\n get periodLabel(): string {\n return this.dateAdapter.format(this.calendar.activeDate, this.dateFormats!.display.monthYearLabel);\n }\n}\n","<div class=\"wlcm-calendar-header-button-container\">\n @if (displayLeftArrow()) {\n <button\n class=\"wlcm-calendar-header-button wlcm-calendar-header-button-left\"\n [disabled]=\"disableLeftArrow()\"\n (click)=\"previousClicked()\"\n >\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n }\n</div>\n\n<button\n class=\"wlcm-calendar-header-change-view-button\"\n (click)=\"changeCalendarView()\"\n>\n <div class=\"wlcm-calendar-header-period-label\">\n {{ periodLabel }}\n </div>\n\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n</button>\n\n<div class=\"wlcm-calendar-header-button-container\">\n @if (displayRightArrow()) {\n <button\n class=\"wlcm-calendar-header-button wlcm-calendar-header-button-right\"\n [disabled]=\"disableRightArrow()\"\n (click)=\"nextClicked()\"\n >\n <ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n </button>\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmCalendar]',\n host: { class: 'wlcm-calendar' },\n})\nexport class WlcmCalendarDirective {}\n","import {\n AfterViewInit,\n Component,\n forwardRef,\n inject,\n Signal,\n Type,\n viewChild,\n ViewContainerRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DateAdapter } from '@angular/material/core';\nimport {\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n MatDateSelectionModel,\n DateRange,\n DefaultMatCalendarRangeStrategy,\n MatDatepickerModule,\n} from '@angular/material/datepicker';\nimport { WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER } from '../../../constants/range/date-range-selection-model.constants';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../../constants/range/date-range-trigger-selection-model.constants';\nimport { WLCM_DATE_RANGE_PICKER_BP } from '../../../constants/range/date-range-picker.constants';\nimport { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';\nimport { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport { WlcmCalendarDirective } from '../../../directives/calendar.directive';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\n\n@Component({\n selector: 'wlcm-single-calendar-range-picker',\n imports: [MatDatepickerModule, WlcmCalendarDirective],\n templateUrl: './single-calendar-range-picker.component.html',\n styleUrl: './single-calendar-range-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultMatCalendarRangeStrategy,\n },\n { provide: WlcmDateRangePicker, useExisting: forwardRef(() => SingleCalendarRangePickerComponent) },\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n ],\n})\nexport class SingleCalendarRangePickerComponent extends WlcmDateRangePicker implements AfterViewInit {\n protected headerComponent: Type<WlcmCalendarHeaderComponent> = WlcmCalendarHeaderComponent;\n\n bottomPanelContainer: Signal<ViewContainerRef | undefined> = viewChild('bottomPanelContainer', {\n read: ViewContainerRef,\n });\n\n protected triggerSelectionModel = inject(\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n ) as unknown as MatDateSelectionModel<DateRange<Date>>;\n\n protected trigger: WlcmDatepickerTrigger<SingleCalendarRangePickerComponent> = inject(WlcmDatepickerTrigger);\n\n protected datepickerConfig: WlcmDatepickerConfig = inject(WLCM_DATEPICKER_CONFIG);\n\n protected pickerBottomPanel: Type<unknown> = inject(WLCM_DATE_RANGE_PICKER_BP);\n\n protected dateAdapter: DateAdapter<Date> = inject<DateAdapter<Date>>(DateAdapter);\n\n constructor() {\n super();\n\n this.localSelectionModel.updateSelection(this.triggerSelectionModel.selection, this);\n }\n\n ngAfterViewInit() {\n this.bottomPanelContainer()!.createComponent(this.pickerBottomPanel);\n }\n\n get minDate(): Date | undefined {\n return this.datepickerConfig.minDate?.();\n }\n\n get maxDate(): Date | undefined {\n return this.datepickerConfig.maxDate?.();\n }\n\n override apply(): void {\n this.triggerSelectionModel.updateSelection(this.localSelectionModel.selection, this);\n\n this.trigger.close();\n }\n\n override reset(): void {\n this.trigger.close();\n }\n}\n","<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"signal-calendar-range-picker-body\">\n <mat-calendar\n wlcmCalendar\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selected]=\"selected\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n ></mat-calendar>\n </div>\n\n <ng-container #bottomPanelContainer></ng-container>\n</div>\n","import { Directive, forwardRef, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WlcmDateRangePickerInputBase } from './date-range-picker-input.base';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../constants/range/date-range-trigger-selection-model.constants';\nimport { MatDateSelectionModel, DateRange } from '@angular/material/datepicker';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { WlcmDateRangeValidation } from '../../models/range/date-range-validation.models';\nimport { isValid, isAfter } from 'date-fns';\n\n@Directive({\n selector: '[wlcmDateRangePickerInputEnd]',\n host: { class: 'wlcm-date-range-picker-input-field' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateRangePickerInputEndDirective), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateRangePickerInputEndDirective), multi: true },\n ],\n})\nexport class DateRangePickerInputEndDirective extends WlcmDateRangePickerInputBase {\n protected selectionModel = inject(\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n ) as unknown as MatDateSelectionModel<DateRange<Date>>;\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.handleSelectionChange();\n }\n\n override validate(): ValidationErrors | null {\n const defaultErrors: ValidationErrors | null = super.validate();\n\n if (isValid(this.selectionModel.selection.start)) {\n const endDate: Date | null = this.parseCurrentValue();\n\n if (endDate && isAfter(this.selectionModel.selection.start!, endDate)) {\n return { [WlcmDateRangeValidation.StartExceedsEnd]: true, ...(defaultErrors ?? {}) };\n }\n }\n\n return defaultErrors;\n }\n\n override updateSelection = (): void => {\n const end: Date | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(new DateRange(this.selectionModel.selection.start, end), this);\n };\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ selection }) => {\n const validDate: Date | null = this.dateAdapter.getValidDateOrNull(selection.end);\n\n this._changed?.(validDate);\n\n this.updateInputValue(validDate);\n\n this._validatorChanged?.();\n });\n }\n}\n","export class DateRangePickerErrors {\n static throwNoStartInputError() {\n throw new Error('The input element with the wlcmDateRangePickerInputStart directive is missing');\n }\n\n static throwNoEndInputError() {\n throw new Error('The input element with the wlcmDateRangePickerInputEnd directive is missing');\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ElementRef,\n Signal,\n Type,\n contentChild,\n forwardRef,\n inject,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { DateRange } from '@angular/material/datepicker';\nimport {\n WLCM_FORM_CONTROL_PROVIDER,\n WLCM_FORM_FIELD,\n WLCM_INPUT_BINDER,\n WlcmFormField,\n WlcmFormFieldInput,\n WlcmFormsModule,\n} from '@wlcm/angular/forms';\n\nimport { BehaviorSubject, EMPTY, Observable, fromEvent, map, merge, switchMap } from 'rxjs';\nimport { ControlContainer, FormGroup } from '@angular/forms';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER } from '../../../constants/range/date-range-trigger-selection-model.constants';\nimport { DateRangePickerInputStartDirective } from '../../../directives/ragne/date-range-picker-input-start.directive';\nimport { SingleCalendarRangePickerComponent } from '../single-calendar-range-picker/single-calendar-range-picker.component';\nimport { DateRangePickerInputEndDirective } from '../../../directives/ragne/date-range-picker-input-end.directive';\nimport { DateRangePickerErrors } from '../../../utils/range/date-range-picker-errors';\nimport { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\n\n@Component({\n selector: 'wlcm-date-range-picker-input',\n host: { class: 'wlcm-date-range-picker-input' },\n exportAs: 'wlcmDateRangePickerInput',\n imports: [WlcmFormsModule],\n templateUrl: './date-range-picker-input.component.html',\n styleUrl: './date-range-picker-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL_PROVIDER,\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const input = inject(WlcmDateRangePickerInputComponent, { self: true });\n\n return { bind: () => input };\n },\n },\n { provide: WlcmDatepickerTrigger, useExisting: forwardRef(() => WlcmDateRangePickerInputComponent) },\n ],\n})\nexport class WlcmDateRangePickerInputComponent\n extends WlcmDatepickerTrigger<WlcmDateRangePicker, DateRange<Date>>\n implements WlcmFormFieldInput, AfterContentInit, AfterViewInit\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 protected override componentType: Type<WlcmDateRangePicker> = SingleCalendarRangePickerComponent;\n\n private startInput: Signal<DateRangePickerInputStartDirective | undefined> = contentChild(\n DateRangePickerInputStartDirective,\n );\n\n private endInput: Signal<DateRangePickerInputEndDirective | undefined> = contentChild(\n DateRangePickerInputEndDirective,\n );\n\n protected override connectedTo!: ElementRef<HTMLElement>;\n\n private formField: WlcmFormField = inject(WLCM_FORM_FIELD, { host: true });\n\n private controlContainer: ControlContainer = inject(ControlContainer, { host: true });\n\n constructor() {\n super();\n }\n\n ngAfterContentInit(): void {\n this.checkInputs();\n\n this.attachFocusBlurListeners();\n }\n\n ngAfterViewInit(): void {\n this.connectedTo = this.formField.inputContainer;\n }\n\n isFocused(): boolean {\n return (\n this.startInputElement === document.activeElement ||\n this.endInputElement === document.activeElement ||\n this.isOpen\n );\n }\n\n focus(): void {\n if (this.selectOnly()) return this.open();\n\n if (!this.isFocused()) this.startInputElement.focus();\n }\n\n private get control(): FormGroup | null {\n return this.controlContainer?.control as FormGroup;\n }\n\n private get startInputElement(): HTMLElement {\n return this.startInput()!.element.nativeElement;\n }\n\n private get endInputElement(): HTMLElement {\n return this.endInput()!.element.nativeElement;\n }\n\n private checkInputs(): void {\n if (!this.startInput()) DateRangePickerErrors.throwNoStartInputError();\n\n if (!this.endInput()) DateRangePickerErrors.throwNoEndInputError();\n }\n\n private attachFocusBlurListeners(): void {\n const voidFn = () => {\n // noop\n };\n\n const startInputFocus: Observable<Event> = fromEvent(this.startInputElement, 'focus');\n\n const endInputFocus: Observable<Event> = fromEvent(this.endInputElement, 'focus');\n\n const startInputBlur: Observable<Event> = fromEvent(this.startInputElement, 'blur');\n\n const endInputBlur: Observable<Event> = fromEvent(this.endInputElement, 'blur');\n\n const focusObservables: Observable<unknown>[] = [startInputFocus, endInputFocus, this.opened];\n\n const blurObservables: Observable<unknown>[] = [startInputBlur, endInputBlur, this.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));\n }\n}\n","<div class=\"wlcm-date-range-picker-inputs-container\">\n <div class=\"wlcm-date-range-picker-input-field-wrapper\">\n <ng-content select=\"[wlcmDateRangePickerInputStart]\"></ng-content>\n </div>\n\n <div class=\"wlcm-date-range-picker-input-dash\"></div>\n\n <div class=\"wlcm-date-range-picker-input-field-wrapper\">\n <ng-content select=\"[wlcmDateRangePickerInputEnd]\"></ng-content>\n </div>\n</div>\n","import {\n Directive,\n ElementRef,\n InputSignal,\n OutputEmitterRef,\n effect,\n forwardRef,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { MatCalendar, MatCalendarView, yearsPerPage } from '@angular/material/datepicker';\nimport { WLCM_DATEPICKER_CONFIG } from '../../constants/datepicker.constants';\nimport { WlcmDatepickerConfig } from '../date-picker.models';\nimport { isBefore, startOfDay, isAfter } from 'date-fns';\nimport { DateAdapter } from '@angular/material/core';\n\n@Directive()\nexport abstract class WlcmDataRangeCalendar {\n public abstract readonly location: 'left' | 'right';\n\n readonly dateChange: OutputEmitterRef<Date> = output();\n\n readonly viewChange: OutputEmitterRef<MatCalendarView> = output();\n\n readonly disabled: InputSignal<boolean> = input(false);\n\n public element: ElementRef<HTMLElement> = inject(ElementRef);\n\n protected calendar: MatCalendar<Date> = inject<MatCalendar<Date>>(forwardRef(() => MatCalendar));\n\n protected dateAdapter: DateAdapter<Date> = inject<DateAdapter<Date>>(DateAdapter);\n\n protected datepickerConfig: WlcmDatepickerConfig = inject(WLCM_DATEPICKER_CONFIG);\n\n constructor() {\n effect(() => {\n if (this.disabled()) {\n this.element.nativeElement.classList.add('wlcm-calendar-disabled');\n } else {\n this.element.nativeElement.classList.remove('wlcm-calendar-disabled');\n }\n });\n\n this.handleConfigValues();\n }\n\n get minDate(): Date | undefined {\n return this.datepickerConfig.minDate?.();\n }\n\n get maxDate(): Date | undefined {\n return this.datepickerConfig.maxDate?.();\n }\n\n prevMonth(): void {\n this.dateChange.emit(this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1));\n }\n\n nextMonth(): void {\n this.dateChange.emit(this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1));\n }\n\n prevYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage,\n ),\n );\n }\n\n nextYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage,\n ),\n );\n }\n\n handleConfigValues(): void {\n this.calendar.dateFilter = (date: Date): boolean => {\n if (this.minDate && isBefore(startOfDay(date), startOfDay(this.minDate!))) return false;\n\n if (this.maxDate && isAfter(startOfDay(date), startOfDay(this.maxDate!))) return false;\n\n return true;\n };\n }\n}\n","import { Directive, DestroyRef, forwardRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WlcmDataRangeCalendar } from '../../models/range/data-range-calendar.models';\n\n@Directive({\n selector: '[wlcmLeftCalendar]',\n providers: [{ provide: WlcmDataRangeCalendar, useExisting: forwardRef(() => WlcmLeftCalendarDirective) }],\n})\nexport class WlcmLeftCalendarDirective extends WlcmDataRangeCalendar {\n public readonly location = 'left' as const;\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.handleYearChange();\n\n this.handleMonthChange();\n }\n\n handleYearChange(): void {\n this.calendar.yearSelected\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date: Date) => this.dateChange.emit(date));\n }\n\n handleMonthChange(): void {\n this.calendar.monthSelected\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date: Date) => this.dateChange.emit(date));\n }\n}\n","import { Directive, DestroyRef, forwardRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { WlcmDataRangeCalendar } from '../../models/range/data-range-calendar.models';\nimport { yearsPerPage } from '@angular/material/datepicker';\n\n@Directive({\n selector: '[wlcmRightCalendar]',\n providers: [{ provide: WlcmDataRangeCalendar, useExisting: forwardRef(() => WlcmRightCalendarDirective) }],\n})\nexport class WlcmRightCalendarDirective extends WlcmDataRangeCalendar {\n public readonly location = 'right' as const;\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.handleYearChange();\n\n this.handleMonthChange();\n }\n\n handleYearChange(): void {\n this.calendar.yearSelected\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date: Date) => this.dateChange.emit(this.dateAdapter.addCalendarMonths(date, -1)));\n }\n\n handleMonthChange(): void {\n this.calendar.monthSelected\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date: Date) => this.dateChange.emit(this.dateAdapter.addCalendarMonths(date, -1)));\n }\n\n override nextMonth(): void {\n this.dateChange.emit(this.calendar.activeDate);\n }\n\n override prevYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarMonths(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? -1 : -yearsPerPage\n ),\n -1\n )\n );\n }\n\n override nextYear(): void {\n this.dateChange.emit(\n this.dateAdapter.addCalendarMonths(\n this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView == 'year' ? 1 : yearsPerPage\n ),\n -1\n )\n );\n }\n}\n","\nimport { Component, forwardRef, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { WlcmDataRangeCalendar } from '../../../models/range/data-range-calendar.models';\nimport { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\nimport { add, endOfMonth, isBefore, startOfMonth } from 'date-fns';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { WlcmIconName } from '@wlcm/angular/core';\n\n@Component({\n selector: 'wlcm-date-range-calendar-header',\n imports: [WlcmCalendarHeaderComponent],\n templateUrl: './date-range-calendar-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './date-range-calendar-header.component.scss',\n})\nexport class WlcmDateRangeCalendarHeaderComponent {\n readonly WlcmIconName = WlcmIconName;\n\n protected rangeCalendar: WlcmDataRangeCalendar | null = inject(WlcmDataRangeCalendar, { optional: true });\n\n protected dateFormats: MatDateFormats | null = inject(MAT_DATE_FORMATS, { optional: true });\n\n public calendar: MatCalendar<Date> = inject<MatCalendar<Date>>(forwardRef(() => MatCalendar));\n\n protected datepickerConfig: WlcmDatepickerConfig = inject(WLCM_DATEPICKER_CONFIG);\n\n previous = (): void => {\n if (this.isPreviousDisabled) return;\n\n if (this.calendar.currentView !== 'month') {\n return this.rangeCalendar!.prevYear();\n }\n\n return this.rangeCalendar!.prevMonth();\n };\n\n next = (): void => {\n if (this.isNextDisabled) return;\n\n if (this.calendar.currentView !== 'month') {\n return this.rangeCalendar!.nextYear();\n }\n\n return this.rangeCalendar!.nextMonth();\n };\n\n get minDate(): Date | undefined {\n return this.datepickerConfig.minDate?.();\n }\n\n get maxDate(): Date | undefined {\n return this.datepickerConfig.maxDate?.();\n }\n\n get isPreviousDisabled(): boolean {\n if (!this.minDate) return false;\n\n let previousPeriod: Date = endOfMonth(add(this.calendar.activeDate, { months: -1 }));\n\n if (this.calendar.currentView !== 'month') {\n previousPeriod = add(this.calendar.activeDate, { years: -1 });\n }\n\n return isBefore(previousPeriod, this.minDate);\n }\n\n get isNextDisabled(): boolean {\n if (!this.maxDate) return false;\n\n let nextPeriod: Date = startOfMonth(add(this.calendar.activeDate, { months: 1 }));\n\n if (this.calendar.currentView !== 'month') {\n nextPeriod = add(this.calendar.activeDate, { years: 1 });\n }\n\n return isBefore(this.maxDate, nextPeriod);\n }\n\n get canDisplayLeftArrow(): boolean {\n return !this.rangeCalendar || this.rangeCalendar.location === 'left' || this.calendar.currentView !== 'month';\n }\n\n get canDisplayRightArrow(): boolean {\n return !this.rangeCalendar || this.rangeCalendar.location === 'right' || this.calendar.currentView !== 'month';\n }\n}\n","<wlcm-calendar-header\n [next]=\"next\"\n [previous]=\"previous\"\n [disableLeftArrow]=\"isPreviousDisabled\"\n [disableRightArrow]=\"isNextDisabled\"\n [displayLeftArrow]=\"canDisplayLeftArrow && !rangeCalendar?.disabled()\"\n [displayRightArrow]=\"canDisplayRightArrow && !rangeCalendar?.disabled()\"\n></wlcm-calendar-header>\n","import {\n AfterViewInit,\n Component,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Signal,\n signal,\n Type,\n viewChild,\n ViewContainerRef,\n WritableSignal,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { WlcmDateRangePicker, WlcmDateRangePickerConfig } from '../../../models/range/date-range-picker.models';\nimport { DateAdapter } from '@angular/material/core';\nimport {\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n MatDateSelectionModel,\n DateRange,\n MatCalendar,\n MatMonthView,\n MatCalendarView,\n DefaultMatCalendarRangeStrategy,\n MatDatepickerModule,\n} from '@angular/material/datepicker';\nimport { Subject, tap, startWith, takeUntil } from 'rxjs';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport {\n WLCM_DATE_RANGE_PICKER_BP,\n WLCM_DATE_RANGE_PICKER_CONFIG,\n WLCM_DATE_RANGE_PICKER_LEFT_PANEL,\n} from '../../../constants/range/date-range-picker.constants';\nimport { WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER } from '../../../constants/range/date-range-selection-model.constants';\nimport { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../../constants/range/date-range-trigger-selection-model.constants';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { WlcmLeftCalendarDirective } from '../../../directives/ragne/left-calendar.directive';\nimport { WlcmRightCalendarDirective } from '../../../directives/ragne/right-calendar.directive';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\nimport { WlcmDateRangeCalendarHeaderComponent } from '../date-range-calendar-header/date-range-calendar-header.component';\nimport { WlcmCalendarDirective } from '../../../directives/calendar.directive';\n\n@Component({\n selector: 'wlcm-double-calendar-range-picker',\n imports: [\n MatDatepickerModule,\n WlcmCalendarDirective,\n WlcmLeftCalendarDirective,\n WlcmRightCalendarDirective\n],\n templateUrl: './double-calendar-range-picker.component.html',\n styleUrl: './double-calendar-range-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultMatCalendarRangeStrategy,\n },\n { provide: WlcmDateRangePicker, useExisting: forwardRef(() => DoubleCalendarRangePickerComponent) },\n WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,\n ],\n})\nexport class DoubleCalendarRangePickerComponent extends WlcmDateRangePicker implements AfterViewInit {\n protected headerComponent: Type<unknown> = WlcmDateRangeCalendarHeaderComponent;\n\n private _isViewInitialized: WritableSignal<boolean> = signal(false);\n\n private rangeConfig: WlcmDateRangePickerConfig | null = inject(WLCM_DATE_RANGE_PICKER_CONFIG, { optional: true });\n\n protected triggerSelectionModel = inject(\n WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL,\n ) as unknown as MatDateSelectionModel<DateRange<Date>>;\n\n protected trigger: WlcmDatepickerTrigger<DoubleCalendarRangePickerComponent> = inject(WlcmDatepickerTrigger);\n\n protected datepickerConfig: WlcmDatepickerConfig = inject(WLCM_DATEPICKER_CONFIG);\n\n protected pickerBottomPanel: Type<unknown> = inject(WLCM_DATE_RANGE_PICKER_BP);\n\n protected pickerLeftPanel: Type<unknown> | null = inject(WLCM_DATE_RANGE_PICKER_LEFT_PANEL, { optional: true });\n\n protected dateAdapter: DateAdapter<Date> = inject<DateAdapter<Date>>(DateAdapter);\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n readonly leftCalendar: Signal<MatCalendar<Date> | undefined> = viewChild(WlcmLeftCalendarDirective, {\n read: MatCalendar,\n });\n\n readonly rightCalendar: Signal<MatCalendar<Date> | undefined> = viewChild(WlcmRightCalendarDirective, {\n read: MatCalendar,\n });\n\n readonly leftCalendarElement: Signal<ElementRef<HTMLElement> | undefined> = viewChild(WlcmLeftCalendarDirective, {\n read: ElementRef,\n });\n\n readonly bottomPanelContainer: Signal<ViewContainerRef | undefined> = viewChild('bottomPanelContainer', {\n read: ViewContainerRef,\n });\n\n readonly leftPanelContainer: Signal<ViewContainerRef | undefined> = viewChild('leftPanelContainer', {\n read: ViewContainerRef,\n });\n\n readonly monthView: Signal<MatMonthView<Date> | undefined> = viewChild(MatMonthView);\n\n startDate: WritableSignal<Date> = signal(new Date());\n\n leftCalendarYearViewActivated: WritableSignal<boolean> = signal(false);\n\n rightCalendarYearViewActivated: WritableSignal<boolean> = signal(false);\n\n constructor() {\n super();\n\n this.localSelectionModel.updateSelection(this.triggerSelectionModel.selection, this);\n\n if (this.triggerSelectionModel.selection.start) {\n this.startDate.set(this.triggerSelectionModel.selection.start);\n }\n\n if (this.rangeConfig?.headerComponent) {\n this.headerComponent = this.rangeConfig.headerComponent;\n }\n\n effect(() => {\n if (!this._isViewInitialized()) return;\n\n const startDate = this.startDate();\n\n const leftCalendar = this.leftCalendar();\n\n const rightCalendar = this.rightCalendar();\n\n if (!leftCalendar || !rightCalendar) return;\n\n leftCalendar.activeDate = startDate;\n\n rightCalendar.activeDate = this.dateAdapter.addCalendarMonths(startDate, 1);\n\n rightCalendar.startAt = rightCalendar.activeDate;\n });\n }\n\n ngAfterViewInit(): void {\n this._isViewInitialized.set(true);\n\n this.leftCalendar()!.viewChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((view: MatCalendarView) => {\n this.leftCalendarYearViewActivated.set(view !== 'month');\n });\n\n this.rightCalendar()!.viewChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((view: MatCalendarView) => {\n this.rightCalendarYearViewActivated.set(view !== 'month');\n });\n\n this.bottomPanelContainer()!.createComponent(this.pickerBottomPanel);\n\n if (this.pickerLeftPanel) {\n this.leftPanelContainer()!.createComponent(this.pickerLeftPanel).changeDetectorRef.detectChanges();\n }\n\n this.handleRightCalendarPreviewChange();\n }\n\n override apply(): void {\n this.triggerSelectionModel.updateSelection(this.localSelectionModel.selection, this);\n\n this.trigger.close();\n }\n\n override reset(): void {\n this.trigger.close();\n }\n\n private get leftCalendarActiveCell(): HTMLElement | null {\n return this.leftCalendarElement()?.nativeElement.querySelector('.mat-calendar-body-active') ?? null;\n }\n\n private handleRightCalendarPreviewChange(): void {\n const rightCalendar = this.rightCalendar();\n\n if (!rightCalendar) return;\n\n const viewChanged: Subject<void> = new Subject();\n\n rightCalendar.viewChanged\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(tap(() => viewChanged.next()))\n .pipe(startWith(rightCalendar.currentView))\n .subscribe((view: MatCalendarView) => {\n if (view !== 'month') return;\n\n rightCalendar.monthView._matCalendarBody.previewChange\n .pipe(takeUntil(viewChanged), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const leftCalendar = this.leftCalendar();\n\n if (!leftCalendar || leftCalendar.currentView !== 'month' || !leftCalendar.monthView._rangeStart()) {\n return;\n }\n\n leftCalendar.monthView._previewStart.set(rightCalendar.monthView._previewStart());\n\n leftCalendar.monthView._previewEnd.set(rightCalendar.monthView._previewEnd());\n\n const activeCell = this.leftCalendarActiveCell;\n\n if (activeCell && activeCell === document.activeElement) activeCell.blur();\n\n leftCalendar.monthView._changeDetectorRef.markForCheck();\n });\n });\n }\n}\n","<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"double-calendar-range-picker-body\">\n <div class=\"double-calendar-range-picker__left-section\">\n <ng-container #leftPanelContainer></ng-container>\n </div>\n\n <div class=\"double-calendar-range-picker__calendars-container\">\n <mat-calendar\n wlcmCalendar\n wlcmLeftCalendar\n [selected]=\"selected\"\n [disabled]=\"rightCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n\n <mat-calendar\n wlcmCalendar\n wlcmRightCalendar\n [selected]=\"selected\"\n [disabled]=\"leftCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n </div>\n </div>\n\n <ng-container #bottomPanelContainer></ng-container>\n</div>\n","import { Directive, forwardRef, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { MatDateSelectionModel } from '@angular/material/datepicker';\nimport { WlcmDatepickerInputBase } from '../datepicker-input.base';\n\n@Directive({\n selector: '[wlcmDatepickerInput]',\n exportAs: 'wlcmDatepickerInput',\n host: { class: 'wlcm-form-field-input' },\n providers: [\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmDatepickerInputDirective), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmDatepickerInputDirective), multi: true },\n ],\n})\nexport class WlcmDatepickerInputDirective extends WlcmDatepickerInputBase implements ControlValueAccessor, Validator {\n protected selectionModel: MatDateSelectionModel<Date | null> =\n inject<MatDateSelectionModel<Date | null>>(MatDateSelectionModel);\n\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.handleSelectionChange();\n\n this.handleClosePanel();\n }\n\n override updateSelection(): void {\n const date: Date | null = this.parseCurrentValue();\n\n this.selectionModel.updateSelection(date, this);\n }\n\n private handleClosePanel(): void {\n this.trigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this._touched?.());\n }\n\n private handleSelectionChange(): void {\n this.selectionModel.selectionChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ selection }) => {\n this.updateInputValue(selection);\n\n this._changed?.(selection);\n\n this._touched?.();\n });\n }\n}\n","import { Component, Signal, viewChild, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { MatCalendar, MatDateSelectionModel, MatDatepickerModule } from '@angular/material/datepicker';\nimport { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';\nimport { WlcmCalendarDirective } from '../../../directives/calendar.directive';\nimport { WlcmDatepickerConfig } from '../../../models/date-picker.models';\n\n\n@Component({\n selector: 'wlcm-datepicker-panel',\n host: { class: 'wlcm-datepicker-panel' },\n imports: [MatDatepickerModule, WlcmCalendarDirective],\n templateUrl: './datepicker-panel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './datepicker-panel.component.scss',\n})\nexport class WlcmDatepickerPanelComponent<D> {\n protected headerComponent = WlcmCalendarHeaderComponent;\n\n public matCalendar: Signal<MatCalendar<D> | undefined> = viewChild(MatCalendar);\n\n protected selectionModel: MatDateSelectionModel<Date> = inject<MatDateSelectionModel<Date>>(MatDateSelectionModel);\n\n protected trigger: WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<D>> = inject(WlcmDatepickerTrigger);\n\n protected config: WlcmDatepickerConfig = inject(WLCM_DATEPICKER_CONFIG);\n\n select(date: Date): void {\n this.selectionModel.updateSelection(date, this);\n\n this.trigger.close();\n }\n}\n","<mat-calendar\n wlcmCalendar\n [minDate]=\"config.minDate?.()\"\n [maxDate]=\"config.maxDate?.()\"\n [startAt]=\"selectionModel.selection\"\n [selected]=\"selectionModel.selection\"\n [headerComponent]=\"headerComponent\"\n (selectedChange)=\"select($event)\"\n></mat-calendar>\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n Signal,\n contentChild,\n forwardRef,\n inject, AfterViewInit,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { MatDateSelectionModel, MatSingleDateSelectionModel } from '@angular/material/datepicker';\nimport { WLCM_FORM_FIELD, WLCM_INPUT_BINDER, WlcmFormField, WlcmFormFieldInput } from '@wlcm/angular/forms';\nimport { WlcmDatepickerInputDirective } from '../../../directives/single/datepicker-input.directive';\nimport { WlcmDatepickerPanelComponent } from '../datepicker-panel/datepicker-panel.component';\nimport { BehaviorSubject, Observable, EMPTY, switchMap, fromEvent, merge, map } from 'rxjs';\nimport { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'wlcm-datepicker-input-container',\n host: { class: 'wlcm-datepicker-input-container' },\n exportAs: 'wlcmDatepicker',\n imports: [],\n templateUrl: './datepicker-input-container.component.html',\n styleUrl: './datepicker-input-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const input = inject(WlcmDatepickerInputContainerComponent, { self: true });\n\n return { bind: () => input };\n },\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmDatepickerInputContainerComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmDatepickerInputContainerComponent), multi: true },\n { provide: WlcmDatepickerTrigger, useExisting: forwardRef(() => WlcmDatepickerInputContainerComponent) },\n { provide: MatDateSelectionModel, useClass: MatSingleDateSelectionModel },\n ],\n})\nexport class WlcmDatepickerInputContainerComponent<T>\n extends WlcmDatepickerTrigger<WlcmDatepickerPanelComponent<T>>\n implements WlcmFormFieldInput, AfterContentInit, AfterViewInit\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 inputRef: Signal<ElementRef<HTMLInputElement> | undefined> = contentChild(WlcmDatepickerInputDirective, {\n read: ElementRef,\n });\n\n protected override componentType = WlcmDatepickerPanelComponent;\n\n protected override connectedTo!: ElementRef<HTMLElement>;\n\n private formField: WlcmFormField = inject(WLCM_FORM_FIELD, { host: true });\n\n constructor() {\n super();\n }\n\n ngAfterContentInit(): void {\n this.attachFocusBlurListeners();\n }\n\n ngAfterViewInit(): void {\n this.connectedTo = this.formField.inputContainer;\n }\n\n focus = (): void => {\n if (this.selectOnly()) return this.open();\n\n this.inputElement?.focus();\n };\n\n isFocused = (): boolean => {\n return this.inputElement === document.activeElement || this.isOpen;\n };\n\n private get inputElement(): HTMLInputElement | undefined {\n return this.inputRef()?.nativeElement;\n }\n\n private attachFocusBlurListeners(): void {\n const voidFn = () => {\n // noop\n };\n\n const inputFocus: Observable<Event> = fromEvent(this.inputElement!, 'focus');\n\n const inputBlur: Observable<Event> = fromEvent(this.inputElement!, 'blur');\n\n const focusObservables: Observable<unknown>[] = [inputFocus, this.opened];\n\n const blurObservables: Observable<unknown>[] = [inputBlur, this.closed];\n\n this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));\n\n this._blurStream$.next(merge(...blurObservables).pipe(map(voidFn)));\n }\n}\n","<ng-content select=\"[wlcmDatepickerInput]\"></ng-content>\n","import { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { WlcmDateValidation } from '../../models/date-picker.models';\n\nexport function WlcmDateRangeInputValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const formGroup: FormGroup = control as FormGroup;\n\n let errors: ValidationErrors | null = {};\n\n for (const childControl of Object.values(formGroup.controls)) {\n errors = { ...errors, ...childControl.errors };\n }\n\n errors = Object.keys(errors).length > 0 ? errors : null;\n\n if (errors instanceof Object && errors[WlcmDateValidation.Format] && errors['required']) {\n errors['required'] = false;\n }\n\n return errors;\n };\n}\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmDatepickerInputContainerComponent } from './components/single/datepicker-input-container/datepicker-input-container.component';\nimport { WlcmDateRangePickerInputComponent } from './components/range/date-range-picker-input/date-range-picker-input.component';\nimport { DateRangePickerInputStartDirective } from './directives/ragne/date-range-picker-input-start.directive';\nimport { DateRangePickerInputEndDirective } from './directives/ragne/date-range-picker-input-end.directive';\nimport { WlcmDatepickerInputDirective } from './directives/single/datepicker-input.directive';\nimport { WLCM_DEFAULT_DATEPICKER_PROVIDERS } from './constants/datepicker.constants';\n\nconst publicComponents: Type<unknown>[] = [WlcmDatepickerInputContainerComponent, WlcmDateRangePickerInputComponent];\n\nconst publicDirectives: Type<unknown>[] = [\n WlcmDatepickerInputDirective,\n DateRangePickerInputStartDirective,\n DateRangePickerInputEndDirective,\n];\n\n@NgModule({\n imports: [CommonModule, ...publicComponents, ...publicDirectives],\n exports: [...publicComponents, ...publicDirectives],\n providers: [...WLCM_DEFAULT_DATEPICKER_PROVIDERS],\n})\nexport class WlcmDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}