@slotted/angular 0.1.0-beta.0 → 0.1.0-beta.10

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 (588) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/alert.json +7 -1
  4. package/docs/alert.md +3 -3
  5. package/docs/app-shell.examples.md +1 -1
  6. package/docs/app-shell.json +5 -5
  7. package/docs/app-shell.md +2 -2
  8. package/docs/avatar.json +22 -1
  9. package/docs/avatar.md +5 -3
  10. package/docs/badge.json +7 -1
  11. package/docs/badge.md +3 -3
  12. package/docs/button-group.json +2 -0
  13. package/docs/button-group.md +1 -1
  14. package/docs/button.json +51 -11
  15. package/docs/button.md +10 -6
  16. package/docs/calendar.json +8 -1
  17. package/docs/calendar.md +1 -0
  18. package/docs/cascader.json +1 -0
  19. package/docs/cascader.md +1 -1
  20. package/docs/chart.examples.md +1 -1
  21. package/docs/chart.json +10 -1
  22. package/docs/chart.md +3 -2
  23. package/docs/checkbox.json +7 -0
  24. package/docs/checkbox.md +1 -0
  25. package/docs/code-block.json +92 -92
  26. package/docs/code-block.md +69 -69
  27. package/docs/combobox.json +1 -0
  28. package/docs/combobox.md +1 -1
  29. package/docs/currency-field.json +40 -1
  30. package/docs/currency-field.md +5 -1
  31. package/docs/data-grid.examples.md +2 -2
  32. package/docs/data-grid.json +24 -7
  33. package/docs/data-grid.md +1 -1
  34. package/docs/data-grid.props.md +6 -4
  35. package/docs/data-list.json +2 -1
  36. package/docs/data-list.md +1 -1
  37. package/docs/date-field.json +9 -1
  38. package/docs/date-field.md +3 -2
  39. package/docs/date-picker.examples.md +36 -0
  40. package/docs/date-picker.json +20 -5
  41. package/docs/date-picker.md +5 -4
  42. package/docs/datetime-field.json +1 -0
  43. package/docs/datetime-field.md +1 -1
  44. package/docs/dialog.examples.md +158 -136
  45. package/docs/dialog.json +35 -11
  46. package/docs/dialog.md +4 -2
  47. package/docs/dialog.props.md +1 -1
  48. package/docs/drawer.json +5 -0
  49. package/docs/drawer.md +1 -0
  50. package/docs/entity-picker.json +19 -4
  51. package/docs/entity-picker.md +8 -6
  52. package/docs/event-calendar.json +7 -0
  53. package/docs/event-calendar.md +1 -0
  54. package/docs/filter-bar.json +118 -118
  55. package/docs/filter-bar.md +79 -79
  56. package/docs/form.json +2 -1
  57. package/docs/form.md +1 -1
  58. package/docs/guidelines/README.md +27 -0
  59. package/docs/guidelines/async-feedback.md +129 -0
  60. package/docs/guidelines/browsing.md +74 -0
  61. package/docs/guidelines/builders.md +97 -0
  62. package/docs/guidelines/composition.md +143 -0
  63. package/docs/guidelines/conversations.md +59 -0
  64. package/docs/guidelines/errors-and-conflicts.md +71 -0
  65. package/docs/guidelines/forms.md +202 -0
  66. package/docs/guidelines/index.md +129 -0
  67. package/docs/guidelines/layout-alignment.md +95 -0
  68. package/docs/guidelines/ledgers.md +45 -0
  69. package/docs/guidelines/list-pages.md +206 -0
  70. package/docs/guidelines/overviews.md +76 -0
  71. package/docs/guidelines/own-elements.md +115 -0
  72. package/docs/guidelines/reading-permissions.md +55 -0
  73. package/docs/guidelines/record-pages.md +178 -0
  74. package/docs/guidelines/reports.md +123 -0
  75. package/docs/guidelines/shell-composition.md +94 -0
  76. package/docs/guidelines/workspaces.md +46 -0
  77. package/docs/icon.json +3 -1
  78. package/docs/icon.md +3 -3
  79. package/docs/index.md +12 -0
  80. package/docs/inline-message.json +14 -2
  81. package/docs/inline-message.md +4 -3
  82. package/docs/list-item.json +9 -1
  83. package/docs/list-item.md +3 -3
  84. package/docs/list.json +19 -1
  85. package/docs/list.md +3 -1
  86. package/docs/markdown.json +79 -79
  87. package/docs/markdown.md +65 -65
  88. package/docs/menu.json +12 -0
  89. package/docs/menu.md +2 -0
  90. package/docs/message.json +7 -1
  91. package/docs/message.md +3 -3
  92. package/docs/multi-select.json +1 -0
  93. package/docs/multi-select.md +1 -1
  94. package/docs/notification-center.json +4 -0
  95. package/docs/notification-center.md +2 -2
  96. package/docs/number-field.json +1 -0
  97. package/docs/number-field.md +1 -1
  98. package/docs/otp-input.json +1 -0
  99. package/docs/otp-input.md +1 -1
  100. package/docs/page-header.json +4 -3
  101. package/docs/page-header.md +2 -2
  102. package/docs/page.json +1 -0
  103. package/docs/page.md +1 -0
  104. package/docs/popover.json +1 -1
  105. package/docs/progress-indicator.json +4 -3
  106. package/docs/progress-indicator.md +4 -4
  107. package/docs/prompt-composer.json +41 -1
  108. package/docs/prompt-composer.md +5 -1
  109. package/docs/rating.json +5 -3
  110. package/docs/rating.md +5 -5
  111. package/docs/section.json +27 -15
  112. package/docs/section.md +11 -9
  113. package/docs/segmented-control.json +36 -12
  114. package/docs/segmented-control.md +17 -1
  115. package/docs/select.json +1 -0
  116. package/docs/select.md +1 -1
  117. package/docs/side-navigation.json +1 -0
  118. package/docs/side-navigation.md +1 -1
  119. package/docs/skills/build-own-element/SKILL.md +90 -0
  120. package/docs/skills/compose-screen/SKILL.md +95 -0
  121. package/docs/skills/index.md +9 -0
  122. package/docs/skills/review-screen/SKILL.md +77 -0
  123. package/docs/skills/theme-app/SKILL.md +87 -0
  124. package/docs/skills/waiting-states/SKILL.md +143 -0
  125. package/docs/sparkline.json +5 -2
  126. package/docs/sparkline.md +4 -4
  127. package/docs/split-button.json +4 -1
  128. package/docs/split-button.md +3 -3
  129. package/docs/stat-card.json +5 -1
  130. package/docs/stat-card.md +3 -3
  131. package/docs/table.examples.md +3 -3
  132. package/docs/table.json +85 -3
  133. package/docs/table.md +12 -1
  134. package/docs/tabs.json +17 -7
  135. package/docs/tabs.md +3 -2
  136. package/docs/tag.json +14 -4
  137. package/docs/tag.md +6 -6
  138. package/docs/tags-input.json +29 -2
  139. package/docs/tags-input.md +4 -1
  140. package/docs/text-field.json +2 -1
  141. package/docs/text-field.md +2 -2
  142. package/docs/textarea.json +1 -0
  143. package/docs/textarea.md +1 -1
  144. package/docs/time-field.json +1 -0
  145. package/docs/time-field.md +1 -1
  146. package/docs/timeline.json +138 -132
  147. package/docs/timeline.md +125 -125
  148. package/docs/toast.json +7 -1
  149. package/docs/toast.md +3 -3
  150. package/docs/toggle-group.json +14 -3
  151. package/docs/toggle-group.md +3 -3
  152. package/docs/toggle.json +12 -3
  153. package/docs/toggle.md +3 -3
  154. package/docs/tokens.md +467 -0
  155. package/docs/tour.json +1 -1
  156. package/docs/typography.json +4 -2
  157. package/docs/typography.md +4 -4
  158. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  159. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-action-bar.mjs +22 -11
  161. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  163. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-alert.mjs +18 -11
  165. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  167. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  169. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  171. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  173. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  175. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-badge.mjs +14 -10
  177. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  179. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  181. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-button.mjs +90 -29
  183. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  185. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-card.mjs +18 -16
  187. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  189. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-cascader.mjs +166 -66
  191. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-chart.mjs +53 -20
  193. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  195. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  197. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  199. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  201. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  203. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  205. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-combobox.mjs +112 -39
  207. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  209. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-container.mjs +6 -4
  211. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  213. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  215. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  217. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-data-grid.mjs +354 -113
  219. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  221. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  223. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  225. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  227. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  229. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  231. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  233. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  235. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  237. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  239. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-divider.mjs +7 -5
  241. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-drawer.mjs +53 -29
  243. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
  245. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  247. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  249. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-field.mjs +35 -15
  251. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
  253. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-form.mjs +18 -10
  255. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  257. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-grid.mjs +4 -2
  259. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  261. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  263. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-icon.mjs +6 -3
  265. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-image.mjs +13 -10
  267. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  269. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  271. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-inline.mjs +4 -2
  273. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  275. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-link.mjs +5 -3
  277. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  279. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-list.mjs +37 -22
  281. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  283. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  285. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  287. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-menu.mjs +51 -29
  289. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  291. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  293. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-message.mjs +113 -51
  295. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-multi-select.mjs +189 -87
  297. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  299. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  301. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  303. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  305. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-page-header.mjs +75 -45
  307. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-page.mjs +38 -10
  309. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  311. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-popover.mjs +32 -19
  313. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  315. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
  317. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-prose.mjs +14 -11
  319. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  321. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-rating.mjs +138 -82
  323. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  325. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  327. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  329. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-section.mjs +53 -18
  331. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  333. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-select.mjs +184 -94
  335. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  337. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  339. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-slider.mjs +31 -11
  341. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  343. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  345. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  347. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-stack.mjs +4 -2
  349. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  351. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  353. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  355. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-switch.mjs +15 -10
  357. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  359. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-table.mjs +243 -73
  361. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  363. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-tag.mjs +19 -12
  365. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  367. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  369. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  371. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  373. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  375. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  377. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  379. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-toast.mjs +43 -31
  381. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  383. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  385. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-toolbar.mjs +22 -11
  387. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  389. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  391. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-tour.mjs +47 -22
  393. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  395. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tree.mjs +74 -26
  397. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-typography.mjs +8 -4
  399. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-upload.mjs +125 -57
  401. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  403. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  405. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  406. package/package.json +3 -3
  407. package/types/slotted-angular-accordion.d.ts.map +1 -1
  408. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  409. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  410. package/types/slotted-angular-alert.d.ts +2 -2
  411. package/types/slotted-angular-alert.d.ts.map +1 -1
  412. package/types/slotted-angular-app-shell.d.ts +11 -3
  413. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  414. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  415. package/types/slotted-angular-attachment.d.ts +1 -1
  416. package/types/slotted-angular-attachment.d.ts.map +1 -1
  417. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  418. package/types/slotted-angular-avatar.d.ts +11 -3
  419. package/types/slotted-angular-avatar.d.ts.map +1 -1
  420. package/types/slotted-angular-badge.d.ts +1 -1
  421. package/types/slotted-angular-badge.d.ts.map +1 -1
  422. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  423. package/types/slotted-angular-button-group.d.ts +1 -1
  424. package/types/slotted-angular-button-group.d.ts.map +1 -1
  425. package/types/slotted-angular-button.d.ts +33 -13
  426. package/types/slotted-angular-button.d.ts.map +1 -1
  427. package/types/slotted-angular-calendar.d.ts +30 -2
  428. package/types/slotted-angular-calendar.d.ts.map +1 -1
  429. package/types/slotted-angular-card.d.ts.map +1 -1
  430. package/types/slotted-angular-carousel.d.ts.map +1 -1
  431. package/types/slotted-angular-cascader.d.ts.map +1 -1
  432. package/types/slotted-angular-chart.d.ts +10 -0
  433. package/types/slotted-angular-chart.d.ts.map +1 -1
  434. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  435. package/types/slotted-angular-checkbox.d.ts +7 -1
  436. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  437. package/types/slotted-angular-code-block.d.ts +1 -1
  438. package/types/slotted-angular-code-block.d.ts.map +1 -1
  439. package/types/slotted-angular-collapsible.d.ts +1 -1
  440. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  441. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  442. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  443. package/types/slotted-angular-combobox.d.ts +5 -1
  444. package/types/slotted-angular-combobox.d.ts.map +1 -1
  445. package/types/slotted-angular-command-palette.d.ts +10 -1
  446. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  447. package/types/slotted-angular-container.d.ts.map +1 -1
  448. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  449. package/types/slotted-angular-currency-field.d.ts +63 -15
  450. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  451. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  452. package/types/slotted-angular-data-grid.d.ts +49 -4
  453. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  454. package/types/slotted-angular-data-list.d.ts.map +1 -1
  455. package/types/slotted-angular-date-field.d.ts +11 -1
  456. package/types/slotted-angular-date-field.d.ts.map +1 -1
  457. package/types/slotted-angular-date-picker.d.ts +38 -12
  458. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  459. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  460. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  461. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  462. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  463. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  464. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  465. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  466. package/types/slotted-angular-description-list.d.ts.map +1 -1
  467. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  468. package/types/slotted-angular-dialog.d.ts +10 -3
  469. package/types/slotted-angular-dialog.d.ts.map +1 -1
  470. package/types/slotted-angular-divider.d.ts.map +1 -1
  471. package/types/slotted-angular-drawer.d.ts +7 -1
  472. package/types/slotted-angular-drawer.d.ts.map +1 -1
  473. package/types/slotted-angular-entity-picker.d.ts +63 -15
  474. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-event-calendar.d.ts +9 -2
  476. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  477. package/types/slotted-angular-field-group.d.ts.map +1 -1
  478. package/types/slotted-angular-field.d.ts.map +1 -1
  479. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  480. package/types/slotted-angular-form.d.ts.map +1 -1
  481. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  482. package/types/slotted-angular-grid.d.ts.map +1 -1
  483. package/types/slotted-angular-highlight.d.ts.map +1 -1
  484. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  485. package/types/slotted-angular-icon.d.ts +2 -2
  486. package/types/slotted-angular-icon.d.ts.map +1 -1
  487. package/types/slotted-angular-image.d.ts.map +1 -1
  488. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  489. package/types/slotted-angular-inline-message.d.ts +25 -25
  490. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  491. package/types/slotted-angular-inline.d.ts.map +1 -1
  492. package/types/slotted-angular-kbd.d.ts.map +1 -1
  493. package/types/slotted-angular-link.d.ts.map +1 -1
  494. package/types/slotted-angular-list-item.d.ts +1 -1
  495. package/types/slotted-angular-list-item.d.ts.map +1 -1
  496. package/types/slotted-angular-list.d.ts +42 -27
  497. package/types/slotted-angular-list.d.ts.map +1 -1
  498. package/types/slotted-angular-listbox.d.ts.map +1 -1
  499. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  500. package/types/slotted-angular-markdown.d.ts.map +1 -1
  501. package/types/slotted-angular-menu.d.ts +11 -2
  502. package/types/slotted-angular-menu.d.ts.map +1 -1
  503. package/types/slotted-angular-menubar.d.ts.map +1 -1
  504. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  505. package/types/slotted-angular-message.d.ts +1 -1
  506. package/types/slotted-angular-message.d.ts.map +1 -1
  507. package/types/slotted-angular-multi-select.d.ts +15 -1
  508. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  509. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  510. package/types/slotted-angular-notification-center.d.ts +1 -1
  511. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  512. package/types/slotted-angular-number-field.d.ts.map +1 -1
  513. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  514. package/types/slotted-angular-page-header.d.ts +4 -4
  515. package/types/slotted-angular-page-header.d.ts.map +1 -1
  516. package/types/slotted-angular-page.d.ts.map +1 -1
  517. package/types/slotted-angular-pagination.d.ts.map +1 -1
  518. package/types/slotted-angular-popover.d.ts.map +1 -1
  519. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  520. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  521. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  522. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  523. package/types/slotted-angular-prose.d.ts.map +1 -1
  524. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  525. package/types/slotted-angular-rating.d.ts +1 -1
  526. package/types/slotted-angular-rating.d.ts.map +1 -1
  527. package/types/slotted-angular-result-state.d.ts.map +1 -1
  528. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  529. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  530. package/types/slotted-angular-section.d.ts +11 -3
  531. package/types/slotted-angular-section.d.ts.map +1 -1
  532. package/types/slotted-angular-segmented-control.d.ts +15 -2
  533. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  534. package/types/slotted-angular-select.d.ts +12 -2
  535. package/types/slotted-angular-select.d.ts.map +1 -1
  536. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  537. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  538. package/types/slotted-angular-slider.d.ts.map +1 -1
  539. package/types/slotted-angular-sparkline.d.ts +7 -1
  540. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  541. package/types/slotted-angular-split-button.d.ts +2 -2
  542. package/types/slotted-angular-split-button.d.ts.map +1 -1
  543. package/types/slotted-angular-splitter.d.ts.map +1 -1
  544. package/types/slotted-angular-stack.d.ts.map +1 -1
  545. package/types/slotted-angular-stat-card.d.ts +1 -1
  546. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  547. package/types/slotted-angular-status-indicator.d.ts +1 -1
  548. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  549. package/types/slotted-angular-stepper.d.ts +1 -1
  550. package/types/slotted-angular-stepper.d.ts.map +1 -1
  551. package/types/slotted-angular-switch.d.ts.map +1 -1
  552. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  553. package/types/slotted-angular-table.d.ts +63 -6
  554. package/types/slotted-angular-table.d.ts.map +1 -1
  555. package/types/slotted-angular-tabs.d.ts +3 -4
  556. package/types/slotted-angular-tabs.d.ts.map +1 -1
  557. package/types/slotted-angular-tag.d.ts +1 -1
  558. package/types/slotted-angular-tag.d.ts.map +1 -1
  559. package/types/slotted-angular-tags-input.d.ts +33 -1
  560. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  561. package/types/slotted-angular-text-field.d.ts.map +1 -1
  562. package/types/slotted-angular-textarea.d.ts.map +1 -1
  563. package/types/slotted-angular-theme.d.ts +1 -1
  564. package/types/slotted-angular-time-field.d.ts.map +1 -1
  565. package/types/slotted-angular-time-picker.d.ts +0 -1
  566. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  567. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  568. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  569. package/types/slotted-angular-timeline.d.ts +1 -1
  570. package/types/slotted-angular-timeline.d.ts.map +1 -1
  571. package/types/slotted-angular-toast.d.ts +3 -3
  572. package/types/slotted-angular-toast.d.ts.map +1 -1
  573. package/types/slotted-angular-toggle-group.d.ts +8 -2
  574. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  575. package/types/slotted-angular-toggle.d.ts +1 -1
  576. package/types/slotted-angular-toggle.d.ts.map +1 -1
  577. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  578. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  579. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  580. package/types/slotted-angular-tour.d.ts.map +1 -1
  581. package/types/slotted-angular-transfer.d.ts.map +1 -1
  582. package/types/slotted-angular-tree.d.ts.map +1 -1
  583. package/types/slotted-angular-typography.d.ts +1 -1
  584. package/types/slotted-angular-typography.d.ts.map +1 -1
  585. package/types/slotted-angular-upload.d.ts +2 -2
  586. package/types/slotted-angular-upload.d.ts.map +1 -1
  587. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  588. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-time-field.mjs","sources":["../../time-field/src/time-field-defaults.ts","../../time-field/src/time-field.ts","../../time-field/src/time-field-parts.ts","../../time-field/src/slotted-angular-time-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { TimeGranularity } from '@slotted/core/date';\n\n/** The type step the control sits at, matching the field around it. */\nexport type TimeFieldSize = '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 time shows one frame twice rather than two frames.\n */\nexport type TimeFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The question a consumer asks about the clock. Which variant of each — `h11`\n * or `h12`, `h23` or `h24` — is the locale's own, and `Intl` answers it.\n */\nexport type TimeFieldHourCycle = 12 | 24;\n\nexport interface TimeFieldDefaults {\n granularity: TimeGranularity;\n /** Unset means the locale decides both the cycle and its variant. */\n hourCycle: TimeFieldHourCycle | undefined;\n /** Whether `+`, `-` and `=` open the duration expression. */\n relative: boolean;\n size: TimeFieldSize;\n /** Which zone answers \"what time is it now\". Unset means the runtime's own. */\n timeZone: string | undefined;\n variant: TimeFieldVariant;\n}\n\nconst FALLBACK: TimeFieldDefaults = {\n granularity: 'minute',\n hourCycle: undefined,\n relative: true,\n size: 'md',\n timeZone: undefined,\n variant: 'outline',\n};\n\nexport const TIME_FIELD_DEFAULTS = new InjectionToken<TimeFieldDefaults>(\n 'slotted time field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its times look like, which clock they run\n * on and which zone answers \"now\", rather than repeating the same inputs on\n * every control in a form. A control that states any of them itself still\n * wins. The locale that writes the times, and the words, come from the\n * language in force (`provideSlotted`).\n */\nexport function provideTimeFieldDefaults(defaults: Partial<TimeFieldDefaults>) {\n return {\n provide: TIME_FIELD_DEFAULTS,\n useFactory: (): TimeFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a time field renders as here, before it states anything of its own. */\nexport function injectTimeFieldDefaults(): TimeFieldDefaults {\n return inject(TIME_FIELD_DEFAULTS);\n}\n","import {\n boundSegment,\n clearSegment,\n commitTyping,\n createTimeFormat,\n EMPTY_SEGMENTS,\n fieldRange,\n isRelativeKey,\n isSameTime,\n isTimeInRange,\n nowIn,\n parseDuration,\n plainDate,\n resolveRelative,\n segmentsOfTime,\n stepSegment,\n timeOf,\n toISOTime,\n typeDayPeriod,\n typeDigit,\n} from '@slotted/core/date';\nimport type {\n PlainTime,\n SegmentReference,\n SegmentState,\n TimeFieldName,\n TimeGranularity,\n} from '@slotted/core/date';\nimport {\n timeFieldMessages,\n type PartialMessages,\n type TimeFieldMessages,\n} from '@slotted/core/i18n';\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 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 { SlField } from '@slotted/angular/field';\n\nimport { injectTimeFieldDefaults } from './time-field-defaults';\nimport type { TimeFieldHourCycle, TimeFieldSize, TimeFieldVariant } from './time-field-defaults';\n\n/**\n * How far `PageUp` and `PageDown` move each field.\n *\n * The APG spin-button example pages every button by five. Fifteen minutes is\n * the page a reader of a time field means and the step a quarter-hour panel\n * offers, so the two agree; three hours is a quarter of a twelve-hour cycle.\n */\nconst PAGE_STEP: Record<TimeFieldName, number> = {\n hour: 3,\n minute: 15,\n second: 15,\n dayPeriod: 1,\n};\n\n/**\n * The date half of the reference, which a time field never draws and the engine\n * still asks for. One `SegmentState` holds both halves — that is what\n * `datetime-field` needs — so the reference carries both as well.\n */\nconst REFERENCE_DATE = plainDate(2000, 1, 1);\n\n/**\n * The hidden element carrying the whole time 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: stable for a given render order, which is what\n * hydration needs, and never on the public surface.\n */\nlet sequence = 0;\n\n/**\n * What a request carries beyond the value: the segments, so a half-typed time\n * can be saved, and whether the duration that produced it ran past midnight.\n */\nexport interface TimeFieldChangeRequest extends ChangeRequest<PlainTime | null> {\n readonly segments: SegmentState;\n readonly crossesMidnight: boolean;\n}\n\n/**\n * A segmented time 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.\n *\n * **Angular is a component with a template and a `ControlValueAccessor`**,\n * because a time belongs in a Reactive Form and Angular has the integration\n * point for it. It also implements `Validator`: `min`, `max` and\n * `isTimeUnavailable` are validity this control owns and no other validator can\n * see. React has no equivalent, and `references/frameworks.md` asks for that\n * asymmetry to be recorded rather than levelled away.\n *\n * **A time can be written as a duration.** `+`, `-` and `=` open one expression\n * region in place of the segments, and what it resolves to is drawn beside it\n * before `Enter` commits anything.\n */\n@Component({\n selector: '[slTimeField]',\n standalone: true,\n exportAs: 'slTimeField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slTimeFieldStart]\" />\n @if (expression() !== null) {\n <input\n #duration\n data-part=\"duration\"\n type=\"text\"\n placeholder=\"+40m\"\n [attr.aria-label]=\"t('duration')\"\n [attr.aria-describedby]=\"describedBy()\"\n [value]=\"expression()\"\n (input)=\"onExpressionInput($event)\"\n (keydown)=\"onExpressionKeyDown($event)\"\n (blur)=\"commitExpression()\"\n />\n <span\n data-part=\"preview\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-resolved]=\"resolved() === null ? null : ''\"\n [attr.data-crosses-midnight]=\"crossesMidnight() ? '' : null\"\n ><span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span\n >{{ previewText() }}</span\n >\n } @else {\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 }\n <span data-part=\"value-text\" hidden [attr.id]=\"valueTextId\">{{ spokenTime() }}</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=\"[slTimeFieldEnd]\" />\n <input data-part=\"hidden-input\" type=\"hidden\" readonly [attr.name]=\"name()\" [value]=\"iso()\" />`,\n styleUrl: '../../../styles/src/time-field/time-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTimeField), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTimeField), multi: true },\n ],\n host: {\n 'data-ui': 'time-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-cycle]': 'dataCycle()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-relative]': \"expression() === null ? null : ''\",\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 SlTimeField implements ControlValueAccessor, Validator, OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<PlainTime | null | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<PlainTime | null | undefined>(undefined);\n\n /** The earliest time the control accepts. Also a form validity rule. */\n readonly min = input<PlainTime | undefined>(undefined);\n /** The latest time the control accepts. Also a form validity rule. */\n readonly max = input<PlainTime | undefined>(undefined);\n /** Refuses particular times — a lunch break, a booked slot, a closed shop. */\n readonly isTimeUnavailable = input<((time: PlainTime) => boolean) | undefined>(undefined);\n\n /**\n * BCP 47. Decides the field order, the separators and the placeholder.\n * Unset, the language in force (`provideSlotted`) decides.\n */\n readonly locale = input<string | undefined>(undefined);\n /** Which zone answers \"what time is it now\", and nothing else. */\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<TimeFieldHourCycle | undefined>(undefined);\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n /**\n * What an empty segment steps from, and what a duration resolves against.\n * Unset, both are the current time in `timeZone`.\n */\n readonly referenceTime = input<PlainTime | undefined>(undefined);\n\n readonly size = input<TimeFieldSize | undefined>(undefined);\n readonly variant = input<TimeFieldVariant | 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 /** Whether `+`, `-` and `=` open the duration expression. */\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * clear button, the duration region's name and the next-day preview.\n */\n readonly messages = input<PartialMessages<TimeFieldMessages> | undefined>(undefined);\n /** The name a plain form post carries the `HH:mm:ss` string under. */\n readonly name = input<string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the segments, whether a duration crossed midnight, the reason, the\n * originating event and `cancel()`. There is no `[(value)]`, because a\n * two-way binding has one slot and can carry none of those.\n */\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 — `time-range-picker` names its two ends — has no\n * static attribute to write.\n */\n readonly label = input<string | undefined>(undefined);\n\n readonly valueChange = output<TimeFieldChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectTimeFieldDefaults();\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(timeFieldMessages, 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 protected readonly valueTextId = `sl-time-field-${String((sequence += 1))}`;\n\n private readonly segments = signal<SegmentState>(EMPTY_SEGMENTS);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * What time it is, resolved after construction rather than during it, so a\n * server and a browser never disagree about the markup. Nothing is drawn from\n * it: it is the time an empty segment steps to and a duration resolves from.\n */\n private readonly clock = signal<PlainTime>({ hour: 12, minute: 0, second: 0 });\n protected readonly activeField = signal<TimeFieldName | undefined>(undefined);\n /** The duration being written, or `null` while the segments are showing. */\n protected readonly expression = signal<string | null>(null);\n\n private onChangeFn: (value: PlainTime | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n\n protected readonly format = computed(() =>\n createTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.hourCycle() ?? this.defaults.hourCycle,\n locale: this.locale() ?? this.appLocale(),\n }),\n );\n\n protected readonly dataCycle = computed(() => (this.format().usesDayPeriod ? '12' : '24'));\n\n protected readonly fields = computed(() =>\n this.format()\n .pattern.filter((part) => part.type !== 'literal')\n .map((part) => part.type as TimeFieldName),\n );\n\n /** What an empty segment steps from, in the shape the engine reads. */\n private readonly reference = computed<SegmentReference>(() => {\n const anchor = this.anchor();\n const shown = this.format().toDisplay(anchor.hour);\n return {\n ...REFERENCE_DATE,\n dayPeriod: shown.dayPeriod ?? 0,\n hour: shown.hour,\n hourCycle: this.format().hourCycle,\n minute: anchor.minute,\n second: anchor.second,\n };\n });\n\n private readonly anchor = computed(() => this.referenceTime() ?? this.clock());\n\n /** The time the segments make, or `null` while any drawn field is unfilled. */\n readonly time = computed(() => timeOf(this.segments(), this.format()));\n protected readonly iso = computed(() => {\n const time = this.time();\n return time === null ? '' : toISOTime(time);\n });\n protected readonly spokenTime = computed(() => {\n const time = this.time();\n return time === null ? '' : this.format().describe(time);\n });\n\n /* ── The duration expression ─────────────────────────────────────────── */\n\n protected readonly resolved = computed(() => {\n const written = this.expression();\n if (written === null) return null;\n const seconds = parseDuration(written);\n return seconds === null ? null : resolveRelative(this.anchor(), seconds);\n });\n\n protected readonly crossesMidnight = computed(() => (this.resolved()?.days ?? 0) !== 0);\n\n protected readonly previewText = computed(() => {\n const step = this.resolved();\n if (step === null) return '';\n const written = this.format().format(step.time);\n return step.days === 0 ? written : this.t('nextDay', { time: written });\n });\n\n /* ── What the field around it decides ────────────────────────────────── */\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 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 time\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 time = this.time();\n if (time !== null && !isTimeInRange(time, this.min(), this.max())) return true;\n if (time !== null && this.isTimeUnavailable()?.(time) === true) return true;\n return this.invalid() ?? this.field?.invalid();\n });\n\n protected readonly controlId = computed(\n () => 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() || this.expression() !== null) return false;\n const held = this.segments();\n return this.fields().some((name) => held[name] !== null);\n });\n\n constructor() {\n /**\n * A consumer's own value writes the segments, and only when it names a\n * different time: written on every change detection it would throw away a\n * half-typed time on the keystroke that completes a different one.\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 with a controlled `null`, the first minute digit after a whole hour\n read as a time the consumer had not written back, and the segments\n were reset under the reader's fingers. Found by `time-range-picker`,\n which binds the field to its work. */\n if (segments.typing !== null) return;\n if (isSameTime(timeOf(segments, this.format()), next)) return;\n this.segments.set(segmentsOfTime(next, this.format()));\n });\n\n /* The expression region is focused the moment it replaces the segments,\n with the caret after the character that opened it. */\n effect(() => {\n if (this.expression() === null) return;\n queueMicrotask(() => {\n const input = this.element.querySelector<HTMLInputElement>('[data-part=\"duration\"]');\n if (input === null) return;\n input.focus();\n input.setSelectionRange(input.value.length, input.value.length);\n });\n });\n }\n\n ngOnInit() {\n this.segments.set(segmentsOfTime(this.value() ?? this.defaultValue() ?? null, this.format()));\n this.clock.set(nowIn(this.timeZone() ?? this.defaults.timeZone));\n }\n\n /* ── The value ───────────────────────────────────────────────────────── */\n\n writeValue(value: PlainTime | null | undefined) {\n this.segments.set(segmentsOfTime(value ?? null, this.format()));\n }\n\n registerOnChange(fn: (value: PlainTime | 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 time = control.value as PlainTime | null;\n if (time === null || time === undefined) return null;\n\n const min = this.min();\n const max = this.max();\n if (!isTimeInRange(time, min, max)) {\n return { slottedTimeRange: { min, max, actual: time } };\n }\n if (this.isTimeUnavailable()?.(time) === true) {\n return { slottedTimeUnavailable: { actual: time } };\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 time when none is. Every text\n * control on the page answers a press anywhere inside its border.\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 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 if (this.expression() === null) 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. A\n * `div` with `role=\"spinbutton\"` is invisible to every \"is the target\n * editable\" guard an application writes, and `preventDefault` alone does not\n * help: a shortcut handler reads the key, not the default.\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 family\n * stops the event — which is the composition React gets by calling the\n * 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 TimeFieldName | 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. `time-picker` opens its\n * panel with `Alt`+`ArrowDown`, and a segment that stepped on it would eat\n * the only shortcut the surface has.\n */\n if (event.altKey) return;\n\n if ((this.relative() ?? this.defaults.relative) && isRelativeKey(event.key)) {\n this.consume(event);\n this.expression.set(event.key);\n return;\n }\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 /* The day period holds two words rather than digits, and the platform's own\n control takes it by the first letter of either. */\n if (name === 'dayPeriod' && /^\\p{L}$/u.test(event.key)) {\n const typed = typeDayPeriod(held, event.key, this.format());\n if (typed === null) return;\n this.consume(event);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n return;\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 protected onExpressionInput(event: Event) {\n this.expression.set((event.target as HTMLInputElement).value);\n }\n\n protected onExpressionKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n /* An expression inside a form must not submit it: `Enter` is this\n control's commit and nothing above it needs to hear the key. */\n this.consume(event);\n this.commitExpression(event);\n this.focus();\n return;\n }\n\n if (event.key === 'Escape') {\n /* Abandoned whole, and the segments come back exactly as they were. The\n key is stopped so an overlay above does not close on the same press —\n the field takes it first while an expression is open. */\n this.consume(event);\n this.expression.set(null);\n this.focus();\n }\n }\n\n /** Commits the expression when it resolves, and abandons it when it does not. */\n protected commitExpression(source?: Event) {\n const step = this.resolved();\n if (step === null) {\n this.expression.set(null);\n return;\n }\n this.commit(segmentsOfTime(step.time, this.format()), 'keyboard', source, step.days !== 0);\n this.expression.set(null);\n }\n\n /**\n * A whole time, pasted. The locale's shape is read first and ISO 8601 after\n * it; text that is neither but reads as a duration opens the expression, so\n * pasting `+40m` does what typing it does.\n */\n protected onPaste(event: ClipboardEvent) {\n if (!this.editable()) return;\n const text = event.clipboardData?.getData('text/plain') ?? '';\n\n const parsed = this.format().parse(text);\n if (parsed !== null) {\n event.preventDefault();\n this.commit(segmentsOfTime(parsed, this.format()), 'keyboard', event);\n return;\n }\n\n if ((this.relative() ?? this.defaults.relative) && parseDuration(text) !== null) {\n event.preventDefault();\n this.expression.set(text.trim());\n }\n }\n\n /** A run of typed digits ends when focus leaves. */\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: TimeFieldName): number | null {\n return this.segments()[field];\n }\n\n protected rangeOf(field: TimeFieldName) {\n return fieldRange(field, { hourCycle: this.format().hourCycle });\n }\n\n /**\n * What a reader hears instead of the number. The day period is why it is not\n * optional: `aria-valuenow` there is `0` or `1`, which is not a name in any\n * language.\n */\n protected spokenOf(field: TimeFieldName): string | null {\n const raw = this.segments()[field];\n if (raw === null) return null;\n if (field !== 'dayPeriod') return String(raw);\n return this.format().dayPeriodNames()[raw === 1 ? 1 : 0];\n }\n\n /**\n * What one field shows. A finished value is padded to the field's width so\n * the columns hold their place; a value still being typed is not, because a\n * padded run shows numbers nobody typed.\n */\n protected textOf(field: TimeFieldName): 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 return this.format().formatValue(raw, field);\n }\n\n /** Exactly one segment is in the tab sequence, which is the roving model. */\n protected tabIndexOf(field: TimeFieldName): 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: TimeFieldName) {\n this.activeField.set(name);\n this.element.querySelector<HTMLElement>(`[data-part=\"segment\"][data-field=\"${name}\"]`)?.focus();\n }\n\n private moveBy(name: TimeFieldName, 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 `23` into\n * an hour passes through `2` on the way, and `2` is a time the arithmetic\n * accepts and nobody meant. The request is emitted when the run ends.\n */\n private commit(\n next: SegmentState,\n reason: ChangeReason,\n source: Event | undefined,\n crossesMidnight = false,\n ) {\n const previous = this.time();\n this.segments.set(next);\n if (next.typing !== null) return;\n\n const nextValue = timeOf(next, this.format());\n let cancelled = false;\n const state = createControllable<PlainTime | null>({\n controlled: undefined,\n initial: previous,\n equals: isSameTime,\n onRequest: (request) => {\n this.valueChange.emit({ ...request, crossesMidnight, 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 time in the reading direction: a clock mark, a label,\n * an icon. Named for the direction rather than for a side, so the same markup\n * puts the mark before the time 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: '[slTimeFieldStart]',\n standalone: true,\n exportAs: 'slTimeFieldStart',\n host: { 'data-part': 'start' },\n})\nexport class SlTimeFieldStart {}\n\n/** An adornment after the time in the reading direction. */\n@Directive({\n selector: '[slTimeFieldEnd]',\n standalone: true,\n exportAs: 'slTimeFieldEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlTimeFieldEnd {}\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-time-field.mjs","sources":["../../time-field/src/time-field-defaults.ts","../../time-field/src/time-field.ts","../../time-field/src/time-field-parts.ts","../../time-field/src/slotted-angular-time-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { TimeGranularity } from '@slotted/core/date';\n\n/** The type step the control sits at, matching the field around it. */\nexport type TimeFieldSize = '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 time shows one frame twice rather than two frames.\n */\nexport type TimeFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The question a consumer asks about the clock. Which variant of each — `h11`\n * or `h12`, `h23` or `h24` — is the locale's own, and `Intl` answers it.\n */\nexport type TimeFieldHourCycle = 12 | 24;\n\nexport interface TimeFieldDefaults {\n granularity: TimeGranularity;\n /** Unset means the locale decides both the cycle and its variant. */\n hourCycle: TimeFieldHourCycle | undefined;\n /** Whether `+`, `-` and `=` open the duration expression. */\n relative: boolean;\n size: TimeFieldSize;\n /** Which zone answers \"what time is it now\". Unset means the runtime's own. */\n timeZone: string | undefined;\n variant: TimeFieldVariant;\n}\n\nconst FALLBACK: TimeFieldDefaults = {\n granularity: 'minute',\n hourCycle: undefined,\n relative: true,\n size: 'md',\n timeZone: undefined,\n variant: 'outline',\n};\n\nexport const TIME_FIELD_DEFAULTS = new InjectionToken<TimeFieldDefaults>(\n 'slotted time field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its times look like, which clock they run\n * on and which zone answers \"now\", rather than repeating the same inputs on\n * every control in a form. A control that states any of them itself still\n * wins. The locale that writes the times, and the words, come from the\n * language in force (`provideSlotted`).\n */\nexport function provideTimeFieldDefaults(defaults: Partial<TimeFieldDefaults>) {\n return {\n provide: TIME_FIELD_DEFAULTS,\n useFactory: (): TimeFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a time field renders as here, before it states anything of its own. */\nexport function injectTimeFieldDefaults(): TimeFieldDefaults {\n return inject(TIME_FIELD_DEFAULTS);\n}\n","import {\n boundSegment,\n clearSegment,\n commitTyping,\n createTimeFormat,\n EMPTY_SEGMENTS,\n fieldRange,\n isRelativeKey,\n isSameTime,\n isTimeInRange,\n nowIn,\n parseDuration,\n plainDate,\n resolveRelative,\n segmentsOfTime,\n stepSegment,\n timeOf,\n toISOTime,\n typeDayPeriod,\n typeDigit,\n} from '@slotted/core/date';\nimport type {\n PlainTime,\n SegmentReference,\n SegmentState,\n TimeFieldName,\n TimeGranularity,\n} from '@slotted/core/date';\nimport {\n timeFieldMessages,\n type PartialMessages,\n type TimeFieldMessages,\n} from '@slotted/core/i18n';\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 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 { SlField } from '@slotted/angular/field';\n\nimport { injectTimeFieldDefaults } from './time-field-defaults';\nimport type { TimeFieldHourCycle, TimeFieldSize, TimeFieldVariant } from './time-field-defaults';\n\n/**\n * How far `PageUp` and `PageDown` move each field.\n *\n * The APG spin-button example pages every button by five. Fifteen minutes is\n * the page a reader of a time field means and the step a quarter-hour panel\n * offers, so the two agree; three hours is a quarter of a twelve-hour cycle.\n */\nconst PAGE_STEP: Record<TimeFieldName, number> = {\n hour: 3,\n minute: 15,\n second: 15,\n dayPeriod: 1,\n};\n\n/**\n * The date half of the reference, which a time field never draws and the engine\n * still asks for. One `SegmentState` holds both halves — that is what\n * `datetime-field` needs — so the reference carries both as well.\n */\nconst REFERENCE_DATE = plainDate(2000, 1, 1);\n\n/**\n * The hidden element carrying the whole time 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: stable for a given render order, which is what\n * hydration needs, and never on the public surface.\n */\nlet sequence = 0;\n\n/**\n * What a request carries beyond the value: the segments, so a half-typed time\n * can be saved, and whether the duration that produced it ran past midnight.\n */\nexport interface TimeFieldChangeRequest extends ChangeRequest<PlainTime | null> {\n readonly segments: SegmentState;\n readonly crossesMidnight: boolean;\n}\n\n/**\n * A segmented time 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.\n *\n * **Angular is a component with a template and a `ControlValueAccessor`**,\n * because a time belongs in a Reactive Form and Angular has the integration\n * point for it. It also implements `Validator`: `min`, `max` and\n * `isTimeUnavailable` are validity this control owns and no other validator can\n * see. React has no equivalent, and `references/frameworks.md` asks for that\n * asymmetry to be recorded rather than levelled away.\n *\n * **A time can be written as a duration.** `+`, `-` and `=` open one expression\n * region in place of the segments, and what it resolves to is drawn beside it\n * before `Enter` commits anything.\n */\n@Component({\n selector: '[slTimeField]',\n standalone: true,\n exportAs: 'slTimeField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slTimeFieldStart]\" />\n @if (expression() !== null) {\n <input\n #duration\n data-part=\"duration\"\n data-part-duration=\"\"\n type=\"text\"\n placeholder=\"+40m\"\n [attr.aria-label]=\"t('duration')\"\n [attr.aria-describedby]=\"describedBy()\"\n [value]=\"expression()\"\n (input)=\"onExpressionInput($event)\"\n (keydown)=\"onExpressionKeyDown($event)\"\n (blur)=\"commitExpression()\"\n />\n <span\n data-part=\"preview\"\n data-part-preview=\"\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-resolved]=\"resolved() === null ? null : ''\"\n [attr.data-crosses-midnight]=\"crossesMidnight() ? '' : null\"\n ><span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span\n >{{ previewText() }}</span\n >\n } @else {\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 format().pattern; track $index) {\n @if (part.type === 'literal') {\n <span data-part=\"literal\" data-part-literal=\"\" aria-hidden=\"true\">{{\n part.value\n }}</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 }\n <span data-part=\"value-text\" data-part-value-text=\"\" hidden [attr.id]=\"valueTextId\">{{\n spokenTime()\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=\"[slTimeFieldEnd]\" />\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/time-field/time-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTimeField), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTimeField), multi: true },\n ],\n host: {\n 'data-ui': 'time-field',\n 'data-ui-time-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-cycle]': 'dataCycle()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-relative]': \"expression() === null ? null : ''\",\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 SlTimeField implements ControlValueAccessor, Validator, OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<PlainTime | null | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<PlainTime | null | undefined>(undefined);\n\n /** The earliest time the control accepts. Also a form validity rule. */\n readonly min = input<PlainTime | undefined>(undefined);\n /** The latest time the control accepts. Also a form validity rule. */\n readonly max = input<PlainTime | undefined>(undefined);\n /** Refuses particular times — a lunch break, a booked slot, a closed shop. */\n readonly isTimeUnavailable = input<((time: PlainTime) => boolean) | undefined>(undefined);\n\n /**\n * BCP 47. Decides the field order, the separators and the placeholder.\n * Unset, the language in force (`provideSlotted`) decides.\n */\n readonly locale = input<string | undefined>(undefined);\n /** Which zone answers \"what time is it now\", and nothing else. */\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<TimeFieldHourCycle | undefined>(undefined);\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n /**\n * What an empty segment steps from, and what a duration resolves against.\n * Unset, both are the current time in `timeZone`.\n */\n readonly referenceTime = input<PlainTime | undefined>(undefined);\n\n readonly size = input<TimeFieldSize | undefined>(undefined);\n readonly variant = input<TimeFieldVariant | 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 /** Whether `+`, `-` and `=` open the duration expression. */\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * clear button, the duration region's name and the next-day preview.\n */\n readonly messages = input<PartialMessages<TimeFieldMessages> | undefined>(undefined);\n /** The name a plain form post carries the `HH:mm:ss` string under. */\n readonly name = input<string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the segments, whether a duration crossed midnight, the reason, the\n * originating event and `cancel()`. There is no `[(value)]`, because a\n * two-way binding has one slot and can carry none of those.\n */\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 — `time-range-picker` names its two ends — has no\n * static attribute to write.\n */\n readonly label = input<string | undefined>(undefined);\n\n readonly valueChange = output<TimeFieldChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectTimeFieldDefaults();\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(timeFieldMessages, 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 protected readonly valueTextId = `sl-time-field-${String((sequence += 1))}`;\n\n private readonly segments = signal<SegmentState>(EMPTY_SEGMENTS);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * What time it is, resolved after construction rather than during it, so a\n * server and a browser never disagree about the markup. Nothing is drawn from\n * it: it is the time an empty segment steps to and a duration resolves from.\n */\n private readonly clock = signal<PlainTime>({ hour: 12, minute: 0, second: 0 });\n protected readonly activeField = signal<TimeFieldName | undefined>(undefined);\n /** The duration being written, or `null` while the segments are showing. */\n protected readonly expression = signal<string | null>(null);\n\n private onChangeFn: (value: PlainTime | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n\n protected readonly format = computed(() =>\n createTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.hourCycle() ?? this.defaults.hourCycle,\n locale: this.locale() ?? this.appLocale(),\n }),\n );\n\n protected readonly dataCycle = computed(() => (this.format().usesDayPeriod ? '12' : '24'));\n\n protected readonly fields = computed(() =>\n this.format()\n .pattern.filter((part) => part.type !== 'literal')\n .map((part) => part.type as TimeFieldName),\n );\n\n /** What an empty segment steps from, in the shape the engine reads. */\n private readonly reference = computed<SegmentReference>(() => {\n const anchor = this.anchor();\n const shown = this.format().toDisplay(anchor.hour);\n return {\n ...REFERENCE_DATE,\n dayPeriod: shown.dayPeriod ?? 0,\n hour: shown.hour,\n hourCycle: this.format().hourCycle,\n minute: anchor.minute,\n second: anchor.second,\n };\n });\n\n private readonly anchor = computed(() => this.referenceTime() ?? this.clock());\n\n /** The time the segments make, or `null` while any drawn field is unfilled. */\n readonly time = computed(() => timeOf(this.segments(), this.format()));\n protected readonly iso = computed(() => {\n const time = this.time();\n return time === null ? '' : toISOTime(time);\n });\n protected readonly spokenTime = computed(() => {\n const time = this.time();\n return time === null ? '' : this.format().describe(time);\n });\n\n /* ── The duration expression ─────────────────────────────────────────── */\n\n protected readonly resolved = computed(() => {\n const written = this.expression();\n if (written === null) return null;\n const seconds = parseDuration(written);\n return seconds === null ? null : resolveRelative(this.anchor(), seconds);\n });\n\n protected readonly crossesMidnight = computed(() => (this.resolved()?.days ?? 0) !== 0);\n\n protected readonly previewText = computed(() => {\n const step = this.resolved();\n if (step === null) return '';\n const written = this.format().format(step.time);\n return step.days === 0 ? written : this.t('nextDay', { time: written });\n });\n\n /* ── What the field around it decides ────────────────────────────────── */\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 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 time\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 time = this.time();\n if (time !== null && !isTimeInRange(time, this.min(), this.max())) return true;\n if (time !== null && this.isTimeUnavailable()?.(time) === true) return true;\n return this.invalid() ?? this.field?.invalid();\n });\n\n protected readonly controlId = computed(\n () => 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() || this.expression() !== null) return false;\n const held = this.segments();\n return this.fields().some((name) => held[name] !== null);\n });\n\n constructor() {\n /**\n * A consumer's own value writes the segments, and only when it names a\n * different time: written on every change detection it would throw away a\n * half-typed time on the keystroke that completes a different one.\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 with a controlled `null`, the first minute digit after a whole hour\n read as a time the consumer had not written back, and the segments\n were reset under the reader's fingers. Found by `time-range-picker`,\n which binds the field to its work. */\n if (segments.typing !== null) return;\n if (isSameTime(timeOf(segments, this.format()), next)) return;\n this.segments.set(segmentsOfTime(next, this.format()));\n });\n\n /* The expression region is focused the moment it replaces the segments,\n with the caret after the character that opened it. */\n effect(() => {\n if (this.expression() === null) return;\n queueMicrotask(() => {\n const input = this.element.querySelector<HTMLInputElement>('[data-part=\"duration\"]');\n if (input === null) return;\n input.focus();\n input.setSelectionRange(input.value.length, input.value.length);\n });\n });\n }\n\n ngOnInit() {\n this.segments.set(segmentsOfTime(this.value() ?? this.defaultValue() ?? null, this.format()));\n this.clock.set(nowIn(this.timeZone() ?? this.defaults.timeZone));\n }\n\n /* ── The value ───────────────────────────────────────────────────────── */\n\n writeValue(value: PlainTime | null | undefined) {\n this.segments.set(segmentsOfTime(value ?? null, this.format()));\n }\n\n registerOnChange(fn: (value: PlainTime | 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 time = control.value as PlainTime | null;\n if (time === null || time === undefined) return null;\n\n const min = this.min();\n const max = this.max();\n if (!isTimeInRange(time, min, max)) {\n return { slottedTimeRange: { min, max, actual: time } };\n }\n if (this.isTimeUnavailable()?.(time) === true) {\n return { slottedTimeUnavailable: { actual: time } };\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 time when none is. Every text\n * control on the page answers a press anywhere inside its border.\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 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 if (this.expression() === null) 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. A\n * `div` with `role=\"spinbutton\"` is invisible to every \"is the target\n * editable\" guard an application writes, and `preventDefault` alone does not\n * help: a shortcut handler reads the key, not the default.\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 family\n * stops the event — which is the composition React gets by calling the\n * 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 TimeFieldName | 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. `time-picker` opens its\n * panel with `Alt`+`ArrowDown`, and a segment that stepped on it would eat\n * the only shortcut the surface has.\n */\n if (event.altKey) return;\n\n if ((this.relative() ?? this.defaults.relative) && isRelativeKey(event.key)) {\n this.consume(event);\n this.expression.set(event.key);\n return;\n }\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 /* The day period holds two words rather than digits, and the platform's own\n control takes it by the first letter of either. */\n if (name === 'dayPeriod' && /^\\p{L}$/u.test(event.key)) {\n const typed = typeDayPeriod(held, event.key, this.format());\n if (typed === null) return;\n this.consume(event);\n this.commit(typed.segments, 'keyboard', event);\n if (typed.advance) this.moveBy(name, 1);\n return;\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 protected onExpressionInput(event: Event) {\n this.expression.set((event.target as HTMLInputElement).value);\n }\n\n protected onExpressionKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n /* An expression inside a form must not submit it: `Enter` is this\n control's commit and nothing above it needs to hear the key. */\n this.consume(event);\n this.commitExpression(event);\n this.focus();\n return;\n }\n\n if (event.key === 'Escape') {\n /* Abandoned whole, and the segments come back exactly as they were. The\n key is stopped so an overlay above does not close on the same press —\n the field takes it first while an expression is open. */\n this.consume(event);\n this.expression.set(null);\n this.focus();\n }\n }\n\n /** Commits the expression when it resolves, and abandons it when it does not. */\n protected commitExpression(source?: Event) {\n const step = this.resolved();\n if (step === null) {\n this.expression.set(null);\n return;\n }\n this.commit(segmentsOfTime(step.time, this.format()), 'keyboard', source, step.days !== 0);\n this.expression.set(null);\n }\n\n /**\n * A whole time, pasted. The locale's shape is read first and ISO 8601 after\n * it; text that is neither but reads as a duration opens the expression, so\n * pasting `+40m` does what typing it does.\n */\n protected onPaste(event: ClipboardEvent) {\n if (!this.editable()) return;\n const text = event.clipboardData?.getData('text/plain') ?? '';\n\n const parsed = this.format().parse(text);\n if (parsed !== null) {\n event.preventDefault();\n this.commit(segmentsOfTime(parsed, this.format()), 'keyboard', event);\n return;\n }\n\n if ((this.relative() ?? this.defaults.relative) && parseDuration(text) !== null) {\n event.preventDefault();\n this.expression.set(text.trim());\n }\n }\n\n /** A run of typed digits ends when focus leaves. */\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: TimeFieldName): number | null {\n return this.segments()[field];\n }\n\n protected rangeOf(field: TimeFieldName) {\n return fieldRange(field, { hourCycle: this.format().hourCycle });\n }\n\n /**\n * What a reader hears instead of the number. The day period is why it is not\n * optional: `aria-valuenow` there is `0` or `1`, which is not a name in any\n * language.\n */\n protected spokenOf(field: TimeFieldName): string | null {\n const raw = this.segments()[field];\n if (raw === null) return null;\n if (field !== 'dayPeriod') return String(raw);\n return this.format().dayPeriodNames()[raw === 1 ? 1 : 0];\n }\n\n /**\n * What one field shows. A finished value is padded to the field's width so\n * the columns hold their place; a value still being typed is not, because a\n * padded run shows numbers nobody typed.\n */\n protected textOf(field: TimeFieldName): 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 return this.format().formatValue(raw, field);\n }\n\n /** Exactly one segment is in the tab sequence, which is the roving model. */\n protected tabIndexOf(field: TimeFieldName): 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: TimeFieldName) {\n this.activeField.set(name);\n this.element.querySelector<HTMLElement>(`[data-part=\"segment\"][data-field=\"${name}\"]`)?.focus();\n }\n\n private moveBy(name: TimeFieldName, 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 `23` into\n * an hour passes through `2` on the way, and `2` is a time the arithmetic\n * accepts and nobody meant. The request is emitted when the run ends.\n */\n private commit(\n next: SegmentState,\n reason: ChangeReason,\n source: Event | undefined,\n crossesMidnight = false,\n ) {\n const previous = this.time();\n this.segments.set(next);\n if (next.typing !== null) return;\n\n const nextValue = timeOf(next, this.format());\n let cancelled = false;\n const state = createControllable<PlainTime | null>({\n controlled: undefined,\n initial: previous,\n equals: isSameTime,\n onRequest: (request) => {\n this.valueChange.emit({ ...request, crossesMidnight, 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 time in the reading direction: a clock mark, a label,\n * an icon. Named for the direction rather than for a side, so the same markup\n * puts the mark before the time 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: '[slTimeFieldStart]',\n standalone: true,\n exportAs: 'slTimeFieldStart',\n host: { 'data-part': 'start', 'data-part-start': '' },\n})\nexport class SlTimeFieldStart {}\n\n/** An adornment after the time in the reading direction. */\n@Directive({\n selector: '[slTimeFieldEnd]',\n standalone: true,\n exportAs: 'slTimeFieldEnd',\n host: { 'data-part': 'end', 'data-part-end': '' },\n})\nexport class SlTimeFieldEnd {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}