@slotted/angular 0.1.0-beta.1 → 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-datetime-picker.mjs","sources":["../../datetime-picker/src/datetime-picker-defaults.ts","../../datetime-picker/src/datetime-picker-parts.ts","../../datetime-picker/src/datetime-picker.ts","../../datetime-picker/src/slotted-angular-datetime-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { TimeGranularity } from '@slotted/core/date';\n\nimport type {\n DateTimeFieldHourCycle,\n DateTimeFieldSize,\n DateTimeFieldVariant,\n} from '@slotted/angular/datetime-field';\n\nexport type DateTimePickerSize = DateTimeFieldSize;\nexport type DateTimePickerVariant = DateTimeFieldVariant;\nexport type DateTimePickerHourCycle = DateTimeFieldHourCycle;\n\n/** Where the panel hangs from the control. */\nexport type DateTimePickerPlacement =\n 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\n/**\n * When the panel closes on a press.\n *\n * `auto` is the family's own rule, and it is what lets the panel need no\n * confirm button: it closes on the press that **completed** the value and stays\n * open otherwise.\n */\nexport type DateTimePickerCloseOnSelect = 'auto' | 'always' | 'never';\n\n/** Which surface focus lands on when the panel opens. */\nexport type DateTimePickerOpenTo = 'date' | 'time';\n\n/** What a refused option does: stay and say so, or go. */\nexport type DateTimePickerUnavailableOptions = 'disable' | 'hide';\n\n/**\n * A whole day at a one-minute step, which is the finest whole-day list any\n * surveyed implementation offers. A day at a one-second step is 86 400 rows and\n * is a configuration mistake rather than a list.\n */\nexport const DATE_TIME_PICKER_MAX_OPTIONS = 1440;\n\nexport interface DateTimePickerDefaults {\n calendar: 'gregory';\n closeOnSelect: DateTimePickerCloseOnSelect;\n granularity: TimeGranularity;\n hourCycle: DateTimePickerHourCycle | undefined;\n maxOptions: number;\n openTo: DateTimePickerOpenTo;\n placement: DateTimePickerPlacement;\n size: DateTimePickerSize;\n /** Seconds between two offered times. */\n step: number;\n timeZone: string | undefined;\n unavailableOptions: DateTimePickerUnavailableOptions;\n variant: DateTimePickerVariant;\n}\n\nconst FALLBACK: DateTimePickerDefaults = {\n calendar: 'gregory',\n closeOnSelect: 'auto',\n granularity: 'minute',\n hourCycle: undefined,\n maxOptions: DATE_TIME_PICKER_MAX_OPTIONS,\n openTo: 'date',\n placement: 'bottom-start',\n size: 'md',\n step: 900,\n timeZone: undefined,\n unavailableOptions: 'disable',\n variant: 'outline',\n};\n\nexport const DATE_TIME_PICKER_DEFAULTS = new InjectionToken<DateTimePickerDefaults>(\n 'slotted datetime picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its datetime pickers behave — which clock\n * they run on, which step the list offers, which surface focus opens on —\n * rather than repeating the same inputs on every control in a form. A control\n * that states any of them itself still wins. The locale that writes them and\n * every word they say come from the language in force (`provideSlotted`).\n */\nexport function provideDateTimePickerDefaults(defaults: Partial<DateTimePickerDefaults>) {\n return {\n provide: DATE_TIME_PICKER_DEFAULTS,\n useFactory: (): DateTimePickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a datetime picker renders as here, before it states anything itself. */\nexport function injectDateTimePickerDefaults(): DateTimePickerDefaults {\n return inject(DATE_TIME_PICKER_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * What one row of the list draws.\n *\n * The row is the family's — its role, its states, its keyboard and its target\n * size — and what is written inside it is the consumer's. It is a template\n * rather than a projected slot because it is re-rendered once per option, which\n * is exactly the case `references/frameworks.md` names `NgTemplateOutlet` for.\n *\n * The context carries the time as `$implicit`, plus `date`, `label`,\n * `selected`, `current` and `unavailable`.\n */\n@Directive({\n selector: '[slDateTimePickerOption]',\n standalone: true,\n exportAs: 'slDateTimePickerOption',\n})\nexport class SlDateTimePickerOption {}\n\n/**\n * The consumer's own shortcuts, in the head beside `now`.\n *\n * This family ships no list of them: \"tomorrow at nine\" is a business clock,\n * and a library that guessed at one would be guessing at an industry. What it\n * ships is the row they stand in.\n */\n@Directive({\n selector: '[slDateTimePickerPresets]',\n standalone: true,\n exportAs: 'slDateTimePickerPresets',\n host: { 'data-part': 'presets' },\n})\nexport class SlDateTimePickerPresets {}\n\n/** The consumer's own actions, under both surfaces. */\n@Directive({\n selector: '[slDateTimePickerFooter]',\n standalone: true,\n exportAs: 'slDateTimePickerFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlDateTimePickerFooter {}\n","import {\n createDateTimeFormat,\n dateBoundsOf,\n dayWindow,\n hourJump,\n isDateTimeInRange,\n isSameDate,\n isSameDateTime,\n isSameTime,\n isTimeInRange,\n isTruncated,\n nearestIndex,\n nowDateTimeIn,\n timeList,\n} from '@slotted/core/date';\nimport type {\n PlainDate,\n PlainDateTime,\n PlainTime,\n TimeGranularity,\n TimeOption,\n} from '@slotted/core/date';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { tabbables } from '@slotted/core/focus';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { AfterViewInit, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n datetimePickerMessages,\n type DatetimePickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { SlCalendar } from '@slotted/angular/calendar';\nimport type { CalendarValue, CalendarView } from '@slotted/angular/calendar';\nimport { SlDateTimeField, SlDateTimeFieldEnd } from '@slotted/angular/datetime-field';\nimport type { DateTimeFieldChangeRequest } from '@slotted/angular/datetime-field';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateTimePickerDefaults } from './datetime-picker-defaults';\nimport type {\n DateTimePickerCloseOnSelect,\n DateTimePickerHourCycle,\n DateTimePickerOpenTo,\n DateTimePickerPlacement,\n DateTimePickerSize,\n DateTimePickerUnavailableOptions,\n DateTimePickerVariant,\n} from './datetime-picker-defaults';\nimport { SlDateTimePickerOption } from './datetime-picker-parts';\n\n/** The reasons the contract's `stateModel.open` lists, and no other. */\ntype OpenReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select'\n>;\n\n/**\n * Below this width, on a finger, the surface is a sheet rather than a popover.\n * §2.7 of `docs/component-features.md` asks for it by name.\n */\nconst SHEET_QUERY = '(max-width: 480px) and (pointer: coarse)';\n/** The surface needs an identifier the trigger can point `aria-controls` at. */\nlet sequence = 0;\n\n/** Where the reader is in the panel: one highlight for two surfaces. */\nexport interface DateTimePickerHighlight {\n readonly date: PlainDate;\n readonly time: PlainTime | null;\n}\n\n/**\n * A datetime field, a trigger, and the only panel in the library that holds two\n * surfaces.\n *\n * **Both surfaces are in the DOM at every width.** A `tablist` that exists on a\n * narrow container and not on a wide one tells assistive technology two\n * different stories about the same component, which is the arrangement Kendo\n * and MUI ship and this family declines. `openTo` decides where focus lands,\n * not what is drawn.\n *\n * **The decision this family owes, in one sentence:** the press that leaves the\n * value incomplete carries focus to the half that is missing, and the press\n * that completes the value closes the panel.\n *\n * **The list answers the day the reader is on**, not a day already committed.\n *\n * **Two pairs of bounds apply at once**, which MUI's own validation page\n * records that it cannot combine.\n */\n@Component({\n selector: '[slDateTimePicker]',\n standalone: true,\n exportAs: 'slDateTimePicker',\n imports: [NgTemplateOutlet, SlCalendar, SlDateTimeField, SlDateTimeFieldEnd, SlGlyph, SlIcon],\n template: `<div data-part=\"control\" (keydown)=\"onControlKeyDown($event)\">\n <div\n slDateTimeField\n #field=\"slDateTimeField\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [hourCycle]=\"resolvedHourCycle()\"\n [granularity]=\"resolvedGranularity()\"\n [calendar]=\"resolvedCalendar()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [referenceDateTime]=\"referenceDateTime()\"\n [size]=\"resolvedSize()\"\n [variant]=\"resolvedVariant()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [minTime]=\"minTime()\"\n [maxTime]=\"maxTime()\"\n [isDateUnavailable]=\"isDateUnavailable()\"\n [isTimeUnavailable]=\"isTimeUnavailable()\"\n [clearable]=\"clearable()\"\n [relative]=\"relative()\"\n [name]=\"name()\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"readOnly()\"\n [invalid]=\"invalid()\"\n [required]=\"required()\"\n [value]=\"held()\"\n (valueChange)=\"onFieldValue($event)\"\n (focusout)=\"onControlFocusOut($event)\"\n >\n <span slDateTimeFieldEnd>\n <button\n #trigger\n data-part=\"trigger\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [disabled]=\"!editable()\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n <span slIcon><svg slGlyph name=\"calendar\"></svg></span>\n </button>\n </span>\n </div>\n </div>\n\n @if (isOpen()) {\n <div\n #layer\n data-ui=\"datetime-picker\"\n data-part=\"positioner\"\n data-open\n [attr.data-presentation]=\"sheet() ? 'sheet' : 'popover'\"\n [attr.data-positioned]=\"positioned() ? '' : null\"\n >\n <div\n data-part=\"content\"\n role=\"dialog\"\n [attr.id]=\"contentId\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-description]=\"truncated() ? t('truncated') : null\"\n [attr.data-granularity]=\"resolvedGranularity()\"\n [attr.data-open-to]=\"resolvedOpenTo()\"\n (keydown)=\"onContentKeyDown($event)\"\n >\n <div data-part=\"head\">\n <span data-part=\"head-value\">\n @if (held() !== null) {\n {{ headValue() }}\n } @else {\n {{ headDate() }},\n @if (headTime(); as time) {\n {{ time }}\n } @else {\n <span data-placeholder>{{ headPlaceholder() }}</span>\n }\n }\n </span>\n <ng-content select=\"[slDateTimePickerPresets]\" />\n <button data-part=\"now\" type=\"button\" (click)=\"chooseNow($event)\">\n <span slIcon size=\"sm\"><svg slGlyph name=\"clock\"></svg></span>\n {{ t('now') }}\n </button>\n </div>\n\n <div data-part=\"panels\">\n <div #datePanel data-part=\"date-panel\">\n <div\n slCalendar\n #calendar=\"slCalendar\"\n selectionMode=\"single\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [months]=\"months()\"\n [weekNumbers]=\"weekNumbers()\"\n [readOnly]=\"readOnly()\"\n [min]=\"dateMin()\"\n [max]=\"dateMax()\"\n [isDateUnavailable]=\"isDateUnavailable()\"\n [value]=\"dateValue()\"\n [focusedDate]=\"highlight().date\"\n [view]=\"view()\"\n (valueChange)=\"onCalendarValue($event)\"\n (focusedDateChange)=\"onFocusedDate($event)\"\n (viewChange)=\"view.set($event)\"\n ></div>\n </div>\n\n <div data-part=\"time-panel\">\n @if (list().length === 0) {\n <div data-part=\"empty\">{{ t('empty') }}</div>\n } @else {\n <div\n #rows\n data-part=\"list\"\n role=\"listbox\"\n [attr.aria-label]=\"listLabel()\"\n [attr.data-truncated]=\"truncated() ? '' : null\"\n (keydown)=\"onListKeyDown($event)\"\n >\n @for (option of list(); track $index) {\n <div\n data-part=\"option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"option.unavailable ? 'true' : null\"\n [attr.data-disabled]=\"option.unavailable ? '' : null\"\n [attr.data-selected]=\"isSelected(option) ? '' : null\"\n [attr.data-current]=\"$index === highlightIndex() ? '' : null\"\n [tabindex]=\"$index === highlightIndex() ? 0 : -1\"\n (click)=\"selectTime(option, $event)\"\n >\n @if (optionTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"contextFor(option, $index)\"\n />\n } @else {\n {{ labelFor(option) }}\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <ng-content select=\"[slDateTimePickerFooter]\" />\n </div>\n </div>\n }`,\n styleUrl: '../../../styles/src/datetime-picker/datetime-picker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlDateTimePicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateTimePicker), multi: true },\n ],\n host: {\n 'data-ui': 'datetime-picker',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-open]': \"isOpen() ? '' : 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 SlDateTimePicker implements AfterViewInit, ControlValueAccessor, Validator, OnInit {\n readonly value = input<PlainDateTime | null | undefined>(undefined);\n readonly defaultValue = input<PlainDateTime | null | undefined>(undefined);\n /** Present means the consumer owns whether the surface is showing. */\n readonly open = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n\n /** Where the reader is in the panel. Present means the consumer owns it. */\n readonly highlighted = input<DateTimePickerHighlight | undefined>(undefined);\n readonly defaultHighlighted = input<DateTimePickerHighlight | undefined>(undefined);\n\n readonly min = input<PlainDateTime | undefined>(undefined);\n readonly max = input<PlainDateTime | undefined>(undefined);\n /** The earliest time of every day inside the range, beside `min`. */\n readonly minTime = input<PlainTime | undefined>(undefined);\n /** The latest time of every day inside the range, beside `max`. */\n readonly maxTime = input<PlainTime | undefined>(undefined);\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n readonly isTimeUnavailable = input<((time: PlainTime, date: PlainDate) => boolean) | undefined>(\n undefined,\n );\n\n /** Seconds between two offered times. Ignored when `options` states the list. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /**\n * The times to offer, stated rather than stepped. A step describes a regular\n * list and a great many real ones are not.\n */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n readonly maxOptions = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly unavailableOptions = input<DateTimePickerUnavailableOptions | undefined>(undefined);\n\n /** BCP 47. Writes the field, the grid, the list and the trigger's moment. Unset, the language in force decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<DateTimePickerHourCycle | undefined>(undefined);\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n readonly calendar = input<'gregory' | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined>(undefined);\n readonly months = input<number | undefined>(undefined);\n readonly weekNumbers = input<boolean | undefined>(undefined);\n readonly referenceDateTime = input<PlainDateTime | undefined>(undefined);\n\n readonly size = input<DateTimePickerSize | undefined>(undefined);\n readonly variant = input<DateTimePickerVariant | undefined>(undefined);\n readonly placement = input<DateTimePickerPlacement | undefined>(undefined);\n readonly openTo = input<DateTimePickerOpenTo | undefined>(undefined);\n readonly closeOnSelect = input<DateTimePickerCloseOnSelect | undefined>(undefined);\n\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 readonly clearable = input(false, { transform: booleanAttribute });\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly name = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * trigger's two names, the `now` button, what an empty day says and what a\n * cut list says.\n */\n readonly messages = input<PartialMessages<DatetimePickerMessages> | undefined>(undefined);\n\n readonly valueChange = output<DateTimeFieldChangeRequest | ChangeRequest<PlainDateTime | null>>();\n readonly openChange = output<ChangeRequest<boolean>>();\n readonly highlightedChange = output<ChangeRequest<DateTimePickerHighlight>>();\n\n @ContentChild(SlDateTimePickerOption, { read: TemplateRef })\n protected optionTemplate?: TemplateRef<unknown>;\n\n @ViewChild('layer') protected layer?: ElementRef<HTMLElement>;\n @ViewChild('trigger') protected triggerRef?: ElementRef<HTMLButtonElement>;\n @ViewChild('rows') protected listRef?: ElementRef<HTMLElement>;\n @ViewChild('datePanel') protected datePanelRef?: ElementRef<HTMLElement>;\n @ViewChild('field') protected field?: SlDateTimeField;\n @ViewChild('calendar') protected calendarRef?: SlCalendar;\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectDateTimePickerDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(datetimePickerMessages, this.messages);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly enclosing = inject(SlField, { optional: true });\n\n protected readonly contentId = `sl-datetime-picker-${String((sequence += 1))}`;\n\n private readonly ownOpen = signal(false);\n private readonly ownValue = signal<PlainDateTime | null>(null);\n /**\n * The half pressed in the panel while the other half is missing. The value\n * stays `null` until the second press writes both, so the half lives here and\n * is forgotten when the panel closes.\n */\n private readonly pendingDate = signal<PlainDate | null>(null);\n private readonly pendingTime = signal<PlainTime | null>(null);\n private readonly ownHighlight = signal<DateTimePickerHighlight>({\n date: { year: 2000, month: 1, day: 1 },\n time: null,\n });\n private readonly clock = signal<PlainDateTime>({\n date: { year: 2000, month: 1, day: 1 },\n time: { hour: 12, minute: 0, second: 0 },\n });\n protected readonly view = signal<CalendarView>('day');\n protected readonly positioned = signal(false);\n protected readonly sheet = signal(false);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n\n private onChangeFn: (value: PlainDateTime | null) => void = () => undefined;\n /** Whether a form model holds the value, and answers a reset through `writeValue`. */\n private formBound = false;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n /**\n * Whether the next opening moves focus into the panel. Set by a request to\n * open from the trigger or from `openSurface()`, and never by Alt+ArrowDown,\n * which leaves focus in the field, or by a first render that starts open,\n * which would take focus from wherever the page put it.\n */\n private focusOnOpen = false;\n\n /**\n * Whether the reader has moved the highlight themselves. Until they have, the\n * day the panel is on follows the value and then the reference.\n */\n private movedByReader = false;\n\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private typeahead: TypeaheadHandle | null = null;\n\n protected readonly isOpen = computed(() => this.open() ?? this.ownOpen());\n protected readonly held = computed(() => this.value() ?? this.ownValue());\n protected readonly highlight = computed(() => this.highlighted() ?? this.ownHighlight());\n\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n protected readonly resolvedTimeZone = computed(() => this.timeZone() ?? this.defaults.timeZone);\n protected readonly resolvedHourCycle = computed(\n () => this.hourCycle() ?? this.defaults.hourCycle,\n );\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n protected readonly resolvedSize = computed(\n () => this.size() ?? this.enclosing?.resolvedSize() ?? this.defaults.size,\n );\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedPlacement = computed(\n () => this.placement() ?? this.defaults.placement,\n );\n protected readonly resolvedOpenTo = computed(() => this.openTo() ?? this.defaults.openTo);\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.enclosing?.resolvedDisabled(),\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.enclosing?.resolvedReadOnly(),\n );\n protected readonly resolvedRequired = computed(\n () => this.required() ?? this.enclosing?.required(),\n );\n\n protected readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n private readonly format = computed(() => {\n const firstDayOfWeek = this.firstDayOfWeek();\n return createDateTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n ...(firstDayOfWeek === undefined ? {} : { firstDayOfWeek }),\n });\n });\n\n private readonly anchor = computed(() => this.referenceDateTime() ?? this.clock());\n private readonly bounds = computed(() => ({\n max: this.max(),\n maxTime: this.maxTime(),\n min: this.min(),\n minTime: this.minTime(),\n }));\n\n protected readonly dateMin = computed(() => dateBoundsOf(this.bounds()).min);\n protected readonly dateMax = computed(() => dateBoundsOf(this.bounds()).max);\n protected readonly dateValue = computed<CalendarValue>(\n () => this.held()?.date ?? this.pendingDate(),\n );\n\n /**\n * Validity the family owns, beside the validity the consumer states: both\n * pairs of bounds, and both predicates.\n */\n protected readonly resolvedInvalid = computed(() => {\n const value = this.held();\n if (value !== null) {\n if (!isDateTimeInRange(value, this.min(), this.max())) return true;\n const window = dayWindow(value.date, this.bounds());\n if (window === null || !isTimeInRange(value.time, window.earliest, window.latest)) {\n return true;\n }\n if (this.isDateUnavailable()?.(value.date) === true) return true;\n if (this.isTimeUnavailable()?.(value.time, value.date) === true) return true;\n }\n return this.invalid() ?? this.enclosing?.invalid();\n });\n\n /**\n * The day the list answers: the date half of the value when there is one, and\n * the day the calendar has focused when there is not — so a reader moving\n * through the month sees the times of the day under their cursor.\n */\n private readonly listDate = computed(\n () => this.held()?.date ?? this.pendingDate() ?? this.highlight().date,\n );\n\n private readonly window = computed(() => dayWindow(this.listDate(), this.bounds()));\n\n private readonly listOptions = computed(() => {\n const predicate = this.isTimeUnavailable();\n const date = this.listDate();\n const window = this.window();\n return {\n isTimeUnavailable:\n predicate === undefined ? undefined : (time: PlainTime) => predicate(time, date),\n max: window?.latest,\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n min: window?.earliest,\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n };\n });\n\n protected readonly list = computed<TimeOption[]>(() => {\n if (this.window() === null) return [];\n if (this.isDateUnavailable()?.(this.listDate()) === true) return [];\n const built = timeList(this.listOptions());\n const hidden = (this.unavailableOptions() ?? this.defaults.unavailableOptions) === 'hide';\n return hidden ? built.filter((option) => !option.unavailable) : built;\n });\n\n protected readonly truncated = computed(() => isTruncated(this.listOptions()));\n\n private readonly labels = computed(() =>\n this.list().map((option) => this.format().time.format(option.time)),\n );\n\n protected readonly highlightIndex = computed(() => {\n const at = this.highlight().time;\n if (at === null) return -1;\n return this.list().findIndex((option) => isSameTime(option.time, at));\n });\n\n /** The list's own accessible name: the day its times belong to. */\n protected readonly listLabel = computed(() =>\n this.format().describeDate(this.listDate(), 'short'),\n );\n\n /* ── What the head says ──────────────────────────────────────────────── */\n\n protected readonly headValue = computed(() => {\n const value = this.held();\n return value === null ? '' : this.format().describe(value);\n });\n protected readonly headDate = computed(() =>\n this.format().describeDate(this.pendingDate() ?? this.highlight().date),\n );\n protected readonly headTime = computed(() => {\n const time = this.pendingTime();\n return time === null ? null : this.format().time.format(time);\n });\n protected readonly headPlaceholder = computed(() => {\n const granularity = this.resolvedGranularity();\n if (granularity === 'hour') return '--';\n return granularity === 'second' ? '--:--:--' : '--:--';\n });\n\n /**\n * The trigger's accessible name. Focus returns here when the panel closes, so\n * this is where the reader is told what was chosen.\n */\n protected readonly triggerLabel = computed(() => {\n const chosen = this.held();\n if (chosen === null) return this.t('choose');\n return this.t('change', { date: this.format().describe(chosen) });\n });\n\n constructor() {\n /* The layer is created and torn down with the surface, not with the\n component: a layer that outlived its content would hold a place in the\n single stack that nothing occupies. */\n effect(() => {\n if (!this.isOpen()) {\n this.release();\n /* A half pressed and never completed does not outlive the panel. */\n untracked(() => {\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n });\n return;\n }\n afterNextRender(() => this.attach(), { injector: this.injector });\n });\n\n /* The day the panel is on, before the reader has said otherwise. */\n effect(() => {\n const date = this.held()?.date ?? this.anchor().date;\n untracked(() => {\n if (this.movedByReader || this.highlighted() !== undefined) return;\n if (isSameDate(date, this.highlight().date)) return;\n this.setHighlight({ date, time: this.highlight().time }, 'programmatic', undefined);\n });\n });\n\n /**\n * The highlight's **time** lands where the list opens. The date half is the\n * effect above's: one of the two has to own it, or the two write over each\n * other in the same change detection and the panel opens on whichever ran\n * last.\n */\n effect(() => {\n if (!this.isOpen()) return;\n const list = this.list();\n untracked(() => {\n const index = this.openingIndex();\n const option = list[index];\n if (index < 0 || option === undefined) return;\n if (isSameTime(option.time, this.highlight().time)) return;\n this.setHighlight(\n { date: this.highlight().date, time: option.time },\n 'programmatic',\n undefined,\n );\n });\n });\n\n /**\n * The row the highlight is on is brought into view: a panel that opens on a\n * chosen time opens *at* it rather than at midnight, and a highlight moved\n * by a key lands whole rather than half under the edge.\n *\n * The reveal runs after the next render and again whenever the list is\n * resized. The list's height is the panel's, the panel's is the layer's,\n * and the layer has not been measured on the frame it mounts, so the first\n * call is made against a box with nothing to scroll and moves nothing — a\n * panel opened on 15:30 showed 00:00 to 03:30 and asked the reader to\n * scroll six hours to their own time. A reader's own scrolling resizes\n * nothing, so this never fights them.\n */\n effect(() => {\n const open = this.isOpen();\n const index = this.highlightIndex();\n if (!open || index < 0) {\n this.listResize?.disconnect();\n this.listResize = null;\n return;\n }\n untracked(() => this.revealHighlight());\n });\n\n /* A bound that changed is a validity that changed, and the form is told. */\n effect(() => {\n this.min();\n this.max();\n this.minTime();\n this.maxTime();\n this.isDateUnavailable();\n this.isTimeUnavailable();\n this.onValidatorChangeFn();\n });\n\n this.destroyRef.onDestroy(() => this.release());\n this.destroyRef.onDestroy(() => this.listResize?.disconnect());\n }\n\n /* ── Forms ───────────────────────────────────────────────────────────── */\n\n writeValue(value: PlainDateTime | null | undefined) {\n this.ownValue.set(value ?? null);\n }\n\n registerOnChange(fn: (value: PlainDateTime | null) => void) {\n this.onChangeFn = fn;\n this.formBound = true;\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, under the names `datetime-field`\n * reports them with, because the field holds the bounds, the predicates and\n * the half the reader has not written. `required` is left to Angular's own.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this.field?.validate(control) ?? null;\n }\n\n /**\n * A day typed without a time leaves the value `null`, so the picker's own\n * value never moves; the field's validity does. The field says so on every\n * edit, and the form is told.\n */\n ngAfterViewInit() {\n this.field?.registerOnValidatorChange(() => this.onValidatorChangeFn());\n }\n\n ngOnInit() {\n this.ownOpen.set(this.defaultOpen());\n this.ownValue.set(this.defaultValue() ?? null);\n const start =\n this.defaultHighlighted() ??\n ({\n date: (this.defaultValue() ?? this.referenceDateTime() ?? this.clock()).date,\n time: null,\n } satisfies DateTimePickerHighlight);\n this.ownHighlight.set(start);\n this.clock.set(nowDateTimeIn(this.resolvedTimeZone()));\n this.typeahead = createTypeahead({ locale: () => this.resolvedLocale() });\n this.destroyRef.onDestroy(() => this.typeahead?.destroy());\n\n /* A native reset restores the hidden input and tells nothing, so the\n picker would keep the last moment chosen in a form that had been reset.\n The value returns to `defaultValue` through `valueChange`, reason\n `programmatic`, and a half pressed in the panel without the other is\n dropped with it. A picker bound to a form model takes the model's reset\n value through `writeValue` instead. */\n const form = this.element.closest('form');\n if (form !== null) {\n const onReset = (event: Event) => {\n if (this.formBound) return;\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(this.defaultValue() ?? null, 'programmatic', event);\n };\n form.addEventListener('reset', onReset);\n this.destroyRef.onDestroy(() => form.removeEventListener('reset', onReset));\n }\n\n /* `matchMedia` is absent in a server render and in some test environments,\n and the popover is the right answer wherever it cannot be asked. */\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const query = window.matchMedia(SHEET_QUERY);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener('change', read));\n }\n\n /** Puts focus on the first segment of the field. */\n focus() {\n this.field?.focus();\n }\n\n openSurface(source?: Event) {\n this.setOpen(true, 'keyboard', source);\n }\n\n closeSurface(source?: Event) {\n this.setOpen(false, 'keyboard', source);\n }\n\n /* ── What the template reads ─────────────────────────────────────────── */\n\n protected labelFor(option: TimeOption): string {\n return this.format().time.format(option.time);\n }\n\n protected isSelected(option: TimeOption): boolean {\n const value = this.held();\n if (value === null) return isSameTime(option.time, this.pendingTime());\n return isSameDate(value.date, this.listDate()) && isSameTime(option.time, value.time);\n }\n\n protected contextFor(option: TimeOption, index: number) {\n return {\n $implicit: option.time,\n current: index === this.highlightIndex(),\n date: this.listDate(),\n label: this.labels()[index] ?? '',\n selected: this.isSelected(option),\n unavailable: option.unavailable,\n };\n }\n\n /* ── Focus follows the missing half ──────────────────────────────────── */\n\n protected toggle(source: Event) {\n this.setOpen(!this.isOpen(), 'pointer', source);\n }\n\n /** Tab and Shift+Tab wrap inside the panel while it is open. */\n protected onContentKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab' || event.altKey || event.ctrlKey || event.metaKey) return;\n const content = event.currentTarget as HTMLElement;\n const items = tabbables(content);\n const first = items[0];\n const last = items[items.length - 1];\n if (first === undefined || last === undefined) return;\n const current = content.ownerDocument.activeElement;\n if (event.shiftKey && current === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && current === last) {\n event.preventDefault();\n first.focus();\n }\n }\n\n protected onControlFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.element.contains(next)) return;\n this.onTouchedFn();\n }\n\n protected chooseNow(source: Event) {\n const wasWhole = this.held() !== null;\n /* The clock, read at the press: `referenceDateTime` says where an empty\n field starts, not what time it is. */\n const now = nowDateTimeIn(this.resolvedTimeZone());\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(now, 'select', source);\n this.setHighlight({ date: now.date, time: now.time }, 'pointer', source);\n this.afterPress(now, wasWhole, 'time', source);\n }\n\n protected onCalendarValue(request: ChangeRequest<CalendarValue>) {\n if (!this.editable()) return;\n const next = request.value;\n /* `single` is the only mode this panel asks for, so a range or a set is a\n shape the calendar cannot hand back here — and narrowing it is what keeps\n `selectDate` taking one day. */\n const candidate = Array.isArray(next) ? next[0] : next;\n if (candidate === null || candidate === undefined) return;\n if (!('year' in candidate)) return;\n this.selectDate(candidate, request.source as Event | undefined);\n }\n\n protected onFocusedDate(request: ChangeRequest<PlainDate>) {\n this.setHighlight(\n { date: request.value, time: this.highlight().time },\n request.reason === 'pointer' ? 'pointer' : 'keyboard',\n request.source,\n );\n }\n\n /**\n * A day pressed in the calendar. The time half is the one the value holds,\n * or the one pressed in the list. With neither, the day waits for a time:\n * focus moves to the list, onto the option nearest `referenceDateTime`, and\n * the value does not move.\n */\n private selectDate(date: PlainDate, source: Event | undefined) {\n const wasWhole = this.held() !== null;\n const time = this.held()?.time ?? this.pendingTime();\n if (time === null) {\n this.pendingDate.set(date);\n this.setHighlight({ date, time: null }, 'pointer', source);\n this.enterSurface('time');\n return;\n }\n const next: PlainDateTime = { date, time };\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(next, 'select', source);\n this.setHighlight({ date, time: this.highlight().time }, 'pointer', source);\n this.afterPress(next, wasWhole, 'date', source);\n }\n\n /**\n * A time pressed in the list. The date half is the one the value holds, or\n * the day pressed in the calendar; with neither, the time waits for a day and\n * focus moves to the calendar.\n */\n protected selectTime(option: TimeOption, source: Event) {\n if (option.unavailable || !this.editable()) return;\n const wasWhole = this.held() !== null;\n const date = this.held()?.date ?? this.pendingDate();\n this.setHighlight({ date: this.listDate(), time: option.time }, 'pointer', source);\n if (date === null) {\n this.pendingTime.set(option.time);\n this.enterSurface('date');\n return;\n }\n const next: PlainDateTime = { date, time: option.time };\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(next, 'select', source);\n this.afterPress(next, wasWhole, 'time', source);\n }\n\n /**\n * The rule, in one place: a press that leaves the value incomplete carries\n * focus to the half that is missing; a press that completes it closes the\n * panel; and a press on a value that was already whole changes one half and\n * leaves the panel where it is.\n */\n private afterPress(\n next: PlainDateTime | null,\n wasWhole: boolean,\n wrote: 'date' | 'time',\n source: Event | undefined,\n ) {\n const closeOnSelect = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n const nowWhole = next !== null;\n\n if (nowWhole && !wasWhole && closeOnSelect !== 'never') {\n this.close(source);\n return;\n }\n if (nowWhole && wasWhole && closeOnSelect === 'always') {\n this.close(source);\n return;\n }\n if (!nowWhole) this.enterSurface(wrote === 'date' ? 'time' : 'date');\n }\n\n private close(source: Event | undefined) {\n this.setOpen(false, 'select', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n private enterSurface(surface: 'date' | 'time') {\n afterNextRender(() => this.enterSurfaceNow(surface), { injector: this.injector });\n }\n\n /** Focus into one surface, on a panel that is already rendered. */\n private enterSurfaceNow(surface: 'date' | 'time') {\n if (surface === 'time') {\n this.enterList();\n return;\n }\n const day = this.datePanelRef?.nativeElement.querySelector<HTMLElement>(\n '[data-part=\"day\"][tabindex=\"0\"]',\n );\n day?.focus({ preventScroll: true });\n }\n\n /**\n * Where the list opens: on the chosen time, on the nearest step to the\n * reference when nothing is chosen, and on the first available option when\n * that is refused.\n */\n private openingIndex(): number {\n const list = this.list();\n if (list.length === 0) return -1;\n const near = nearestIndex(list, this.held()?.time ?? this.anchor().time);\n if (near >= 0 && list[near]?.unavailable !== true) return near;\n const first = list.findIndex((option) => !option.unavailable);\n return first >= 0 ? first : 0;\n }\n\n private enterList() {\n const index = this.highlightIndex() >= 0 ? this.highlightIndex() : this.openingIndex();\n if (index < 0) return;\n const option = this.list()[index];\n if (option !== undefined) {\n this.setHighlight({ date: this.listDate(), time: option.time }, 'keyboard', undefined);\n }\n this.focusOption(index);\n }\n\n /** Watches the list's own box, which is what \"the layer has been measured\" looks like from inside it. */\n private listResize: ResizeObserver | null = null;\n\n private revealHighlight() {\n afterNextRender(\n () => {\n const list = this.listRef?.nativeElement;\n if (list === undefined) return;\n const reveal = () => {\n const row = list.querySelector<HTMLElement>('[data-part=\"option\"][data-current]');\n /* jsdom implements neither `scrollIntoView` nor `ResizeObserver`, and\n a test environment without a scroller is not a reason for the\n family to throw where a browser would scroll. */\n row?.scrollIntoView?.({ block: 'nearest' });\n };\n reveal();\n if (typeof ResizeObserver !== 'function') return;\n this.listResize?.disconnect();\n this.listResize = new ResizeObserver(reveal);\n this.listResize.observe(list);\n },\n { injector: this.injector },\n );\n }\n\n private focusOption(index: number) {\n const rows = this.listRef?.nativeElement.querySelectorAll<HTMLElement>('[data-part=\"option\"]');\n const row = rows?.[index];\n row?.focus();\n /* jsdom does not implement `scrollIntoView`, and a test environment without\n a scroller is not a reason for the family to throw. */\n row?.scrollIntoView?.({ block: 'nearest' });\n }\n\n /* ── The keyboard ────────────────────────────────────────────────────── */\n\n protected onControlKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n /* ChromeOS turns the chord into `PageDown` before the browser sees it,\n which Angular Material records for its own input — so the trigger button\n is always drawn and this is only a shortcut. Focus stays in the field. */\n if (event.altKey && event.key === 'ArrowDown') {\n event.preventDefault();\n this.setOpen(true, 'keyboard', event, false);\n }\n }\n\n protected onTriggerKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n event.preventDefault();\n if (this.isOpen()) this.enterSurface(this.resolvedOpenTo());\n else this.setOpen(true, 'keyboard', event);\n }\n\n protected onListKeyDown(event: KeyboardEvent) {\n const list = this.list();\n const at = this.highlightIndex() >= 0 ? this.highlightIndex() : 0;\n\n const move = (index: number) => {\n event.preventDefault();\n const clamped = Math.max(0, Math.min(list.length - 1, index));\n const option = list[clamped];\n if (option === undefined) return;\n this.setHighlight({ date: this.listDate(), time: option.time }, 'keyboard', event);\n this.focusOption(clamped);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n move(at + 1);\n return;\n case 'ArrowUp':\n move(at - 1);\n return;\n case 'Home':\n move(0);\n return;\n case 'End':\n move(list.length - 1);\n return;\n case 'PageDown':\n move(hourJump(list, at, 1));\n return;\n case 'PageUp':\n move(hourJump(list, at, -1));\n return;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const option = list[at];\n if (option !== undefined) this.selectTime(option, event);\n return;\n }\n default:\n break;\n }\n\n /* Type-ahead, which the pattern recommends above seven options and this\n list passes at every step it offers. */\n const typeahead = this.typeahead;\n if (typeahead === null) return;\n if (!isPrintable(event.key, typeahead.query.length > 0)) return;\n const found = typeahead.match(event.key, this.labels(), at);\n if (found < 0) return;\n move(found);\n }\n\n /* ── The machinery ───────────────────────────────────────────────────── */\n\n protected onFieldValue(request: DateTimeFieldChangeRequest) {\n this.commit(request.value, request.reason, request.source, request);\n }\n\n private commit(\n next: PlainDateTime | null,\n reason: ChangeReason,\n source: unknown,\n carried?: DateTimeFieldChangeRequest,\n ) {\n let cancelled = false;\n const state = createControllable<PlainDateTime | null>({\n controlled: this.value(),\n initial: this.held(),\n equals: isSameDateTime,\n onRequest: (request) => {\n this.valueChange.emit(\n carried === undefined\n ? request\n : { ...request, incomplete: carried.incomplete, segments: carried.segments },\n );\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled || !moved) return;\n if (this.value() === undefined) this.ownValue.set(next);\n this.onChangeFn(next);\n }\n\n private setHighlight(next: DateTimePickerHighlight, reason: ChangeReason, source: unknown) {\n if (reason !== 'programmatic') this.movedByReader = true;\n const state = createControllable<DateTimePickerHighlight>({\n controlled: this.highlighted(),\n initial: this.highlight(),\n equals: (a, b) => isSameDate(a.date, b.date) && isSameTime(a.time, b.time),\n onRequest: (request) => this.highlightedChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownHighlight.set(next);\n }\n\n private setOpen(next: boolean, reason: OpenReason, source: unknown, enter = true) {\n const state = createControllable<boolean>({\n controlled: this.open(),\n initial: this.isOpen(),\n onRequest: (request) => {\n this.openChange.emit(request);\n this.focusOnOpen = enter && request.value && !request.cancelled;\n },\n });\n if (state.request(next, reason, source)) this.ownOpen.set(next);\n }\n\n /** Places the layer and puts it in the single stack. */\n private attach() {\n const layer = this.layer?.nativeElement;\n if (layer === undefined) return;\n this.release();\n\n if (!this.sheet()) {\n const anchor =\n this.element.querySelector<HTMLElement>('[data-part=\"control\"]') ?? this.element;\n const [side, align] = this.resolvedPlacement().split('-') as [\n 'top' | 'bottom',\n 'start' | 'end' | undefined,\n ];\n this.positioner = createPositioner(anchor, layer, { align: align ?? 'center', side });\n void this.positioner.update().then(() => this.positioned.set(true));\n }\n\n /* The dialog takes focus when it opens, in the surface `openTo` names. */\n if (this.focusOnOpen) {\n this.focusOnOpen = false;\n this.enterSurfaceNow(this.resolvedOpenTo());\n }\n\n const trigger = this.triggerRef?.nativeElement;\n this.dismissable = createDismissableLayer(layer, {\n branches: trigger === undefined ? [] : [trigger],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n /**\n * `Escape` is staged, and here it has three steps rather than two. The\n * field takes the key first while an expression is open — its own handler\n * stops it before this ever runs — then the calendar's view walks down\n * from year or month, and only then does the panel close.\n */\n onDismiss: (request) => {\n if (request.reason === 'escape' && this.view() !== 'day') {\n this.view.set(this.view() === 'year' ? 'month' : 'day');\n return;\n }\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source,\n );\n if (request.reason === 'escape') {\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n },\n });\n }\n\n private release() {\n this.positioner?.destroy();\n this.positioner = null;\n this.dismissable?.destroy();\n this.dismissable = null;\n this.positioned.set(false);\n }\n}\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-datetime-picker.mjs","sources":["../../datetime-picker/src/datetime-picker-defaults.ts","../../datetime-picker/src/datetime-picker-parts.ts","../../datetime-picker/src/datetime-picker.ts","../../datetime-picker/src/slotted-angular-datetime-picker.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { TimeGranularity } from '@slotted/core/date';\n\nimport type {\n DateTimeFieldHourCycle,\n DateTimeFieldSize,\n DateTimeFieldVariant,\n} from '@slotted/angular/datetime-field';\n\nexport type DateTimePickerSize = DateTimeFieldSize;\nexport type DateTimePickerVariant = DateTimeFieldVariant;\nexport type DateTimePickerHourCycle = DateTimeFieldHourCycle;\n\n/** Where the panel hangs from the control. */\nexport type DateTimePickerPlacement =\n 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\n/**\n * When the panel closes on a press.\n *\n * `auto` is the family's own rule, and it is what lets the panel need no\n * confirm button: it closes on the press that **completed** the value and stays\n * open otherwise.\n */\nexport type DateTimePickerCloseOnSelect = 'auto' | 'always' | 'never';\n\n/** Which surface focus lands on when the panel opens. */\nexport type DateTimePickerOpenTo = 'date' | 'time';\n\n/** What a refused option does: stay and say so, or go. */\nexport type DateTimePickerUnavailableOptions = 'disable' | 'hide';\n\n/**\n * A whole day at a one-minute step, which is the finest whole-day list any\n * surveyed implementation offers. A day at a one-second step is 86 400 rows and\n * is a configuration mistake rather than a list.\n */\nexport const DATE_TIME_PICKER_MAX_OPTIONS = 1440;\n\nexport interface DateTimePickerDefaults {\n calendar: 'gregory';\n closeOnSelect: DateTimePickerCloseOnSelect;\n granularity: TimeGranularity;\n hourCycle: DateTimePickerHourCycle | undefined;\n maxOptions: number;\n openTo: DateTimePickerOpenTo;\n placement: DateTimePickerPlacement;\n size: DateTimePickerSize;\n /** Seconds between two offered times. */\n step: number;\n timeZone: string | undefined;\n unavailableOptions: DateTimePickerUnavailableOptions;\n variant: DateTimePickerVariant;\n}\n\nconst FALLBACK: DateTimePickerDefaults = {\n calendar: 'gregory',\n closeOnSelect: 'auto',\n granularity: 'minute',\n hourCycle: undefined,\n maxOptions: DATE_TIME_PICKER_MAX_OPTIONS,\n openTo: 'date',\n placement: 'bottom-start',\n size: 'md',\n step: 900,\n timeZone: undefined,\n unavailableOptions: 'disable',\n variant: 'outline',\n};\n\nexport const DATE_TIME_PICKER_DEFAULTS = new InjectionToken<DateTimePickerDefaults>(\n 'slotted datetime picker defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its datetime pickers behave — which clock\n * they run on, which step the list offers, which surface focus opens on —\n * rather than repeating the same inputs on every control in a form. A control\n * that states any of them itself still wins. The locale that writes them and\n * every word they say come from the language in force (`provideSlotted`).\n */\nexport function provideDateTimePickerDefaults(defaults: Partial<DateTimePickerDefaults>) {\n return {\n provide: DATE_TIME_PICKER_DEFAULTS,\n useFactory: (): DateTimePickerDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a datetime picker renders as here, before it states anything itself. */\nexport function injectDateTimePickerDefaults(): DateTimePickerDefaults {\n return inject(DATE_TIME_PICKER_DEFAULTS);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * What one row of the list draws.\n *\n * The row is the family's — its role, its states, its keyboard and its target\n * size — and what is written inside it is the consumer's. It is a template\n * rather than a projected slot because it is re-rendered once per option, which\n * is exactly the case `references/frameworks.md` names `NgTemplateOutlet` for.\n *\n * The context carries the time as `$implicit`, plus `date`, `label`,\n * `selected`, `current` and `unavailable`.\n */\n@Directive({\n selector: '[slDateTimePickerOption]',\n standalone: true,\n exportAs: 'slDateTimePickerOption',\n})\nexport class SlDateTimePickerOption {}\n\n/**\n * The consumer's own shortcuts, in the head beside `now`.\n *\n * This family ships no list of them: \"tomorrow at nine\" is a business clock,\n * and a library that guessed at one would be guessing at an industry. What it\n * ships is the row they stand in.\n */\n@Directive({\n selector: '[slDateTimePickerPresets]',\n standalone: true,\n exportAs: 'slDateTimePickerPresets',\n host: { 'data-part': 'presets', 'data-part-presets': '' },\n})\nexport class SlDateTimePickerPresets {}\n\n/** The consumer's own actions, under both surfaces. */\n@Directive({\n selector: '[slDateTimePickerFooter]',\n standalone: true,\n exportAs: 'slDateTimePickerFooter',\n host: { 'data-part': 'footer', 'data-part-footer': '' },\n})\nexport class SlDateTimePickerFooter {}\n","import {\n createDateTimeFormat,\n dateBoundsOf,\n dayWindow,\n hourJump,\n isDateTimeInRange,\n isSameDate,\n isSameDateTime,\n isSameTime,\n isTimeInRange,\n isTruncated,\n nearestIndex,\n nowDateTimeIn,\n timeList,\n} from '@slotted/core/date';\nimport type {\n PlainDate,\n PlainDateTime,\n PlainTime,\n TimeGranularity,\n TimeOption,\n} from '@slotted/core/date';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { tabbables } from '@slotted/core/focus';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { AfterViewInit, OnInit } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n datetimePickerMessages,\n type DatetimePickerMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { SlCalendar } from '@slotted/angular/calendar';\nimport type { CalendarValue, CalendarView } from '@slotted/angular/calendar';\nimport { SlDateTimeField, SlDateTimeFieldEnd } from '@slotted/angular/datetime-field';\nimport type { DateTimeFieldChangeRequest } from '@slotted/angular/datetime-field';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectDateTimePickerDefaults } from './datetime-picker-defaults';\nimport type {\n DateTimePickerCloseOnSelect,\n DateTimePickerHourCycle,\n DateTimePickerOpenTo,\n DateTimePickerPlacement,\n DateTimePickerSize,\n DateTimePickerUnavailableOptions,\n DateTimePickerVariant,\n} from './datetime-picker-defaults';\nimport { SlDateTimePickerOption } from './datetime-picker-parts';\n\n/** The reasons the contract's `stateModel.open` lists, and no other. */\ntype OpenReason = Extract<\n ChangeReason,\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select'\n>;\n\n/**\n * Below this width, on a finger, the surface is a sheet rather than a popover.\n * §2.7 of `docs/component-features.md` asks for it by name.\n */\nconst SHEET_QUERY = '(max-width: 480px) and (pointer: coarse)';\n/** The surface needs an identifier the trigger can point `aria-controls` at. */\nlet sequence = 0;\n\n/** Where the reader is in the panel: one highlight for two surfaces. */\nexport interface DateTimePickerHighlight {\n readonly date: PlainDate;\n readonly time: PlainTime | null;\n}\n\n/**\n * A datetime field, a trigger, and the only panel in the library that holds two\n * surfaces.\n *\n * **Both surfaces are in the DOM at every width.** A `tablist` that exists on a\n * narrow container and not on a wide one tells assistive technology two\n * different stories about the same component, which is the arrangement Kendo\n * and MUI ship and this family declines. `openTo` decides where focus lands,\n * not what is drawn.\n *\n * **The decision this family owes, in one sentence:** the press that leaves the\n * value incomplete carries focus to the half that is missing, and the press\n * that completes the value closes the panel.\n *\n * **The list answers the day the reader is on**, not a day already committed.\n *\n * **Two pairs of bounds apply at once**, which MUI's own validation page\n * records that it cannot combine.\n */\n@Component({\n selector: '[slDateTimePicker]',\n standalone: true,\n exportAs: 'slDateTimePicker',\n imports: [NgTemplateOutlet, SlCalendar, SlDateTimeField, SlDateTimeFieldEnd, SlGlyph, SlIcon],\n template: `<div data-part=\"control\" data-part-control=\"\" (keydown)=\"onControlKeyDown($event)\">\n <div\n slDateTimeField\n #field=\"slDateTimeField\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [hourCycle]=\"resolvedHourCycle()\"\n [granularity]=\"resolvedGranularity()\"\n [calendar]=\"resolvedCalendar()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [referenceDateTime]=\"referenceDateTime()\"\n [size]=\"resolvedSize()\"\n [variant]=\"resolvedVariant()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [minTime]=\"minTime()\"\n [maxTime]=\"maxTime()\"\n [isDateUnavailable]=\"isDateUnavailable()\"\n [isTimeUnavailable]=\"isTimeUnavailable()\"\n [clearable]=\"clearable()\"\n [relative]=\"relative()\"\n [name]=\"name()\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"readOnly()\"\n [invalid]=\"invalid()\"\n [required]=\"required()\"\n [value]=\"held()\"\n (valueChange)=\"onFieldValue($event)\"\n (focusout)=\"onControlFocusOut($event)\"\n >\n <span slDateTimeFieldEnd>\n <button\n #trigger\n data-part=\"trigger\"\n data-part-trigger=\"\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [disabled]=\"!editable()\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n <span slIcon><svg slGlyph name=\"calendar\"></svg></span>\n </button>\n </span>\n </div>\n </div>\n\n @if (isOpen()) {\n <div\n #layer\n data-ui=\"datetime-picker\"\n data-ui-datetime-picker=\"\"\n data-part=\"positioner\"\n data-part-positioner=\"\"\n data-open\n [attr.data-presentation]=\"sheet() ? 'sheet' : 'popover'\"\n >\n <div\n data-part=\"content\"\n data-part-content=\"\"\n role=\"dialog\"\n [attr.id]=\"contentId\"\n [attr.aria-label]=\"triggerLabel()\"\n [attr.aria-description]=\"truncated() ? t('truncated') : null\"\n [attr.data-granularity]=\"resolvedGranularity()\"\n [attr.data-open-to]=\"resolvedOpenTo()\"\n (keydown)=\"onContentKeyDown($event)\"\n >\n <div data-part=\"head\" data-part-head=\"\">\n <span data-part=\"head-value\" data-part-head-value=\"\">\n @if (held() !== null) {\n {{ headValue() }}\n } @else {\n {{ headDate() }},\n @if (headTime(); as time) {\n {{ time }}\n } @else {\n <span data-placeholder>{{ headPlaceholder() }}</span>\n }\n }\n </span>\n <ng-content select=\"[slDateTimePickerPresets]\" />\n <button data-part=\"now\" data-part-now=\"\" type=\"button\" (click)=\"chooseNow($event)\">\n <span slIcon size=\"sm\"><svg slGlyph name=\"clock\"></svg></span>\n {{ t('now') }}\n </button>\n </div>\n\n <div data-part=\"panels\" data-part-panels=\"\">\n <div #datePanel data-part=\"date-panel\" data-part-date-panel=\"\">\n <div\n slCalendar\n #calendar=\"slCalendar\"\n selectionMode=\"single\"\n [locale]=\"resolvedLocale()\"\n [timeZone]=\"resolvedTimeZone()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [months]=\"months()\"\n [weekNumbers]=\"weekNumbers()\"\n [readOnly]=\"readOnly()\"\n [min]=\"dateMin()\"\n [max]=\"dateMax()\"\n [isDateUnavailable]=\"isDateUnavailable()\"\n [value]=\"dateValue()\"\n [focusedDate]=\"highlight().date\"\n [view]=\"view()\"\n (valueChange)=\"onCalendarValue($event)\"\n (focusedDateChange)=\"onFocusedDate($event)\"\n (viewChange)=\"view.set($event)\"\n ></div>\n </div>\n\n <div data-part=\"time-panel\" data-part-time-panel=\"\">\n @if (list().length === 0) {\n <div data-part=\"empty\" data-part-empty=\"\">{{ t('empty') }}</div>\n } @else {\n <div\n #rows\n data-part=\"list\"\n data-part-list=\"\"\n role=\"listbox\"\n [attr.aria-label]=\"listLabel()\"\n [attr.data-truncated]=\"truncated() ? '' : null\"\n (keydown)=\"onListKeyDown($event)\"\n >\n @for (option of list(); track $index) {\n <div\n data-part=\"option\"\n data-part-option=\"\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"option.unavailable ? 'true' : null\"\n [attr.data-disabled]=\"option.unavailable ? '' : null\"\n [attr.data-selected]=\"isSelected(option) ? '' : null\"\n [attr.data-current]=\"$index === highlightIndex() ? '' : null\"\n [tabindex]=\"$index === highlightIndex() ? 0 : -1\"\n (click)=\"selectTime(option, $event)\"\n >\n @if (optionTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"contextFor(option, $index)\"\n />\n } @else {\n {{ labelFor(option) }}\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <ng-content select=\"[slDateTimePickerFooter]\" />\n </div>\n </div>\n }`,\n styleUrl: '../../../styles/src/datetime-picker/datetime-picker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlDateTimePicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlDateTimePicker), multi: true },\n ],\n host: {\n 'data-ui': 'datetime-picker',\n 'data-ui-datetime-picker': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-granularity]': 'resolvedGranularity()',\n '[attr.data-open]': \"isOpen() ? '' : 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 SlDateTimePicker implements AfterViewInit, ControlValueAccessor, Validator, OnInit {\n readonly value = input<PlainDateTime | null | undefined>(undefined);\n readonly defaultValue = input<PlainDateTime | null | undefined>(undefined);\n /** Present means the consumer owns whether the surface is showing. */\n readonly open = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n\n /** Where the reader is in the panel. Present means the consumer owns it. */\n readonly highlighted = input<DateTimePickerHighlight | undefined>(undefined);\n readonly defaultHighlighted = input<DateTimePickerHighlight | undefined>(undefined);\n\n readonly min = input<PlainDateTime | undefined>(undefined);\n readonly max = input<PlainDateTime | undefined>(undefined);\n /** The earliest time of every day inside the range, beside `min`. */\n readonly minTime = input<PlainTime | undefined>(undefined);\n /** The latest time of every day inside the range, beside `max`. */\n readonly maxTime = input<PlainTime | undefined>(undefined);\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n readonly isTimeUnavailable = input<((time: PlainTime, date: PlainDate) => boolean) | undefined>(\n undefined,\n );\n\n /** Seconds between two offered times. Ignored when `options` states the list. */\n readonly step = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /**\n * The times to offer, stated rather than stepped. A step describes a regular\n * list and a great many real ones are not.\n */\n readonly options = input<readonly PlainTime[] | undefined>(undefined);\n readonly maxOptions = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly unavailableOptions = input<DateTimePickerUnavailableOptions | undefined>(undefined);\n\n /** BCP 47. Writes the field, the grid, the list and the trigger's moment. Unset, the language in force decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly hourCycle = input<DateTimePickerHourCycle | undefined>(undefined);\n readonly granularity = input<TimeGranularity | undefined>(undefined);\n readonly calendar = input<'gregory' | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined>(undefined);\n readonly months = input<number | undefined>(undefined);\n readonly weekNumbers = input<boolean | undefined>(undefined);\n readonly referenceDateTime = input<PlainDateTime | undefined>(undefined);\n\n readonly size = input<DateTimePickerSize | undefined>(undefined);\n readonly variant = input<DateTimePickerVariant | undefined>(undefined);\n readonly placement = input<DateTimePickerPlacement | undefined>(undefined);\n readonly openTo = input<DateTimePickerOpenTo | undefined>(undefined);\n readonly closeOnSelect = input<DateTimePickerCloseOnSelect | undefined>(undefined);\n\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 readonly clearable = input(false, { transform: booleanAttribute });\n readonly relative = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly name = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * trigger's two names, the `now` button, what an empty day says and what a\n * cut list says.\n */\n readonly messages = input<PartialMessages<DatetimePickerMessages> | undefined>(undefined);\n\n readonly valueChange = output<DateTimeFieldChangeRequest | ChangeRequest<PlainDateTime | null>>();\n readonly openChange = output<ChangeRequest<boolean>>();\n readonly highlightedChange = output<ChangeRequest<DateTimePickerHighlight>>();\n\n @ContentChild(SlDateTimePickerOption, { read: TemplateRef })\n protected optionTemplate?: TemplateRef<unknown>;\n\n @ViewChild('layer') protected layer?: ElementRef<HTMLElement>;\n @ViewChild('trigger') protected triggerRef?: ElementRef<HTMLButtonElement>;\n @ViewChild('rows') protected listRef?: ElementRef<HTMLElement>;\n @ViewChild('datePanel') protected datePanelRef?: ElementRef<HTMLElement>;\n @ViewChild('field') protected field?: SlDateTimeField;\n @ViewChild('calendar') protected calendarRef?: SlCalendar;\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly defaults = injectDateTimePickerDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this picker's `messages` laid over them. */\n readonly t = injectMessages(datetimePickerMessages, this.messages);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly enclosing = inject(SlField, { optional: true });\n\n protected readonly contentId = `sl-datetime-picker-${String((sequence += 1))}`;\n\n private readonly ownOpen = signal(false);\n private readonly ownValue = signal<PlainDateTime | null>(null);\n /**\n * The half pressed in the panel while the other half is missing. The value\n * stays `null` until the second press writes both, so the half lives here and\n * is forgotten when the panel closes.\n */\n private readonly pendingDate = signal<PlainDate | null>(null);\n private readonly pendingTime = signal<PlainTime | null>(null);\n private readonly ownHighlight = signal<DateTimePickerHighlight>({\n date: { year: 2000, month: 1, day: 1 },\n time: null,\n });\n private readonly clock = signal<PlainDateTime>({\n date: { year: 2000, month: 1, day: 1 },\n time: { hour: 12, minute: 0, second: 0 },\n });\n protected readonly view = signal<CalendarView>('day');\n protected readonly sheet = signal(false);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n\n private onChangeFn: (value: PlainDateTime | null) => void = () => undefined;\n /** Whether a form model holds the value, and answers a reset through `writeValue`. */\n private formBound = false;\n private onTouchedFn: () => void = () => undefined;\n private onValidatorChangeFn: () => void = () => undefined;\n\n /**\n * Whether the next opening moves focus into the panel. Set by a request to\n * open from the trigger or from `openSurface()`, and never by Alt+ArrowDown,\n * which leaves focus in the field, or by a first render that starts open,\n * which would take focus from wherever the page put it.\n */\n private focusOnOpen = false;\n\n /**\n * Whether the reader has moved the highlight themselves. Until they have, the\n * day the panel is on follows the value and then the reference.\n */\n private movedByReader = false;\n\n private positioner: PositionerHandle | null = null;\n private dismissable: DismissableLayerHandle | null = null;\n private typeahead: TypeaheadHandle | null = null;\n\n protected readonly isOpen = computed(() => this.open() ?? this.ownOpen());\n protected readonly held = computed(() => this.value() ?? this.ownValue());\n protected readonly highlight = computed(() => this.highlighted() ?? this.ownHighlight());\n\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n protected readonly resolvedTimeZone = computed(() => this.timeZone() ?? this.defaults.timeZone);\n protected readonly resolvedHourCycle = computed(\n () => this.hourCycle() ?? this.defaults.hourCycle,\n );\n protected readonly resolvedGranularity = computed(\n () => this.granularity() ?? this.defaults.granularity,\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n protected readonly resolvedSize = computed(\n () => this.size() ?? this.enclosing?.resolvedSize() ?? this.defaults.size,\n );\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedPlacement = computed(\n () => this.placement() ?? this.defaults.placement,\n );\n protected readonly resolvedOpenTo = computed(() => this.openTo() ?? this.defaults.openTo);\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.enclosing?.resolvedDisabled(),\n );\n protected readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.enclosing?.resolvedReadOnly(),\n );\n protected readonly resolvedRequired = computed(\n () => this.required() ?? this.enclosing?.required(),\n );\n\n protected readonly editable = computed(\n () => this.resolvedDisabled() !== true && this.resolvedReadOnly() !== true,\n );\n\n private readonly format = computed(() => {\n const firstDayOfWeek = this.firstDayOfWeek();\n return createDateTimeFormat({\n granularity: this.resolvedGranularity(),\n hourCycle: this.resolvedHourCycle(),\n locale: this.resolvedLocale(),\n ...(firstDayOfWeek === undefined ? {} : { firstDayOfWeek }),\n });\n });\n\n private readonly anchor = computed(() => this.referenceDateTime() ?? this.clock());\n private readonly bounds = computed(() => ({\n max: this.max(),\n maxTime: this.maxTime(),\n min: this.min(),\n minTime: this.minTime(),\n }));\n\n protected readonly dateMin = computed(() => dateBoundsOf(this.bounds()).min);\n protected readonly dateMax = computed(() => dateBoundsOf(this.bounds()).max);\n protected readonly dateValue = computed<CalendarValue>(\n () => this.held()?.date ?? this.pendingDate(),\n );\n\n /**\n * Validity the family owns, beside the validity the consumer states: both\n * pairs of bounds, and both predicates.\n */\n protected readonly resolvedInvalid = computed(() => {\n const value = this.held();\n if (value !== null) {\n if (!isDateTimeInRange(value, this.min(), this.max())) return true;\n const window = dayWindow(value.date, this.bounds());\n if (window === null || !isTimeInRange(value.time, window.earliest, window.latest)) {\n return true;\n }\n if (this.isDateUnavailable()?.(value.date) === true) return true;\n if (this.isTimeUnavailable()?.(value.time, value.date) === true) return true;\n }\n return this.invalid() ?? this.enclosing?.invalid();\n });\n\n /**\n * The day the list answers: the date half of the value when there is one, and\n * the day the calendar has focused when there is not — so a reader moving\n * through the month sees the times of the day under their cursor.\n */\n private readonly listDate = computed(\n () => this.held()?.date ?? this.pendingDate() ?? this.highlight().date,\n );\n\n private readonly window = computed(() => dayWindow(this.listDate(), this.bounds()));\n\n private readonly listOptions = computed(() => {\n const predicate = this.isTimeUnavailable();\n const date = this.listDate();\n const window = this.window();\n return {\n isTimeUnavailable:\n predicate === undefined ? undefined : (time: PlainTime) => predicate(time, date),\n max: window?.latest,\n maxOptions: this.maxOptions() ?? this.defaults.maxOptions,\n min: window?.earliest,\n options: this.options(),\n step: this.step() ?? this.defaults.step,\n };\n });\n\n protected readonly list = computed<TimeOption[]>(() => {\n if (this.window() === null) return [];\n if (this.isDateUnavailable()?.(this.listDate()) === true) return [];\n const built = timeList(this.listOptions());\n const hidden = (this.unavailableOptions() ?? this.defaults.unavailableOptions) === 'hide';\n return hidden ? built.filter((option) => !option.unavailable) : built;\n });\n\n protected readonly truncated = computed(() => isTruncated(this.listOptions()));\n\n private readonly labels = computed(() =>\n this.list().map((option) => this.format().time.format(option.time)),\n );\n\n protected readonly highlightIndex = computed(() => {\n const at = this.highlight().time;\n if (at === null) return -1;\n return this.list().findIndex((option) => isSameTime(option.time, at));\n });\n\n /** The list's own accessible name: the day its times belong to. */\n protected readonly listLabel = computed(() =>\n this.format().describeDate(this.listDate(), 'short'),\n );\n\n /* ── What the head says ──────────────────────────────────────────────── */\n\n protected readonly headValue = computed(() => {\n const value = this.held();\n return value === null ? '' : this.format().describe(value);\n });\n protected readonly headDate = computed(() =>\n this.format().describeDate(this.pendingDate() ?? this.highlight().date),\n );\n protected readonly headTime = computed(() => {\n const time = this.pendingTime();\n return time === null ? null : this.format().time.format(time);\n });\n protected readonly headPlaceholder = computed(() => {\n const granularity = this.resolvedGranularity();\n if (granularity === 'hour') return '--';\n return granularity === 'second' ? '--:--:--' : '--:--';\n });\n\n /**\n * The trigger's accessible name. Focus returns here when the panel closes, so\n * this is where the reader is told what was chosen.\n */\n protected readonly triggerLabel = computed(() => {\n const chosen = this.held();\n if (chosen === null) return this.t('choose');\n return this.t('change', { date: this.format().describe(chosen) });\n });\n\n constructor() {\n /* The layer is created and torn down with the surface, not with the\n component: a layer that outlived its content would hold a place in the\n single stack that nothing occupies. */\n effect(() => {\n if (!this.isOpen()) {\n this.release();\n /* A half pressed and never completed does not outlive the panel. */\n untracked(() => {\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n });\n return;\n }\n afterNextRender(() => this.attach(), { injector: this.injector });\n });\n\n /* The day the panel is on, before the reader has said otherwise. */\n effect(() => {\n const date = this.held()?.date ?? this.anchor().date;\n untracked(() => {\n if (this.movedByReader || this.highlighted() !== undefined) return;\n if (isSameDate(date, this.highlight().date)) return;\n this.setHighlight({ date, time: this.highlight().time }, 'programmatic', undefined);\n });\n });\n\n /**\n * The highlight's **time** lands where the list opens. The date half is the\n * effect above's: one of the two has to own it, or the two write over each\n * other in the same change detection and the panel opens on whichever ran\n * last.\n */\n effect(() => {\n if (!this.isOpen()) return;\n const list = this.list();\n untracked(() => {\n const index = this.openingIndex();\n const option = list[index];\n if (index < 0 || option === undefined) return;\n if (isSameTime(option.time, this.highlight().time)) return;\n this.setHighlight(\n { date: this.highlight().date, time: option.time },\n 'programmatic',\n undefined,\n );\n });\n });\n\n /**\n * The row the highlight is on is brought into view: a panel that opens on a\n * chosen time opens *at* it rather than at midnight, and a highlight moved\n * by a key lands whole rather than half under the edge.\n *\n * The reveal runs after the next render and again whenever the list is\n * resized. The list's height is the panel's, the panel's is the layer's,\n * and the layer has not been measured on the frame it mounts, so the first\n * call is made against a box with nothing to scroll and moves nothing — a\n * panel opened on 15:30 showed 00:00 to 03:30 and asked the reader to\n * scroll six hours to their own time. A reader's own scrolling resizes\n * nothing, so this never fights them.\n */\n effect(() => {\n const open = this.isOpen();\n const index = this.highlightIndex();\n if (!open || index < 0) {\n this.listResize?.disconnect();\n this.listResize = null;\n return;\n }\n untracked(() => this.revealHighlight());\n });\n\n /* A bound that changed is a validity that changed, and the form is told. */\n effect(() => {\n this.min();\n this.max();\n this.minTime();\n this.maxTime();\n this.isDateUnavailable();\n this.isTimeUnavailable();\n this.onValidatorChangeFn();\n });\n\n this.destroyRef.onDestroy(() => this.release());\n this.destroyRef.onDestroy(() => this.listResize?.disconnect());\n }\n\n /* ── Forms ───────────────────────────────────────────────────────────── */\n\n writeValue(value: PlainDateTime | null | undefined) {\n this.ownValue.set(value ?? null);\n }\n\n registerOnChange(fn: (value: PlainDateTime | null) => void) {\n this.onChangeFn = fn;\n this.formBound = true;\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, under the names `datetime-field`\n * reports them with, because the field holds the bounds, the predicates and\n * the half the reader has not written. `required` is left to Angular's own.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this.field?.validate(control) ?? null;\n }\n\n /**\n * A day typed without a time leaves the value `null`, so the picker's own\n * value never moves; the field's validity does. The field says so on every\n * edit, and the form is told.\n */\n ngAfterViewInit() {\n this.field?.registerOnValidatorChange(() => this.onValidatorChangeFn());\n }\n\n ngOnInit() {\n this.ownOpen.set(this.defaultOpen());\n this.ownValue.set(this.defaultValue() ?? null);\n const start =\n this.defaultHighlighted() ??\n ({\n date: (this.defaultValue() ?? this.referenceDateTime() ?? this.clock()).date,\n time: null,\n } satisfies DateTimePickerHighlight);\n this.ownHighlight.set(start);\n this.clock.set(nowDateTimeIn(this.resolvedTimeZone()));\n this.typeahead = createTypeahead({ locale: () => this.resolvedLocale() });\n this.destroyRef.onDestroy(() => this.typeahead?.destroy());\n\n /* A native reset restores the hidden input and tells nothing, so the\n picker would keep the last moment chosen in a form that had been reset.\n The value returns to `defaultValue` through `valueChange`, reason\n `programmatic`, and a half pressed in the panel without the other is\n dropped with it. A picker bound to a form model takes the model's reset\n value through `writeValue` instead. */\n const form = this.element.closest('form');\n if (form !== null) {\n const onReset = (event: Event) => {\n if (this.formBound) return;\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(this.defaultValue() ?? null, 'programmatic', event);\n };\n form.addEventListener('reset', onReset);\n this.destroyRef.onDestroy(() => form.removeEventListener('reset', onReset));\n }\n\n /* `matchMedia` is absent in a server render and in some test environments,\n and the popover is the right answer wherever it cannot be asked. */\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const query = window.matchMedia(SHEET_QUERY);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener('change', read));\n }\n\n /** Puts focus on the first segment of the field. */\n focus() {\n this.field?.focus();\n }\n\n openSurface(source?: Event) {\n this.setOpen(true, 'keyboard', source);\n }\n\n closeSurface(source?: Event) {\n this.setOpen(false, 'keyboard', source);\n }\n\n /* ── What the template reads ─────────────────────────────────────────── */\n\n protected labelFor(option: TimeOption): string {\n return this.format().time.format(option.time);\n }\n\n protected isSelected(option: TimeOption): boolean {\n const value = this.held();\n if (value === null) return isSameTime(option.time, this.pendingTime());\n return isSameDate(value.date, this.listDate()) && isSameTime(option.time, value.time);\n }\n\n protected contextFor(option: TimeOption, index: number) {\n return {\n $implicit: option.time,\n current: index === this.highlightIndex(),\n date: this.listDate(),\n label: this.labels()[index] ?? '',\n selected: this.isSelected(option),\n unavailable: option.unavailable,\n };\n }\n\n /* ── Focus follows the missing half ──────────────────────────────────── */\n\n protected toggle(source: Event) {\n this.setOpen(!this.isOpen(), 'pointer', source);\n }\n\n /** Tab and Shift+Tab wrap inside the panel while it is open. */\n protected onContentKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab' || event.altKey || event.ctrlKey || event.metaKey) return;\n const content = event.currentTarget as HTMLElement;\n const items = tabbables(content);\n const first = items[0];\n const last = items[items.length - 1];\n if (first === undefined || last === undefined) return;\n const current = content.ownerDocument.activeElement;\n if (event.shiftKey && current === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && current === last) {\n event.preventDefault();\n first.focus();\n }\n }\n\n protected onControlFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.element.contains(next)) return;\n this.onTouchedFn();\n }\n\n protected chooseNow(source: Event) {\n const wasWhole = this.held() !== null;\n /* The clock, read at the press: `referenceDateTime` says where an empty\n field starts, not what time it is. */\n const now = nowDateTimeIn(this.resolvedTimeZone());\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(now, 'select', source);\n this.setHighlight({ date: now.date, time: now.time }, 'pointer', source);\n this.afterPress(now, wasWhole, 'time', source);\n }\n\n protected onCalendarValue(request: ChangeRequest<CalendarValue>) {\n if (!this.editable()) return;\n const next = request.value;\n /* `single` is the only mode this panel asks for, so a range or a set is a\n shape the calendar cannot hand back here — and narrowing it is what keeps\n `selectDate` taking one day. */\n const candidate = Array.isArray(next) ? next[0] : next;\n if (candidate === null || candidate === undefined) return;\n if (!('year' in candidate)) return;\n this.selectDate(candidate, request.source as Event | undefined);\n }\n\n protected onFocusedDate(request: ChangeRequest<PlainDate>) {\n this.setHighlight(\n { date: request.value, time: this.highlight().time },\n request.reason === 'pointer' ? 'pointer' : 'keyboard',\n request.source,\n );\n }\n\n /**\n * A day pressed in the calendar. The time half is the one the value holds,\n * or the one pressed in the list. With neither, the day waits for a time:\n * focus moves to the list, onto the option nearest `referenceDateTime`, and\n * the value does not move.\n */\n private selectDate(date: PlainDate, source: Event | undefined) {\n const wasWhole = this.held() !== null;\n const time = this.held()?.time ?? this.pendingTime();\n if (time === null) {\n this.pendingDate.set(date);\n this.setHighlight({ date, time: null }, 'pointer', source);\n this.enterSurface('time');\n return;\n }\n const next: PlainDateTime = { date, time };\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(next, 'select', source);\n this.setHighlight({ date, time: this.highlight().time }, 'pointer', source);\n this.afterPress(next, wasWhole, 'date', source);\n }\n\n /**\n * A time pressed in the list. The date half is the one the value holds, or\n * the day pressed in the calendar; with neither, the time waits for a day and\n * focus moves to the calendar.\n */\n protected selectTime(option: TimeOption, source: Event) {\n if (option.unavailable || !this.editable()) return;\n const wasWhole = this.held() !== null;\n const date = this.held()?.date ?? this.pendingDate();\n this.setHighlight({ date: this.listDate(), time: option.time }, 'pointer', source);\n if (date === null) {\n this.pendingTime.set(option.time);\n this.enterSurface('date');\n return;\n }\n const next: PlainDateTime = { date, time: option.time };\n this.pendingDate.set(null);\n this.pendingTime.set(null);\n this.commit(next, 'select', source);\n this.afterPress(next, wasWhole, 'time', source);\n }\n\n /**\n * The rule, in one place: a press that leaves the value incomplete carries\n * focus to the half that is missing; a press that completes it closes the\n * panel; and a press on a value that was already whole changes one half and\n * leaves the panel where it is.\n */\n private afterPress(\n next: PlainDateTime | null,\n wasWhole: boolean,\n wrote: 'date' | 'time',\n source: Event | undefined,\n ) {\n const closeOnSelect = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n const nowWhole = next !== null;\n\n if (nowWhole && !wasWhole && closeOnSelect !== 'never') {\n this.close(source);\n return;\n }\n if (nowWhole && wasWhole && closeOnSelect === 'always') {\n this.close(source);\n return;\n }\n if (!nowWhole) this.enterSurface(wrote === 'date' ? 'time' : 'date');\n }\n\n private close(source: Event | undefined) {\n this.setOpen(false, 'select', source);\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n\n private enterSurface(surface: 'date' | 'time') {\n afterNextRender(() => this.enterSurfaceNow(surface), { injector: this.injector });\n }\n\n /** Focus into one surface, on a panel that is already rendered. */\n private enterSurfaceNow(surface: 'date' | 'time') {\n if (surface === 'time') {\n this.enterList();\n return;\n }\n const day = this.datePanelRef?.nativeElement.querySelector<HTMLElement>(\n '[data-part=\"day\"][tabindex=\"0\"]',\n );\n day?.focus({ preventScroll: true });\n }\n\n /**\n * Where the list opens: on the chosen time, on the nearest step to the\n * reference when nothing is chosen, and on the first available option when\n * that is refused.\n */\n private openingIndex(): number {\n const list = this.list();\n if (list.length === 0) return -1;\n const near = nearestIndex(list, this.held()?.time ?? this.anchor().time);\n if (near >= 0 && list[near]?.unavailable !== true) return near;\n const first = list.findIndex((option) => !option.unavailable);\n return first >= 0 ? first : 0;\n }\n\n private enterList() {\n const index = this.highlightIndex() >= 0 ? this.highlightIndex() : this.openingIndex();\n if (index < 0) return;\n const option = this.list()[index];\n if (option !== undefined) {\n this.setHighlight({ date: this.listDate(), time: option.time }, 'keyboard', undefined);\n }\n this.focusOption(index);\n }\n\n /** Watches the list's own box, which is what \"the layer has been measured\" looks like from inside it. */\n private listResize: ResizeObserver | null = null;\n\n private revealHighlight() {\n afterNextRender(\n () => {\n const list = this.listRef?.nativeElement;\n if (list === undefined) return;\n const reveal = () => {\n const row = list.querySelector<HTMLElement>('[data-part=\"option\"][data-current]');\n /* jsdom implements neither `scrollIntoView` nor `ResizeObserver`, and\n a test environment without a scroller is not a reason for the\n family to throw where a browser would scroll. */\n row?.scrollIntoView?.({ block: 'nearest' });\n };\n reveal();\n if (typeof ResizeObserver !== 'function') return;\n this.listResize?.disconnect();\n this.listResize = new ResizeObserver(reveal);\n this.listResize.observe(list);\n },\n { injector: this.injector },\n );\n }\n\n private focusOption(index: number) {\n const rows = this.listRef?.nativeElement.querySelectorAll<HTMLElement>('[data-part=\"option\"]');\n const row = rows?.[index];\n row?.focus();\n /* jsdom does not implement `scrollIntoView`, and a test environment without\n a scroller is not a reason for the family to throw. */\n row?.scrollIntoView?.({ block: 'nearest' });\n }\n\n /* ── The keyboard ────────────────────────────────────────────────────── */\n\n protected onControlKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n /* ChromeOS turns the chord into `PageDown` before the browser sees it,\n which Angular Material records for its own input — so the trigger button\n is always drawn and this is only a shortcut. Focus stays in the field. */\n if (event.altKey && event.key === 'ArrowDown') {\n event.preventDefault();\n this.setOpen(true, 'keyboard', event, false);\n }\n }\n\n protected onTriggerKeyDown(event: KeyboardEvent) {\n if (!this.editable()) return;\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n event.preventDefault();\n if (this.isOpen()) this.enterSurface(this.resolvedOpenTo());\n else this.setOpen(true, 'keyboard', event);\n }\n\n protected onListKeyDown(event: KeyboardEvent) {\n const list = this.list();\n const at = this.highlightIndex() >= 0 ? this.highlightIndex() : 0;\n\n const move = (index: number) => {\n event.preventDefault();\n const clamped = Math.max(0, Math.min(list.length - 1, index));\n const option = list[clamped];\n if (option === undefined) return;\n this.setHighlight({ date: this.listDate(), time: option.time }, 'keyboard', event);\n this.focusOption(clamped);\n };\n\n switch (event.key) {\n case 'ArrowDown':\n move(at + 1);\n return;\n case 'ArrowUp':\n move(at - 1);\n return;\n case 'Home':\n move(0);\n return;\n case 'End':\n move(list.length - 1);\n return;\n case 'PageDown':\n move(hourJump(list, at, 1));\n return;\n case 'PageUp':\n move(hourJump(list, at, -1));\n return;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const option = list[at];\n if (option !== undefined) this.selectTime(option, event);\n return;\n }\n default:\n break;\n }\n\n /* Type-ahead, which the pattern recommends above seven options and this\n list passes at every step it offers. */\n const typeahead = this.typeahead;\n if (typeahead === null) return;\n if (!isPrintable(event.key, typeahead.query.length > 0)) return;\n const found = typeahead.match(event.key, this.labels(), at);\n if (found < 0) return;\n move(found);\n }\n\n /* ── The machinery ───────────────────────────────────────────────────── */\n\n protected onFieldValue(request: DateTimeFieldChangeRequest) {\n this.commit(request.value, request.reason, request.source, request);\n }\n\n private commit(\n next: PlainDateTime | null,\n reason: ChangeReason,\n source: unknown,\n carried?: DateTimeFieldChangeRequest,\n ) {\n let cancelled = false;\n const state = createControllable<PlainDateTime | null>({\n controlled: this.value(),\n initial: this.held(),\n equals: isSameDateTime,\n onRequest: (request) => {\n this.valueChange.emit(\n carried === undefined\n ? request\n : { ...request, incomplete: carried.incomplete, segments: carried.segments },\n );\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (cancelled || !moved) return;\n if (this.value() === undefined) this.ownValue.set(next);\n this.onChangeFn(next);\n }\n\n private setHighlight(next: DateTimePickerHighlight, reason: ChangeReason, source: unknown) {\n if (reason !== 'programmatic') this.movedByReader = true;\n const state = createControllable<DateTimePickerHighlight>({\n controlled: this.highlighted(),\n initial: this.highlight(),\n equals: (a, b) => isSameDate(a.date, b.date) && isSameTime(a.time, b.time),\n onRequest: (request) => this.highlightedChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownHighlight.set(next);\n }\n\n private setOpen(next: boolean, reason: OpenReason, source: unknown, enter = true) {\n const state = createControllable<boolean>({\n controlled: this.open(),\n initial: this.isOpen(),\n onRequest: (request) => {\n this.openChange.emit(request);\n this.focusOnOpen = enter && request.value && !request.cancelled;\n },\n });\n if (state.request(next, reason, source)) this.ownOpen.set(next);\n }\n\n /** Places the layer and puts it in the single stack. */\n private attach() {\n const layer = this.layer?.nativeElement;\n if (layer === undefined) return;\n this.release();\n\n if (!this.sheet()) {\n const anchor =\n this.element.querySelector<HTMLElement>('[data-part=\"control\"]') ?? this.element;\n const [side, align] = this.resolvedPlacement().split('-') as [\n 'top' | 'bottom',\n 'start' | 'end' | undefined,\n ];\n this.positioner = createPositioner(anchor, layer, { align: align ?? 'center', side });\n /* The positioner writes `data-positioned` with the side, on the element, in\n the task that opened the layer; a binding to say it again was a frame later. */\n void this.positioner.update();\n }\n\n /* The dialog takes focus when it opens, in the surface `openTo` names. */\n if (this.focusOnOpen) {\n this.focusOnOpen = false;\n this.enterSurfaceNow(this.resolvedOpenTo());\n }\n\n const trigger = this.triggerRef?.nativeElement;\n this.dismissable = createDismissableLayer(layer, {\n branches: trigger === undefined ? [] : [trigger],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n /**\n * `Escape` is staged, and here it has three steps rather than two. The\n * field takes the key first while an expression is open — its own handler\n * stops it before this ever runs — then the calendar's view walks down\n * from year or month, and only then does the panel close.\n */\n onDismiss: (request) => {\n if (request.reason === 'escape' && this.view() !== 'day') {\n this.view.set(this.view() === 'year' ? 'month' : 'day');\n return;\n }\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source,\n );\n if (request.reason === 'escape') {\n this.triggerRef?.nativeElement.focus({ preventScroll: true });\n }\n },\n });\n }\n\n private release() {\n this.positioner?.destroy();\n this.positioner = null;\n this.dismissable?.destroy();\n this.dismissable = null;\n this.layer?.nativeElement.removeAttribute('data-positioned');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}