@ojiepermana/angular 22.1.13 → 22.2.0

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 (252) hide show
  1. package/README.md +8 -6
  2. package/SUPPORT.md +3 -3
  3. package/chart/README.md +1 -1
  4. package/component/README.md +2 -2
  5. package/component/calendar/README.md +3 -15
  6. package/component/drawer/README.md +1 -2
  7. package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
  8. package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
  9. package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
  10. package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
  11. package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
  12. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
  13. package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
  14. package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
  15. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
  16. package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
  17. package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
  18. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
  19. package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
  20. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
  21. package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
  22. package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
  23. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
  24. package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
  25. package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
  26. package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
  27. package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
  28. package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
  29. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
  30. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
  31. package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
  32. package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
  33. package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
  34. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
  35. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
  36. package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
  37. package/fesm2022/ojiepermana-angular-component-drawer.mjs +2 -5
  38. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
  39. package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
  40. package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
  41. package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
  42. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
  43. package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
  44. package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
  45. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
  46. package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
  47. package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
  48. package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
  49. package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
  50. package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
  51. package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
  52. package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
  53. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
  54. package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
  55. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
  56. package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
  57. package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
  58. package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
  59. package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
  60. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
  61. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
  62. package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
  63. package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
  64. package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
  65. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
  66. package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
  67. package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
  68. package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
  69. package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
  70. package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
  71. package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
  72. package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
  73. package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
  74. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
  75. package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
  76. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
  77. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
  78. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
  79. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
  80. package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
  81. package/fesm2022/ojiepermana-angular-component.mjs +0 -10
  82. package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
  83. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
  84. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-BKCeWzml.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DFEJK2jD.mjs +811 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs} +387 -183
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BPgH7FJk.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-DMpYcD9t.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs +1228 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-YUzHI9Pj.mjs +311 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +542 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +27 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3052 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1115 -737
  96. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
  97. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
  98. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1719 -552
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -491
  100. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
  101. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
  102. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
  103. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
  104. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
  105. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
  106. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
  107. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
  108. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
  109. package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
  110. package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
  111. package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
  112. package/fesm2022/ojiepermana-angular.mjs +5 -24
  113. package/navigation/README.md +1 -1
  114. package/package.json +16 -12
  115. package/sdk/README.md +1 -1
  116. package/sdk/src/writer/index.js +2 -2
  117. package/theme/README.md +1 -1
  118. package/theme/layout/README.md +2 -4
  119. package/theme/page/README.md +50 -0
  120. package/theme/styles/README.md +10 -10
  121. package/theme/styles/css/base/prefers-dark.css +1 -1
  122. package/theme/styles/css/base/status.css +1 -1
  123. package/theme/styles/css/color/amber.css +1 -1
  124. package/theme/styles/css/color/blue.css +1 -1
  125. package/theme/styles/css/color/cyan.css +1 -1
  126. package/theme/styles/css/color/emerald.css +1 -1
  127. package/theme/styles/css/color/fuchsia.css +1 -1
  128. package/theme/styles/css/color/green.css +1 -1
  129. package/theme/styles/css/color/indigo.css +1 -1
  130. package/theme/styles/css/color/lime.css +1 -1
  131. package/theme/styles/css/color/orange.css +1 -1
  132. package/theme/styles/css/color/pink.css +1 -1
  133. package/theme/styles/css/color/purple.css +1 -1
  134. package/theme/styles/css/color/red.css +1 -1
  135. package/theme/styles/css/color/rose.css +1 -1
  136. package/theme/styles/css/color/sky.css +1 -1
  137. package/theme/styles/css/color/teal.css +1 -1
  138. package/theme/styles/css/color/violet.css +1 -1
  139. package/theme/styles/css/color/yellow.css +1 -1
  140. package/theme/styles/css/neutral/gray.css +1 -1
  141. package/theme/styles/css/neutral/mauve.css +1 -1
  142. package/theme/styles/css/neutral/mist.css +1 -1
  143. package/theme/styles/css/neutral/neutral.css +1 -1
  144. package/theme/styles/css/neutral/olive.css +1 -1
  145. package/theme/styles/css/neutral/slate.css +1 -1
  146. package/theme/styles/css/neutral/stone.css +1 -1
  147. package/theme/styles/css/neutral/taupe.css +1 -1
  148. package/theme/styles/css/neutral/zinc.css +1 -1
  149. package/types/ojiepermana-angular-chart-area.d.ts +126 -63
  150. package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
  151. package/types/ojiepermana-angular-chart-core.d.ts +409 -398
  152. package/types/ojiepermana-angular-chart-line.d.ts +141 -68
  153. package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
  154. package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
  155. package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
  156. package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
  157. package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
  158. package/types/ojiepermana-angular-chart.d.ts +3 -2
  159. package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
  160. package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
  161. package/types/ojiepermana-angular-component-alert.d.ts +69 -39
  162. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
  163. package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
  164. package/types/ojiepermana-angular-component-badge.d.ts +36 -24
  165. package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
  166. package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
  167. package/types/ojiepermana-angular-component-button.d.ts +44 -27
  168. package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
  169. package/types/ojiepermana-angular-component-card.d.ts +112 -63
  170. package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
  171. package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
  172. package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
  173. package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
  174. package/types/ojiepermana-angular-component-command.d.ts +206 -121
  175. package/types/ojiepermana-angular-component-composer.d.ts +184 -84
  176. package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
  177. package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
  178. package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
  179. package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
  180. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
  181. package/types/ojiepermana-angular-component-editor.d.ts +215 -117
  182. package/types/ojiepermana-angular-component-empty.d.ts +80 -45
  183. package/types/ojiepermana-angular-component-form.d.ts +185 -121
  184. package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
  185. package/types/ojiepermana-angular-component-icon.d.ts +87 -57
  186. package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
  187. package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
  188. package/types/ojiepermana-angular-component-input.d.ts +27 -17
  189. package/types/ojiepermana-angular-component-item.d.ts +160 -84
  190. package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
  191. package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
  192. package/types/ojiepermana-angular-component-label.d.ts +19 -11
  193. package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
  194. package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
  195. package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
  196. package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
  197. package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
  198. package/types/ojiepermana-angular-component-popover.d.ts +94 -64
  199. package/types/ojiepermana-angular-component-progress.d.ts +45 -17
  200. package/types/ojiepermana-angular-component-radio.d.ts +129 -53
  201. package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
  202. package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
  203. package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
  204. package/types/ojiepermana-angular-component-select.d.ts +94 -77
  205. package/types/ojiepermana-angular-component-separator.d.ts +26 -14
  206. package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
  207. package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
  208. package/types/ojiepermana-angular-component-slider.d.ts +140 -75
  209. package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
  210. package/types/ojiepermana-angular-component-switch.d.ts +97 -40
  211. package/types/ojiepermana-angular-component-table.d.ts +102 -50
  212. package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
  213. package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
  214. package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
  215. package/types/ojiepermana-angular-component-toast.d.ts +51 -55
  216. package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
  217. package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
  218. package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
  219. package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
  220. package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
  221. package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
  222. package/types/ojiepermana-angular-component-utils.d.ts +2 -2
  223. package/types/ojiepermana-angular-component.d.ts +1 -2
  224. package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
  225. package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
  226. package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
  227. package/types/ojiepermana-angular-navigation-types.d.ts +121 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +663 -374
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +115 -83
  231. package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
  232. package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
  233. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +399 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -112
  235. package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
  236. package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
  237. package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
  238. package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
  239. package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
  240. package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
  241. package/types/ojiepermana-angular-theme-page.d.ts +7 -5
  242. package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
  243. package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
  244. package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
  245. package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
  246. package/types/ojiepermana-angular-theme.d.ts +1 -2
  247. package/types/ojiepermana-angular.d.ts +5 -5
  248. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +0 -512
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +0 -2642
@@ -1,325 +1,439 @@
1
- import { Overlay } from '@angular/cdk/overlay';
2
- import { TemplatePortal } from '@angular/cdk/portal';
3
- import { DOCUMENT } from '@angular/common';
4
- import * as i0 from '@angular/core';
5
- import { inject, DestroyRef, Injector, ViewContainerRef, model, input, booleanAttribute, signal, linkedSignal, untracked, viewChild, computed, effect, afterNextRender, forwardRef, Component } from '@angular/core';
6
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
- import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
8
- import { formatIsoDate, parseIsoDate, startOfDay, CalendarComponent } from '@ojiepermana/angular/component/calendar';
9
- import { injectUniqueId, cn } from '@ojiepermana/angular/component/utils/core';
10
- import { overlayDismissals } from '@ojiepermana/angular/component/utils/overlay';
11
-
12
- class DatePickerComponent {
13
- overlay = inject(Overlay);
14
- documentRef = inject(DOCUMENT);
15
- destroyRef = inject(DestroyRef);
16
- injector = inject(Injector);
17
- viewContainerRef = inject(ViewContainerRef);
18
- instanceId = injectUniqueId('DatePicker');
19
- value = model(null, /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
21
- id = input(null, /* @ts-ignore */
22
- ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
23
- placeholder = input('Pick a date', /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
25
- required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
26
- min = input(null, /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
28
- max = input(null, /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
30
- startAt = input(null, /* @ts-ignore */
31
- ...(ngDevMode ? [{ debugName: "startAt" }] : /* istanbul ignore next */ []));
32
- startView = input('month', /* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "startView" }] : /* istanbul ignore next */ []));
34
- touchUi = input(false, { ...(ngDevMode ? { debugName: "touchUi" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
35
- dateFilter = input(null, /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "dateFilter" }] : /* istanbul ignore next */ []));
37
- panelClass = input('datepicker-panel', /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
39
- panelAriaLabel = input('Choose a date', /* @ts-ignore */
40
- ...(ngDevMode ? [{ debugName: "panelAriaLabel" }] : /* istanbul ignore next */ []));
41
- invalidFormatMessage = input('Enter a valid date in YYYY-MM-DD format.', /* @ts-ignore */
42
- ...(ngDevMode ? [{ debugName: "invalidFormatMessage" }] : /* istanbul ignore next */ []));
43
- ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
44
- ariaLabelledby = input(null, { ...(ngDevMode ? { debugName: "ariaLabelledby" } : /* istanbul ignore next */ {}), alias: 'aria-labelledby' });
45
- ariaDescribedby = input(null, { ...(ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {}), alias: 'aria-describedby' });
46
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
47
- class = input('', /* @ts-ignore */
48
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
49
- isEditing = signal(false, /* @ts-ignore */
50
- ...(ngDevMode ? [{ debugName: "isEditing" }] : /* istanbul ignore next */ []));
51
- isOpen = signal(false, /* @ts-ignore */
52
- ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
53
- /**
54
- * The text the field shows. Re-seeds from `value`, but a draft the user is
55
- * still editing -- or one already refused -- outlives an incoming binding
56
- * change, so their typing is never swapped out from under them.
57
- */
58
- inputValue = linkedSignal({ ...(ngDevMode ? { debugName: "inputValue" } : /* istanbul ignore next */ {}), source: () => this.value(),
59
- computation: (value, previous) => previous && untracked(() => this.isEditing() || !!this.draftError())
60
- ? previous.value
61
- : value
62
- ? formatIsoDate(value)
63
- : '' });
64
- panelId = `${this.instanceId}-panel`;
65
- errorId = `${this.instanceId}-error`;
66
- draftError = signal(null, /* @ts-ignore */
67
- ...(ngDevMode ? [{ debugName: "draftError" }] : /* istanbul ignore next */ []));
68
- cvaDisabled = signal(false, /* @ts-ignore */
69
- ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
70
- overlayRef = null;
71
- restoreFocusElement = null;
72
- validatorNotified = false;
73
- onChangeFn = () => { };
74
- onTouchedFn = () => { };
75
- onValidatorChangeFn = () => { };
76
- origin = viewChild.required('origin', /* @ts-ignore */
77
- ...(ngDevMode ? [{ debugName: "origin" }] : /* istanbul ignore next */ []));
78
- input = viewChild.required('input', /* @ts-ignore */
79
- ...(ngDevMode ? [{ debugName: "input" }] : /* istanbul ignore next */ []));
80
- panel = viewChild.required('panel', /* @ts-ignore */
81
- ...(ngDevMode ? [{ debugName: "panel" }] : /* istanbul ignore next */ []));
82
- calendar = viewChild('calendar', /* @ts-ignore */
83
- ...(ngDevMode ? [{ debugName: "calendar" }] : /* istanbul ignore next */ []));
84
- classes = computed(() => cn('date-picker block w-full', this.class()), /* @ts-ignore */
85
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
86
- inputClasses = computed(() => cn('date-picker-input w-full', this.isDisabled() ? 'opacity-60' : ''), /* @ts-ignore */
87
- ...(ngDevMode ? [{ debugName: "inputClasses" }] : /* istanbul ignore next */ []));
88
- resolvedId = computed(() => this.id() ?? this.instanceId, /* @ts-ignore */
89
- ...(ngDevMode ? [{ debugName: "resolvedId" }] : /* istanbul ignore next */ []));
90
- isDisabled = computed(() => this.disabled() || this.cvaDisabled(), /* @ts-ignore */
91
- ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
92
- /**
93
- * What a bound control is told. A refused draft is reported here as well as
94
- * painted on the field, so the form cannot call itself valid while the input
95
- * is showing an error the user has to fix.
96
- */
97
- validationErrors = computed(() => {
98
- const draft = this.draftError();
99
- if (draft) {
100
- return draft;
101
- }
102
- const value = this.value();
103
- return value ? this.rangeError(value) : null;
104
- }, /* @ts-ignore */
105
- ...(ngDevMode ? [{ debugName: "validationErrors" }] : /* istanbul ignore next */ []));
106
- validationError = computed(() => this.validationErrors() ? this.invalidFormatMessage() : null, /* @ts-ignore */
107
- ...(ngDevMode ? [{ debugName: "validationError" }] : /* istanbul ignore next */ []));
108
- resolvedAriaDescribedby = computed(() => [this.ariaDescribedby(), this.validationError() ? this.errorId : null]
109
- .filter((value) => !!value)
110
- .join(' ') || null, /* @ts-ignore */
111
- ...(ngDevMode ? [{ debugName: "resolvedAriaDescribedby" }] : /* istanbul ignore next */ []));
112
- constructor() {
113
- this.destroyRef.onDestroy(() => {
114
- // Nothing survives the teardown to hand focus back to, so drop the target
115
- // before closing: the overlay still has to be disposed of.
116
- this.restoreFocusElement = null;
117
- this.close();
118
- });
119
- effect(() => {
120
- this.validationErrors();
121
- untracked(() => this.notifyValidatorChange());
122
- });
123
- effect(() => {
124
- if (this.isDisabled() && this.isOpen()) {
125
- this.close();
126
- }
127
- });
128
- }
129
- open(restoreFocusElement) {
130
- if (this.isDisabled() || this.isOpen()) {
131
- return;
132
- }
133
- const originEl = this.origin().nativeElement;
134
- this.restoreFocusElement =
135
- restoreFocusElement ??
136
- (this.documentRef.activeElement instanceof HTMLElement
137
- ? this.documentRef.activeElement
138
- : this.input().nativeElement);
139
- this.overlayRef = this.overlay.create({
140
- positionStrategy: this.overlay
141
- .position()
142
- .flexibleConnectedTo(originEl)
143
- .withPositions([
144
- { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },
145
- { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -8 },
146
- ])
147
- .withPush(true)
148
- .withViewportMargin(8),
149
- scrollStrategy: this.overlay.scrollStrategies.reposition(),
150
- hasBackdrop: true,
151
- backdropClass: 'cdk-overlay-transparent-backdrop',
152
- panelClass: this.panelClass(),
153
- });
154
- const portal = new TemplatePortal(this.panel(), this.viewContainerRef);
155
- const overlayRef = this.overlayRef;
156
- if (!overlayRef) {
157
- return;
158
- }
159
- overlayRef.attach(portal);
160
- overlayDismissals(overlayRef, originEl)
161
- .pipe(takeUntilDestroyed(this.destroyRef))
162
- .subscribe(() => this.close());
163
- this.isOpen.set(true);
164
- afterNextRender({ read: () => this.calendar()?.focusActiveCell() }, { injector: this.injector });
165
- }
166
- close() {
167
- if (!this.isOpen()) {
168
- return;
169
- }
170
- this.overlayRef?.dispose();
171
- this.overlayRef = null;
172
- this.isOpen.set(false);
173
- const restoreFocusElement = this.restoreFocusElement;
174
- this.restoreFocusElement = null;
175
- this.restoreFocusAfterOverlayTeardown(restoreFocusElement);
176
- }
177
- toggle(event) {
178
- if (this.isOpen()) {
179
- this.close();
180
- }
181
- else {
182
- this.open(event?.currentTarget instanceof HTMLElement ? event.currentTarget : null);
183
- }
184
- }
185
- onInput(event) {
186
- const text = event.target.value;
187
- this.isEditing.set(true);
188
- this.inputValue.set(text);
189
- const parsed = parseIsoDate(text);
190
- if (parsed && this.isSelectable(parsed)) {
191
- this.setValue(parsed, true);
192
- }
193
- else {
194
- this.draftError.set(null);
195
- }
196
- }
197
- onBlur() {
198
- this.isEditing.set(false);
199
- this.commitInput();
200
- this.onTouchedFn();
201
- }
202
- onEnter(event) {
203
- event.preventDefault();
204
- this.commitInput();
205
- }
206
- onCalendarSelect(date) {
207
- this.setValue(date, true);
208
- this.close();
209
- }
210
- writeValue(value) {
211
- this.setValue(value, false);
212
- }
213
- registerOnChange(fn) {
214
- this.onChangeFn = fn;
215
- }
216
- registerOnTouched(fn) {
217
- this.onTouchedFn = fn;
218
- }
219
- setDisabledState(state) {
220
- this.cvaDisabled.set(state);
221
- }
222
- validate() {
223
- return this.validationErrors();
224
- }
225
- registerOnValidatorChange(fn) {
226
- this.onValidatorChangeFn = fn;
227
- }
228
- commitInput() {
229
- const draft = this.inputValue().trim();
230
- if (!draft && !this.required()) {
231
- this.setValue(null, true);
232
- return;
233
- }
234
- const parsed = parseIsoDate(draft);
235
- if (!parsed) {
236
- this.draftError.set({ dateParse: { text: draft } });
237
- return;
238
- }
239
- const rangeError = this.rangeError(parsed);
240
- if (rangeError) {
241
- this.draftError.set(rangeError);
242
- return;
243
- }
244
- this.setValue(parsed, true);
245
- }
246
- setValue(value, emit) {
247
- const next = value ? new Date(value.getTime()) : null;
248
- this.value.set(next);
249
- this.inputValue.set(next ? formatIsoDate(next) : '');
250
- this.draftError.set(null);
251
- if (emit) {
252
- this.onChangeFn(next);
253
- }
254
- }
255
- /**
256
- * A refused draft never reaches the control, so nothing else would tell the
257
- * forms API to ask again. The first flush is the initial computation, which
258
- * the control's own set-up validation already covers.
259
- */
260
- notifyValidatorChange() {
261
- if (!this.validatorNotified) {
262
- this.validatorNotified = true;
263
- return;
264
- }
265
- this.onValidatorChangeFn();
266
- }
267
- isSelectable(date) {
268
- return !this.rangeError(date);
269
- }
270
- /**
271
- * The same question the calendar answers, answered the same way, and named.
272
- *
273
- * This used to compare raw `Date` values while the calendar normalised to the
274
- * start of the day, so a `min` or `max` carrying a time component split the
275
- * two apart: a boundary date typed into the field was rejected, while the very
276
- * same date clicked in the popup was accepted. One rule, one helper, one
277
- * answer -- and the answer now says which constraint refused the date, so a
278
- * bound control can report it.
279
- */
280
- rangeError(date) {
281
- const day = startOfDay(date).getTime();
282
- const min = this.min();
283
- if (min && day < startOfDay(min).getTime()) {
284
- return { dateMin: { min, actual: date } };
285
- }
286
- const max = this.max();
287
- if (max && day > startOfDay(max).getTime()) {
288
- return { dateMax: { max, actual: date } };
289
- }
290
- const filter = this.dateFilter();
291
- return filter && !filter(date) ? { dateFilter: { actual: date } } : null;
292
- }
293
- /**
294
- * CDK disposes its overlay during the current event turn. Restoring focus in
295
- * that same turn works in Chromium but WebKit may move it back to the body
296
- * while it removes the pane. Defer until the post-disposal frame so every
297
- * browser receives a stable focus restoration.
298
- */
299
- restoreFocusAfterOverlayTeardown(element) {
300
- if (!element?.isConnected || this.isDisabled()) {
301
- return;
302
- }
303
- const view = this.documentRef.defaultView;
304
- if (!view) {
305
- queueMicrotask(() => {
306
- if (element.isConnected && !this.isDisabled()) {
307
- element.focus();
308
- }
309
- });
310
- return;
311
- }
312
- view.requestAnimationFrame(() => {
313
- if (element.isConnected && !this.isDisabled()) {
314
- element.focus();
315
- }
316
- });
317
- }
318
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
319
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DatePickerComponent, isStandalone: true, selector: "DatePicker", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, startView: { classPropertyName: "startView", publicName: "startView", isSignal: true, isRequired: false, transformFunction: null }, touchUi: { classPropertyName: "touchUi", publicName: "touchUi", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, panelAriaLabel: { classPropertyName: "panelAriaLabel", publicName: "panelAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, invalidFormatMessage: { classPropertyName: "invalidFormatMessage", publicName: "invalidFormatMessage", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class": "classes()" } }, providers: [
320
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },
321
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },
322
- ], viewQueries: [{ propertyName: "origin", first: true, predicate: ["origin"], descendants: true, isSignal: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true, isSignal: true }], ngImport: i0, template: `
1
+ import { Overlay } from "@angular/cdk/overlay";
2
+ import { TemplatePortal } from "@angular/cdk/portal";
3
+ import { DOCUMENT } from "@angular/common";
4
+ import * as i0 from "@angular/core";
5
+ import { Component, DestroyRef, Injector, ViewContainerRef, afterNextRender, booleanAttribute, computed, effect, forwardRef, inject, input, linkedSignal, model, signal, untracked, viewChild } from "@angular/core";
6
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
7
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from "@angular/forms";
8
+ import { CalendarComponent, formatIsoDate, parseIsoDate, startOfDay } from "@ojiepermana/angular/component/calendar";
9
+ import { cn, injectUniqueId } from "@ojiepermana/angular/component/utils/core";
10
+ import { overlayDismissals } from "@ojiepermana/angular/component/utils/overlay";
11
+ var DatePickerComponent = class DatePickerComponent {
12
+ overlay = inject(Overlay);
13
+ documentRef = inject(DOCUMENT);
14
+ destroyRef = inject(DestroyRef);
15
+ injector = inject(Injector);
16
+ viewContainerRef = inject(ViewContainerRef);
17
+ instanceId = injectUniqueId("DatePicker");
18
+ value = model(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
19
+ id = input(null, ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
20
+ placeholder = input("Pick a date", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
21
+ required = input(false, {
22
+ ...ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {},
23
+ transform: booleanAttribute
24
+ });
25
+ min = input(null, {
26
+ ...ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {},
27
+ transform: (value) => value ?? null
28
+ });
29
+ max = input(null, {
30
+ ...ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {},
31
+ transform: (value) => value ?? null
32
+ });
33
+ startAt = input(null, ...ngDevMode ? [{ debugName: "startAt" }] : /* istanbul ignore next */ []);
34
+ startView = input("month", ...ngDevMode ? [{ debugName: "startView" }] : /* istanbul ignore next */ []);
35
+ touchUi = input(false, {
36
+ ...ngDevMode ? { debugName: "touchUi" } : /* istanbul ignore next */ {},
37
+ transform: booleanAttribute
38
+ });
39
+ dateFilter = input(null, ...ngDevMode ? [{ debugName: "dateFilter" }] : /* istanbul ignore next */ []);
40
+ panelClass = input("datepicker-panel", ...ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []);
41
+ panelAriaLabel = input("Choose a date", ...ngDevMode ? [{ debugName: "panelAriaLabel" }] : /* istanbul ignore next */ []);
42
+ invalidFormatMessage = input("Enter a valid date in YYYY-MM-DD format.", ...ngDevMode ? [{ debugName: "invalidFormatMessage" }] : /* istanbul ignore next */ []);
43
+ ariaLabel = input(null, {
44
+ ...ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {},
45
+ alias: "aria-label"
46
+ });
47
+ ariaLabelledby = input(null, {
48
+ ...ngDevMode ? { debugName: "ariaLabelledby" } : /* istanbul ignore next */ {},
49
+ alias: "aria-labelledby"
50
+ });
51
+ ariaDescribedby = input(null, {
52
+ ...ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {},
53
+ alias: "aria-describedby"
54
+ });
55
+ disabled = input(false, {
56
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
57
+ transform: booleanAttribute
58
+ });
59
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
60
+ isEditing = signal(false, ...ngDevMode ? [{ debugName: "isEditing" }] : /* istanbul ignore next */ []);
61
+ isOpen = signal(false, ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
62
+ inputValue = linkedSignal({
63
+ ...ngDevMode ? { debugName: "inputValue" } : /* istanbul ignore next */ {},
64
+ source: () => this.value(),
65
+ computation: (value, previous) => previous && untracked(() => this.isEditing() || !!this.draftError()) ? previous.value : value ? formatIsoDate(value) : ""
66
+ });
67
+ panelId = `${this.instanceId}-panel`;
68
+ errorId = `${this.instanceId}-error`;
69
+ draftError = signal(null, ...ngDevMode ? [{ debugName: "draftError" }] : /* istanbul ignore next */ []);
70
+ cvaDisabled = signal(false, ...ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []);
71
+ overlayRef = null;
72
+ restoreFocusElement = null;
73
+ validatorNotified = false;
74
+ onChangeFn = () => {};
75
+ onTouchedFn = () => {};
76
+ onValidatorChangeFn = () => {};
77
+ origin = viewChild.required("origin", ...ngDevMode ? [{ debugName: "origin" }] : /* istanbul ignore next */ []);
78
+ input = viewChild.required("input", ...ngDevMode ? [{ debugName: "input" }] : /* istanbul ignore next */ []);
79
+ panel = viewChild.required("panel", ...ngDevMode ? [{ debugName: "panel" }] : /* istanbul ignore next */ []);
80
+ calendar = viewChild("calendar", ...ngDevMode ? [{ debugName: "calendar" }] : /* istanbul ignore next */ []);
81
+ classes = computed(() => cn("date-picker block w-full", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
82
+ inputClasses = computed(() => cn("date-picker-input w-full", this.isDisabled() ? "opacity-60" : ""), ...ngDevMode ? [{ debugName: "inputClasses" }] : /* istanbul ignore next */ []);
83
+ resolvedId = computed(() => this.id() ?? this.instanceId, ...ngDevMode ? [{ debugName: "resolvedId" }] : /* istanbul ignore next */ []);
84
+ isDisabled = computed(() => this.disabled() || this.cvaDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
85
+ validationErrors = computed(() => {
86
+ const draft = this.draftError();
87
+ if (draft) return draft;
88
+ const value = this.value();
89
+ return value ? this.rangeError(value) : null;
90
+ }, ...ngDevMode ? [{ debugName: "validationErrors" }] : /* istanbul ignore next */ []);
91
+ validationError = computed(() => this.validationErrors() ? this.invalidFormatMessage() : null, ...ngDevMode ? [{ debugName: "validationError" }] : /* istanbul ignore next */ []);
92
+ resolvedAriaDescribedby = computed(() => [this.ariaDescribedby(), this.validationError() ? this.errorId : null].filter((value) => !!value).join(" ") || null, ...ngDevMode ? [{ debugName: "resolvedAriaDescribedby" }] : /* istanbul ignore next */ []);
93
+ constructor() {
94
+ this.destroyRef.onDestroy(() => {
95
+ this.restoreFocusElement = null;
96
+ this.close();
97
+ });
98
+ effect(() => {
99
+ this.validationErrors();
100
+ untracked(() => this.notifyValidatorChange());
101
+ });
102
+ effect(() => {
103
+ if (this.isDisabled() && this.isOpen()) this.close();
104
+ });
105
+ }
106
+ open(restoreFocusElement) {
107
+ if (this.isDisabled() || this.isOpen()) return;
108
+ const originEl = this.origin().nativeElement;
109
+ this.restoreFocusElement = restoreFocusElement ?? (this.documentRef.activeElement instanceof HTMLElement ? this.documentRef.activeElement : this.input().nativeElement);
110
+ this.overlayRef = this.overlay.create({
111
+ positionStrategy: this.overlay.position().flexibleConnectedTo(originEl).withPositions([{
112
+ originX: "start",
113
+ originY: "bottom",
114
+ overlayX: "start",
115
+ overlayY: "top",
116
+ offsetY: 8
117
+ }, {
118
+ originX: "start",
119
+ originY: "top",
120
+ overlayX: "start",
121
+ overlayY: "bottom",
122
+ offsetY: -8
123
+ }]).withPush(true).withViewportMargin(8),
124
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
125
+ hasBackdrop: true,
126
+ backdropClass: "cdk-overlay-transparent-backdrop",
127
+ panelClass: this.panelClass()
128
+ });
129
+ const portal = new TemplatePortal(this.panel(), this.viewContainerRef);
130
+ const overlayRef = this.overlayRef;
131
+ if (!overlayRef) return;
132
+ overlayRef.attach(portal);
133
+ overlayDismissals(overlayRef, originEl).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.close());
134
+ this.isOpen.set(true);
135
+ afterNextRender({ read: () => this.calendar()?.focusActiveCell() }, { injector: this.injector });
136
+ }
137
+ close() {
138
+ if (!this.isOpen()) return;
139
+ this.overlayRef?.dispose();
140
+ this.overlayRef = null;
141
+ this.isOpen.set(false);
142
+ const restoreFocusElement = this.restoreFocusElement;
143
+ this.restoreFocusElement = null;
144
+ this.restoreFocusAfterOverlayTeardown(restoreFocusElement);
145
+ }
146
+ toggle(event) {
147
+ if (this.isOpen()) this.close();
148
+ else this.open(event?.currentTarget instanceof HTMLElement ? event.currentTarget : null);
149
+ }
150
+ onInput(event) {
151
+ const text = event.target.value;
152
+ this.isEditing.set(true);
153
+ this.inputValue.set(text);
154
+ const parsed = parseIsoDate(text);
155
+ if (parsed && this.isSelectable(parsed)) this.setValue(parsed, true);
156
+ else this.draftError.set(null);
157
+ }
158
+ onBlur() {
159
+ this.isEditing.set(false);
160
+ this.commitInput();
161
+ this.onTouchedFn();
162
+ }
163
+ onEnter(event) {
164
+ event.preventDefault();
165
+ this.commitInput();
166
+ }
167
+ onCalendarSelect(date) {
168
+ this.setValue(date, true);
169
+ this.close();
170
+ }
171
+ writeValue(value) {
172
+ this.setValue(value, false);
173
+ }
174
+ registerOnChange(fn) {
175
+ this.onChangeFn = fn;
176
+ }
177
+ registerOnTouched(fn) {
178
+ this.onTouchedFn = fn;
179
+ }
180
+ setDisabledState(state) {
181
+ this.cvaDisabled.set(state);
182
+ }
183
+ validate() {
184
+ return this.validationErrors();
185
+ }
186
+ registerOnValidatorChange(fn) {
187
+ this.onValidatorChangeFn = fn;
188
+ }
189
+ commitInput() {
190
+ const draft = this.inputValue().trim();
191
+ if (!draft && !this.required()) {
192
+ this.setValue(null, true);
193
+ return;
194
+ }
195
+ const parsed = parseIsoDate(draft);
196
+ if (!parsed) {
197
+ this.draftError.set({ dateParse: { text: draft } });
198
+ return;
199
+ }
200
+ const rangeError = this.rangeError(parsed);
201
+ if (rangeError) {
202
+ this.draftError.set(rangeError);
203
+ return;
204
+ }
205
+ this.setValue(parsed, true);
206
+ }
207
+ setValue(value, emit) {
208
+ const next = value ? new Date(value.getTime()) : null;
209
+ this.value.set(next);
210
+ this.inputValue.set(next ? formatIsoDate(next) : "");
211
+ this.draftError.set(null);
212
+ if (emit) this.onChangeFn(next);
213
+ }
214
+ notifyValidatorChange() {
215
+ if (!this.validatorNotified) {
216
+ this.validatorNotified = true;
217
+ return;
218
+ }
219
+ this.onValidatorChangeFn();
220
+ }
221
+ isSelectable(date) {
222
+ return !this.rangeError(date);
223
+ }
224
+ rangeError(date) {
225
+ const day = startOfDay(date).getTime();
226
+ const min = this.min();
227
+ if (min && day < startOfDay(min).getTime()) return { dateMin: {
228
+ min,
229
+ actual: date
230
+ } };
231
+ const max = this.max();
232
+ if (max && day > startOfDay(max).getTime()) return { dateMax: {
233
+ max,
234
+ actual: date
235
+ } };
236
+ const filter = this.dateFilter();
237
+ return filter && !filter(date) ? { dateFilter: { actual: date } } : null;
238
+ }
239
+ restoreFocusAfterOverlayTeardown(element) {
240
+ if (!element?.isConnected || this.isDisabled()) return;
241
+ const view = this.documentRef.defaultView;
242
+ if (!view) {
243
+ queueMicrotask(() => {
244
+ if (element.isConnected && !this.isDisabled()) element.focus();
245
+ });
246
+ return;
247
+ }
248
+ view.requestAnimationFrame(() => {
249
+ if (element.isConnected && !this.isDisabled()) element.focus();
250
+ });
251
+ }
252
+ static ɵfac = i0.ɵɵngDeclareFactory({
253
+ minVersion: "12.0.0",
254
+ version: "22.2.0",
255
+ ngImport: i0,
256
+ type: DatePickerComponent,
257
+ deps: [],
258
+ target: i0.ɵɵFactoryTarget.Component
259
+ });
260
+ static ɵcmp = i0.ɵɵngDeclareComponent({
261
+ minVersion: "17.0.0",
262
+ version: "22.2.0",
263
+ type: DatePickerComponent,
264
+ isStandalone: true,
265
+ selector: "DatePicker",
266
+ inputs: {
267
+ value: {
268
+ classPropertyName: "value",
269
+ publicName: "value",
270
+ isSignal: true,
271
+ isRequired: false,
272
+ transformFunction: null
273
+ },
274
+ id: {
275
+ classPropertyName: "id",
276
+ publicName: "id",
277
+ isSignal: true,
278
+ isRequired: false,
279
+ transformFunction: null
280
+ },
281
+ placeholder: {
282
+ classPropertyName: "placeholder",
283
+ publicName: "placeholder",
284
+ isSignal: true,
285
+ isRequired: false,
286
+ transformFunction: null
287
+ },
288
+ required: {
289
+ classPropertyName: "required",
290
+ publicName: "required",
291
+ isSignal: true,
292
+ isRequired: false,
293
+ transformFunction: null
294
+ },
295
+ min: {
296
+ classPropertyName: "min",
297
+ publicName: "min",
298
+ isSignal: true,
299
+ isRequired: false,
300
+ transformFunction: null
301
+ },
302
+ max: {
303
+ classPropertyName: "max",
304
+ publicName: "max",
305
+ isSignal: true,
306
+ isRequired: false,
307
+ transformFunction: null
308
+ },
309
+ startAt: {
310
+ classPropertyName: "startAt",
311
+ publicName: "startAt",
312
+ isSignal: true,
313
+ isRequired: false,
314
+ transformFunction: null
315
+ },
316
+ startView: {
317
+ classPropertyName: "startView",
318
+ publicName: "startView",
319
+ isSignal: true,
320
+ isRequired: false,
321
+ transformFunction: null
322
+ },
323
+ touchUi: {
324
+ classPropertyName: "touchUi",
325
+ publicName: "touchUi",
326
+ isSignal: true,
327
+ isRequired: false,
328
+ transformFunction: null
329
+ },
330
+ dateFilter: {
331
+ classPropertyName: "dateFilter",
332
+ publicName: "dateFilter",
333
+ isSignal: true,
334
+ isRequired: false,
335
+ transformFunction: null
336
+ },
337
+ panelClass: {
338
+ classPropertyName: "panelClass",
339
+ publicName: "panelClass",
340
+ isSignal: true,
341
+ isRequired: false,
342
+ transformFunction: null
343
+ },
344
+ panelAriaLabel: {
345
+ classPropertyName: "panelAriaLabel",
346
+ publicName: "panelAriaLabel",
347
+ isSignal: true,
348
+ isRequired: false,
349
+ transformFunction: null
350
+ },
351
+ invalidFormatMessage: {
352
+ classPropertyName: "invalidFormatMessage",
353
+ publicName: "invalidFormatMessage",
354
+ isSignal: true,
355
+ isRequired: false,
356
+ transformFunction: null
357
+ },
358
+ ariaLabel: {
359
+ classPropertyName: "ariaLabel",
360
+ publicName: "aria-label",
361
+ isSignal: true,
362
+ isRequired: false,
363
+ transformFunction: null
364
+ },
365
+ ariaLabelledby: {
366
+ classPropertyName: "ariaLabelledby",
367
+ publicName: "aria-labelledby",
368
+ isSignal: true,
369
+ isRequired: false,
370
+ transformFunction: null
371
+ },
372
+ ariaDescribedby: {
373
+ classPropertyName: "ariaDescribedby",
374
+ publicName: "aria-describedby",
375
+ isSignal: true,
376
+ isRequired: false,
377
+ transformFunction: null
378
+ },
379
+ disabled: {
380
+ classPropertyName: "disabled",
381
+ publicName: "disabled",
382
+ isSignal: true,
383
+ isRequired: false,
384
+ transformFunction: null
385
+ },
386
+ class: {
387
+ classPropertyName: "class",
388
+ publicName: "class",
389
+ isSignal: true,
390
+ isRequired: false,
391
+ transformFunction: null
392
+ }
393
+ },
394
+ outputs: { value: "valueChange" },
395
+ host: { properties: { "class": "classes()" } },
396
+ providers: [{
397
+ provide: NG_VALUE_ACCESSOR,
398
+ useExisting: forwardRef(() => DatePickerComponent),
399
+ multi: true
400
+ }, {
401
+ provide: NG_VALIDATORS,
402
+ useExisting: forwardRef(() => DatePickerComponent),
403
+ multi: true
404
+ }],
405
+ viewQueries: [
406
+ {
407
+ propertyName: "origin",
408
+ first: true,
409
+ predicate: ["origin"],
410
+ descendants: true,
411
+ isSignal: true
412
+ },
413
+ {
414
+ propertyName: "input",
415
+ first: true,
416
+ predicate: ["input"],
417
+ descendants: true,
418
+ isSignal: true
419
+ },
420
+ {
421
+ propertyName: "panel",
422
+ first: true,
423
+ predicate: ["panel"],
424
+ descendants: true,
425
+ isSignal: true
426
+ },
427
+ {
428
+ propertyName: "calendar",
429
+ first: true,
430
+ predicate: ["calendar"],
431
+ descendants: true,
432
+ isSignal: true
433
+ }
434
+ ],
435
+ ngImport: i0,
436
+ template: `
323
437
  <div #origin class="date-picker-shell">
324
438
  <input
325
439
  #input
@@ -394,14 +508,48 @@ class DatePickerComponent {
394
508
  />
395
509
  </div>
396
510
  </ng-template>
397
- `, isInline: true, styles: [":host{display:block;min-width:0}.date-picker-shell{position:relative;width:100%}.date-picker-input{display:block;width:100%;height:var(--control-height-md);min-width:0;border:1px solid hsl(var(--input));border-radius:var(--radius);background:transparent;padding:calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 11) calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 3);color:hsl(var(--foreground));font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--text-sm--line-height);box-shadow:var(--shadow-sm, 0 1px 2px hsl(var(--foreground) / .05));transition:border-color .15s ease,box-shadow .15s ease}.date-picker-input::placeholder{color:hsl(var(--muted-foreground))}.date-picker-input:hover:not(:disabled){border-color:hsl(var(--foreground) / .45)}.date-picker-input:focus-visible{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 1px hsl(var(--ring))}.date-picker-input:disabled{cursor:not-allowed;background:hsl(var(--muted) / .45)}.date-picker-toggle{position:absolute;inset-block-start:50%;inset-inline-end:var(--spacing-base);display:inline-flex;width:calc(var(--spacing-base) * 7);height:calc(var(--spacing-base) * 7);transform:translateY(-50%);align-items:center;justify-content:center;border:0;border-radius:calc(var(--radius) - .125rem);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background-color .15s ease,color .15s ease}.date-picker-toggle:hover:not(:disabled){background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.date-picker-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.date-picker-toggle:disabled{cursor:not-allowed;opacity:.5}.date-picker-panel{width:fit-content;border:1px solid hsl(var(--border));border-radius:var(--radius);background:hsl(var(--popover));color:hsl(var(--popover-foreground));box-shadow:var(--shadow-md, 0 12px 24px -16px hsl(var(--foreground) / .35))}.date-picker-panel Calendar{border:0;border-radius:inherit;background:transparent}.date-picker-panel[data-touch-ui=true]{max-width:min(100vw - calc(var(--spacing-base) * 8),calc(var(--spacing-base) * 88))}.date-picker-error{margin:calc(var(--spacing-base) * 1.5) 0 0;color:hsl(var(--destructive));font-size:var(--text-sm);line-height:var(--text-sm--line-height)}\n"], dependencies: [{ kind: "component", type: CalendarComponent, selector: "Calendar", inputs: ["value", "min", "max", "startAt", "startView", "dateFilter", "disabled", "class"], outputs: ["valueChange"] }] });
398
- }
399
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DatePickerComponent, decorators: [{
400
- type: Component,
401
- args: [{ selector: 'DatePicker', imports: [CalendarComponent], providers: [
402
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },
403
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },
404
- ], host: { '[class]': 'classes()' }, template: `
511
+ `,
512
+ isInline: true,
513
+ styles: [":host{display:block;min-width:0}.date-picker-shell{position:relative;width:100%}.date-picker-input{display:block;width:100%;height:var(--control-height-md);min-width:0;border:1px solid hsl(var(--input));border-radius:var(--radius);background:transparent;padding:calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 11) calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 3);color:hsl(var(--foreground));font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--text-sm--line-height);box-shadow:var(--shadow-sm, 0 1px 2px hsl(var(--foreground) / .05));transition:border-color .15s ease,box-shadow .15s ease}.date-picker-input::placeholder{color:hsl(var(--muted-foreground))}.date-picker-input:hover:not(:disabled){border-color:hsl(var(--foreground) / .45)}.date-picker-input:focus-visible{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 1px hsl(var(--ring))}.date-picker-input:disabled{cursor:not-allowed;background:hsl(var(--muted) / .45)}.date-picker-toggle{position:absolute;inset-block-start:50%;inset-inline-end:var(--spacing-base);display:inline-flex;width:calc(var(--spacing-base) * 7);height:calc(var(--spacing-base) * 7);transform:translateY(-50%);align-items:center;justify-content:center;border:0;border-radius:calc(var(--radius) - .125rem);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background-color .15s ease,color .15s ease}.date-picker-toggle:hover:not(:disabled){background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.date-picker-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.date-picker-toggle:disabled{cursor:not-allowed;opacity:.5}.date-picker-panel{width:fit-content;border:1px solid hsl(var(--border));border-radius:var(--radius);background:hsl(var(--popover));color:hsl(var(--popover-foreground));box-shadow:var(--shadow-md, 0 12px 24px -16px hsl(var(--foreground) / .35))}.date-picker-panel Calendar{border:0;border-radius:inherit;background:transparent}.date-picker-panel[data-touch-ui=true]{max-width:min(100vw - calc(var(--spacing-base) * 8),calc(var(--spacing-base) * 88))}.date-picker-error{margin:calc(var(--spacing-base) * 1.5) 0 0;color:hsl(var(--destructive));font-size:var(--text-sm);line-height:var(--text-sm--line-height)}\n"],
514
+ dependencies: [{
515
+ kind: "component",
516
+ type: CalendarComponent,
517
+ selector: "Calendar",
518
+ inputs: [
519
+ "value",
520
+ "min",
521
+ "max",
522
+ "startAt",
523
+ "startView",
524
+ "dateFilter",
525
+ "disabled",
526
+ "class"
527
+ ],
528
+ outputs: ["valueChange"]
529
+ }]
530
+ });
531
+ };
532
+ i0.ɵɵngDeclareClassMetadata({
533
+ minVersion: "12.0.0",
534
+ version: "22.2.0",
535
+ ngImport: i0,
536
+ type: DatePickerComponent,
537
+ decorators: [{
538
+ type: Component,
539
+ args: [{
540
+ selector: "DatePicker",
541
+ imports: [CalendarComponent],
542
+ providers: [{
543
+ provide: NG_VALUE_ACCESSOR,
544
+ useExisting: forwardRef(() => DatePickerComponent),
545
+ multi: true
546
+ }, {
547
+ provide: NG_VALIDATORS,
548
+ useExisting: forwardRef(() => DatePickerComponent),
549
+ multi: true
550
+ }],
551
+ host: { "[class]": "classes()" },
552
+ template: `
405
553
  <div #origin class="date-picker-shell">
406
554
  <input
407
555
  #input
@@ -476,11 +624,175 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
476
624
  />
477
625
  </div>
478
626
  </ng-template>
479
- `, styles: [":host{display:block;min-width:0}.date-picker-shell{position:relative;width:100%}.date-picker-input{display:block;width:100%;height:var(--control-height-md);min-width:0;border:1px solid hsl(var(--input));border-radius:var(--radius);background:transparent;padding:calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 11) calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 3);color:hsl(var(--foreground));font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--text-sm--line-height);box-shadow:var(--shadow-sm, 0 1px 2px hsl(var(--foreground) / .05));transition:border-color .15s ease,box-shadow .15s ease}.date-picker-input::placeholder{color:hsl(var(--muted-foreground))}.date-picker-input:hover:not(:disabled){border-color:hsl(var(--foreground) / .45)}.date-picker-input:focus-visible{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 1px hsl(var(--ring))}.date-picker-input:disabled{cursor:not-allowed;background:hsl(var(--muted) / .45)}.date-picker-toggle{position:absolute;inset-block-start:50%;inset-inline-end:var(--spacing-base);display:inline-flex;width:calc(var(--spacing-base) * 7);height:calc(var(--spacing-base) * 7);transform:translateY(-50%);align-items:center;justify-content:center;border:0;border-radius:calc(var(--radius) - .125rem);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background-color .15s ease,color .15s ease}.date-picker-toggle:hover:not(:disabled){background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.date-picker-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.date-picker-toggle:disabled{cursor:not-allowed;opacity:.5}.date-picker-panel{width:fit-content;border:1px solid hsl(var(--border));border-radius:var(--radius);background:hsl(var(--popover));color:hsl(var(--popover-foreground));box-shadow:var(--shadow-md, 0 12px 24px -16px hsl(var(--foreground) / .35))}.date-picker-panel Calendar{border:0;border-radius:inherit;background:transparent}.date-picker-panel[data-touch-ui=true]{max-width:min(100vw - calc(var(--spacing-base) * 8),calc(var(--spacing-base) * 88))}.date-picker-error{margin:calc(var(--spacing-base) * 1.5) 0 0;color:hsl(var(--destructive));font-size:var(--text-sm);line-height:var(--text-sm--line-height)}\n"] }]
480
- }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], startAt: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAt", required: false }] }], startView: [{ type: i0.Input, args: [{ isSignal: true, alias: "startView", required: false }] }], touchUi: [{ type: i0.Input, args: [{ isSignal: true, alias: "touchUi", required: false }] }], dateFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFilter", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], panelAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelAriaLabel", required: false }] }], invalidFormatMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalidFormatMessage", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], origin: [{ type: i0.ViewChild, args: ['origin', { isSignal: true }] }], input: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], calendar: [{ type: i0.ViewChild, args: ['calendar', { isSignal: true }] }] } });
481
-
482
- /**
483
- * Generated bundle index. Do not edit.
484
- */
485
-
486
- export { DatePickerComponent };
627
+ `,
628
+ styles: [":host{display:block;min-width:0}.date-picker-shell{position:relative;width:100%}.date-picker-input{display:block;width:100%;height:var(--control-height-md);min-width:0;border:1px solid hsl(var(--input));border-radius:var(--radius);background:transparent;padding:calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 11) calc(var(--spacing-base) * 2) calc(var(--spacing-base) * 3);color:hsl(var(--foreground));font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--text-sm--line-height);box-shadow:var(--shadow-sm, 0 1px 2px hsl(var(--foreground) / .05));transition:border-color .15s ease,box-shadow .15s ease}.date-picker-input::placeholder{color:hsl(var(--muted-foreground))}.date-picker-input:hover:not(:disabled){border-color:hsl(var(--foreground) / .45)}.date-picker-input:focus-visible{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 1px hsl(var(--ring))}.date-picker-input:disabled{cursor:not-allowed;background:hsl(var(--muted) / .45)}.date-picker-toggle{position:absolute;inset-block-start:50%;inset-inline-end:var(--spacing-base);display:inline-flex;width:calc(var(--spacing-base) * 7);height:calc(var(--spacing-base) * 7);transform:translateY(-50%);align-items:center;justify-content:center;border:0;border-radius:calc(var(--radius) - .125rem);background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background-color .15s ease,color .15s ease}.date-picker-toggle:hover:not(:disabled){background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.date-picker-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.date-picker-toggle:disabled{cursor:not-allowed;opacity:.5}.date-picker-panel{width:fit-content;border:1px solid hsl(var(--border));border-radius:var(--radius);background:hsl(var(--popover));color:hsl(var(--popover-foreground));box-shadow:var(--shadow-md, 0 12px 24px -16px hsl(var(--foreground) / .35))}.date-picker-panel Calendar{border:0;border-radius:inherit;background:transparent}.date-picker-panel[data-touch-ui=true]{max-width:min(100vw - calc(var(--spacing-base) * 8),calc(var(--spacing-base) * 88))}.date-picker-error{margin:calc(var(--spacing-base) * 1.5) 0 0;color:hsl(var(--destructive));font-size:var(--text-sm);line-height:var(--text-sm--line-height)}\n"]
629
+ }]
630
+ }],
631
+ ctorParameters: () => [],
632
+ propDecorators: {
633
+ value: [{
634
+ type: i0.Input,
635
+ args: [{
636
+ isSignal: true,
637
+ alias: "value",
638
+ required: false
639
+ }]
640
+ }, {
641
+ type: i0.Output,
642
+ args: ["valueChange"]
643
+ }],
644
+ id: [{
645
+ type: i0.Input,
646
+ args: [{
647
+ isSignal: true,
648
+ alias: "id",
649
+ required: false
650
+ }]
651
+ }],
652
+ placeholder: [{
653
+ type: i0.Input,
654
+ args: [{
655
+ isSignal: true,
656
+ alias: "placeholder",
657
+ required: false
658
+ }]
659
+ }],
660
+ required: [{
661
+ type: i0.Input,
662
+ args: [{
663
+ isSignal: true,
664
+ alias: "required",
665
+ required: false
666
+ }]
667
+ }],
668
+ min: [{
669
+ type: i0.Input,
670
+ args: [{
671
+ isSignal: true,
672
+ alias: "min",
673
+ required: false
674
+ }]
675
+ }],
676
+ max: [{
677
+ type: i0.Input,
678
+ args: [{
679
+ isSignal: true,
680
+ alias: "max",
681
+ required: false
682
+ }]
683
+ }],
684
+ startAt: [{
685
+ type: i0.Input,
686
+ args: [{
687
+ isSignal: true,
688
+ alias: "startAt",
689
+ required: false
690
+ }]
691
+ }],
692
+ startView: [{
693
+ type: i0.Input,
694
+ args: [{
695
+ isSignal: true,
696
+ alias: "startView",
697
+ required: false
698
+ }]
699
+ }],
700
+ touchUi: [{
701
+ type: i0.Input,
702
+ args: [{
703
+ isSignal: true,
704
+ alias: "touchUi",
705
+ required: false
706
+ }]
707
+ }],
708
+ dateFilter: [{
709
+ type: i0.Input,
710
+ args: [{
711
+ isSignal: true,
712
+ alias: "dateFilter",
713
+ required: false
714
+ }]
715
+ }],
716
+ panelClass: [{
717
+ type: i0.Input,
718
+ args: [{
719
+ isSignal: true,
720
+ alias: "panelClass",
721
+ required: false
722
+ }]
723
+ }],
724
+ panelAriaLabel: [{
725
+ type: i0.Input,
726
+ args: [{
727
+ isSignal: true,
728
+ alias: "panelAriaLabel",
729
+ required: false
730
+ }]
731
+ }],
732
+ invalidFormatMessage: [{
733
+ type: i0.Input,
734
+ args: [{
735
+ isSignal: true,
736
+ alias: "invalidFormatMessage",
737
+ required: false
738
+ }]
739
+ }],
740
+ ariaLabel: [{
741
+ type: i0.Input,
742
+ args: [{
743
+ isSignal: true,
744
+ alias: "aria-label",
745
+ required: false
746
+ }]
747
+ }],
748
+ ariaLabelledby: [{
749
+ type: i0.Input,
750
+ args: [{
751
+ isSignal: true,
752
+ alias: "aria-labelledby",
753
+ required: false
754
+ }]
755
+ }],
756
+ ariaDescribedby: [{
757
+ type: i0.Input,
758
+ args: [{
759
+ isSignal: true,
760
+ alias: "aria-describedby",
761
+ required: false
762
+ }]
763
+ }],
764
+ disabled: [{
765
+ type: i0.Input,
766
+ args: [{
767
+ isSignal: true,
768
+ alias: "disabled",
769
+ required: false
770
+ }]
771
+ }],
772
+ class: [{
773
+ type: i0.Input,
774
+ args: [{
775
+ isSignal: true,
776
+ alias: "class",
777
+ required: false
778
+ }]
779
+ }],
780
+ origin: [{
781
+ type: i0.ViewChild,
782
+ args: ["origin", { isSignal: true }]
783
+ }],
784
+ input: [{
785
+ type: i0.ViewChild,
786
+ args: ["input", { isSignal: true }]
787
+ }],
788
+ panel: [{
789
+ type: i0.ViewChild,
790
+ args: ["panel", { isSignal: true }]
791
+ }],
792
+ calendar: [{
793
+ type: i0.ViewChild,
794
+ args: ["calendar", { isSignal: true }]
795
+ }]
796
+ }
797
+ });
798
+ export { DatePickerComponent };