@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.11

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 (598) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/action-bar.json +4 -4
  4. package/docs/action-bar.md +3 -3
  5. package/docs/alert.json +7 -1
  6. package/docs/alert.md +3 -3
  7. package/docs/app-shell.examples.md +1 -1
  8. package/docs/app-shell.json +5 -5
  9. package/docs/app-shell.md +2 -2
  10. package/docs/avatar.json +22 -1
  11. package/docs/avatar.md +5 -3
  12. package/docs/badge.json +7 -1
  13. package/docs/badge.md +3 -3
  14. package/docs/button-group.json +2 -0
  15. package/docs/button-group.md +1 -1
  16. package/docs/button.json +51 -11
  17. package/docs/button.md +10 -6
  18. package/docs/calendar.json +8 -1
  19. package/docs/calendar.md +3 -2
  20. package/docs/cascader.json +1 -0
  21. package/docs/cascader.md +1 -1
  22. package/docs/chart.examples.md +1 -1
  23. package/docs/chart.json +10 -1
  24. package/docs/chart.md +3 -2
  25. package/docs/checkbox.json +7 -0
  26. package/docs/checkbox.md +1 -0
  27. package/docs/code-block.json +92 -92
  28. package/docs/code-block.md +69 -69
  29. package/docs/combobox.json +1 -0
  30. package/docs/combobox.md +1 -1
  31. package/docs/command-palette.json +1 -0
  32. package/docs/command-palette.md +1 -1
  33. package/docs/currency-field.json +40 -1
  34. package/docs/currency-field.md +5 -1
  35. package/docs/data-grid.examples.md +2 -2
  36. package/docs/data-grid.json +45 -7
  37. package/docs/data-grid.md +3 -1
  38. package/docs/data-grid.props.md +7 -4
  39. package/docs/data-list.json +2 -1
  40. package/docs/data-list.md +1 -1
  41. package/docs/date-field.json +9 -1
  42. package/docs/date-field.md +3 -2
  43. package/docs/date-picker.examples.md +36 -0
  44. package/docs/date-picker.json +20 -5
  45. package/docs/date-picker.md +5 -4
  46. package/docs/datetime-field.json +1 -0
  47. package/docs/datetime-field.md +1 -1
  48. package/docs/detail-panel.json +4 -2
  49. package/docs/detail-panel.md +8 -3
  50. package/docs/dialog.examples.md +158 -136
  51. package/docs/dialog.json +36 -11
  52. package/docs/dialog.md +4 -2
  53. package/docs/dialog.props.md +1 -1
  54. package/docs/drawer.json +11 -4
  55. package/docs/drawer.md +4 -3
  56. package/docs/entity-picker.json +19 -4
  57. package/docs/entity-picker.md +8 -6
  58. package/docs/event-calendar.json +7 -0
  59. package/docs/event-calendar.md +3 -2
  60. package/docs/filter-bar.json +118 -118
  61. package/docs/filter-bar.md +79 -79
  62. package/docs/form.json +2 -1
  63. package/docs/form.md +1 -1
  64. package/docs/guidelines/README.md +27 -0
  65. package/docs/guidelines/async-feedback.md +129 -0
  66. package/docs/guidelines/browsing.md +74 -0
  67. package/docs/guidelines/builders.md +97 -0
  68. package/docs/guidelines/composition.md +143 -0
  69. package/docs/guidelines/conversations.md +59 -0
  70. package/docs/guidelines/errors-and-conflicts.md +71 -0
  71. package/docs/guidelines/forms.md +202 -0
  72. package/docs/guidelines/index.md +130 -0
  73. package/docs/guidelines/layout-alignment.md +105 -0
  74. package/docs/guidelines/ledgers.md +45 -0
  75. package/docs/guidelines/list-pages.md +206 -0
  76. package/docs/guidelines/overviews.md +76 -0
  77. package/docs/guidelines/own-elements.md +115 -0
  78. package/docs/guidelines/reading-permissions.md +55 -0
  79. package/docs/guidelines/record-pages.md +178 -0
  80. package/docs/guidelines/reports.md +123 -0
  81. package/docs/guidelines/shell-composition.md +94 -0
  82. package/docs/guidelines/workspaces.md +46 -0
  83. package/docs/icon.json +3 -1
  84. package/docs/icon.md +3 -3
  85. package/docs/index.md +12 -0
  86. package/docs/inline-message.json +14 -2
  87. package/docs/inline-message.md +4 -3
  88. package/docs/list-item.json +9 -1
  89. package/docs/list-item.md +3 -3
  90. package/docs/list.json +19 -1
  91. package/docs/list.md +3 -1
  92. package/docs/markdown.json +79 -79
  93. package/docs/markdown.md +65 -65
  94. package/docs/menu.json +12 -0
  95. package/docs/menu.md +2 -0
  96. package/docs/message.json +7 -1
  97. package/docs/message.md +3 -3
  98. package/docs/multi-select.json +1 -0
  99. package/docs/multi-select.md +1 -1
  100. package/docs/notification-center.json +4 -0
  101. package/docs/notification-center.md +2 -2
  102. package/docs/number-field.json +1 -0
  103. package/docs/number-field.md +1 -1
  104. package/docs/otp-input.json +1 -0
  105. package/docs/otp-input.md +1 -1
  106. package/docs/page-header.json +22 -5
  107. package/docs/page-header.md +6 -4
  108. package/docs/page.json +2 -0
  109. package/docs/page.md +2 -1
  110. package/docs/popover.json +1 -1
  111. package/docs/progress-indicator.json +4 -3
  112. package/docs/progress-indicator.md +4 -4
  113. package/docs/prompt-composer.json +41 -1
  114. package/docs/prompt-composer.md +5 -1
  115. package/docs/rating.json +5 -3
  116. package/docs/rating.md +6 -6
  117. package/docs/section.json +28 -16
  118. package/docs/section.md +12 -10
  119. package/docs/segmented-control.json +36 -12
  120. package/docs/segmented-control.md +17 -1
  121. package/docs/select.json +1 -0
  122. package/docs/select.md +1 -1
  123. package/docs/side-navigation.json +1 -0
  124. package/docs/side-navigation.md +1 -1
  125. package/docs/skills/build-own-element/SKILL.md +90 -0
  126. package/docs/skills/compose-screen/SKILL.md +103 -0
  127. package/docs/skills/index.md +9 -0
  128. package/docs/skills/review-screen/SKILL.md +79 -0
  129. package/docs/skills/theme-app/SKILL.md +98 -0
  130. package/docs/skills/waiting-states/SKILL.md +143 -0
  131. package/docs/sparkline.json +5 -2
  132. package/docs/sparkline.md +4 -4
  133. package/docs/split-button.json +4 -1
  134. package/docs/split-button.md +3 -3
  135. package/docs/stat-card.json +5 -1
  136. package/docs/stat-card.md +3 -3
  137. package/docs/table.examples.md +3 -3
  138. package/docs/table.json +85 -3
  139. package/docs/table.md +12 -1
  140. package/docs/tabs.json +17 -7
  141. package/docs/tabs.md +3 -2
  142. package/docs/tag.json +14 -4
  143. package/docs/tag.md +6 -6
  144. package/docs/tags-input.json +29 -2
  145. package/docs/tags-input.md +4 -1
  146. package/docs/text-field.json +2 -1
  147. package/docs/text-field.md +2 -2
  148. package/docs/textarea.json +1 -0
  149. package/docs/textarea.md +1 -1
  150. package/docs/time-field.json +1 -0
  151. package/docs/time-field.md +1 -1
  152. package/docs/timeline.json +138 -132
  153. package/docs/timeline.md +125 -125
  154. package/docs/toast.json +8 -1
  155. package/docs/toast.md +3 -3
  156. package/docs/toggle-group.json +14 -3
  157. package/docs/toggle-group.md +3 -3
  158. package/docs/toggle.json +12 -3
  159. package/docs/toggle.md +3 -3
  160. package/docs/tokens.md +467 -0
  161. package/docs/toolbar.json +1 -1
  162. package/docs/toolbar.md +1 -1
  163. package/docs/tour.json +1 -1
  164. package/docs/typography.json +4 -2
  165. package/docs/typography.md +5 -5
  166. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  167. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-action-bar.mjs +27 -12
  169. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-action-sheet.mjs +48 -29
  171. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-alert.mjs +18 -11
  173. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  175. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  177. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  179. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  181. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  183. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-badge.mjs +14 -10
  185. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  187. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  189. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-button.mjs +120 -29
  191. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  193. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-card.mjs +18 -16
  195. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  197. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-cascader.mjs +180 -66
  199. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-chart.mjs +53 -20
  201. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  203. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  205. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  207. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  209. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  211. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  213. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-combobox.mjs +118 -39
  215. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-command-palette.mjs +162 -54
  217. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-container.mjs +6 -4
  219. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  221. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  223. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  225. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-data-grid.mjs +480 -129
  227. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  229. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  231. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  233. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  235. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  237. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  239. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  241. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  243. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-detail-panel.mjs +48 -30
  245. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  247. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-divider.mjs +7 -5
  249. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-drawer.mjs +91 -37
  251. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-entity-picker.mjs +474 -75
  253. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  255. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  257. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-field.mjs +35 -15
  259. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-filter-bar.mjs +118 -51
  261. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-form.mjs +18 -10
  263. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  265. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-grid.mjs +4 -2
  267. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  269. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  271. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-icon.mjs +6 -3
  273. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-image.mjs +13 -10
  275. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-import-export-center.mjs +175 -99
  277. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  279. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-inline.mjs +4 -2
  281. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  283. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-link.mjs +5 -3
  285. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  287. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-list.mjs +37 -22
  289. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  291. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  293. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  295. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-menu.mjs +51 -29
  297. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  299. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-message-scroller.mjs +34 -15
  301. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-message.mjs +119 -51
  303. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-multi-select.mjs +195 -87
  305. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  307. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  309. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  311. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  313. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-page-header.mjs +90 -48
  315. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-page.mjs +38 -10
  317. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  319. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-popover.mjs +32 -19
  321. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  323. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-prompt-composer.mjs +57 -20
  325. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-prose.mjs +14 -11
  327. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  329. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-rating.mjs +138 -82
  331. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  333. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  335. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  337. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-section.mjs +53 -18
  339. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  341. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-select.mjs +190 -94
  343. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  345. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  347. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-slider.mjs +31 -11
  349. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  351. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-split-button.mjs +37 -11
  353. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  355. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-stack.mjs +4 -2
  357. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  359. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  361. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  363. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-switch.mjs +15 -10
  365. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  367. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-table.mjs +243 -73
  369. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  371. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-tag.mjs +19 -12
  373. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  375. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-text-field.mjs +55 -15
  377. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  379. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  381. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  383. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  385. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-timeline.mjs +147 -64
  387. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-toast.mjs +43 -31
  389. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  391. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  393. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-toolbar.mjs +27 -12
  395. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  397. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  399. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-tour.mjs +47 -22
  401. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  403. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-tree.mjs +80 -26
  405. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  406. package/fesm2022/slotted-angular-typography.mjs +8 -4
  407. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  408. package/fesm2022/slotted-angular-upload.mjs +125 -57
  409. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  410. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  411. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  412. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  413. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  414. package/package.json +3 -3
  415. package/types/slotted-angular-accordion.d.ts.map +1 -1
  416. package/types/slotted-angular-action-bar.d.ts +2 -0
  417. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  418. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  419. package/types/slotted-angular-alert.d.ts +2 -2
  420. package/types/slotted-angular-alert.d.ts.map +1 -1
  421. package/types/slotted-angular-app-shell.d.ts +11 -3
  422. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  423. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  424. package/types/slotted-angular-attachment.d.ts +1 -1
  425. package/types/slotted-angular-attachment.d.ts.map +1 -1
  426. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  427. package/types/slotted-angular-avatar.d.ts +11 -3
  428. package/types/slotted-angular-avatar.d.ts.map +1 -1
  429. package/types/slotted-angular-badge.d.ts +1 -1
  430. package/types/slotted-angular-badge.d.ts.map +1 -1
  431. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  432. package/types/slotted-angular-button-group.d.ts +1 -1
  433. package/types/slotted-angular-button-group.d.ts.map +1 -1
  434. package/types/slotted-angular-button.d.ts +33 -13
  435. package/types/slotted-angular-button.d.ts.map +1 -1
  436. package/types/slotted-angular-calendar.d.ts +30 -2
  437. package/types/slotted-angular-calendar.d.ts.map +1 -1
  438. package/types/slotted-angular-card.d.ts.map +1 -1
  439. package/types/slotted-angular-carousel.d.ts.map +1 -1
  440. package/types/slotted-angular-cascader.d.ts.map +1 -1
  441. package/types/slotted-angular-chart.d.ts +10 -0
  442. package/types/slotted-angular-chart.d.ts.map +1 -1
  443. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  444. package/types/slotted-angular-checkbox.d.ts +7 -1
  445. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  446. package/types/slotted-angular-code-block.d.ts +1 -1
  447. package/types/slotted-angular-code-block.d.ts.map +1 -1
  448. package/types/slotted-angular-collapsible.d.ts +1 -1
  449. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  450. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  451. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  452. package/types/slotted-angular-combobox.d.ts +5 -1
  453. package/types/slotted-angular-combobox.d.ts.map +1 -1
  454. package/types/slotted-angular-command-palette.d.ts +10 -1
  455. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  456. package/types/slotted-angular-container.d.ts.map +1 -1
  457. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  458. package/types/slotted-angular-currency-field.d.ts +63 -15
  459. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  460. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  461. package/types/slotted-angular-data-grid.d.ts +72 -4
  462. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  463. package/types/slotted-angular-data-list.d.ts.map +1 -1
  464. package/types/slotted-angular-date-field.d.ts +11 -1
  465. package/types/slotted-angular-date-field.d.ts.map +1 -1
  466. package/types/slotted-angular-date-picker.d.ts +38 -12
  467. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  468. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  469. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  470. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  471. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  472. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  473. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  474. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-description-list.d.ts.map +1 -1
  476. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  477. package/types/slotted-angular-dialog.d.ts +10 -3
  478. package/types/slotted-angular-dialog.d.ts.map +1 -1
  479. package/types/slotted-angular-divider.d.ts.map +1 -1
  480. package/types/slotted-angular-drawer.d.ts +12 -1
  481. package/types/slotted-angular-drawer.d.ts.map +1 -1
  482. package/types/slotted-angular-entity-picker.d.ts +63 -15
  483. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  484. package/types/slotted-angular-event-calendar.d.ts +9 -2
  485. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  486. package/types/slotted-angular-field-group.d.ts.map +1 -1
  487. package/types/slotted-angular-field.d.ts.map +1 -1
  488. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  489. package/types/slotted-angular-form.d.ts.map +1 -1
  490. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  491. package/types/slotted-angular-grid.d.ts.map +1 -1
  492. package/types/slotted-angular-highlight.d.ts.map +1 -1
  493. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  494. package/types/slotted-angular-icon.d.ts +2 -2
  495. package/types/slotted-angular-icon.d.ts.map +1 -1
  496. package/types/slotted-angular-image.d.ts.map +1 -1
  497. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  498. package/types/slotted-angular-inline-message.d.ts +25 -25
  499. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  500. package/types/slotted-angular-inline.d.ts.map +1 -1
  501. package/types/slotted-angular-kbd.d.ts.map +1 -1
  502. package/types/slotted-angular-link.d.ts.map +1 -1
  503. package/types/slotted-angular-list-item.d.ts +1 -1
  504. package/types/slotted-angular-list-item.d.ts.map +1 -1
  505. package/types/slotted-angular-list.d.ts +42 -27
  506. package/types/slotted-angular-list.d.ts.map +1 -1
  507. package/types/slotted-angular-listbox.d.ts.map +1 -1
  508. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  509. package/types/slotted-angular-markdown.d.ts.map +1 -1
  510. package/types/slotted-angular-menu.d.ts +11 -2
  511. package/types/slotted-angular-menu.d.ts.map +1 -1
  512. package/types/slotted-angular-menubar.d.ts.map +1 -1
  513. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  514. package/types/slotted-angular-message.d.ts +1 -1
  515. package/types/slotted-angular-message.d.ts.map +1 -1
  516. package/types/slotted-angular-multi-select.d.ts +15 -1
  517. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  518. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  519. package/types/slotted-angular-notification-center.d.ts +1 -1
  520. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  521. package/types/slotted-angular-number-field.d.ts.map +1 -1
  522. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  523. package/types/slotted-angular-page-header.d.ts +15 -6
  524. package/types/slotted-angular-page-header.d.ts.map +1 -1
  525. package/types/slotted-angular-page.d.ts.map +1 -1
  526. package/types/slotted-angular-pagination.d.ts.map +1 -1
  527. package/types/slotted-angular-popover.d.ts.map +1 -1
  528. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  529. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  530. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  531. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  532. package/types/slotted-angular-prose.d.ts.map +1 -1
  533. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  534. package/types/slotted-angular-rating.d.ts +1 -1
  535. package/types/slotted-angular-rating.d.ts.map +1 -1
  536. package/types/slotted-angular-result-state.d.ts.map +1 -1
  537. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  538. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  539. package/types/slotted-angular-section.d.ts +11 -3
  540. package/types/slotted-angular-section.d.ts.map +1 -1
  541. package/types/slotted-angular-segmented-control.d.ts +15 -2
  542. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  543. package/types/slotted-angular-select.d.ts +12 -2
  544. package/types/slotted-angular-select.d.ts.map +1 -1
  545. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  546. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  547. package/types/slotted-angular-slider.d.ts.map +1 -1
  548. package/types/slotted-angular-sparkline.d.ts +7 -1
  549. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  550. package/types/slotted-angular-split-button.d.ts +2 -2
  551. package/types/slotted-angular-split-button.d.ts.map +1 -1
  552. package/types/slotted-angular-splitter.d.ts.map +1 -1
  553. package/types/slotted-angular-stack.d.ts.map +1 -1
  554. package/types/slotted-angular-stat-card.d.ts +1 -1
  555. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  556. package/types/slotted-angular-status-indicator.d.ts +1 -1
  557. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  558. package/types/slotted-angular-stepper.d.ts +1 -1
  559. package/types/slotted-angular-stepper.d.ts.map +1 -1
  560. package/types/slotted-angular-switch.d.ts.map +1 -1
  561. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  562. package/types/slotted-angular-table.d.ts +63 -6
  563. package/types/slotted-angular-table.d.ts.map +1 -1
  564. package/types/slotted-angular-tabs.d.ts +3 -4
  565. package/types/slotted-angular-tabs.d.ts.map +1 -1
  566. package/types/slotted-angular-tag.d.ts +1 -1
  567. package/types/slotted-angular-tag.d.ts.map +1 -1
  568. package/types/slotted-angular-tags-input.d.ts +33 -1
  569. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  570. package/types/slotted-angular-text-field.d.ts.map +1 -1
  571. package/types/slotted-angular-textarea.d.ts.map +1 -1
  572. package/types/slotted-angular-theme.d.ts +1 -1
  573. package/types/slotted-angular-time-field.d.ts.map +1 -1
  574. package/types/slotted-angular-time-picker.d.ts +0 -1
  575. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  576. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  577. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  578. package/types/slotted-angular-timeline.d.ts +1 -1
  579. package/types/slotted-angular-timeline.d.ts.map +1 -1
  580. package/types/slotted-angular-toast.d.ts +3 -3
  581. package/types/slotted-angular-toast.d.ts.map +1 -1
  582. package/types/slotted-angular-toggle-group.d.ts +8 -2
  583. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  584. package/types/slotted-angular-toggle.d.ts +1 -1
  585. package/types/slotted-angular-toggle.d.ts.map +1 -1
  586. package/types/slotted-angular-toolbar.d.ts +2 -0
  587. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  588. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  589. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  590. package/types/slotted-angular-tour.d.ts.map +1 -1
  591. package/types/slotted-angular-transfer.d.ts.map +1 -1
  592. package/types/slotted-angular-tree.d.ts.map +1 -1
  593. package/types/slotted-angular-typography.d.ts +1 -1
  594. package/types/slotted-angular-typography.d.ts.map +1 -1
  595. package/types/slotted-angular-upload.d.ts +2 -2
  596. package/types/slotted-angular-upload.d.ts.map +1 -1
  597. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  598. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-date-field.mjs","sources":["../../date-field/src/date-field-defaults.ts","../../date-field/src/date-field.ts","../../date-field/src/date-field-parts.ts","../../date-field/src/slotted-angular-date-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the control sits at, matching the field around it. */\nexport type DateFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. The three steps `text-field` set, so a form\n * holding a name and a date shows one frame twice rather than two frames.\n */\nexport type DateFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The calendar system the value is written in.\n *\n * One value today, and it is an axis rather than a silence: a second calendar\n * system is a second arithmetic, and declaring the axis now is what keeps its\n * arrival from being a contract break.\n */\nexport type DateFieldCalendar = 'gregory';\n\n/**\n * Two typed digits up to twenty years ahead of this year are this century, and\n * anything above them is the last: `30` is 2030 and `80` is 1980 in 2026.\n *\n * A birth-date field sets it to `0`, and then only a year already past can be\n * typed in two digits. The number is stated rather than inferred because the\n * alternative is two bindings guessing, differently, at what `26` means.\n */\nexport const DATE_FIELD_YEAR_PIVOT = 20;\n\nexport interface DateFieldDefaults {\n calendar: DateFieldCalendar;\n /** `0` is Sunday. Unset means the locale decides. */\n firstDayOfWeek: number | undefined;\n size: DateFieldSize;\n /** Which zone answers \"what is today\". Unset means the runtime's own. */\n timeZone: string | undefined;\n variant: DateFieldVariant;\n yearPivot: number;\n}\n\nconst FALLBACK: DateFieldDefaults = {\n calendar: 'gregory',\n firstDayOfWeek: undefined,\n size: 'md',\n timeZone: undefined,\n variant: 'outline',\n yearPivot: DATE_FIELD_YEAR_PIVOT,\n};\n\nexport const DATE_FIELD_DEFAULTS = new InjectionToken<DateFieldDefaults>(\n 'slotted date field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its dates look like, which zone answers\n * \"today\" and how a two-digit year resolves, rather than repeating the same\n * inputs on every control in a form. A control that states any of them itself\n * still wins. The locale that writes the dates, and the clear button's name,\n * come from the language in force (`provideSlotted`).\n */\nexport function provideDateFieldDefaults(defaults: Partial<DateFieldDefaults>) {\n return {\n provide: DATE_FIELD_DEFAULTS,\n useFactory: (): DateFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a date field renders as here, before it states anything of its own. */\nexport function injectDateFieldDefaults(): DateFieldDefaults {\n return inject(DATE_FIELD_DEFAULTS);\n}\n","import {\n boundSegment,\n clearSegment,\n commitTyping,\n createDateFormat,\n dateOf,\n EMPTY_SEGMENTS,\n fieldRange,\n isDateInRange,\n isSameDate,\n plainDate,\n segmentsOf,\n stepSegment,\n toISODate,\n todayIn,\n typeDigit,\n} from '@slotted/core/date';\nimport type { DateFieldName, PlainDate, SegmentState } from '@slotted/core/date';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n dateFieldMessages,\n type DateFieldMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateFieldDefaults } from './date-field-defaults';\nimport type { DateFieldCalendar, DateFieldSize, DateFieldVariant } from './date-field-defaults';\n\n/**\n * How far `PageUp` and `PageDown` move each field.\n *\n * Five is the APG spin-button example's step, adopted for the day and the\n * month. The year departs: five years is not a page of years, and ten is the\n * step the calendar's own year view pages by, so the two agree. The cost is\n * written in `specs/components/date-field/contract.json` under `departures`.\n */\nconst PAGE_STEP: Record<DateFieldName, number> = { day: 5, month: 5, year: 10 };\n\n/**\n * The hidden element carrying the whole date needs an identifier the group can\n * point `aria-labelledby` at, and Angular has no `useId`. A module counter is\n * what the framework leaves: it is stable for a given render order, which is\n * what hydration needs, and it never reaches the public surface.\n */\nlet sequence = 0;\n\n/** What a request carries beyond the value. */\nexport interface DateFieldChangeRequest extends ChangeRequest<PlainDate | null> {\n readonly segments: SegmentState;\n}\n\n/**\n * A segmented date control: one spin button per field, in the order the locale\n * writes them.\n *\n * **The frame is not the control.** The element carrying `data-ui` is the\n * consumer's own box with no role; `role=\"group\"` is on the row of segments,\n * which is what the APG's spin-button example names as the thing that tells a\n * screen-reader user that three buttons are one date.\n *\n * **Angular renders the segments and React renders the segments.** The two\n * bindings share the arithmetic in `@slotted/core/date` and nothing else: this\n * one is a component with a template and a `ControlValueAccessor`, because a\n * date belongs in a Reactive Form and Angular has the integration point for it.\n * It also implements `Validator`, which React has no equivalent of and which is\n * the asymmetry `references/frameworks.md` asks to be recorded rather than\n * levelled away — `min`, `max` and `isDateUnavailable` are validity this\n * control owns and no other validator can see.\n *\n * **The segments are the state and the value is derived.** A date with a day\n * and a month and no year is not a date, so the value is `null` — and that is\n * not the same as an empty field. The request carries the segments so a\n * consumer can tell them apart.\n */\n@Component({\n selector: '[slDateField]',\n standalone: true,\n exportAs: 'slDateField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slDateFieldStart]\" />\n <div\n data-part=\"segments\"\n role=\"group\"\n [attr.id]=\"controlId()\"\n [attr.aria-label]=\"label() ?? writtenLabel\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n (paste)=\"onPaste($event)\"\n >\n @for (part of format().pattern; track $index) {\n @if (part.type === 'literal') {\n <span data-part=\"literal\" aria-hidden=\"true\">{{ part.value }}</span>\n } @else {\n <div\n data-part=\"segment\"\n role=\"spinbutton\"\n [attr.data-field]=\"part.type\"\n [attr.data-placeholder]=\"valueOf(part.type) === null ? '' : null\"\n [attr.aria-label]=\"part.value\"\n [attr.aria-valuenow]=\"valueOf(part.type)\"\n [attr.aria-valuemin]=\"rangeOf(part.type).min\"\n [attr.aria-valuemax]=\"rangeOf(part.type).max\"\n [attr.aria-valuetext]=\"spokenOf(part.type)\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [tabindex]=\"tabIndexOf(part.type)\"\n (mousedown)=\"onSegmentMouseDown($event)\"\n (focus)=\"activeField.set(part.type)\"\n (blur)=\"onBlur()\"\n >\n {{ textOf(part.type) }}\n </div>\n }\n }\n </div>\n <span data-part=\"value-text\" hidden [attr.id]=\"valueTextId\">{{ spokenDate() }}</span>\n @if (showClear()) {\n <button\n data-part=\"clear\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <ng-content select=\"[slDateFieldEnd]\" />\n <input data-part=\"hidden-input\" type=\"hidden\" readonly [attr.name]=\"name()\" [value]=\"iso()\" />`,\n styleUrl: '../../../styles/src/date-field/date-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlDateField), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateField), multi: true },\n ],\n host: {\n 'data-ui': 'date-field',\n 'data-part': 'root',\n '(mousedown)': 'onRootMouseDown($event)',\n '(keydown)': 'onKeyDown($event)',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() === true ? '' : null\",\n },\n})\nexport class SlDateField implements ControlValueAccessor, Validator, OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<PlainDate | null | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<PlainDate | null | undefined>(undefined);\n\n /** The earliest date the control accepts. Also a form validity rule. */\n readonly min = input<PlainDate | undefined>(undefined);\n /** The latest date the control accepts. Also a form validity rule. */\n readonly max = input<PlainDate | undefined>(undefined);\n /** Refuses particular dates — a weekend, a holiday, a booked day. */\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n\n /**\n * BCP 47. Decides the field order, the separators and the placeholder.\n * Unset, the language in force decides.\n */\n readonly locale = input<string | undefined>(undefined);\n /** Which zone answers \"what is today\", and nothing else. */\n readonly timeZone = input<string | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly yearPivot = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly calendar = input<DateFieldCalendar | undefined>(undefined);\n\n readonly size = input<DateFieldSize | undefined>(undefined);\n readonly variant = input<DateFieldVariant | undefined>(undefined);\n\n /** Unstated rather than `false`, so the control defers to the field. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Draws a button that empties the value and returns focus to the control. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Words laid over the catalog of the language in force, key by key: the clear button's name. */\n readonly messages = input<PartialMessages<DateFieldMessages> | undefined>(undefined);\n /** The name a plain form post carries the ISO string under. */\n readonly name = input<string | undefined>(undefined);\n /**\n * The accessible name, when it is bound rather than written: a static\n * `aria-label` is read once from the host, and a family naming this field\n * from its own input — `date-range-picker` names its two ends — has no\n * static attribute to write.\n */\n readonly label = input<string | undefined>(undefined);\n /**\n * The group's identifier, when it is bound rather than written: a family\n * holding two of these inside one field — `date-range-picker` — gives each\n * its own, where both would otherwise take the field's.\n */\n readonly groupId = input<string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the segments, the reason, the originating event and `cancel()`. There is no\n * `[(value)]`, because a two-way binding has one slot and can carry none of\n * those; a form gets the same movement through `ControlValueAccessor`.\n */\n readonly valueChange = output<DateFieldChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectDateFieldDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(dateFieldMessages, this.messages);\n private readonly field = inject(SlField, { optional: true });\n\n /** Read before the host binding computes, so it never writes over it. */\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n\n /** The whole date in words, for the group's own accessible name. */\n protected readonly valueTextId = `sl-date-field-${String((sequence += 1))}`;\n\n private readonly segments = signal<SegmentState>(EMPTY_SEGMENTS);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * Which day it is, resolved after construction rather than during it, so a\n * server and a browser in different zones never disagree about the markup.\n * Nothing is drawn from it: it is the date an empty segment steps to.\n */\n private readonly reference = signal<PlainDate>(plainDate(2000, 1, 1));\n protected readonly activeField = signal<DateFieldName | undefined>(undefined);\n\n private onChangeFn: (value: PlainDate | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly format = computed(() =>\n createDateFormat({\n locale: this.locale() ?? this.appLocale(),\n firstDayOfWeek: this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek,\n yearPivot: this.yearPivot() ?? this.defaults.yearPivot,\n }),\n );\n\n protected readonly fields = computed(() =>\n this.format()\n .pattern.filter((part) => part.type !== 'literal')\n .map((part) => part.type as DateFieldName),\n );\n\n /** The date the segments make, or `null` while any of them is unfilled. */\n readonly date = computed(() => dateOf(this.segments()));\n protected readonly iso = computed(() => {\n const date = this.date();\n return date === null ? '' : toISODate(date);\n });\n protected readonly spokenDate = computed(() => {\n const date = this.date();\n return date === null ? '' : this.format().describe(date);\n });\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.field?.resolvedReadOnly());\n readonly resolvedRequired = computed(() => this.required() ?? this.field?.required());\n\n /**\n * Validity the family owns, beside the validity the consumer states. A date\n * outside the bounds or refused by the predicate is invalid whatever the\n * field around it says, because this control is the only thing that knows.\n */\n readonly resolvedInvalid = computed(() => {\n const date = this.date();\n if (date !== null && !isDateInRange(date, this.min(), this.max())) return true;\n if (date !== null && this.isDateUnavailable()?.(date) === true) return true;\n return this.invalid() ?? this.field?.invalid();\n });\n\n protected readonly controlId = computed(\n () => this.groupId() ?? this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly labelledBy = computed(() => {\n if (this.label() !== undefined || this.writtenLabel !== null) return null;\n const merged = [this.writtenLabelledBy ?? this.field?.ids().label, this.valueTextId].filter(\n Boolean,\n );\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(() =>\n this.resolvedInvalid() === true ? 'true' : null,\n );\n protected readonly ariaRequired = computed(() =>\n this.resolvedRequired() === true ? 'true' : null,\n );\n protected readonly ariaReadonly = computed(() =>\n this.resolvedReadOnly() === true ? 'true' : null,\n );\n protected readonly ariaDisabled = computed(() =>\n this.resolvedDisabled() === true ? 'true' : null,\n );\n\n private readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n protected readonly showClear = computed(() => {\n if (!this.clearable() || !this.editable()) return false;\n const held = this.segments();\n return held.year !== null || held.month !== null || held.day !== null;\n });\n\n /**\n * Angular creates a component before it binds any input, so the starting\n * value is read here rather than in the constructor: read there, both\n * `value` and `defaultValue` are `undefined` and the control starts empty.\n */\n constructor() {\n /**\n * A consumer's own value writes the segments, and only when it names a\n * different date: written on every change detection it would throw away a\n * half-typed date on the keystroke that completes a different one.\n *\n * Without it a controlled `[value]` only ever reached the control once, in\n * `ngOnInit` — which is what the first run of `date-picker`'s spec showed\n * as a field still holding the ninth after the calendar had chosen the\n * seventeenth.\n */\n effect(() => {\n const next = this.value();\n if (next === undefined) return;\n const segments = this.segments();\n /* A run of digits still being typed is not a value the consumer refused;\n the guard `time-field` records, taken here for the same reason. */\n if (segments.typing !== null) return;\n if (isSameDate(dateOf(segments), next)) return;\n this.segments.set(segmentsOf(next));\n });\n }\n\n ngOnInit() {\n this.segments.set(segmentsOf(this.value() ?? this.defaultValue() ?? null));\n this.reference.set(todayIn(this.timeZone() ?? this.defaults.timeZone));\n }\n\n /* ── The value ───────────────────────────────────────────────────────── */\n\n writeValue(value: PlainDate | null | undefined) {\n this.segments.set(segmentsOf(value ?? null));\n }\n\n registerOnChange(fn: (value: PlainDate | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChangeFn = fn;\n }\n\n /**\n * The rules no other validator can see. `required` is left to Angular's own,\n * because a form already has a word for it and two would disagree.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const date = control.value as PlainDate | null;\n if (date === null || date === undefined) return null;\n\n const min = this.min();\n const max = this.max();\n if (!isDateInRange(date, min, max)) {\n return { slottedDateRange: { min, max, actual: date } };\n }\n if (this.isDateUnavailable()?.(date) === true) {\n return { slottedDateUnavailable: { actual: date } };\n }\n return null;\n }\n\n /** Puts focus on the first segment, which is where typing starts. */\n focus() {\n const first = this.fields()[0];\n if (first !== undefined) this.focusField(first);\n }\n\n /**\n * Where a press on the frame puts the reader: the first field still waiting\n * for a value, and the first field of the date when none is.\n *\n * A press that landed on the frame's own padding, on the gap between two\n * fields or on an adornment did nothing at all — the reader saw a control\n * that looked like a text field and answered like a picture. Every text\n * control on the page answers a press anywhere inside its border, and this\n * one has to as well.\n */\n focusEntry() {\n const held = this.segments();\n const empty = this.fields().find((name) => held[name] === null);\n const target = empty ?? this.fields()[0];\n if (target !== undefined) this.focusField(target);\n }\n\n /**\n * A press inside the frame that landed on nothing of its own. The default is\n * prevented so the press does not immediately blur the field it just gave\n * focus to, which is what a `mousedown` on a non-focusable box would do.\n */\n protected onRootMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement | null;\n if (target?.closest('[data-part=\"segment\"], button, a, input, select, textarea') != null) {\n return;\n }\n event.preventDefault();\n this.focusEntry();\n }\n\n /**\n * Safari does not focus a `div` on a press even when it carries a\n * `tabindex`, so the press says so itself rather than relying on it.\n */\n protected onSegmentMouseDown(event: MouseEvent) {\n event.preventDefault();\n (event.currentTarget as HTMLElement).focus();\n }\n\n /** Empties every segment, with the `clear` reason. */\n clear(source?: Event) {\n this.commit(EMPTY_SEGMENTS, 'clear', source);\n this.focus();\n }\n\n /* ── The keyboard ────────────────────────────────────────────────────── */\n\n /**\n * A key the field acted on is the field's, and nothing above it sees it.\n *\n * Every application that binds a bare key guards it with \"is the target an\n * editable element\", and that guard tests for `input`, `textarea` and\n * `contenteditable`. A `div` with `role=\"spinbutton\"` is none of the three,\n * so a reader typing a date into this control fires every single-key\n * shortcut on the page: in Storybook, pressing `1` moved focus out of the\n * story and into the sidebar, and the date could not be typed at all.\n *\n * `preventDefault` alone does not help — a shortcut handler reads the key,\n * not the default. The event has to stop.\n */\n private consume(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * The keys are handled on the host rather than on each segment, so a\n * consumer's own `(keydown)` on the same element still runs before the\n * family stops the event — which is the composition React gets by calling\n * the consumer's handler first.\n */\n protected onKeyDown(event: KeyboardEvent) {\n const segment = (event.target as HTMLElement | null)?.closest<HTMLElement>(\n '[data-part=\"segment\"]',\n );\n const name = segment?.dataset['field'] as DateFieldName | undefined;\n if (name === undefined) return;\n\n /* An inline direction is a physical pair of keys and a logical order, so\n the arrow that walks forward is the one pointing along the writing\n direction rather than the one pointing right. */\n const rtl = getComputedStyle(this.element).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === forward) {\n this.consume(event);\n this.moveBy(name, 1);\n return;\n }\n if (event.key === backward) {\n this.consume(event);\n this.moveBy(name, -1);\n return;\n }\n\n if (!this.editable()) return;\n\n /**\n * `Alt` with an arrow is not this control's chord. `date-picker` opens its\n * calendar with `Alt`+`ArrowDown`, and a segment that stepped on it would\n * eat the only shortcut the surface has.\n */\n if (event.altKey) return;\n\n const held = this.segments();\n const reference = this.reference();\n\n switch (event.key) {\n case 'ArrowUp':\n this.consume(event);\n this.commit(stepSegment(held, name, 1, reference), 'keyboard', event);\n return;\n case 'ArrowDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -1, reference), 'keyboard', event);\n return;\n case 'PageUp':\n this.consume(event);\n this.commit(stepSegment(held, name, PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'PageDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'Home':\n this.consume(event);\n this.commit(boundSegment(held, name, 'min', reference), 'keyboard', event);\n return;\n case 'End':\n this.consume(event);\n this.commit(boundSegment(held, name, 'max', reference), 'keyboard', event);\n return;\n case 'Backspace':\n case 'Delete':\n this.consume(event);\n this.commit(clearSegment(held, name), 'clear', event);\n return;\n default:\n break;\n }\n\n if (/^\\d$/.test(event.key)) {\n this.consume(event);\n const typed = typeDigit(held, name, Number(event.key), this.format(), reference);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n }\n }\n\n /**\n * A whole date, pasted. The locale's shape is read first and ISO 8601 after\n * it, so `12/03/2026` is December to an American and March to a Brazilian\n * while `2026-09-09` is the ninth to both.\n */\n protected onPaste(event: ClipboardEvent) {\n if (!this.editable()) return;\n const parsed = this.format().parse(event.clipboardData?.getData('text/plain') ?? '');\n if (parsed === null) return;\n event.preventDefault();\n this.commit(segmentsOf(parsed), 'keyboard', event);\n }\n\n /** A run of typed digits ends when focus leaves, and a short year resolves. */\n protected onBlur() {\n this.activeField.set(undefined);\n this.onTouchedFn();\n const held = this.segments();\n if (held.typing === null) return;\n this.commit(commitTyping(held, this.format(), this.reference()), 'blur', undefined);\n }\n\n /* ── What the template reads ─────────────────────────────────────────── */\n\n protected valueOf(field: DateFieldName): number | null {\n return this.segments()[field];\n }\n\n protected rangeOf(field: DateFieldName) {\n const held = this.segments();\n const reference = this.reference();\n return fieldRange(field, {\n year: held.year ?? reference.year,\n month: held.month ?? reference.month,\n });\n }\n\n /** What a reader hears instead of the number: a month says its own name. */\n protected spokenOf(field: DateFieldName): string | null {\n const raw = this.segments()[field];\n if (raw === null) return null;\n if (field !== 'month') return String(raw);\n return this.format().monthNames('long')[raw - 1] ?? String(raw);\n }\n\n /**\n * What one field shows.\n *\n * A finished value is padded to the field's width, so the three columns hold\n * their place: `9` and `09` occupy the same box and the separators never step\n * sideways. A value still being typed is **not** padded — it is the digits\n * the reader has put in, in the order they put them. Padded, a year on its\n * way to 2026 read `0002`, then `0020`, then `0202`, which is three numbers\n * nobody typed.\n */\n protected textOf(field: DateFieldName): string {\n const held = this.segments();\n const raw = held[field];\n if (raw === null) {\n return this.format().pattern.find((part) => part.type === field)?.value ?? '';\n }\n\n const typing = held.typing;\n if (typing !== null && typing.field === field) {\n return String(raw).padStart(typing.digits, '0');\n }\n\n const reference = this.reference();\n return this.format().formatField(\n {\n year: held.year ?? reference.year,\n month: held.month ?? reference.month,\n day: held.day ?? reference.day,\n },\n field,\n );\n }\n\n /** Exactly one segment is in the tab sequence, which is the roving model. */\n protected tabIndexOf(field: DateFieldName): number {\n if (this.resolvedDisabled() === true) return -1;\n return field === (this.activeField() ?? this.fields()[0]) ? 0 : -1;\n }\n\n /* ── The machinery ───────────────────────────────────────────────────── */\n\n private focusField(name: DateFieldName) {\n this.activeField.set(name);\n this.element.querySelector<HTMLElement>(`[data-part=\"segment\"][data-field=\"${name}\"]`)?.focus();\n }\n\n private moveBy(name: DateFieldName, step: number) {\n const next = this.fields()[this.fields().indexOf(name) + step];\n if (next !== undefined) this.focusField(next);\n }\n\n /**\n * Moves the segments, and asks before the derived value moves with them.\n *\n * A run of typed digits moves the display and not the value: typing `2026`\n * into a year passes through 2, 20 and 202 on the way, and a request per\n * digit would ask a consumer's server about the year 2. The request is\n * emitted when the run ends.\n */\n private commit(next: SegmentState, reason: ChangeReason, source: Event | undefined) {\n const previous = this.date();\n this.segments.set(next);\n if (next.typing !== null) return;\n\n const nextValue = dateOf(next);\n let cancelled = false;\n const state = createControllable<PlainDate | null>({\n controlled: undefined,\n initial: previous,\n equals: isSameDate,\n onRequest: (request) => {\n this.valueChange.emit({ ...request, segments: next });\n cancelled = request.cancelled;\n },\n });\n state.request(nextValue, reason, source);\n\n if (cancelled) return;\n this.onChangeFn(nextValue);\n this.onValidatorChangeFn();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * An adornment before the date in the reading direction: a calendar mark, a\n * label, an icon. Named for the direction rather than for a side, so the same\n * markup puts the mark before the date in both directions.\n *\n * It is a directive on the consumer's own element, so an `icon`, a `kbd` or a\n * `span` all work and none of them loses its own semantics. The stylesheet\n * sizes any icon inside it from the control's own glyph scale.\n */\n@Directive({\n selector: '[slDateFieldStart]',\n standalone: true,\n exportAs: 'slDateFieldStart',\n host: { 'data-part': 'start' },\n})\nexport class SlDateFieldStart {}\n\n/** An adornment after the date in the reading direction. */\n@Directive({\n selector: '[slDateFieldEnd]',\n standalone: true,\n exportAs: 'slDateFieldEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlDateFieldEnd {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-date-field.mjs","sources":["../../date-field/src/date-field-defaults.ts","../../date-field/src/date-field.ts","../../date-field/src/date-field-parts.ts","../../date-field/src/slotted-angular-date-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the control sits at, matching the field around it. */\nexport type DateFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. The three steps `text-field` set, so a form\n * holding a name and a date shows one frame twice rather than two frames.\n */\nexport type DateFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The calendar system the value is written in.\n *\n * One value today, and it is an axis rather than a silence: a second calendar\n * system is a second arithmetic, and declaring the axis now is what keeps its\n * arrival from being a contract break.\n */\nexport type DateFieldCalendar = 'gregory';\n\n/**\n * Two typed digits up to twenty years ahead of this year are this century, and\n * anything above them is the last: `30` is 2030 and `80` is 1980 in 2026.\n *\n * A birth-date field sets it to `0`, and then only a year already past can be\n * typed in two digits. The number is stated rather than inferred because the\n * alternative is two bindings guessing, differently, at what `26` means.\n */\nexport const DATE_FIELD_YEAR_PIVOT = 20;\n\nexport interface DateFieldDefaults {\n calendar: DateFieldCalendar;\n /** `0` is Sunday. Unset means the locale decides. */\n firstDayOfWeek: number | undefined;\n size: DateFieldSize;\n /** Which zone answers \"what is today\". Unset means the runtime's own. */\n timeZone: string | undefined;\n variant: DateFieldVariant;\n yearPivot: number;\n}\n\nconst FALLBACK: DateFieldDefaults = {\n calendar: 'gregory',\n firstDayOfWeek: undefined,\n size: 'md',\n timeZone: undefined,\n variant: 'outline',\n yearPivot: DATE_FIELD_YEAR_PIVOT,\n};\n\nexport const DATE_FIELD_DEFAULTS = new InjectionToken<DateFieldDefaults>(\n 'slotted date field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its dates look like, which zone answers\n * \"today\" and how a two-digit year resolves, rather than repeating the same\n * inputs on every control in a form. A control that states any of them itself\n * still wins. The locale that writes the dates, and the clear button's name,\n * come from the language in force (`provideSlotted`).\n */\nexport function provideDateFieldDefaults(defaults: Partial<DateFieldDefaults>) {\n return {\n provide: DATE_FIELD_DEFAULTS,\n useFactory: (): DateFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a date field renders as here, before it states anything of its own. */\nexport function injectDateFieldDefaults(): DateFieldDefaults {\n return inject(DATE_FIELD_DEFAULTS);\n}\n","import {\n boundSegment,\n clearSegment,\n commitTyping,\n createDateFormat,\n dateOf,\n EMPTY_SEGMENTS,\n fieldRange,\n isDateInRange,\n isSameDate,\n parseISOYearMonth,\n plainDate,\n segmentsOf,\n stepSegment,\n toISODate,\n toISOYearMonth,\n todayIn,\n typeDigit,\n yearMonthPattern,\n} from '@slotted/core/date';\nimport type { DateFieldName, PlainDate, SegmentState } from '@slotted/core/date';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n dateFieldMessages,\n type DateFieldMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateFieldDefaults } from './date-field-defaults';\nimport type { DateFieldCalendar, DateFieldSize, DateFieldVariant } from './date-field-defaults';\n\n/**\n * How far `PageUp` and `PageDown` move each field.\n *\n * Five is the APG spin-button example's step, adopted for the day and the\n * month. The year departs: five years is not a page of years, and ten is the\n * step the calendar's own year view pages by, so the two agree. The cost is\n * written in `specs/components/date-field/contract.json` under `departures`.\n */\nconst PAGE_STEP: Record<DateFieldName, number> = { day: 5, month: 5, year: 10 };\n\n/**\n * The hidden element carrying the whole date needs an identifier the group can\n * point `aria-labelledby` at, and Angular has no `useId`. A module counter is\n * what the framework leaves: it is stable for a given render order, which is\n * what hydration needs, and it never reaches the public surface.\n */\nlet sequence = 0;\n\n/** What a request carries beyond the value. */\nexport interface DateFieldChangeRequest extends ChangeRequest<PlainDate | null> {\n readonly segments: SegmentState;\n}\n\n/**\n * A segmented date control: one spin button per field, in the order the locale\n * writes them.\n *\n * **The frame is not the control.** The element carrying `data-ui` is the\n * consumer's own box with no role; `role=\"group\"` is on the row of segments,\n * which is what the APG's spin-button example names as the thing that tells a\n * screen-reader user that three buttons are one date.\n *\n * **Angular renders the segments and React renders the segments.** The two\n * bindings share the arithmetic in `@slotted/core/date` and nothing else: this\n * one is a component with a template and a `ControlValueAccessor`, because a\n * date belongs in a Reactive Form and Angular has the integration point for it.\n * It also implements `Validator`, which React has no equivalent of and which is\n * the asymmetry `references/frameworks.md` asks to be recorded rather than\n * levelled away — `min`, `max` and `isDateUnavailable` are validity this\n * control owns and no other validator can see.\n *\n * **The segments are the state and the value is derived.** A date with a day\n * and a month and no year is not a date, so the value is `null` — and that is\n * not the same as an empty field. The request carries the segments so a\n * consumer can tell them apart.\n */\n@Component({\n selector: '[slDateField]',\n standalone: true,\n exportAs: 'slDateField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slDateFieldStart]\" />\n <div\n data-part=\"segments\"\n data-part-segments=\"\"\n role=\"group\"\n [attr.id]=\"controlId()\"\n [attr.aria-label]=\"label() ?? writtenLabel\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-required]=\"ariaRequired()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n (paste)=\"onPaste($event)\"\n >\n @for (part of pattern(); track $index) {\n @if (part.type === 'literal') {\n <span data-part=\"literal\" data-part-literal=\"\" aria-hidden=\"true\">{{ part.value }}</span>\n } @else {\n <div\n data-part=\"segment\"\n data-part-segment=\"\"\n role=\"spinbutton\"\n [attr.data-field]=\"part.type\"\n [attr.data-placeholder]=\"valueOf(part.type) === null ? '' : null\"\n [attr.aria-label]=\"t(part.type)\"\n [attr.aria-valuenow]=\"valueOf(part.type)\"\n [attr.aria-valuemin]=\"rangeOf(part.type).min\"\n [attr.aria-valuemax]=\"rangeOf(part.type).max\"\n [attr.aria-valuetext]=\"spokenOf(part.type)\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n [attr.aria-readonly]=\"ariaReadonly()\"\n [tabindex]=\"tabIndexOf(part.type)\"\n (mousedown)=\"onSegmentMouseDown($event)\"\n (focus)=\"activeField.set(part.type)\"\n (blur)=\"onBlur()\"\n >\n {{ textOf(part.type) }}\n </div>\n }\n }\n </div>\n <span data-part=\"value-text\" data-part-value-text=\"\" hidden [attr.id]=\"valueTextId\">{{\n spokenDate()\n }}</span>\n @if (showClear()) {\n <button\n data-part=\"clear\"\n data-part-clear=\"\"\n type=\"button\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n <ng-content select=\"[slDateFieldEnd]\" />\n <input\n data-part=\"hidden-input\"\n data-part-hidden-input=\"\"\n type=\"hidden\"\n readonly\n [attr.name]=\"name()\"\n [value]=\"iso()\"\n />`,\n styleUrl: '../../../styles/src/date-field/date-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlDateField), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateField), multi: true },\n ],\n host: {\n 'data-ui': 'date-field',\n 'data-ui-date-field': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '(mousedown)': 'onRootMouseDown($event)',\n '(keydown)': 'onKeyDown($event)',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() === true ? '' : null\",\n },\n})\nexport class SlDateField implements ControlValueAccessor, Validator, OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<PlainDate | null | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<PlainDate | null | undefined>(undefined);\n\n /**\n * What the control holds: a day, or a month of a year. Under `month` the\n * field shows the month and the year segments in the locale's order, its\n * value is the first day of that month, and the hidden input submits\n * `YYYY-MM`. Defaults to `day`.\n */\n readonly granularity = input<'day' | 'month' | undefined>(undefined);\n\n /** The earliest date the control accepts. Also a form validity rule. */\n readonly min = input<PlainDate | undefined>(undefined);\n /** The latest date the control accepts. Also a form validity rule. */\n readonly max = input<PlainDate | undefined>(undefined);\n /** Refuses particular dates — a weekend, a holiday, a booked day. */\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n\n /**\n * BCP 47. Decides the field order, the separators and the placeholder.\n * Unset, the language in force decides.\n */\n readonly locale = input<string | undefined>(undefined);\n /** Which zone answers \"what is today\", and nothing else. */\n readonly timeZone = input<string | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly yearPivot = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly calendar = input<DateFieldCalendar | undefined>(undefined);\n\n readonly size = input<DateFieldSize | undefined>(undefined);\n readonly variant = input<DateFieldVariant | undefined>(undefined);\n\n /** Unstated rather than `false`, so the control defers to the field. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Draws a button that empties the value and returns focus to the control. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Words laid over the catalog of the language in force, key by key: the clear button's name. */\n readonly messages = input<PartialMessages<DateFieldMessages> | undefined>(undefined);\n /** The name a plain form post carries the ISO string under. */\n readonly name = input<string | undefined>(undefined);\n /**\n * The accessible name, when it is bound rather than written: a static\n * `aria-label` is read once from the host, and a family naming this field\n * from its own input — `date-range-picker` names its two ends — has no\n * static attribute to write.\n */\n readonly label = input<string | undefined>(undefined);\n /**\n * The group's identifier, when it is bound rather than written: a family\n * holding two of these inside one field — `date-range-picker` — gives each\n * its own, where both would otherwise take the field's.\n */\n readonly groupId = input<string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the segments, the reason, the originating event and `cancel()`. There is no\n * `[(value)]`, because a two-way binding has one slot and can carry none of\n * those; a form gets the same movement through `ControlValueAccessor`.\n */\n readonly valueChange = output<DateFieldChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectDateFieldDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(dateFieldMessages, this.messages);\n private readonly field = inject(SlField, { optional: true });\n\n /** Read before the host binding computes, so it never writes over it. */\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n\n /** The whole date in words, for the group's own accessible name. */\n protected readonly valueTextId = `sl-date-field-${String((sequence += 1))}`;\n\n private readonly segments = signal<SegmentState>(EMPTY_SEGMENTS);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * Which day it is, resolved after construction rather than during it, so a\n * server and a browser in different zones never disagree about the markup.\n * Nothing is drawn from it: it is the date an empty segment steps to.\n */\n private readonly reference = signal<PlainDate>(plainDate(2000, 1, 1));\n protected readonly activeField = signal<DateFieldName | undefined>(undefined);\n\n private onChangeFn: (value: PlainDate | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly format = computed(() =>\n createDateFormat({\n locale: this.locale() ?? this.appLocale(),\n firstDayOfWeek: this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek,\n yearPivot: this.yearPivot() ?? this.defaults.yearPivot,\n }),\n );\n\n /** A field that holds a month draws the locale's pattern without its day. */\n protected readonly monthly = computed(() => this.granularity() === 'month');\n protected readonly pattern = computed(() =>\n this.monthly() ? yearMonthPattern(this.format().pattern) : this.format().pattern,\n );\n\n protected readonly fields = computed(() =>\n this.pattern()\n .filter((part) => part.type !== 'literal')\n .map((part) => part.type as DateFieldName),\n );\n\n /** The date the segments make, or `null` while any of them is unfilled. */\n readonly date = computed(() => dateOf(this.segments()));\n protected readonly iso = computed(() => {\n const date = this.date();\n if (date === null) return '';\n return this.monthly()\n ? toISOYearMonth({ year: date.year, month: date.month })\n : toISODate(date);\n });\n protected readonly spokenDate = computed(() => {\n const date = this.date();\n if (date === null) return '';\n return this.monthly() ? this.format().monthYear(date) : this.format().describe(date);\n });\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.field?.resolvedReadOnly());\n readonly resolvedRequired = computed(() => this.required() ?? this.field?.required());\n\n /**\n * Validity the family owns, beside the validity the consumer states. A date\n * outside the bounds or refused by the predicate is invalid whatever the\n * field around it says, because this control is the only thing that knows.\n */\n readonly resolvedInvalid = computed(() => {\n const date = this.date();\n if (date !== null && !isDateInRange(date, this.min(), this.max())) return true;\n if (date !== null && this.isDateUnavailable()?.(date) === true) return true;\n return this.invalid() ?? this.field?.invalid();\n });\n\n protected readonly controlId = computed(\n () => this.groupId() ?? this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly labelledBy = computed(() => {\n if (this.label() !== undefined || this.writtenLabel !== null) return null;\n const merged = [this.writtenLabelledBy ?? this.field?.ids().label, this.valueTextId].filter(\n Boolean,\n );\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(() =>\n this.resolvedInvalid() === true ? 'true' : null,\n );\n protected readonly ariaRequired = computed(() =>\n this.resolvedRequired() === true ? 'true' : null,\n );\n protected readonly ariaReadonly = computed(() =>\n this.resolvedReadOnly() === true ? 'true' : null,\n );\n protected readonly ariaDisabled = computed(() =>\n this.resolvedDisabled() === true ? 'true' : null,\n );\n\n private readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n protected readonly showClear = computed(() => {\n if (!this.clearable() || !this.editable()) return false;\n const held = this.segments();\n return this.fields().some((name) => held[name] !== null);\n });\n\n /**\n * Angular creates a component before it binds any input, so the starting\n * value is read here rather than in the constructor: read there, both\n * `value` and `defaultValue` are `undefined` and the control starts empty.\n */\n constructor() {\n /**\n * A consumer's own value writes the segments, and only when it names a\n * different date: written on every change detection it would throw away a\n * half-typed date on the keystroke that completes a different one.\n *\n * Without it a controlled `[value]` only ever reached the control once, in\n * `ngOnInit` — which is what the first run of `date-picker`'s spec showed\n * as a field still holding the ninth after the calendar had chosen the\n * seventeenth.\n */\n effect(() => {\n const next = this.value();\n if (next === undefined) return;\n const segments = this.segments();\n /* A run of digits still being typed is not a value the consumer refused;\n the guard `time-field` records, taken here for the same reason. */\n if (segments.typing !== null) return;\n if (isSameDate(dateOf(segments), next)) return;\n this.segments.set(segmentsOf(next));\n });\n }\n\n ngOnInit() {\n this.segments.set(segmentsOf(this.value() ?? this.defaultValue() ?? null));\n this.reference.set(todayIn(this.timeZone() ?? this.defaults.timeZone));\n }\n\n /* ── The value ───────────────────────────────────────────────────────── */\n\n writeValue(value: PlainDate | null | undefined) {\n this.segments.set(segmentsOf(value ?? null));\n }\n\n registerOnChange(fn: (value: PlainDate | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChangeFn = fn;\n }\n\n /**\n * The rules no other validator can see. `required` is left to Angular's own,\n * because a form already has a word for it and two would disagree.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const date = control.value as PlainDate | null;\n if (date === null || date === undefined) return null;\n\n const min = this.min();\n const max = this.max();\n if (!isDateInRange(date, min, max)) {\n return { slottedDateRange: { min, max, actual: date } };\n }\n if (this.isDateUnavailable()?.(date) === true) {\n return { slottedDateUnavailable: { actual: date } };\n }\n return null;\n }\n\n /** Puts focus on the first segment, which is where typing starts. */\n focus() {\n const first = this.fields()[0];\n if (first !== undefined) this.focusField(first);\n }\n\n /**\n * Where a press on the frame puts the reader: the first field still waiting\n * for a value, and the first field of the date when none is.\n *\n * A press that landed on the frame's own padding, on the gap between two\n * fields or on an adornment did nothing at all — the reader saw a control\n * that looked like a text field and answered like a picture. Every text\n * control on the page answers a press anywhere inside its border, and this\n * one has to as well.\n */\n focusEntry() {\n const held = this.segments();\n const empty = this.fields().find((name) => held[name] === null);\n const target = empty ?? this.fields()[0];\n if (target !== undefined) this.focusField(target);\n }\n\n /**\n * A press inside the frame that landed on nothing of its own. The default is\n * prevented so the press does not immediately blur the field it just gave\n * focus to, which is what a `mousedown` on a non-focusable box would do.\n */\n protected onRootMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement | null;\n if (target?.closest('[data-part=\"segment\"], button, a, input, select, textarea') != null) {\n return;\n }\n event.preventDefault();\n this.focusEntry();\n }\n\n /**\n * Safari does not focus a `div` on a press even when it carries a\n * `tabindex`, so the press says so itself rather than relying on it.\n */\n protected onSegmentMouseDown(event: MouseEvent) {\n event.preventDefault();\n (event.currentTarget as HTMLElement).focus();\n }\n\n /** Empties every segment, with the `clear` reason. */\n clear(source?: Event) {\n this.commit(EMPTY_SEGMENTS, 'clear', source);\n this.focus();\n }\n\n /* ── The keyboard ────────────────────────────────────────────────────── */\n\n /**\n * A key the field acted on is the field's, and nothing above it sees it.\n *\n * Every application that binds a bare key guards it with \"is the target an\n * editable element\", and that guard tests for `input`, `textarea` and\n * `contenteditable`. A `div` with `role=\"spinbutton\"` is none of the three,\n * so a reader typing a date into this control fires every single-key\n * shortcut on the page: in Storybook, pressing `1` moved focus out of the\n * story and into the sidebar, and the date could not be typed at all.\n *\n * `preventDefault` alone does not help — a shortcut handler reads the key,\n * not the default. The event has to stop.\n */\n private consume(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * The keys are handled on the host rather than on each segment, so a\n * consumer's own `(keydown)` on the same element still runs before the\n * family stops the event — which is the composition React gets by calling\n * the consumer's handler first.\n */\n protected onKeyDown(event: KeyboardEvent) {\n const segment = (event.target as HTMLElement | null)?.closest<HTMLElement>(\n '[data-part=\"segment\"]',\n );\n const name = segment?.dataset['field'] as DateFieldName | undefined;\n if (name === undefined) return;\n\n /* An inline direction is a physical pair of keys and a logical order, so\n the arrow that walks forward is the one pointing along the writing\n direction rather than the one pointing right. */\n const rtl = getComputedStyle(this.element).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === forward) {\n this.consume(event);\n this.moveBy(name, 1);\n return;\n }\n if (event.key === backward) {\n this.consume(event);\n this.moveBy(name, -1);\n return;\n }\n\n if (!this.editable()) return;\n\n /**\n * `Alt` with an arrow is not this control's chord. `date-picker` opens its\n * calendar with `Alt`+`ArrowDown`, and a segment that stepped on it would\n * eat the only shortcut the surface has.\n */\n if (event.altKey) return;\n\n const held = this.segments();\n const reference = this.reference();\n\n switch (event.key) {\n case 'ArrowUp':\n this.consume(event);\n this.commit(stepSegment(held, name, 1, reference), 'keyboard', event);\n return;\n case 'ArrowDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -1, reference), 'keyboard', event);\n return;\n case 'PageUp':\n this.consume(event);\n this.commit(stepSegment(held, name, PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'PageDown':\n this.consume(event);\n this.commit(stepSegment(held, name, -PAGE_STEP[name], reference), 'keyboard', event);\n return;\n case 'Home':\n this.consume(event);\n this.commit(boundSegment(held, name, 'min', reference), 'keyboard', event);\n return;\n case 'End':\n this.consume(event);\n this.commit(boundSegment(held, name, 'max', reference), 'keyboard', event);\n return;\n case 'Backspace':\n case 'Delete':\n this.consume(event);\n this.commit(clearSegment(held, name), 'clear', event);\n return;\n default:\n break;\n }\n\n if (/^\\d$/.test(event.key)) {\n this.consume(event);\n const typed = typeDigit(held, name, Number(event.key), this.format(), reference);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n }\n }\n\n /**\n * A whole date, pasted. The locale's shape is read first and ISO 8601 after\n * it, so `12/03/2026` is December to an American and March to a Brazilian\n * while `2026-09-09` is the ninth to both.\n */\n protected onPaste(event: ClipboardEvent) {\n if (!this.editable()) return;\n const text = event.clipboardData?.getData('text/plain') ?? '';\n const month = this.monthly() ? parseISOYearMonth(text) : null;\n const parsed =\n month === null ? this.format().parse(text) : plainDate(month.year, month.month, 1);\n if (parsed === null) return;\n event.preventDefault();\n this.commit(segmentsOf(parsed), 'keyboard', event);\n }\n\n /** A run of typed digits ends when focus leaves, and a short year resolves. */\n protected onBlur() {\n this.activeField.set(undefined);\n this.onTouchedFn();\n const held = this.segments();\n if (held.typing === null) return;\n this.commit(commitTyping(held, this.format(), this.reference()), 'blur', undefined);\n }\n\n /* ── What the template reads ─────────────────────────────────────────── */\n\n protected valueOf(field: DateFieldName): number | null {\n return this.segments()[field];\n }\n\n protected rangeOf(field: DateFieldName) {\n const held = this.segments();\n const reference = this.reference();\n return fieldRange(field, {\n year: held.year ?? reference.year,\n month: held.month ?? reference.month,\n });\n }\n\n /** What a reader hears instead of the number: a month says its own name. */\n protected spokenOf(field: DateFieldName): string | null {\n const raw = this.segments()[field];\n if (raw === null) return null;\n if (field !== 'month') return String(raw);\n return this.format().monthNames('long')[raw - 1] ?? String(raw);\n }\n\n /**\n * What one field shows.\n *\n * A finished value is padded to the field's width, so the three columns hold\n * their place: `9` and `09` occupy the same box and the separators never step\n * sideways. A value still being typed is **not** padded — it is the digits\n * the reader has put in, in the order they put them. Padded, a year on its\n * way to 2026 read `0002`, then `0020`, then `0202`, which is three numbers\n * nobody typed.\n */\n protected textOf(field: DateFieldName): string {\n const held = this.segments();\n const raw = held[field];\n if (raw === null) {\n return this.format().pattern.find((part) => part.type === field)?.value ?? '';\n }\n\n const typing = held.typing;\n if (typing !== null && typing.field === field) {\n return String(raw).padStart(typing.digits, '0');\n }\n\n const reference = this.reference();\n return this.format().formatField(\n {\n year: held.year ?? reference.year,\n month: held.month ?? reference.month,\n day: held.day ?? reference.day,\n },\n field,\n );\n }\n\n /** Exactly one segment is in the tab sequence, which is the roving model. */\n protected tabIndexOf(field: DateFieldName): number {\n if (this.resolvedDisabled() === true) return -1;\n return field === (this.activeField() ?? this.fields()[0]) ? 0 : -1;\n }\n\n /* ── The machinery ───────────────────────────────────────────────────── */\n\n private focusField(name: DateFieldName) {\n this.activeField.set(name);\n this.element.querySelector<HTMLElement>(`[data-part=\"segment\"][data-field=\"${name}\"]`)?.focus();\n }\n\n private moveBy(name: DateFieldName, step: number) {\n const next = this.fields()[this.fields().indexOf(name) + step];\n if (next !== undefined) this.focusField(next);\n }\n\n /**\n * Moves the segments, and asks before the derived value moves with them.\n *\n * A run of typed digits moves the display and not the value: typing `2026`\n * into a year passes through 2, 20 and 202 on the way, and a request per\n * digit would ask a consumer's server about the year 2. The request is\n * emitted when the run ends.\n */\n private commit(given: SegmentState, reason: ChangeReason, source: Event | undefined) {\n /* A month has no day segment to fill, so the day is the first of it. */\n const next = this.monthly() && given.day !== 1 ? { ...given, day: 1, intendedDay: 1 } : given;\n const previous = this.date();\n this.segments.set(next);\n if (next.typing !== null) return;\n\n const nextValue = dateOf(next);\n let cancelled = false;\n const state = createControllable<PlainDate | null>({\n controlled: undefined,\n initial: previous,\n equals: isSameDate,\n onRequest: (request) => {\n this.valueChange.emit({ ...request, segments: next });\n cancelled = request.cancelled;\n },\n });\n state.request(nextValue, reason, source);\n\n if (cancelled) return;\n this.onChangeFn(nextValue);\n this.onValidatorChangeFn();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * An adornment before the date in the reading direction: a calendar mark, a\n * label, an icon. Named for the direction rather than for a side, so the same\n * markup puts the mark before the date in both directions.\n *\n * It is a directive on the consumer's own element, so an `icon`, a `kbd` or a\n * `span` all work and none of them loses its own semantics. The stylesheet\n * sizes any icon inside it from the control's own glyph scale.\n */\n@Directive({\n selector: '[slDateFieldStart]',\n standalone: true,\n exportAs: 'slDateFieldStart',\n host: { 'data-part': 'start', 'data-part-start': '' },\n})\nexport class SlDateFieldStart {}\n\n/** An adornment after the date in the reading direction. */\n@Directive({\n selector: '[slDateFieldEnd]',\n standalone: true,\n exportAs: 'slDateFieldEnd',\n host: { 'data-part': 'end', 'data-part-end': '' },\n})\nexport class SlDateFieldEnd {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}