@energinet/watt 4.2.4 → 4.2.6

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 (233) hide show
  1. package/esm2022/badge/watt-badge.component.js +3 -3
  2. package/esm2022/badge/watt-badge.component.js.map +1 -1
  3. package/esm2022/breadcrumbs/watt-breadcrumbs.component.js +6 -6
  4. package/esm2022/breadcrumbs/watt-breadcrumbs.component.js.map +1 -1
  5. package/esm2022/button/watt-button.component.js +3 -3
  6. package/esm2022/button/watt-button.component.js.map +1 -1
  7. package/esm2022/card/watt-card-title.component.js +3 -3
  8. package/esm2022/card/watt-card-title.component.js.map +1 -1
  9. package/esm2022/card/watt-card.component.js +3 -3
  10. package/esm2022/card/watt-card.component.js.map +1 -1
  11. package/esm2022/checkbox/watt-checkbox.component.js +3 -3
  12. package/esm2022/checkbox/watt-checkbox.component.js.map +1 -1
  13. package/esm2022/chip/watt-action-chip.component.js +3 -3
  14. package/esm2022/chip/watt-action-chip.component.js.map +1 -1
  15. package/esm2022/chip/watt-chip.component.js +3 -3
  16. package/esm2022/chip/watt-chip.component.js.map +1 -1
  17. package/esm2022/chip/watt-chip.directive.js +3 -3
  18. package/esm2022/chip/watt-chip.directive.js.map +1 -1
  19. package/esm2022/chip/watt-date-chip.component.js +3 -3
  20. package/esm2022/chip/watt-date-chip.component.js.map +1 -1
  21. package/esm2022/chip/watt-date-range-chip.component.js +6 -6
  22. package/esm2022/chip/watt-date-range-chip.component.js.map +1 -1
  23. package/esm2022/chip/watt-filter-chip.component.js +3 -3
  24. package/esm2022/chip/watt-filter-chip.component.js.map +1 -1
  25. package/esm2022/chip/watt-menu-chip.component.js +3 -3
  26. package/esm2022/chip/watt-menu-chip.component.js.map +1 -1
  27. package/esm2022/clipboard/watt-clipboard-intl.service.js +3 -3
  28. package/esm2022/clipboard/watt-clipboard-intl.service.js.map +1 -1
  29. package/esm2022/clipboard/watt-copy-to-clipboard.directive.js +3 -3
  30. package/esm2022/clipboard/watt-copy-to-clipboard.directive.js.map +1 -1
  31. package/esm2022/code/watt-code-intl.service.js +3 -3
  32. package/esm2022/code/watt-code-intl.service.js.map +1 -1
  33. package/esm2022/code/watt-code.component.js +3 -3
  34. package/esm2022/code/watt-code.component.js.map +1 -1
  35. package/esm2022/core/breakpoints/breakpoints-observer.js +3 -3
  36. package/esm2022/core/breakpoints/breakpoints-observer.js.map +1 -1
  37. package/esm2022/core/color/color-helper.service.js +3 -3
  38. package/esm2022/core/color/color-helper.service.js.map +1 -1
  39. package/esm2022/core/date/watt-date.pipe.js +3 -3
  40. package/esm2022/core/date/watt-date.pipe.js.map +1 -1
  41. package/esm2022/core/date/watt-locale.service.js +3 -3
  42. package/esm2022/core/date/watt-locale.service.js.map +1 -1
  43. package/esm2022/data/watt-data-actions.component.js +3 -3
  44. package/esm2022/data/watt-data-actions.component.js.map +1 -1
  45. package/esm2022/data/watt-data-filters.component.js +3 -3
  46. package/esm2022/data/watt-data-filters.component.js.map +1 -1
  47. package/esm2022/data/watt-data-intl.service.js +3 -3
  48. package/esm2022/data/watt-data-intl.service.js.map +1 -1
  49. package/esm2022/data/watt-data-table.component.js +3 -3
  50. package/esm2022/data/watt-data-table.component.js.map +1 -1
  51. package/esm2022/datetime-field/watt-datetime-field.component.js +3 -3
  52. package/esm2022/datetime-field/watt-datetime-field.component.js.map +1 -1
  53. package/esm2022/description-list/watt-description-list-item.component.js +3 -3
  54. package/esm2022/description-list/watt-description-list-item.component.js.map +1 -1
  55. package/esm2022/description-list/watt-description-list.component.js +3 -3
  56. package/esm2022/description-list/watt-description-list.component.js.map +1 -1
  57. package/esm2022/drawer/watt-drawer-actions.component.js +3 -3
  58. package/esm2022/drawer/watt-drawer-actions.component.js.map +1 -1
  59. package/esm2022/drawer/watt-drawer-content.component.js +3 -3
  60. package/esm2022/drawer/watt-drawer-content.component.js.map +1 -1
  61. package/esm2022/drawer/watt-drawer-heading.component.js +3 -3
  62. package/esm2022/drawer/watt-drawer-heading.component.js.map +1 -1
  63. package/esm2022/drawer/watt-drawer-topbar.component.js +3 -3
  64. package/esm2022/drawer/watt-drawer-topbar.component.js.map +1 -1
  65. package/esm2022/drawer/watt-drawer.component.js +3 -3
  66. package/esm2022/drawer/watt-drawer.component.js.map +1 -1
  67. package/esm2022/dropdown/watt-dropdown.component.js +3 -3
  68. package/esm2022/dropdown/watt-dropdown.component.js.map +1 -1
  69. package/esm2022/dropzone/watt-dropzone-intl.js +3 -3
  70. package/esm2022/dropzone/watt-dropzone-intl.js.map +1 -1
  71. package/esm2022/dropzone/watt-dropzone-validators.js +6 -6
  72. package/esm2022/dropzone/watt-dropzone-validators.js.map +1 -1
  73. package/esm2022/dropzone/watt-dropzone.js +3 -3
  74. package/esm2022/dropzone/watt-dropzone.js.map +1 -1
  75. package/esm2022/empty-state/icons/explore.js +3 -3
  76. package/esm2022/empty-state/icons/explore.js.map +1 -1
  77. package/esm2022/empty-state/icons/no-results.js +3 -3
  78. package/esm2022/empty-state/icons/no-results.js.map +1 -1
  79. package/esm2022/empty-state/icons/not-found.js +3 -3
  80. package/esm2022/empty-state/icons/not-found.js.map +1 -1
  81. package/esm2022/empty-state/icons/power.js +3 -3
  82. package/esm2022/empty-state/icons/power.js.map +1 -1
  83. package/esm2022/empty-state/watt-empty-state.component.js +3 -3
  84. package/esm2022/empty-state/watt-empty-state.component.js.map +1 -1
  85. package/esm2022/expandable-card/watt-expandable-card.component.js +9 -9
  86. package/esm2022/expandable-card/watt-expandable-card.component.js.map +1 -1
  87. package/esm2022/field/watt-field-error.component.js +3 -3
  88. package/esm2022/field/watt-field-error.component.js.map +1 -1
  89. package/esm2022/field/watt-field-hint.component.js +3 -3
  90. package/esm2022/field/watt-field-hint.component.js.map +1 -1
  91. package/esm2022/field/watt-field-intl.service.js +3 -3
  92. package/esm2022/field/watt-field-intl.service.js.map +1 -1
  93. package/esm2022/field/watt-field-warning.component.js +3 -3
  94. package/esm2022/field/watt-field-warning.component.js.map +1 -1
  95. package/esm2022/field/watt-field.component.js +3 -3
  96. package/esm2022/field/watt-field.component.js.map +1 -1
  97. package/esm2022/file-field/watt-file-field.component.js +3 -3
  98. package/esm2022/file-field/watt-file-field.component.js.map +1 -1
  99. package/esm2022/icon/flags/watt-flag-ch.js +3 -3
  100. package/esm2022/icon/flags/watt-flag-ch.js.map +1 -1
  101. package/esm2022/icon/flags/watt-flag-de.js +3 -3
  102. package/esm2022/icon/flags/watt-flag-de.js.map +1 -1
  103. package/esm2022/icon/flags/watt-flag-dk.js +3 -3
  104. package/esm2022/icon/flags/watt-flag-dk.js.map +1 -1
  105. package/esm2022/icon/flags/watt-flag-fi.js +3 -3
  106. package/esm2022/icon/flags/watt-flag-fi.js.map +1 -1
  107. package/esm2022/icon/flags/watt-flag-gb.js +3 -3
  108. package/esm2022/icon/flags/watt-flag-gb.js.map +1 -1
  109. package/esm2022/icon/flags/watt-flag-nl.js +3 -3
  110. package/esm2022/icon/flags/watt-flag-nl.js.map +1 -1
  111. package/esm2022/icon/flags/watt-flag-no.js +3 -3
  112. package/esm2022/icon/flags/watt-flag-no.js.map +1 -1
  113. package/esm2022/icon/flags/watt-flag-pl.js +3 -3
  114. package/esm2022/icon/flags/watt-flag-pl.js.map +1 -1
  115. package/esm2022/icon/flags/watt-flag-se.js +3 -3
  116. package/esm2022/icon/flags/watt-flag-se.js.map +1 -1
  117. package/esm2022/icon/flags/watt-flag.js +3 -3
  118. package/esm2022/icon/flags/watt-flag.js.map +1 -1
  119. package/esm2022/icon/icon.component.js +3 -3
  120. package/esm2022/icon/icon.component.js.map +1 -1
  121. package/esm2022/menu/watt-menu-group.component.js +3 -3
  122. package/esm2022/menu/watt-menu-group.component.js.map +1 -1
  123. package/esm2022/menu/watt-menu-item.component.js +3 -3
  124. package/esm2022/menu/watt-menu-item.component.js.map +1 -1
  125. package/esm2022/menu/watt-menu-trigger.directive.js +3 -3
  126. package/esm2022/menu/watt-menu-trigger.directive.js.map +1 -1
  127. package/esm2022/menu/watt-menu.component.js +3 -3
  128. package/esm2022/menu/watt-menu.component.js.map +1 -1
  129. package/esm2022/modal/watt-modal.component.js +6 -6
  130. package/esm2022/modal/watt-modal.component.js.map +1 -1
  131. package/esm2022/modal/watt-modal.service.js +3 -3
  132. package/esm2022/modal/watt-modal.service.js.map +1 -1
  133. package/esm2022/paginator/watt-paginator-intl.service.js +3 -3
  134. package/esm2022/paginator/watt-paginator-intl.service.js.map +1 -1
  135. package/esm2022/paginator/watt-paginator.component.js +3 -3
  136. package/esm2022/paginator/watt-paginator.component.js.map +1 -1
  137. package/esm2022/phone-field/watt-phone-field-intl.service.js +3 -3
  138. package/esm2022/phone-field/watt-phone-field-intl.service.js.map +1 -1
  139. package/esm2022/phone-field/watt-phone-field.component.js +3 -3
  140. package/esm2022/phone-field/watt-phone-field.component.js.map +1 -1
  141. package/esm2022/picker/__shared/placeholder-mask/watt-placeholder-mask.component.js +3 -3
  142. package/esm2022/picker/__shared/placeholder-mask/watt-placeholder-mask.component.js.map +1 -1
  143. package/esm2022/picker/__shared/watt-picker-base.js +3 -3
  144. package/esm2022/picker/__shared/watt-picker-base.js.map +1 -1
  145. package/esm2022/picker/datepicker/watt-datepicker-intl.service.js +3 -3
  146. package/esm2022/picker/datepicker/watt-datepicker-intl.service.js.map +1 -1
  147. package/esm2022/picker/datepicker/watt-datepicker.component.js +3 -3
  148. package/esm2022/picker/datepicker/watt-datepicker.component.js.map +1 -1
  149. package/esm2022/picker/timepicker/watt-timepicker.component.js +3 -3
  150. package/esm2022/picker/timepicker/watt-timepicker.component.js.map +1 -1
  151. package/esm2022/progress-tracker/watt-progress-tracker-step.component.js +3 -3
  152. package/esm2022/progress-tracker/watt-progress-tracker-step.component.js.map +1 -1
  153. package/esm2022/progress-tracker/watt-progress-tracker.component.js +3 -3
  154. package/esm2022/progress-tracker/watt-progress-tracker.component.js.map +1 -1
  155. package/esm2022/query-params/watt-query-params.directive.js +3 -3
  156. package/esm2022/query-params/watt-query-params.directive.js.map +1 -1
  157. package/esm2022/radio/watt-radio-group.component.js +3 -3
  158. package/esm2022/radio/watt-radio-group.component.js.map +1 -1
  159. package/esm2022/radio/watt-radio.component.js +3 -3
  160. package/esm2022/radio/watt-radio.component.js.map +1 -1
  161. package/esm2022/search/watt-search.component.js +3 -3
  162. package/esm2022/search/watt-search.component.js.map +1 -1
  163. package/esm2022/segmented-buttons/watt-segmented-button.component.js +3 -3
  164. package/esm2022/segmented-buttons/watt-segmented-button.component.js.map +1 -1
  165. package/esm2022/segmented-buttons/watt-segmented-buttons.component.js +3 -3
  166. package/esm2022/segmented-buttons/watt-segmented-buttons.component.js.map +1 -1
  167. package/esm2022/shell/nav-list/watt-expand-on-active-link.directive.js +3 -3
  168. package/esm2022/shell/nav-list/watt-expand-on-active-link.directive.js.map +1 -1
  169. package/esm2022/shell/nav-list/watt-nav-list-item.component.js +3 -3
  170. package/esm2022/shell/nav-list/watt-nav-list-item.component.js.map +1 -1
  171. package/esm2022/shell/nav-list/watt-nav-list.component.js +3 -3
  172. package/esm2022/shell/nav-list/watt-nav-list.component.js.map +1 -1
  173. package/esm2022/shell/shell.component.js +3 -3
  174. package/esm2022/shell/shell.component.js.map +1 -1
  175. package/esm2022/slide-toggle/watt-slide-toggle.component.js +3 -3
  176. package/esm2022/slide-toggle/watt-slide-toggle.component.js.map +1 -1
  177. package/esm2022/slider/watt-slider.component.js +3 -3
  178. package/esm2022/slider/watt-slider.component.js.map +1 -1
  179. package/esm2022/spinner/watt-spinner.component.js +3 -3
  180. package/esm2022/spinner/watt-spinner.component.js.map +1 -1
  181. package/esm2022/stepper/watt-stepper-step.component.js +3 -3
  182. package/esm2022/stepper/watt-stepper-step.component.js.map +1 -1
  183. package/esm2022/stepper/watt-stepper.component.js +3 -3
  184. package/esm2022/stepper/watt-stepper.component.js.map +1 -1
  185. package/esm2022/table/watt-table.component.js +9 -9
  186. package/esm2022/table/watt-table.component.js.map +1 -1
  187. package/esm2022/tabs/watt-link-tab.component.js +3 -3
  188. package/esm2022/tabs/watt-link-tab.component.js.map +1 -1
  189. package/esm2022/tabs/watt-link-tabs.component.js +3 -3
  190. package/esm2022/tabs/watt-link-tabs.component.js.map +1 -1
  191. package/esm2022/tabs/watt-tab.component.js +3 -3
  192. package/esm2022/tabs/watt-tab.component.js.map +1 -1
  193. package/esm2022/tabs/watt-tabs-action.component.js +3 -3
  194. package/esm2022/tabs/watt-tabs-action.component.js.map +1 -1
  195. package/esm2022/tabs/watt-tabs.component.js +3 -3
  196. package/esm2022/tabs/watt-tabs.component.js.map +1 -1
  197. package/esm2022/text-field/watt-text-field.component.js +3 -3
  198. package/esm2022/text-field/watt-text-field.component.js.map +1 -1
  199. package/esm2022/textarea-field/watt-textarea-field.component.js +3 -3
  200. package/esm2022/textarea-field/watt-textarea-field.component.js.map +1 -1
  201. package/esm2022/toast/watt-toast.component.js +3 -3
  202. package/esm2022/toast/watt-toast.component.js.map +1 -1
  203. package/esm2022/toast/watt-toast.service.js +3 -3
  204. package/esm2022/toast/watt-toast.service.js.map +1 -1
  205. package/esm2022/tooltip/watt-tooltip.component.js +3 -3
  206. package/esm2022/tooltip/watt-tooltip.component.js.map +1 -1
  207. package/esm2022/tooltip/watt-tooltip.directive.js +3 -3
  208. package/esm2022/tooltip/watt-tooltip.directive.js.map +1 -1
  209. package/esm2022/utils/css/css-custom-properties.service.js +3 -3
  210. package/esm2022/utils/css/css-custom-properties.service.js.map +1 -1
  211. package/esm2022/utils/intersection-observer/watt-intersection-observer.service.js +3 -3
  212. package/esm2022/utils/intersection-observer/watt-intersection-observer.service.js.map +1 -1
  213. package/esm2022/utils/resize-observer/watt-resize-observer.directive.js +3 -3
  214. package/esm2022/utils/resize-observer/watt-resize-observer.directive.js.map +1 -1
  215. package/esm2022/utils/resize-observer/watt-resize-observer.service.js +3 -3
  216. package/esm2022/utils/resize-observer/watt-resize-observer.service.js.map +1 -1
  217. package/esm2022/validation-message/watt-validation-message.component.js +3 -3
  218. package/esm2022/validation-message/watt-validation-message.component.js.map +1 -1
  219. package/esm2022/vater/vater-flex.component.js +3 -3
  220. package/esm2022/vater/vater-flex.component.js.map +1 -1
  221. package/esm2022/vater/vater-layout.directive.js +3 -3
  222. package/esm2022/vater/vater-layout.directive.js.map +1 -1
  223. package/esm2022/vater/vater-spacer.component.js +3 -3
  224. package/esm2022/vater/vater-spacer.component.js.map +1 -1
  225. package/esm2022/vater/vater-stack.component.js +3 -3
  226. package/esm2022/vater/vater-stack.component.js.map +1 -1
  227. package/esm2022/vater/vater-utility.directive.js +3 -3
  228. package/esm2022/vater/vater-utility.directive.js.map +1 -1
  229. package/esm2022/year-field/watt-year-field.component.js +3 -3
  230. package/esm2022/year-field/watt-year-field.component.js.map +1 -1
  231. package/esm2022/yearmonth-field/watt-yearmonth-field.component.js +3 -3
  232. package/esm2022/yearmonth-field/watt-yearmonth-field.component.js.map +1 -1
  233. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"watt-paginator.component.js","sourceRoot":"","sources":["../../../../libs/watt/package/paginator/watt-paginator.component.ts"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n OnInit,\n ViewEncapsulation,\n viewChild,\n input,\n effect,\n output,\n computed,\n} from '@angular/core';\nimport {\n MatPaginator,\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from '@angular/material/paginator';\n\nimport { IWattTableDataSource } from '@energinet/watt/table';\nimport { WattPaginatorIntlService } from './watt-paginator-intl.service';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs';\n\n/**\n * Usage:\n * `import { WattPaginatorComponent } from '@energinet/watt/paginator';`\n */\n@Component({\n imports: [MatPaginatorModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'watt-paginator',\n styleUrls: ['./watt-paginator.component.scss'],\n template: `\n <mat-paginator\n class=\"watt-paginator\"\n (page)=\"changed.emit($event)\"\n [length]=\"length()\"\n [pageSize]=\"pageSize()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [pageIndex]=\"pageIndex()\"\n [showFirstLastButtons]=\"true\"\n [attr.aria-label]=\"description()\"\n />\n `,\n})\nexport class WattPaginatorComponent<T> implements OnInit {\n private intl = inject(WattPaginatorIntlService);\n private matPaginatorIntl = inject(MatPaginatorIntl);\n\n length = input(0);\n pageSizeOptions = input([50, 100, 150, 200, 250]);\n pageSize = input(50);\n pageIndex = input(0);\n for = input<IWattTableDataSource<T>>();\n changed = output<PageEvent>();\n instance = viewChild.required(MatPaginator);\n\n changes = toSignal(\n this.intl.changes.pipe(\n // Signals use referential equality to determine if a value has changed.\n // Therefore it is not possible to just map to the intl service directly\n // as the intl service relies on mutation for updating values.\n map(() => ({ ...this.intl })),\n startWith(this.intl)\n ),\n { requireSync: true }\n );\n\n description = computed(() => this.changes().description);\n\n updateDataSource = effect(() => {\n const dataSource = this.for();\n const instance = this.instance();\n if (!dataSource) return;\n dataSource.paginator = instance;\n });\n\n updateLabels = effect(() => {\n const changes = this.changes();\n this.matPaginatorIntl.itemsPerPageLabel = changes.itemsPerPage;\n this.matPaginatorIntl.nextPageLabel = changes.nextPage;\n this.matPaginatorIntl.previousPageLabel = changes.previousPage;\n this.matPaginatorIntl.firstPageLabel = changes.firstPage;\n this.matPaginatorIntl.lastPageLabel = changes.lastPage;\n this.matPaginatorIntl.changes.next();\n });\n\n ngOnInit() {\n this.matPaginatorIntl.getRangeLabel = this.getRangeLabel;\n }\n\n private getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length == 0 || pageSize == 0) {\n return `0 ${this.intl.of} ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return `${startIndex + 1} – ${endIndex} ${this.intl.of} ${length}`;\n };\n}\n"]}
1
+ {"version":3,"file":"watt-paginator.component.js","sourceRoot":"","sources":["../../../../libs/watt/package/paginator/watt-paginator.component.ts"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n OnInit,\n ViewEncapsulation,\n viewChild,\n input,\n effect,\n output,\n computed,\n} from '@angular/core';\nimport {\n MatPaginator,\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from '@angular/material/paginator';\n\nimport { IWattTableDataSource } from '@energinet/watt/table';\nimport { WattPaginatorIntlService } from './watt-paginator-intl.service';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs';\n\n/**\n * Usage:\n * `import { WattPaginatorComponent } from '@energinet/watt/paginator';`\n */\n@Component({\n imports: [MatPaginatorModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'watt-paginator',\n styleUrls: ['./watt-paginator.component.scss'],\n template: `\n <mat-paginator\n class=\"watt-paginator\"\n (page)=\"changed.emit($event)\"\n [length]=\"length()\"\n [pageSize]=\"pageSize()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [pageIndex]=\"pageIndex()\"\n [showFirstLastButtons]=\"true\"\n [attr.aria-label]=\"description()\"\n />\n `,\n})\nexport class WattPaginatorComponent<T> implements OnInit {\n private intl = inject(WattPaginatorIntlService);\n private matPaginatorIntl = inject(MatPaginatorIntl);\n\n length = input(0);\n pageSizeOptions = input([50, 100, 150, 200, 250]);\n pageSize = input(50);\n pageIndex = input(0);\n for = input<IWattTableDataSource<T>>();\n changed = output<PageEvent>();\n instance = viewChild.required(MatPaginator);\n\n changes = toSignal(\n this.intl.changes.pipe(\n // Signals use referential equality to determine if a value has changed.\n // Therefore it is not possible to just map to the intl service directly\n // as the intl service relies on mutation for updating values.\n map(() => ({ ...this.intl })),\n startWith(this.intl)\n ),\n { requireSync: true }\n );\n\n description = computed(() => this.changes().description);\n\n updateDataSource = effect(() => {\n const dataSource = this.for();\n const instance = this.instance();\n if (!dataSource) return;\n dataSource.paginator = instance;\n });\n\n updateLabels = effect(() => {\n const changes = this.changes();\n this.matPaginatorIntl.itemsPerPageLabel = changes.itemsPerPage;\n this.matPaginatorIntl.nextPageLabel = changes.nextPage;\n this.matPaginatorIntl.previousPageLabel = changes.previousPage;\n this.matPaginatorIntl.firstPageLabel = changes.firstPage;\n this.matPaginatorIntl.lastPageLabel = changes.lastPage;\n this.matPaginatorIntl.changes.next();\n });\n\n ngOnInit() {\n this.matPaginatorIntl.getRangeLabel = this.getRangeLabel;\n }\n\n private getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length == 0 || pageSize == 0) {\n return `0 ${this.intl.of} ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return `${startIndex + 1} – ${endIndex} ${this.intl.of} ${length}`;\n };\n}\n"]}
@@ -31,10 +31,10 @@ export class WattPhoneFieldIntlService {
31
31
  PL = 'Poland';
32
32
  NL = 'Netherlands';
33
33
  CH = 'Switzerland';
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPhoneFieldIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPhoneFieldIntlService, providedIn: 'root' });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPhoneFieldIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPhoneFieldIntlService, providedIn: 'root' });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPhoneFieldIntlService, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPhoneFieldIntlService, decorators: [{
38
38
  type: Injectable,
39
39
  args: [{ providedIn: 'root' }]
40
40
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"watt-phone-field-intl.service.js","sourceRoot":"","sources":["../../../../libs/watt/package/phone-field/watt-phone-field-intl.service.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB;;;;;;;;;;;;;;;GAeG;AACH,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;;AAG/B,MAAM,OAAO,yBAAyB;IAC3B,OAAO,GAAkB,IAAI,OAAO,EAAQ,CAAC;IACtD,kBAAkB,GAAG,sBAAsB,CAAC;IAC5C,EAAE,GAAG,SAAS,CAAC;IACf,EAAE,GAAG,SAAS,CAAC;IACf,EAAE,GAAG,SAAS,CAAC;IACf,EAAE,GAAG,gBAAgB,CAAC;IACtB,EAAE,GAAG,QAAQ,CAAC;IACd,EAAE,GAAG,QAAQ,CAAC;IACd,EAAE,GAAG,QAAQ,CAAC;IACd,EAAE,GAAG,aAAa,CAAC;IACnB,EAAE,GAAG,aAAa,CAAC;uGAXR,yBAAyB;2GAAzB,yBAAyB,cADZ,MAAM;;2FACnB,yBAAyB;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class WattPhoneFieldIntlService {\n readonly changes: Subject<void> = new Subject<void>();\n invalidPhoneNumber = 'Invalid phone number';\n DK = 'Denmark';\n DE = 'Germany';\n FI = 'Finland';\n GB = 'United Kingdom';\n NO = 'Norway';\n SE = 'Sweden';\n PL = 'Poland';\n NL = 'Netherlands';\n CH = 'Switzerland';\n}\n"]}
1
+ {"version":3,"file":"watt-phone-field-intl.service.js","sourceRoot":"","sources":["../../../../libs/watt/package/phone-field/watt-phone-field-intl.service.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB;;;;;;;;;;;;;;;GAeG;AACH,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;;AAG/B,MAAM,OAAO,yBAAyB;IAC3B,OAAO,GAAkB,IAAI,OAAO,EAAQ,CAAC;IACtD,kBAAkB,GAAG,sBAAsB,CAAC;IAC5C,EAAE,GAAG,SAAS,CAAC;IACf,EAAE,GAAG,SAAS,CAAC;IACf,EAAE,GAAG,SAAS,CAAC;IACf,EAAE,GAAG,gBAAgB,CAAC;IACtB,EAAE,GAAG,QAAQ,CAAC;IACd,EAAE,GAAG,QAAQ,CAAC;IACd,EAAE,GAAG,QAAQ,CAAC;IACd,EAAE,GAAG,aAAa,CAAC;IACnB,EAAE,GAAG,aAAa,CAAC;wGAXR,yBAAyB;4GAAzB,yBAAyB,cADZ,MAAM;;4FACnB,yBAAyB;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class WattPhoneFieldIntlService {\n readonly changes: Subject<void> = new Subject<void>();\n invalidPhoneNumber = 'Invalid phone number';\n DK = 'Denmark';\n DE = 'Germany';\n FI = 'Finland';\n GB = 'United Kingdom';\n NO = 'Norway';\n SE = 'Sweden';\n PL = 'Poland';\n NL = 'Netherlands';\n CH = 'Switzerland';\n}\n"]}
@@ -151,8 +151,8 @@ export class WattPhoneFieldComponent {
151
151
  getCountryName(countryIsoCode) {
152
152
  return this.intl[countryIsoCode];
153
153
  }
154
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPhoneFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
155
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: WattPhoneFieldComponent, isStandalone: true, selector: "watt-phone-field", inputs: { formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.watt-field-disabled": "isDisabled()" } }, providers: [
154
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPhoneFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
155
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: WattPhoneFieldComponent, isStandalone: true, selector: "watt-phone-field", inputs: { formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.watt-field-disabled": "isDisabled()" } }, providers: [
156
156
  {
157
157
  provide: NG_VALUE_ACCESSOR,
158
158
  useExisting: forwardRef(() => WattPhoneFieldComponent),
@@ -198,7 +198,7 @@ export class WattPhoneFieldComponent {
198
198
  </watt-field>
199
199
  `, isInline: true, styles: [".watt-phone-field__select.mat-mdc-select-panel{--mat-option-label-text-size: 14px;overflow-y:scroll}.watt-phone-field__select.mat-mdc-select-panel watt-icon{margin-right:var(--watt-space-s)}.watt-phone-field__select.mat-mdc-select-panel watt-icon .mat-icon{margin-right:0}.watt-phone-field__select.mat-mdc-select-panel .mat-mdc-option.mdc-list-item .mdc-list-item__primary-text{display:flex;width:100%;align-items:center;gap:var(--watt-space-xs)}watt-phone-field{display:block}watt-phone-field .watt-phone-field__prefix-container{width:100%;display:flex;align-items:center;gap:var(--watt-space-xs)}watt-phone-field input{width:100%;border:none}watt-phone-field input:focus-visible,watt-phone-field input:focus-within{border:none;outline:none}watt-phone-field .mat-mdc-select{width:auto;height:24px}watt-phone-field .mat-mdc-select .mat-mdc-select-arrow-wrapper{width:24px;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i2.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName", "displayMode", "autoFocus", "showErrors"] }, { kind: "component", type: WattFieldErrorComponent, selector: "watt-field-error" }, { kind: "component", type: WattFlagComponent, selector: "watt-flag", inputs: ["country", "label", "size"] }], encapsulation: i0.ViewEncapsulation.None });
200
200
  }
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPhoneFieldComponent, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPhoneFieldComponent, decorators: [{
202
202
  type: Component,
203
203
  args: [{ selector: 'watt-phone-field', encapsulation: ViewEncapsulation.None, imports: [
204
204
  ReactiveFormsModule,
@@ -1 +1 @@
1
- {"version":3,"file":"watt-phone-field.component.js","sourceRoot":"","sources":["../../../../libs/watt/package/phone-field/watt-phone-field.component.ts"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n Component,\n OnInit,\n ViewEncapsulation,\n forwardRef,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n ElementRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n} from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { MASKITO_DEFAULT_OPTIONS, maskitoTransform } from '@maskito/core';\nimport { maskitoPhoneOptionsGenerator } from '@maskito/phone';\nimport { isValidPhoneNumber, type CountryCode } from 'libphonenumber-js';\nimport phoneMetadata from 'libphonenumber-js/min/metadata';\n\nimport { WattFlagComponent } from '@energinet/watt/icon/flags';\nimport { WattFieldComponent, WattFieldErrorComponent } from '@energinet/watt/field';\n\nimport { WattPhoneFieldIntlService } from './watt-phone-field-intl.service';\n\ntype Contry = {\n countryIsoCode: CountryCode;\n phoneExtension: string;\n};\n\nfunction phoneValidator(countryCode: CountryCode): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) return null;\n const valid = isValidPhoneNumber(control.value, countryCode);\n return valid ? null : { invalidPhone: true };\n };\n}\n\n@Component({\n selector: 'watt-phone-field',\n encapsulation: ViewEncapsulation.None,\n imports: [\n ReactiveFormsModule,\n MatSelectModule,\n MaskitoDirective,\n WattFieldComponent,\n WattFieldErrorComponent,\n WattFlagComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WattPhoneFieldComponent),\n multi: true,\n },\n ],\n template: `\n <watt-field [label]=\"label()\" [control]=\"formControl()\">\n <div class=\"watt-phone-field__prefix-container\">\n <mat-select\n panelWidth=\"\"\n panelClass=\"watt-phone-field__select\"\n [hideSingleSelectionIndicator]=\"true\"\n [value]=\"chosenCountry().countryIsoCode\"\n (selectionChange)=\"selectedContry($event)\"\n >\n <mat-select-trigger>\n <watt-flag [country]=\"chosenCountry().countryIsoCode\" />\n </mat-select-trigger>\n @for (contry of countries; track contry) {\n <mat-option value=\"{{ contry.countryIsoCode }}\">\n <watt-flag [country]=\"contry.countryIsoCode\" />\n <div>{{ getCountryName(contry.countryIsoCode) }}</div>\n </mat-option>\n }\n </mat-select>\n <input\n [attr.aria-label]=\"label()\"\n autocomplete=\"tel\"\n inputmode=\"tel\"\n [value]=\"value\"\n [formControl]=\"formControl()\"\n (blur)=\"onTouched()\"\n (input)=\"onChanged($event)\"\n [maskito]=\"mask\"\n #phoneNumberInput\n />\n </div>\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n @if (formControl().hasError('invalidPhone')) {\n <watt-field-error> {{ intl.invalidPhoneNumber }} </watt-field-error>\n }\n </watt-field>\n `,\n styleUrl: './watt-phone-field.component.scss',\n host: {\n '[attr.watt-field-disabled]': 'isDisabled()',\n },\n})\nexport class WattPhoneFieldComponent implements ControlValueAccessor, OnInit {\n /** @ignore */\n readonly countries: Contry[] = [\n { countryIsoCode: 'DK', phoneExtension: '+45' },\n { countryIsoCode: 'SE', phoneExtension: '+46' },\n { countryIsoCode: 'NO', phoneExtension: '+47' },\n { countryIsoCode: 'GB', phoneExtension: '+44' },\n { countryIsoCode: 'DE', phoneExtension: '+49' },\n { countryIsoCode: 'FI', phoneExtension: '+358' },\n { countryIsoCode: 'PL', phoneExtension: '+48' },\n { countryIsoCode: 'NL', phoneExtension: '+31' },\n { countryIsoCode: 'CH', phoneExtension: '+41' },\n ];\n\n formControl = input.required<FormControl>();\n label = input<string>();\n\n /** @ignore */\n chosenCountry = signal<Contry>(this.countries[0]);\n\n /** @ignore */\n mask = MASKITO_DEFAULT_OPTIONS;\n\n /** @ignore */\n intl = inject(WattPhoneFieldIntlService);\n\n /** @ignore */\n isDisabled = signal(false);\n\n /** @ignore */\n value: string | null = null;\n\n /** @ignore */\n phoneNumberInput = viewChild.required<ElementRef<HTMLInputElement>>('phoneNumberInput');\n\n /** @ignore */\n ngOnInit(): void {\n this.setup();\n }\n\n /** @ignore */\n writeValue(value: string): void {\n if (value) {\n const country = this.countries.find((country) => value.startsWith(country.phoneExtension));\n if (country) {\n // Exclude Signal from being tracked\n // in case the parent component sets the value inside an `effect`.\n // Without this, updating the Signal internaly triggers the parrent `effect` to re-run.\n // Note: Revisit once v19 is released because the `effect` API has changed\n // significantly and this might not be necessary anymore\n untracked(() => {\n this.setCountry(country);\n });\n\n value = maskitoTransform(value, this.mask);\n }\n }\n\n this.value = value;\n }\n\n /** @ignore */\n onChange: (value: string) => void = () => {\n /* noop function */\n };\n\n /** @ignore */\n onTouched: () => void = () => {\n /* noop function */\n };\n\n /** @ignore */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n /** @ignore */\n selectedContry({ value }: MatSelectChange) {\n const country = this.countries.find((contry) => contry.countryIsoCode === value);\n if (!country) {\n throw new Error('Prefix not found');\n }\n this.setCountry(country);\n this.formControl().reset();\n setTimeout(() => {\n this.phoneNumberInput().nativeElement.focus();\n }, 100);\n }\n\n /** @ignore */\n setCountry(country: Contry) {\n this.chosenCountry.set(country);\n this.setup();\n }\n\n /** @ignore */\n onChanged(event: Event): void {\n const value = (event.target as HTMLSelectElement)?.value;\n this.onChange(value);\n }\n\n /** @ignore */\n private generatePhoneOptions(): void {\n this.mask = maskitoPhoneOptionsGenerator({\n countryIsoCode: this.chosenCountry().countryIsoCode,\n metadata: phoneMetadata,\n separator: ' ',\n });\n }\n\n /** @ignore */\n private setup(): void {\n this.generatePhoneOptions();\n this.setValidator();\n }\n\n /** @ignore */\n private setValidator() {\n const countryCode = this.chosenCountry().countryIsoCode;\n this.formControl().addValidators(phoneValidator(countryCode));\n }\n\n /** @ignore */\n getCountryName(countryIsoCode: CountryCode) {\n return this.intl[countryIsoCode as keyof WattPhoneFieldIntlService];\n }\n}\n"]}
1
+ {"version":3,"file":"watt-phone-field.component.js","sourceRoot":"","sources":["../../../../libs/watt/package/phone-field/watt-phone-field.component.ts"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n Component,\n OnInit,\n ViewEncapsulation,\n forwardRef,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n ElementRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n} from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { MASKITO_DEFAULT_OPTIONS, maskitoTransform } from '@maskito/core';\nimport { maskitoPhoneOptionsGenerator } from '@maskito/phone';\nimport { isValidPhoneNumber, type CountryCode } from 'libphonenumber-js';\nimport phoneMetadata from 'libphonenumber-js/min/metadata';\n\nimport { WattFlagComponent } from '@energinet/watt/icon/flags';\nimport { WattFieldComponent, WattFieldErrorComponent } from '@energinet/watt/field';\n\nimport { WattPhoneFieldIntlService } from './watt-phone-field-intl.service';\n\ntype Contry = {\n countryIsoCode: CountryCode;\n phoneExtension: string;\n};\n\nfunction phoneValidator(countryCode: CountryCode): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) return null;\n const valid = isValidPhoneNumber(control.value, countryCode);\n return valid ? null : { invalidPhone: true };\n };\n}\n\n@Component({\n selector: 'watt-phone-field',\n encapsulation: ViewEncapsulation.None,\n imports: [\n ReactiveFormsModule,\n MatSelectModule,\n MaskitoDirective,\n WattFieldComponent,\n WattFieldErrorComponent,\n WattFlagComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WattPhoneFieldComponent),\n multi: true,\n },\n ],\n template: `\n <watt-field [label]=\"label()\" [control]=\"formControl()\">\n <div class=\"watt-phone-field__prefix-container\">\n <mat-select\n panelWidth=\"\"\n panelClass=\"watt-phone-field__select\"\n [hideSingleSelectionIndicator]=\"true\"\n [value]=\"chosenCountry().countryIsoCode\"\n (selectionChange)=\"selectedContry($event)\"\n >\n <mat-select-trigger>\n <watt-flag [country]=\"chosenCountry().countryIsoCode\" />\n </mat-select-trigger>\n @for (contry of countries; track contry) {\n <mat-option value=\"{{ contry.countryIsoCode }}\">\n <watt-flag [country]=\"contry.countryIsoCode\" />\n <div>{{ getCountryName(contry.countryIsoCode) }}</div>\n </mat-option>\n }\n </mat-select>\n <input\n [attr.aria-label]=\"label()\"\n autocomplete=\"tel\"\n inputmode=\"tel\"\n [value]=\"value\"\n [formControl]=\"formControl()\"\n (blur)=\"onTouched()\"\n (input)=\"onChanged($event)\"\n [maskito]=\"mask\"\n #phoneNumberInput\n />\n </div>\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n @if (formControl().hasError('invalidPhone')) {\n <watt-field-error> {{ intl.invalidPhoneNumber }} </watt-field-error>\n }\n </watt-field>\n `,\n styleUrl: './watt-phone-field.component.scss',\n host: {\n '[attr.watt-field-disabled]': 'isDisabled()',\n },\n})\nexport class WattPhoneFieldComponent implements ControlValueAccessor, OnInit {\n /** @ignore */\n readonly countries: Contry[] = [\n { countryIsoCode: 'DK', phoneExtension: '+45' },\n { countryIsoCode: 'SE', phoneExtension: '+46' },\n { countryIsoCode: 'NO', phoneExtension: '+47' },\n { countryIsoCode: 'GB', phoneExtension: '+44' },\n { countryIsoCode: 'DE', phoneExtension: '+49' },\n { countryIsoCode: 'FI', phoneExtension: '+358' },\n { countryIsoCode: 'PL', phoneExtension: '+48' },\n { countryIsoCode: 'NL', phoneExtension: '+31' },\n { countryIsoCode: 'CH', phoneExtension: '+41' },\n ];\n\n formControl = input.required<FormControl>();\n label = input<string>();\n\n /** @ignore */\n chosenCountry = signal<Contry>(this.countries[0]);\n\n /** @ignore */\n mask = MASKITO_DEFAULT_OPTIONS;\n\n /** @ignore */\n intl = inject(WattPhoneFieldIntlService);\n\n /** @ignore */\n isDisabled = signal(false);\n\n /** @ignore */\n value: string | null = null;\n\n /** @ignore */\n phoneNumberInput = viewChild.required<ElementRef<HTMLInputElement>>('phoneNumberInput');\n\n /** @ignore */\n ngOnInit(): void {\n this.setup();\n }\n\n /** @ignore */\n writeValue(value: string): void {\n if (value) {\n const country = this.countries.find((country) => value.startsWith(country.phoneExtension));\n if (country) {\n // Exclude Signal from being tracked\n // in case the parent component sets the value inside an `effect`.\n // Without this, updating the Signal internaly triggers the parrent `effect` to re-run.\n // Note: Revisit once v19 is released because the `effect` API has changed\n // significantly and this might not be necessary anymore\n untracked(() => {\n this.setCountry(country);\n });\n\n value = maskitoTransform(value, this.mask);\n }\n }\n\n this.value = value;\n }\n\n /** @ignore */\n onChange: (value: string) => void = () => {\n /* noop function */\n };\n\n /** @ignore */\n onTouched: () => void = () => {\n /* noop function */\n };\n\n /** @ignore */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n /** @ignore */\n selectedContry({ value }: MatSelectChange) {\n const country = this.countries.find((contry) => contry.countryIsoCode === value);\n if (!country) {\n throw new Error('Prefix not found');\n }\n this.setCountry(country);\n this.formControl().reset();\n setTimeout(() => {\n this.phoneNumberInput().nativeElement.focus();\n }, 100);\n }\n\n /** @ignore */\n setCountry(country: Contry) {\n this.chosenCountry.set(country);\n this.setup();\n }\n\n /** @ignore */\n onChanged(event: Event): void {\n const value = (event.target as HTMLSelectElement)?.value;\n this.onChange(value);\n }\n\n /** @ignore */\n private generatePhoneOptions(): void {\n this.mask = maskitoPhoneOptionsGenerator({\n countryIsoCode: this.chosenCountry().countryIsoCode,\n metadata: phoneMetadata,\n separator: ' ',\n });\n }\n\n /** @ignore */\n private setup(): void {\n this.generatePhoneOptions();\n this.setValidator();\n }\n\n /** @ignore */\n private setValidator() {\n const countryCode = this.chosenCountry().countryIsoCode;\n this.formControl().addValidators(phoneValidator(countryCode));\n }\n\n /** @ignore */\n getCountryName(countryIsoCode: CountryCode) {\n return this.intl[countryIsoCode as keyof WattPhoneFieldIntlService];\n }\n}\n"]}
@@ -61,10 +61,10 @@ export class WattPlaceholderMaskComponent {
61
61
  const primaryInputElement = this.primaryInputElement();
62
62
  untracked(() => primaryInputElement.dispatchEvent(new InputEvent('input')));
63
63
  }, ...(ngDevMode ? [{ debugName: "inputEffect" }] : []));
64
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPlaceholderMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.6", type: WattPlaceholderMaskComponent, isStandalone: true, selector: "watt-placeholder-mask", inputs: { primaryInputElement: { classPropertyName: "primaryInputElement", publicName: "primaryInputElement", isSignal: true, isRequired: true, transformFunction: null }, secondaryInputElement: { classPropertyName: "secondaryInputElement", publicName: "secondaryInputElement", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { maskApplied: "maskApplied" }, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n", styles: ["watt-placeholder-mask{position:absolute;font-family:Droid Sans Mono,monospace;box-sizing:content-box;max-width:100%;line-height:20px;padding:1px 2px;letter-spacing:-.03em;pointer-events:none;display:block}.ghost{color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filler{color:var(--watt-color-neutral-grey-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], encapsulation: i0.ViewEncapsulation.None });
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPlaceholderMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.15", type: WattPlaceholderMaskComponent, isStandalone: true, selector: "watt-placeholder-mask", inputs: { primaryInputElement: { classPropertyName: "primaryInputElement", publicName: "primaryInputElement", isSignal: true, isRequired: true, transformFunction: null }, secondaryInputElement: { classPropertyName: "secondaryInputElement", publicName: "secondaryInputElement", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { maskApplied: "maskApplied" }, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n", styles: ["watt-placeholder-mask{position:absolute;font-family:Droid Sans Mono,monospace;box-sizing:content-box;max-width:100%;line-height:20px;padding:1px 2px;letter-spacing:-.03em;pointer-events:none;display:block}.ghost{color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filler{color:var(--watt-color-neutral-grey-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], encapsulation: i0.ViewEncapsulation.None });
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPlaceholderMaskComponent, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPlaceholderMaskComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{ selector: 'watt-placeholder-mask', encapsulation: ViewEncapsulation.None, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n", styles: ["watt-placeholder-mask{position:absolute;font-family:Droid Sans Mono,monospace;box-sizing:content-box;max-width:100%;line-height:20px;padding:1px 2px;letter-spacing:-.03em;pointer-events:none;display:block}.ghost{color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filler{color:var(--watt-color-neutral-grey-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"] }]
70
70
  }], propDecorators: { primaryInputElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryInputElement", required: true }] }], secondaryInputElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondaryInputElement", required: false }] }], mask: [{ type: i0.Input, args: [{ isSignal: true, alias: "mask", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: true }] }], maskApplied: [{ type: i0.Output, args: ["maskApplied"] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"watt-placeholder-mask.component.js","sourceRoot":"","sources":["../../../../../../libs/watt/package/picker/__shared/placeholder-mask/watt-placeholder-mask.component.ts","../../../../../../libs/watt/package/picker/__shared/placeholder-mask/watt-placeholder-mask.component.html"],"names":[],"mappings":"AAAA,iBAAiB;AACjB;;;;;;;;;;;;;;;GAeG;AACH,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAkB,MAAM,eAAe,CAAC;;AAQxD,MAAM,OAAO,4BAA4B;IACvC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChC,mBAAmB,GAAG,KAAK,CAAC,QAAQ,8DAAoB,CAAC;IACzD,qBAAqB,GAAG,KAAK,2EAAoB,CAAC;IAClD,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAkB,CAAC;IACxC,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAU,CAAC;IACvC,WAAW,GAAG,MAAM,EAAU,CAAC;IAC/B,WAAW,GAAG,MAAM,CAAiB,IAAI,uDAAC,CAAC;IAC3C,YAAY,GAAG,MAAM,CAAC,EAAE,wDAAC,CAAC;IAC1B,aAAa,GAAG,MAAM,CAAgB,IAAI,yDAAC,CAAC;IAE5C,UAAU,GAAG,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,WAAW,GAAmB;YAClC,GAAG,IAAI;YACP,aAAa,EAAE;gBACb,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;gBAC7B,CAAC,KAAK,EAAE,EAAE;oBACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3E,OAAO,KAAK,CAAC;gBACf,CAAC;aACF;YACD,cAAc,EAAE;gBACd,CAAC,YAAY,EAAE,EAAE;oBACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC1C,OAAO,YAAY,CAAC;gBACtB,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;aAC/B;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAElC,SAAS,CAAC,GAAG,EAAE;YACb,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,sDAAC,CAAC;IAEH,WAAW,GAAG,MAAM,CAAC,GAAG,EAAE;QACxB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvD,SAAS,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,uDAAC,CAAC;uGA7CQ,4BAA4B;2FAA5B,4BAA4B,4sBCrCzC,otBAkBA;;2FDmBa,4BAA4B;kBANxC,SAAS;+BACE,uBAAuB,iBAGlB,iBAAiB,CAAC,IAAI","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { Maskito, MaskitoOptions } from '@maskito/core';\n\n@Component({\n selector: 'watt-placeholder-mask',\n templateUrl: './watt-placeholder-mask.component.html',\n styleUrls: ['./watt-placeholder-mask.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class WattPlaceholderMaskComponent {\n cdr = inject(ChangeDetectorRef);\n primaryInputElement = input.required<HTMLInputElement>();\n secondaryInputElement = input<HTMLInputElement>();\n mask = input.required<MaskitoOptions>();\n placeholder = input.required<string>();\n maskApplied = output<string>();\n maskedInput = signal<Maskito | null>(null);\n primaryGhost = signal('');\n primaryFiller = signal<string | null>(null);\n\n maskEffect = effect((onCleanup) => {\n const mask = this.mask();\n const placeholder = this.placeholder();\n const primaryMask: MaskitoOptions = {\n ...mask,\n preprocessors: [\n ...(mask.preprocessors ?? []),\n (state) => {\n this.primaryGhost.set(state.elementState.value.slice(0, placeholder.length));\n this.primaryFiller.set(placeholder.slice(state.elementState.value.length));\n return state;\n },\n ],\n postprocessors: [\n (elementState) => {\n this.maskApplied.emit(elementState.value);\n return elementState;\n },\n ...(mask.postprocessors ?? []),\n ],\n };\n\n const maskedInput = new Maskito(this.primaryInputElement(), primaryMask);\n this.maskedInput.set(maskedInput);\n\n onCleanup(() => {\n maskedInput.destroy();\n this.maskedInput.set(null);\n });\n });\n\n inputEffect = effect(() => {\n const primaryInputElement = this.primaryInputElement();\n untracked(() => primaryInputElement.dispatchEvent(new InputEvent('input')));\n });\n}\n","<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n"]}
1
+ {"version":3,"file":"watt-placeholder-mask.component.js","sourceRoot":"","sources":["../../../../../../libs/watt/package/picker/__shared/placeholder-mask/watt-placeholder-mask.component.ts","../../../../../../libs/watt/package/picker/__shared/placeholder-mask/watt-placeholder-mask.component.html"],"names":[],"mappings":"AAAA,iBAAiB;AACjB;;;;;;;;;;;;;;;GAeG;AACH,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAkB,MAAM,eAAe,CAAC;;AAQxD,MAAM,OAAO,4BAA4B;IACvC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChC,mBAAmB,GAAG,KAAK,CAAC,QAAQ,8DAAoB,CAAC;IACzD,qBAAqB,GAAG,KAAK,2EAAoB,CAAC;IAClD,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAkB,CAAC;IACxC,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAU,CAAC;IACvC,WAAW,GAAG,MAAM,EAAU,CAAC;IAC/B,WAAW,GAAG,MAAM,CAAiB,IAAI,uDAAC,CAAC;IAC3C,YAAY,GAAG,MAAM,CAAC,EAAE,wDAAC,CAAC;IAC1B,aAAa,GAAG,MAAM,CAAgB,IAAI,yDAAC,CAAC;IAE5C,UAAU,GAAG,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,WAAW,GAAmB;YAClC,GAAG,IAAI;YACP,aAAa,EAAE;gBACb,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;gBAC7B,CAAC,KAAK,EAAE,EAAE;oBACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3E,OAAO,KAAK,CAAC;gBACf,CAAC;aACF;YACD,cAAc,EAAE;gBACd,CAAC,YAAY,EAAE,EAAE;oBACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC1C,OAAO,YAAY,CAAC;gBACtB,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;aAC/B;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAElC,SAAS,CAAC,GAAG,EAAE;YACb,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,sDAAC,CAAC;IAEH,WAAW,GAAG,MAAM,CAAC,GAAG,EAAE;QACxB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvD,SAAS,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,uDAAC,CAAC;wGA7CQ,4BAA4B;4FAA5B,4BAA4B,4sBCrCzC,otBAkBA;;4FDmBa,4BAA4B;kBANxC,SAAS;+BACE,uBAAuB,iBAGlB,iBAAiB,CAAC,IAAI","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { Maskito, MaskitoOptions } from '@maskito/core';\n\n@Component({\n selector: 'watt-placeholder-mask',\n templateUrl: './watt-placeholder-mask.component.html',\n styleUrls: ['./watt-placeholder-mask.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class WattPlaceholderMaskComponent {\n cdr = inject(ChangeDetectorRef);\n primaryInputElement = input.required<HTMLInputElement>();\n secondaryInputElement = input<HTMLInputElement>();\n mask = input.required<MaskitoOptions>();\n placeholder = input.required<string>();\n maskApplied = output<string>();\n maskedInput = signal<Maskito | null>(null);\n primaryGhost = signal('');\n primaryFiller = signal<string | null>(null);\n\n maskEffect = effect((onCleanup) => {\n const mask = this.mask();\n const placeholder = this.placeholder();\n const primaryMask: MaskitoOptions = {\n ...mask,\n preprocessors: [\n ...(mask.preprocessors ?? []),\n (state) => {\n this.primaryGhost.set(state.elementState.value.slice(0, placeholder.length));\n this.primaryFiller.set(placeholder.slice(state.elementState.value.length));\n return state;\n },\n ],\n postprocessors: [\n (elementState) => {\n this.maskApplied.emit(elementState.value);\n return elementState;\n },\n ...(mask.postprocessors ?? []),\n ],\n };\n\n const maskedInput = new Maskito(this.primaryInputElement(), primaryMask);\n this.maskedInput.set(maskedInput);\n\n onCleanup(() => {\n maskedInput.destroy();\n this.maskedInput.set(null);\n });\n });\n\n inputEffect = effect(() => {\n const primaryInputElement = this.primaryInputElement();\n untracked(() => primaryInputElement.dispatchEvent(new InputEvent('input')));\n });\n}\n","<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n"]}
@@ -177,10 +177,10 @@ export class WattPickerBase {
177
177
  markParentControlAsTouched = () => {
178
178
  // Intentionally left empty
179
179
  };
180
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPickerBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
181
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.6", type: WattPickerBase, isStandalone: true, inputs: { userAriaDescribedBy: { classPropertyName: "userAriaDescribedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.watt-field-disabled": "this.disabled" } }, ngImport: i0 });
180
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPickerBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
181
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: WattPickerBase, isStandalone: true, inputs: { userAriaDescribedBy: { classPropertyName: "userAriaDescribedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.watt-field-disabled": "this.disabled" } }, ngImport: i0 });
182
182
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattPickerBase, decorators: [{
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattPickerBase, decorators: [{
184
184
  type: Directive
185
185
  }], ctorParameters: () => [{ type: undefined }], propDecorators: { userAriaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], value: [{
186
186
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"watt-picker-base.js","sourceRoot":"","sources":["../../../../../libs/watt/package/picker/__shared/watt-picker-base.ts"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n Input,\n OnInit,\n Signal,\n inject,\n Directive,\n OnDestroy,\n ElementRef,\n DestroyRef,\n HostBinding,\n AfterViewInit,\n ChangeDetectorRef,\n input,\n} from '@angular/core';\n\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { Subject } from 'rxjs';\n\nimport { WattDateRange } from '@energinet/watt/core/date';\n\nimport { WattPickerValue } from './watt-picker-value';\n@Directive()\nexport abstract class WattPickerBase\n implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n protected destroyRef = inject(DestroyRef);\n protected changeDetectionRef = inject(ChangeDetectorRef);\n protected ngControl = inject(NgControl, { optional: true });\n protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n abstract input: Signal<ElementRef<HTMLInputElement> | undefined>;\n abstract endInput: Signal<ElementRef<HTMLInputElement> | undefined>;\n abstract startInput: Signal<ElementRef<HTMLInputElement> | undefined>;\n\n static nextId = 0;\n\n id: string;\n\n initialValue: WattPickerValue = null;\n\n focused = false;\n\n controlType = 'mat-date-range-input'; // We keep the controlType of Material Date Range Input as is, to keep some styling.\n\n stateChanges = new Subject<void>();\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n userAriaDescribedBy = input<string>(undefined, { alias: 'aria-describedby' });\n\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n\n protected abstract _placeholder: string;\n\n @Input()\n get value(): WattDateRange | null {\n if (this.ngControl?.valid) {\n const {\n value: { start, end },\n } = this.ngControl;\n\n return { start, end };\n }\n\n return null;\n }\n\n set value(value: WattPickerValue) {\n const input = this.input();\n const startInput = this.startInput();\n const endInput = this.endInput();\n\n const inputNotToBeInTheDocument = !this.range ? !input : !startInput;\n\n if (inputNotToBeInTheDocument) {\n this.initialValue = value;\n return;\n }\n\n if (this.range) {\n if (!startInput || !endInput) return;\n this.setRangeValue(value as WattDateRange, startInput.nativeElement, endInput.nativeElement);\n } else {\n if (!input) return;\n this.setSingleValue(value as Exclude<WattPickerValue, WattDateRange>, input.nativeElement);\n }\n\n this.stateChanges.next();\n }\n\n @Input()\n set range(range: boolean) {\n this._range = coerceBooleanProperty(range);\n }\n get range(): boolean {\n return this._range;\n }\n\n private _range = false;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @HostBinding('attr.watt-field-disabled')\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n private _disabled = false;\n\n get empty() {\n if (this.range) {\n return !this.ngControl?.value?.start && !this.ngControl?.value?.end;\n } else {\n return this.ngControl?.value?.length === 0;\n }\n }\n\n get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n /**\n *\n * @ignore\n */\n control: FormControl | null = null;\n\n constructor(id: string) {\n this.id = id;\n this.elementRef.nativeElement.setAttribute('id', id);\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.control = this.ngControl?.control as FormControl;\n }\n\n ngAfterViewInit() {\n if (this.initialValue) {\n this.writeValue(this.initialValue);\n }\n\n if (this.range) {\n this.initRangeInput();\n } else {\n this.initSingleInput();\n }\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n protected abstract initRangeInput(): void;\n\n protected abstract initSingleInput(): void;\n\n protected abstract setSingleValue(\n value: Exclude<WattPickerValue, WattDateRange>,\n input: HTMLInputElement\n ): void;\n\n protected abstract setRangeValue(\n value: WattDateRange,\n startInput: HTMLInputElement,\n endInput: HTMLInputElement\n ): void;\n\n setDescribedByIds(ids: string[]) {\n this.elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n }\n\n onContainerClick() {\n // Intentionally left empty\n }\n\n writeValue(value: WattPickerValue): void {\n this.value = value;\n }\n\n registerOnChange(onChangeFn: (value: string | WattDateRange) => void): void {\n this.changeParentValue = onChangeFn;\n }\n\n registerOnTouched(onTouchFn: () => void) {\n this.markParentControlAsTouched = onTouchFn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectionRef.detectChanges();\n }\n\n onFocusIn() {\n if (!this.focused) {\n this.focused = true;\n this.stateChanges.next();\n }\n }\n\n onFocusOut(event: FocusEvent) {\n const id = this.elementRef.nativeElement.attributes.getNamedItem('aria-owns');\n const overlay = id ? document.getElementById(id.value) : null;\n const isChild = overlay?.contains(event.relatedTarget as Element);\n\n if (!this.elementRef.nativeElement.contains(event.relatedTarget as Element) && !isChild) {\n this.focused = false;\n this.markParentControlAsTouched();\n this.stateChanges.next();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected changeParentValue = (value: string | WattDateRange): void => {\n // Intentionally left empty\n };\n\n protected markParentControlAsTouched = (): void => {\n // Intentionally left empty\n };\n}\n"]}
1
+ {"version":3,"file":"watt-picker-base.js","sourceRoot":"","sources":["../../../../../libs/watt/package/picker/__shared/watt-picker-base.ts"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n Input,\n OnInit,\n Signal,\n inject,\n Directive,\n OnDestroy,\n ElementRef,\n DestroyRef,\n HostBinding,\n AfterViewInit,\n ChangeDetectorRef,\n input,\n} from '@angular/core';\n\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { Subject } from 'rxjs';\n\nimport { WattDateRange } from '@energinet/watt/core/date';\n\nimport { WattPickerValue } from './watt-picker-value';\n@Directive()\nexport abstract class WattPickerBase\n implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n protected destroyRef = inject(DestroyRef);\n protected changeDetectionRef = inject(ChangeDetectorRef);\n protected ngControl = inject(NgControl, { optional: true });\n protected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n abstract input: Signal<ElementRef<HTMLInputElement> | undefined>;\n abstract endInput: Signal<ElementRef<HTMLInputElement> | undefined>;\n abstract startInput: Signal<ElementRef<HTMLInputElement> | undefined>;\n\n static nextId = 0;\n\n id: string;\n\n initialValue: WattPickerValue = null;\n\n focused = false;\n\n controlType = 'mat-date-range-input'; // We keep the controlType of Material Date Range Input as is, to keep some styling.\n\n stateChanges = new Subject<void>();\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n userAriaDescribedBy = input<string>(undefined, { alias: 'aria-describedby' });\n\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n\n protected abstract _placeholder: string;\n\n @Input()\n get value(): WattDateRange | null {\n if (this.ngControl?.valid) {\n const {\n value: { start, end },\n } = this.ngControl;\n\n return { start, end };\n }\n\n return null;\n }\n\n set value(value: WattPickerValue) {\n const input = this.input();\n const startInput = this.startInput();\n const endInput = this.endInput();\n\n const inputNotToBeInTheDocument = !this.range ? !input : !startInput;\n\n if (inputNotToBeInTheDocument) {\n this.initialValue = value;\n return;\n }\n\n if (this.range) {\n if (!startInput || !endInput) return;\n this.setRangeValue(value as WattDateRange, startInput.nativeElement, endInput.nativeElement);\n } else {\n if (!input) return;\n this.setSingleValue(value as Exclude<WattPickerValue, WattDateRange>, input.nativeElement);\n }\n\n this.stateChanges.next();\n }\n\n @Input()\n set range(range: boolean) {\n this._range = coerceBooleanProperty(range);\n }\n get range(): boolean {\n return this._range;\n }\n\n private _range = false;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n private _required = false;\n\n @HostBinding('attr.watt-field-disabled')\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n\n private _disabled = false;\n\n get empty() {\n if (this.range) {\n return !this.ngControl?.value?.start && !this.ngControl?.value?.end;\n } else {\n return this.ngControl?.value?.length === 0;\n }\n }\n\n get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n /**\n *\n * @ignore\n */\n control: FormControl | null = null;\n\n constructor(id: string) {\n this.id = id;\n this.elementRef.nativeElement.setAttribute('id', id);\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.control = this.ngControl?.control as FormControl;\n }\n\n ngAfterViewInit() {\n if (this.initialValue) {\n this.writeValue(this.initialValue);\n }\n\n if (this.range) {\n this.initRangeInput();\n } else {\n this.initSingleInput();\n }\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n protected abstract initRangeInput(): void;\n\n protected abstract initSingleInput(): void;\n\n protected abstract setSingleValue(\n value: Exclude<WattPickerValue, WattDateRange>,\n input: HTMLInputElement\n ): void;\n\n protected abstract setRangeValue(\n value: WattDateRange,\n startInput: HTMLInputElement,\n endInput: HTMLInputElement\n ): void;\n\n setDescribedByIds(ids: string[]) {\n this.elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n }\n\n onContainerClick() {\n // Intentionally left empty\n }\n\n writeValue(value: WattPickerValue): void {\n this.value = value;\n }\n\n registerOnChange(onChangeFn: (value: string | WattDateRange) => void): void {\n this.changeParentValue = onChangeFn;\n }\n\n registerOnTouched(onTouchFn: () => void) {\n this.markParentControlAsTouched = onTouchFn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetectionRef.detectChanges();\n }\n\n onFocusIn() {\n if (!this.focused) {\n this.focused = true;\n this.stateChanges.next();\n }\n }\n\n onFocusOut(event: FocusEvent) {\n const id = this.elementRef.nativeElement.attributes.getNamedItem('aria-owns');\n const overlay = id ? document.getElementById(id.value) : null;\n const isChild = overlay?.contains(event.relatedTarget as Element);\n\n if (!this.elementRef.nativeElement.contains(event.relatedTarget as Element) && !isChild) {\n this.focused = false;\n this.markParentControlAsTouched();\n this.stateChanges.next();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected changeParentValue = (value: string | WattDateRange): void => {\n // Intentionally left empty\n };\n\n protected markParentControlAsTouched = (): void => {\n // Intentionally left empty\n };\n}\n"]}
@@ -21,10 +21,10 @@ import * as i0 from "@angular/core";
21
21
  export class WattDatepickerIntlService {
22
22
  clear = 'Clear';
23
23
  select = 'OK';
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattDatepickerIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattDatepickerIntlService, providedIn: 'root' });
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattDatepickerIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattDatepickerIntlService, providedIn: 'root' });
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattDatepickerIntlService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattDatepickerIntlService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{ providedIn: 'root' }]
30
30
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"watt-datepicker-intl.service.js","sourceRoot":"","sources":["../../../../../libs/watt/package/picker/datepicker/watt-datepicker-intl.service.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB;;;;;;;;;;;;;;;GAeG;AACH,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C,MAAM,OAAO,yBAAyB;IACpC,KAAK,GAAG,OAAO,CAAC;IAChB,MAAM,GAAG,IAAI,CAAC;uGAFH,yBAAyB;2GAAzB,yBAAyB,cADZ,MAAM;;2FACnB,yBAAyB;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class WattDatepickerIntlService {\n clear = 'Clear';\n select = 'OK';\n}\n"]}
1
+ {"version":3,"file":"watt-datepicker-intl.service.js","sourceRoot":"","sources":["../../../../../libs/watt/package/picker/datepicker/watt-datepicker-intl.service.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB;;;;;;;;;;;;;;;GAeG;AACH,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C,MAAM,OAAO,yBAAyB;IACpC,KAAK,GAAG,OAAO,CAAC;IAChB,MAAM,GAAG,IAAI,CAAC;wGAFH,yBAAyB;4GAAzB,yBAAyB,cADZ,MAAM;;4FACnB,yBAAyB;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class WattDatepickerIntlService {\n clear = 'Clear';\n select = 'OK';\n}\n"]}
@@ -288,10 +288,10 @@ export class WattDatepickerComponent extends WattPickerBase {
288
288
  }
289
289
  return maybeDateInDanishTimeZone;
290
290
  }
291
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
292
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: WattDatepickerComponent, isStandalone: true, selector: "watt-datepicker", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, rangeMonthOnlyMode: { classPropertyName: "rangeMonthOnlyMode", publicName: "rangeMonthOnlyMode", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, canStepThroughDays: { classPropertyName: "canStepThroughDays", publicName: "canStepThroughDays", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }], viewQueries: [{ propertyName: "matEndDate", first: true, predicate: MatEndDate, descendants: true, isSignal: true }, { propertyName: "matStartDate", first: true, predicate: MatStartDate, descendants: true, isSignal: true }, { propertyName: "matDateRangeInput", first: true, predicate: MatDateRangeInput, descendants: true, isSignal: true }, { propertyName: "matDatepickerInput", first: true, predicate: MatDatepickerInput, descendants: true, isSignal: true }, { propertyName: "matDateRangePicker", first: true, predicate: MatDateRangePicker, descendants: true, isSignal: true }, { propertyName: "actualInput", first: true, predicate: ["actualInput"], descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "endInput", first: true, predicate: ["endDateInput"], descendants: true, isSignal: true }, { propertyName: "startInput", first: true, predicate: ["startDateInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n <ng-content ngProjectAs=\"watt-field-warning\" select=\"watt-field-warning\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n", styles: ["watt-datepicker{display:flex;align-items:center;width:100%}watt-datepicker watt-button[variant=icon]{margin-left:auto}watt-datepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-datepicker mat-datepicker,watt-datepicker mat-date-range-picker{display:none}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker .mat-date-range-input-mirror,watt-datepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-datepicker input.mask-input{color:#000}watt-datepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-datepicker input.mask-input:focus-visible{outline:none}watt-datepicker .mat-date-range-input-container{align-items:initial}watt-datepicker .mat-date-range-input-start-wrapper,watt-datepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-datepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-datepicker .mat-date-range-input-separator-hidden,watt-datepicker .mat-date-range-input-separator{opacity:0!important}watt-datepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}watt-datepicker watt-button .mat-button{background:transparent}watt-datepicker:has(.watt-datepicker-single__step-through){align-items:flex-start}watt-datepicker:has(.watt-datepicker-single__step-through) .watt-datepicker-single__step-through{display:flex;margin-top:1px}watt-datepicker:has(.watt-datepicker-single__has-label) .watt-datepicker-single__step-through{margin-top:28px}.watt-datepicker-range__panel--month-only .mat-calendar-period-button{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName", "displayMode", "autoFocus", "showErrors"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
291
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
292
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: WattDatepickerComponent, isStandalone: true, selector: "watt-datepicker", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, rangeMonthOnlyMode: { classPropertyName: "rangeMonthOnlyMode", publicName: "rangeMonthOnlyMode", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, canStepThroughDays: { classPropertyName: "canStepThroughDays", publicName: "canStepThroughDays", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }], viewQueries: [{ propertyName: "matEndDate", first: true, predicate: MatEndDate, descendants: true, isSignal: true }, { propertyName: "matStartDate", first: true, predicate: MatStartDate, descendants: true, isSignal: true }, { propertyName: "matDateRangeInput", first: true, predicate: MatDateRangeInput, descendants: true, isSignal: true }, { propertyName: "matDatepickerInput", first: true, predicate: MatDatepickerInput, descendants: true, isSignal: true }, { propertyName: "matDateRangePicker", first: true, predicate: MatDateRangePicker, descendants: true, isSignal: true }, { propertyName: "actualInput", first: true, predicate: ["actualInput"], descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "endInput", first: true, predicate: ["endDateInput"], descendants: true, isSignal: true }, { propertyName: "startInput", first: true, predicate: ["startDateInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n <ng-content ngProjectAs=\"watt-field-warning\" select=\"watt-field-warning\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n", styles: ["watt-datepicker{display:flex;align-items:center;width:100%}watt-datepicker watt-button[variant=icon]{margin-left:auto}watt-datepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-datepicker mat-datepicker,watt-datepicker mat-date-range-picker{display:none}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker .mat-date-range-input-mirror,watt-datepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-datepicker input.mask-input{color:#000}watt-datepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-datepicker input.mask-input:focus-visible{outline:none}watt-datepicker .mat-date-range-input-container{align-items:initial}watt-datepicker .mat-date-range-input-start-wrapper,watt-datepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-datepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-datepicker .mat-date-range-input-separator-hidden,watt-datepicker .mat-date-range-input-separator{opacity:0!important}watt-datepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}watt-datepicker watt-button .mat-button{background:transparent}watt-datepicker:has(.watt-datepicker-single__step-through){align-items:flex-start}watt-datepicker:has(.watt-datepicker-single__step-through) .watt-datepicker-single__step-through{display:flex;margin-top:1px}watt-datepicker:has(.watt-datepicker-single__has-label) .watt-datepicker-single__step-through{margin-top:28px}.watt-datepicker-range__panel--month-only .mat-calendar-period-button{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName", "displayMode", "autoFocus", "showErrors"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
293
293
  }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattDatepickerComponent, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: WattDatepickerComponent, decorators: [{
295
295
  type: Component,
296
296
  args: [{ selector: 'watt-datepicker', providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }], encapsulation: ViewEncapsulation.None, imports: [
297
297
  MatInputModule,
@@ -1 +1 @@
1
- {"version":3,"file":"watt-datepicker.component.js","sourceRoot":"","sources":["../../../../../libs/watt/package/picker/datepicker/watt-datepicker.component.ts","../../../../../libs/watt/package/picker/datepicker/watt-datepicker.component.html"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n input,\n effect,\n inject,\n computed,\n Component,\n LOCALE_ID,\n viewChild,\n ElementRef,\n linkedSignal,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { AbstractControl, NgControl, Validator } from '@angular/forms';\n\nimport {\n MatEndDate,\n MatStartDate,\n MatDateRangeInput,\n MatDateRangePicker,\n MatDatepickerInput,\n MatDatepickerModule,\n MatCalendarCellClassFunction,\n} from '@angular/material/datepicker';\n\nimport { maskitoDateOptionsGenerator, maskitoDateRangeOptionsGenerator } from '@maskito/kit';\n\nimport {\n dayjs,\n WattRange,\n WattDateRange,\n WattLocaleService,\n WattSupportedLocales,\n} from '@energinet/watt/core/date';\n\nimport { WattFieldComponent } from '@energinet/watt/field';\nimport { WattButtonComponent } from '@energinet/watt/button';\n\nimport {\n WattPickerBase,\n WattPickerValue,\n WattPlaceholderMaskComponent,\n} from '@energinet/watt/picker/__shared';\n\nconst dateShortFormat = 'DD-MM-YYYY';\nexport const danishTimeZoneIdentifier = 'Europe/Copenhagen';\n\n/**\n * Usage:\n * `import { WattDatepickerComponent } from '@energinet/watt/datepicker';`\n *\n * IMPORTANT:\n * The styling is calculated based on our monospaced font.\n */\n@Component({\n selector: 'watt-datepicker',\n templateUrl: './watt-datepicker.component.html',\n styleUrls: ['./watt-datepicker.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatInputModule,\n MatDatepickerModule,\n\n WattFieldComponent,\n WattButtonComponent,\n WattPlaceholderMaskComponent,\n ],\n})\nexport class WattDatepickerComponent extends WattPickerBase implements Validator, AfterViewInit {\n protected override elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected override changeDetectionRef = inject(ChangeDetectorRef);\n protected override ngControl = inject(NgControl, { optional: true, self: true });\n private localeService = inject(WattLocaleService);\n private locale = inject<WattSupportedLocales>(LOCALE_ID);\n\n max = input<Date>();\n min = input<Date>();\n label = input<string>('');\n rangeMonthOnlyMode = input(false);\n startAt = input<Date | null>(null);\n dateClass = input<MatCalendarCellClassFunction<Date>>(() => '');\n canStepThroughDays = input(false, { transform: booleanAttribute });\n\n matEndDate = viewChild<MatEndDate<Date | null>>(MatEndDate);\n matStartDate = viewChild<MatStartDate<Date | null>>(MatStartDate);\n matDateRangeInput = viewChild<MatDateRangeInput<Date | null>>(MatDateRangeInput);\n matDatepickerInput = viewChild<MatDatepickerInput<Date | null>>(MatDatepickerInput);\n matDateRangePicker = viewChild<MatDateRangePicker<Date | null>>(MatDateRangePicker);\n\n actualInput = viewChild<ElementRef<HTMLInputElement>>('actualInput');\n override input = viewChild<ElementRef<HTMLInputElement>>('dateInput');\n override endInput = viewChild<ElementRef<HTMLInputElement>>('endDateInput');\n override startInput = viewChild<ElementRef<HTMLInputElement>>('startDateInput');\n\n protected _placeholder = this.getPlaceholderByLocale(this.locale);\n\n rangeSeparator = ' - ';\n\n rangePlaceholder = this.getRangePlaceholder();\n\n inputMask = computed(() =>\n maskitoDateOptionsGenerator({\n mode: 'dd/mm/yyyy',\n separator: '-',\n max: this.max(),\n min: this.min(),\n })\n );\n\n rangeInputMask = computed(() =>\n maskitoDateRangeOptionsGenerator({\n mode: 'dd/mm/yyyy',\n dateSeparator: '-',\n max: this.max(),\n min: this.min(),\n })\n );\n\n getPlaceholderByLocale(locale: WattSupportedLocales): string {\n return locale === 'da' ? 'dd-mm-åååå' : 'dd-mm-yyyy';\n }\n\n getRangePlaceholder(): string {\n return this.placeholder + this.rangeSeparator + this.placeholder;\n }\n\n isPrevDayButtonDisabled = linkedSignal(() => this.isPrevDayBeforeOrEqualToMinDate());\n isNextDayButtonDisabled = linkedSignal(() => this.isNextDayAfterOrEqualToMaxDate());\n\n constructor() {\n super(`watt-datepicker-${WattDatepickerComponent.nextId++}`);\n\n effect(() => {\n const locale = this.localeService.locale();\n this.placeholder = this.getPlaceholderByLocale(locale);\n this.rangePlaceholder = this.getRangePlaceholder();\n });\n\n effect(() => {\n this.rangeMonthOnlyMode();\n this.ngControl?.control?.updateValueAndValidity();\n });\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.ngControl?.control?.addValidators(this.validate);\n }\n\n validate = ({ value }: AbstractControl<WattRange<string>>) => {\n if (!value?.end || !value?.start) return null;\n if (!this.rangeMonthOnlyMode()) return null;\n const start = dayjs(value.start);\n const end = dayjs(value.end);\n return start.isSame(start.startOf('month')) && end.isSame(start.endOf('month'))\n ? null\n : { monthOnly: true };\n };\n\n protected initSingleInput() {\n const matDatepickerInput = this.matDatepickerInput();\n if (this.initialValue && matDatepickerInput) {\n matDatepickerInput.value = this.initialValue;\n this.datepickerClosed();\n }\n }\n\n inputChanged(value: string) {\n const dateString = value.slice(0, this.placeholder.length);\n\n if (dateString.length === 0) {\n this.control?.setValue(null);\n return;\n }\n\n if (dateString.length !== this.placeholder.length) {\n return;\n }\n\n const date = this.parseDateShortFormat(dateString);\n this.control?.setValue(this.formatDateFromViewToModel(date));\n }\n\n datepickerClosed() {\n const matDatepickerInput = this.matDatepickerInput();\n const actualInput = this.actualInput();\n\n if (!actualInput) return;\n\n if (matDatepickerInput && matDatepickerInput.value) {\n this.control?.setValue(matDatepickerInput.value);\n\n actualInput.nativeElement.value = this.formatDateTimeFromModelToView(\n this.formatDateFromViewToModel(matDatepickerInput.value)\n );\n } else {\n actualInput.nativeElement.value = '';\n this.control?.setValue(null);\n }\n\n this.isPrevDayButtonDisabled.set(this.isPrevDayBeforeOrEqualToMinDate());\n this.isNextDayButtonDisabled.set(this.isNextDayAfterOrEqualToMaxDate());\n\n actualInput.nativeElement.dispatchEvent(new InputEvent('input'));\n }\n\n onMonthSelected(date: Date) {\n const matDateRangePicker = this.matDateRangePicker();\n if (matDateRangePicker && this.rangeMonthOnlyMode() && date) {\n matDateRangePicker.select(dayjs(date).startOf('month').toDate());\n matDateRangePicker.select(dayjs(date).endOf('month').toDate());\n matDateRangePicker.close();\n }\n }\n\n protected initRangeInput() {\n const matStartDate = this.matStartDate();\n const matEndDate = this.matEndDate();\n\n if (this.initialValue && matStartDate && matEndDate) {\n matStartDate.value = (this.initialValue as WattDateRange).start;\n matEndDate.value = (this.initialValue as WattDateRange).end;\n this.rangePickerClosed();\n }\n }\n\n clearRangePicker() {\n const actualInput = this.actualInput();\n\n if (!actualInput) return;\n\n this.control?.setValue(null);\n actualInput.nativeElement.value = '';\n actualInput.nativeElement.dispatchEvent(new InputEvent('input'));\n }\n\n rangeInputChanged(value: string) {\n const startDateString = value.slice(0, this.placeholder.length);\n\n if (startDateString.length === 0) {\n this.control?.setValue(null);\n return;\n }\n\n if (startDateString.length !== this.placeholder.length) {\n return;\n }\n\n const start = this.parseDateShortFormat(startDateString);\n const endDateString = value.slice(this.placeholder.length + this.rangeSeparator.length);\n let end = this.setEndDateToDanishTimeZone(endDateString);\n\n if (end !== null) {\n end = this.setToEndOfDay(end);\n this.control?.setValue({ start, end });\n }\n }\n\n rangePickerClosed() {\n const matDateRangeInput = this.matDateRangeInput();\n const actualInput = this.actualInput();\n\n if (!actualInput) return;\n\n if (matDateRangeInput?.value?.start && matDateRangeInput?.value?.end) {\n actualInput.nativeElement.value =\n this.formatDateTimeFromModelToView(\n this.formatDateFromViewToModel(matDateRangeInput.value?.start)\n ) +\n '-' +\n this.formatDateTimeFromModelToView(\n this.formatDateFromViewToModel(matDateRangeInput.value.end)\n );\n\n this.control?.setValue({\n start: this.formatDateFromViewToModel(matDateRangeInput.value.start),\n end: this.formatDateFromViewToModel(matDateRangeInput.value.end),\n });\n } else {\n actualInput.nativeElement.value = '';\n this.control?.setValue(null);\n }\n\n actualInput.nativeElement.dispatchEvent(new InputEvent('input'));\n }\n\n protected setSingleValue(\n value: Exclude<WattPickerValue, WattDateRange>,\n input: HTMLInputElement\n ) {\n const matDatepickerInput = this.matDatepickerInput();\n if (matDatepickerInput) {\n this.setValueToInput(value, input, matDatepickerInput);\n }\n }\n\n protected setRangeValue(\n value: WattDateRange | null,\n startInput: HTMLInputElement,\n endInput: HTMLInputElement\n ) {\n const { start, end } = value ?? {};\n\n const matStartDate = this.matStartDate();\n const matEndDate = this.matEndDate();\n\n if (!matStartDate || !matEndDate) return;\n\n this.setValueToInput(start, startInput, matStartDate);\n this.setValueToInput(end, endInput, matEndDate);\n }\n\n prevDay() {\n this.changeDay(-1);\n }\n\n nextDay() {\n this.changeDay(1);\n }\n\n private changeDay(value: number) {\n const currentDate = this.matDatepickerInput()?.value;\n\n if (currentDate) {\n const newDate = dayjs(currentDate).add(value, 'day').toISOString();\n const newDateFormatted = this.formatDateTimeFromModelToView(newDate);\n\n this.inputChanged(newDateFormatted);\n this.datepickerClosed();\n }\n }\n\n private isPrevDayBeforeOrEqualToMinDate() {\n const min = this.min();\n const selectedDate = this.matDatepickerInput()?.value;\n\n if (!min || !selectedDate) return false;\n\n const isBefore = dayjs(selectedDate).isBefore(min, 'day');\n const isSame = dayjs(selectedDate).isSame(min, 'day');\n\n return isSame || isBefore;\n }\n\n private isNextDayAfterOrEqualToMaxDate() {\n const max = this.max();\n const selectedDate = this.matDatepickerInput()?.value;\n\n if (!max || !selectedDate) return false;\n\n const isAfter = dayjs(selectedDate).isAfter(max, 'day');\n const isSame = dayjs(selectedDate).isSame(max, 'day');\n\n return isSame || isAfter;\n }\n\n private parseDateShortFormat(value: string): Date {\n return dayjs(value, dateShortFormat).toDate();\n }\n\n private setValueToInput<D extends { value: Date | null }>(\n value: string | null | undefined,\n nativeInput: HTMLInputElement,\n matDateInput: D\n ): void {\n nativeInput.value = value ? this.formatDateTimeFromModelToView(value) : '';\n matDateInput.value = value ? dayjs(value).utc().toDate() : null;\n }\n\n /**\n * @ignore\n * Formats Date to full ISO 8601 format (e.g. `2022-08-31T22:00:00.000Z`)\n */\n private formatDateFromViewToModel(value: Date): string {\n return dayjs(value).utc().toISOString();\n }\n\n private formatDateTimeFromModelToView(value: string): string {\n return dayjs(value).tz(danishTimeZoneIdentifier).format(dateShortFormat);\n }\n\n private toDanishTimeZone(value: Date): Date {\n return dayjs(value.toISOString()).tz(danishTimeZoneIdentifier).toDate();\n }\n\n private setToEndOfDay(value: Date): Date {\n return dayjs(value).endOf('day').toDate();\n }\n\n private setEndDateToDanishTimeZone(value: string): Date | null {\n const dateBasedOnShortFormat = this.parseDateShortFormat(value);\n\n let maybeDateInDanishTimeZone: Date | null = null;\n\n if (dayjs(dateBasedOnShortFormat).isValid()) {\n maybeDateInDanishTimeZone = this.toDanishTimeZone(dateBasedOnShortFormat);\n }\n\n return maybeDateInDanishTimeZone;\n }\n}\n","<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n <ng-content ngProjectAs=\"watt-field-warning\" select=\"watt-field-warning\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n"]}
1
+ {"version":3,"file":"watt-datepicker.component.js","sourceRoot":"","sources":["../../../../../libs/watt/package/picker/datepicker/watt-datepicker.component.ts","../../../../../libs/watt/package/picker/datepicker/watt-datepicker.component.html"],"names":[],"mappings":"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","sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n input,\n effect,\n inject,\n computed,\n Component,\n LOCALE_ID,\n viewChild,\n ElementRef,\n linkedSignal,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { AbstractControl, NgControl, Validator } from '@angular/forms';\n\nimport {\n MatEndDate,\n MatStartDate,\n MatDateRangeInput,\n MatDateRangePicker,\n MatDatepickerInput,\n MatDatepickerModule,\n MatCalendarCellClassFunction,\n} from '@angular/material/datepicker';\n\nimport { maskitoDateOptionsGenerator, maskitoDateRangeOptionsGenerator } from '@maskito/kit';\n\nimport {\n dayjs,\n WattRange,\n WattDateRange,\n WattLocaleService,\n WattSupportedLocales,\n} from '@energinet/watt/core/date';\n\nimport { WattFieldComponent } from '@energinet/watt/field';\nimport { WattButtonComponent } from '@energinet/watt/button';\n\nimport {\n WattPickerBase,\n WattPickerValue,\n WattPlaceholderMaskComponent,\n} from '@energinet/watt/picker/__shared';\n\nconst dateShortFormat = 'DD-MM-YYYY';\nexport const danishTimeZoneIdentifier = 'Europe/Copenhagen';\n\n/**\n * Usage:\n * `import { WattDatepickerComponent } from '@energinet/watt/datepicker';`\n *\n * IMPORTANT:\n * The styling is calculated based on our monospaced font.\n */\n@Component({\n selector: 'watt-datepicker',\n templateUrl: './watt-datepicker.component.html',\n styleUrls: ['./watt-datepicker.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: WattDatepickerComponent }],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatInputModule,\n MatDatepickerModule,\n\n WattFieldComponent,\n WattButtonComponent,\n WattPlaceholderMaskComponent,\n ],\n})\nexport class WattDatepickerComponent extends WattPickerBase implements Validator, AfterViewInit {\n protected override elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected override changeDetectionRef = inject(ChangeDetectorRef);\n protected override ngControl = inject(NgControl, { optional: true, self: true });\n private localeService = inject(WattLocaleService);\n private locale = inject<WattSupportedLocales>(LOCALE_ID);\n\n max = input<Date>();\n min = input<Date>();\n label = input<string>('');\n rangeMonthOnlyMode = input(false);\n startAt = input<Date | null>(null);\n dateClass = input<MatCalendarCellClassFunction<Date>>(() => '');\n canStepThroughDays = input(false, { transform: booleanAttribute });\n\n matEndDate = viewChild<MatEndDate<Date | null>>(MatEndDate);\n matStartDate = viewChild<MatStartDate<Date | null>>(MatStartDate);\n matDateRangeInput = viewChild<MatDateRangeInput<Date | null>>(MatDateRangeInput);\n matDatepickerInput = viewChild<MatDatepickerInput<Date | null>>(MatDatepickerInput);\n matDateRangePicker = viewChild<MatDateRangePicker<Date | null>>(MatDateRangePicker);\n\n actualInput = viewChild<ElementRef<HTMLInputElement>>('actualInput');\n override input = viewChild<ElementRef<HTMLInputElement>>('dateInput');\n override endInput = viewChild<ElementRef<HTMLInputElement>>('endDateInput');\n override startInput = viewChild<ElementRef<HTMLInputElement>>('startDateInput');\n\n protected _placeholder = this.getPlaceholderByLocale(this.locale);\n\n rangeSeparator = ' - ';\n\n rangePlaceholder = this.getRangePlaceholder();\n\n inputMask = computed(() =>\n maskitoDateOptionsGenerator({\n mode: 'dd/mm/yyyy',\n separator: '-',\n max: this.max(),\n min: this.min(),\n })\n );\n\n rangeInputMask = computed(() =>\n maskitoDateRangeOptionsGenerator({\n mode: 'dd/mm/yyyy',\n dateSeparator: '-',\n max: this.max(),\n min: this.min(),\n })\n );\n\n getPlaceholderByLocale(locale: WattSupportedLocales): string {\n return locale === 'da' ? 'dd-mm-åååå' : 'dd-mm-yyyy';\n }\n\n getRangePlaceholder(): string {\n return this.placeholder + this.rangeSeparator + this.placeholder;\n }\n\n isPrevDayButtonDisabled = linkedSignal(() => this.isPrevDayBeforeOrEqualToMinDate());\n isNextDayButtonDisabled = linkedSignal(() => this.isNextDayAfterOrEqualToMaxDate());\n\n constructor() {\n super(`watt-datepicker-${WattDatepickerComponent.nextId++}`);\n\n effect(() => {\n const locale = this.localeService.locale();\n this.placeholder = this.getPlaceholderByLocale(locale);\n this.rangePlaceholder = this.getRangePlaceholder();\n });\n\n effect(() => {\n this.rangeMonthOnlyMode();\n this.ngControl?.control?.updateValueAndValidity();\n });\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.ngControl?.control?.addValidators(this.validate);\n }\n\n validate = ({ value }: AbstractControl<WattRange<string>>) => {\n if (!value?.end || !value?.start) return null;\n if (!this.rangeMonthOnlyMode()) return null;\n const start = dayjs(value.start);\n const end = dayjs(value.end);\n return start.isSame(start.startOf('month')) && end.isSame(start.endOf('month'))\n ? null\n : { monthOnly: true };\n };\n\n protected initSingleInput() {\n const matDatepickerInput = this.matDatepickerInput();\n if (this.initialValue && matDatepickerInput) {\n matDatepickerInput.value = this.initialValue;\n this.datepickerClosed();\n }\n }\n\n inputChanged(value: string) {\n const dateString = value.slice(0, this.placeholder.length);\n\n if (dateString.length === 0) {\n this.control?.setValue(null);\n return;\n }\n\n if (dateString.length !== this.placeholder.length) {\n return;\n }\n\n const date = this.parseDateShortFormat(dateString);\n this.control?.setValue(this.formatDateFromViewToModel(date));\n }\n\n datepickerClosed() {\n const matDatepickerInput = this.matDatepickerInput();\n const actualInput = this.actualInput();\n\n if (!actualInput) return;\n\n if (matDatepickerInput && matDatepickerInput.value) {\n this.control?.setValue(matDatepickerInput.value);\n\n actualInput.nativeElement.value = this.formatDateTimeFromModelToView(\n this.formatDateFromViewToModel(matDatepickerInput.value)\n );\n } else {\n actualInput.nativeElement.value = '';\n this.control?.setValue(null);\n }\n\n this.isPrevDayButtonDisabled.set(this.isPrevDayBeforeOrEqualToMinDate());\n this.isNextDayButtonDisabled.set(this.isNextDayAfterOrEqualToMaxDate());\n\n actualInput.nativeElement.dispatchEvent(new InputEvent('input'));\n }\n\n onMonthSelected(date: Date) {\n const matDateRangePicker = this.matDateRangePicker();\n if (matDateRangePicker && this.rangeMonthOnlyMode() && date) {\n matDateRangePicker.select(dayjs(date).startOf('month').toDate());\n matDateRangePicker.select(dayjs(date).endOf('month').toDate());\n matDateRangePicker.close();\n }\n }\n\n protected initRangeInput() {\n const matStartDate = this.matStartDate();\n const matEndDate = this.matEndDate();\n\n if (this.initialValue && matStartDate && matEndDate) {\n matStartDate.value = (this.initialValue as WattDateRange).start;\n matEndDate.value = (this.initialValue as WattDateRange).end;\n this.rangePickerClosed();\n }\n }\n\n clearRangePicker() {\n const actualInput = this.actualInput();\n\n if (!actualInput) return;\n\n this.control?.setValue(null);\n actualInput.nativeElement.value = '';\n actualInput.nativeElement.dispatchEvent(new InputEvent('input'));\n }\n\n rangeInputChanged(value: string) {\n const startDateString = value.slice(0, this.placeholder.length);\n\n if (startDateString.length === 0) {\n this.control?.setValue(null);\n return;\n }\n\n if (startDateString.length !== this.placeholder.length) {\n return;\n }\n\n const start = this.parseDateShortFormat(startDateString);\n const endDateString = value.slice(this.placeholder.length + this.rangeSeparator.length);\n let end = this.setEndDateToDanishTimeZone(endDateString);\n\n if (end !== null) {\n end = this.setToEndOfDay(end);\n this.control?.setValue({ start, end });\n }\n }\n\n rangePickerClosed() {\n const matDateRangeInput = this.matDateRangeInput();\n const actualInput = this.actualInput();\n\n if (!actualInput) return;\n\n if (matDateRangeInput?.value?.start && matDateRangeInput?.value?.end) {\n actualInput.nativeElement.value =\n this.formatDateTimeFromModelToView(\n this.formatDateFromViewToModel(matDateRangeInput.value?.start)\n ) +\n '-' +\n this.formatDateTimeFromModelToView(\n this.formatDateFromViewToModel(matDateRangeInput.value.end)\n );\n\n this.control?.setValue({\n start: this.formatDateFromViewToModel(matDateRangeInput.value.start),\n end: this.formatDateFromViewToModel(matDateRangeInput.value.end),\n });\n } else {\n actualInput.nativeElement.value = '';\n this.control?.setValue(null);\n }\n\n actualInput.nativeElement.dispatchEvent(new InputEvent('input'));\n }\n\n protected setSingleValue(\n value: Exclude<WattPickerValue, WattDateRange>,\n input: HTMLInputElement\n ) {\n const matDatepickerInput = this.matDatepickerInput();\n if (matDatepickerInput) {\n this.setValueToInput(value, input, matDatepickerInput);\n }\n }\n\n protected setRangeValue(\n value: WattDateRange | null,\n startInput: HTMLInputElement,\n endInput: HTMLInputElement\n ) {\n const { start, end } = value ?? {};\n\n const matStartDate = this.matStartDate();\n const matEndDate = this.matEndDate();\n\n if (!matStartDate || !matEndDate) return;\n\n this.setValueToInput(start, startInput, matStartDate);\n this.setValueToInput(end, endInput, matEndDate);\n }\n\n prevDay() {\n this.changeDay(-1);\n }\n\n nextDay() {\n this.changeDay(1);\n }\n\n private changeDay(value: number) {\n const currentDate = this.matDatepickerInput()?.value;\n\n if (currentDate) {\n const newDate = dayjs(currentDate).add(value, 'day').toISOString();\n const newDateFormatted = this.formatDateTimeFromModelToView(newDate);\n\n this.inputChanged(newDateFormatted);\n this.datepickerClosed();\n }\n }\n\n private isPrevDayBeforeOrEqualToMinDate() {\n const min = this.min();\n const selectedDate = this.matDatepickerInput()?.value;\n\n if (!min || !selectedDate) return false;\n\n const isBefore = dayjs(selectedDate).isBefore(min, 'day');\n const isSame = dayjs(selectedDate).isSame(min, 'day');\n\n return isSame || isBefore;\n }\n\n private isNextDayAfterOrEqualToMaxDate() {\n const max = this.max();\n const selectedDate = this.matDatepickerInput()?.value;\n\n if (!max || !selectedDate) return false;\n\n const isAfter = dayjs(selectedDate).isAfter(max, 'day');\n const isSame = dayjs(selectedDate).isSame(max, 'day');\n\n return isSame || isAfter;\n }\n\n private parseDateShortFormat(value: string): Date {\n return dayjs(value, dateShortFormat).toDate();\n }\n\n private setValueToInput<D extends { value: Date | null }>(\n value: string | null | undefined,\n nativeInput: HTMLInputElement,\n matDateInput: D\n ): void {\n nativeInput.value = value ? this.formatDateTimeFromModelToView(value) : '';\n matDateInput.value = value ? dayjs(value).utc().toDate() : null;\n }\n\n /**\n * @ignore\n * Formats Date to full ISO 8601 format (e.g. `2022-08-31T22:00:00.000Z`)\n */\n private formatDateFromViewToModel(value: Date): string {\n return dayjs(value).utc().toISOString();\n }\n\n private formatDateTimeFromModelToView(value: string): string {\n return dayjs(value).tz(danishTimeZoneIdentifier).format(dateShortFormat);\n }\n\n private toDanishTimeZone(value: Date): Date {\n return dayjs(value.toISOString()).tz(danishTimeZoneIdentifier).toDate();\n }\n\n private setToEndOfDay(value: Date): Date {\n return dayjs(value).endOf('day').toDate();\n }\n\n private setEndDateToDanishTimeZone(value: string): Date | null {\n const dateBasedOnShortFormat = this.parseDateShortFormat(value);\n\n let maybeDateInDanishTimeZone: Date | null = null;\n\n if (dayjs(dateBasedOnShortFormat).isValid()) {\n maybeDateInDanishTimeZone = this.toDanishTimeZone(dateBasedOnShortFormat);\n }\n\n return maybeDateInDanishTimeZone;\n }\n}\n","<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"placeholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n <ng-content ngProjectAs=\"watt-field-warning\" select=\"watt-field-warning\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n"]}