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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/alert.json +7 -1
  4. package/docs/alert.md +3 -3
  5. package/docs/app-shell.examples.md +1 -1
  6. package/docs/app-shell.json +5 -5
  7. package/docs/app-shell.md +2 -2
  8. package/docs/avatar.json +22 -1
  9. package/docs/avatar.md +5 -3
  10. package/docs/badge.json +7 -1
  11. package/docs/badge.md +3 -3
  12. package/docs/button-group.json +2 -0
  13. package/docs/button-group.md +1 -1
  14. package/docs/button.json +51 -11
  15. package/docs/button.md +10 -6
  16. package/docs/calendar.json +8 -1
  17. package/docs/calendar.md +1 -0
  18. package/docs/cascader.json +1 -0
  19. package/docs/cascader.md +1 -1
  20. package/docs/chart.examples.md +1 -1
  21. package/docs/chart.json +10 -1
  22. package/docs/chart.md +3 -2
  23. package/docs/checkbox.json +7 -0
  24. package/docs/checkbox.md +1 -0
  25. package/docs/code-block.json +92 -92
  26. package/docs/code-block.md +69 -69
  27. package/docs/combobox.json +1 -0
  28. package/docs/combobox.md +1 -1
  29. package/docs/currency-field.json +40 -1
  30. package/docs/currency-field.md +5 -1
  31. package/docs/data-grid.examples.md +2 -2
  32. package/docs/data-grid.json +24 -7
  33. package/docs/data-grid.md +1 -1
  34. package/docs/data-grid.props.md +6 -4
  35. package/docs/data-list.json +2 -1
  36. package/docs/data-list.md +1 -1
  37. package/docs/date-field.json +9 -1
  38. package/docs/date-field.md +3 -2
  39. package/docs/date-picker.examples.md +36 -0
  40. package/docs/date-picker.json +20 -5
  41. package/docs/date-picker.md +5 -4
  42. package/docs/datetime-field.json +1 -0
  43. package/docs/datetime-field.md +1 -1
  44. package/docs/dialog.examples.md +158 -136
  45. package/docs/dialog.json +35 -11
  46. package/docs/dialog.md +4 -2
  47. package/docs/dialog.props.md +1 -1
  48. package/docs/drawer.json +5 -0
  49. package/docs/drawer.md +1 -0
  50. package/docs/entity-picker.json +19 -4
  51. package/docs/entity-picker.md +8 -6
  52. package/docs/event-calendar.json +7 -0
  53. package/docs/event-calendar.md +1 -0
  54. package/docs/filter-bar.json +118 -118
  55. package/docs/filter-bar.md +79 -79
  56. package/docs/form.json +2 -1
  57. package/docs/form.md +1 -1
  58. package/docs/guidelines/README.md +27 -0
  59. package/docs/guidelines/async-feedback.md +129 -0
  60. package/docs/guidelines/browsing.md +74 -0
  61. package/docs/guidelines/builders.md +97 -0
  62. package/docs/guidelines/composition.md +143 -0
  63. package/docs/guidelines/conversations.md +59 -0
  64. package/docs/guidelines/errors-and-conflicts.md +71 -0
  65. package/docs/guidelines/forms.md +202 -0
  66. package/docs/guidelines/index.md +129 -0
  67. package/docs/guidelines/layout-alignment.md +95 -0
  68. package/docs/guidelines/ledgers.md +45 -0
  69. package/docs/guidelines/list-pages.md +206 -0
  70. package/docs/guidelines/overviews.md +76 -0
  71. package/docs/guidelines/own-elements.md +115 -0
  72. package/docs/guidelines/reading-permissions.md +55 -0
  73. package/docs/guidelines/record-pages.md +178 -0
  74. package/docs/guidelines/reports.md +123 -0
  75. package/docs/guidelines/shell-composition.md +94 -0
  76. package/docs/guidelines/workspaces.md +46 -0
  77. package/docs/icon.json +3 -1
  78. package/docs/icon.md +3 -3
  79. package/docs/index.md +12 -0
  80. package/docs/inline-message.json +14 -2
  81. package/docs/inline-message.md +4 -3
  82. package/docs/list-item.json +9 -1
  83. package/docs/list-item.md +3 -3
  84. package/docs/list.json +19 -1
  85. package/docs/list.md +3 -1
  86. package/docs/markdown.json +79 -79
  87. package/docs/markdown.md +65 -65
  88. package/docs/menu.json +12 -0
  89. package/docs/menu.md +2 -0
  90. package/docs/message.json +7 -1
  91. package/docs/message.md +3 -3
  92. package/docs/multi-select.json +1 -0
  93. package/docs/multi-select.md +1 -1
  94. package/docs/notification-center.json +4 -0
  95. package/docs/notification-center.md +2 -2
  96. package/docs/number-field.json +1 -0
  97. package/docs/number-field.md +1 -1
  98. package/docs/otp-input.json +1 -0
  99. package/docs/otp-input.md +1 -1
  100. package/docs/page-header.json +4 -3
  101. package/docs/page-header.md +2 -2
  102. package/docs/page.json +1 -0
  103. package/docs/page.md +1 -0
  104. package/docs/popover.json +1 -1
  105. package/docs/progress-indicator.json +4 -3
  106. package/docs/progress-indicator.md +4 -4
  107. package/docs/prompt-composer.json +41 -1
  108. package/docs/prompt-composer.md +5 -1
  109. package/docs/rating.json +5 -3
  110. package/docs/rating.md +5 -5
  111. package/docs/section.json +27 -15
  112. package/docs/section.md +11 -9
  113. package/docs/segmented-control.json +36 -12
  114. package/docs/segmented-control.md +17 -1
  115. package/docs/select.json +1 -0
  116. package/docs/select.md +1 -1
  117. package/docs/side-navigation.json +1 -0
  118. package/docs/side-navigation.md +1 -1
  119. package/docs/skills/build-own-element/SKILL.md +90 -0
  120. package/docs/skills/compose-screen/SKILL.md +95 -0
  121. package/docs/skills/index.md +9 -0
  122. package/docs/skills/review-screen/SKILL.md +77 -0
  123. package/docs/skills/theme-app/SKILL.md +87 -0
  124. package/docs/skills/waiting-states/SKILL.md +143 -0
  125. package/docs/sparkline.json +5 -2
  126. package/docs/sparkline.md +4 -4
  127. package/docs/split-button.json +4 -1
  128. package/docs/split-button.md +3 -3
  129. package/docs/stat-card.json +5 -1
  130. package/docs/stat-card.md +3 -3
  131. package/docs/table.examples.md +3 -3
  132. package/docs/table.json +85 -3
  133. package/docs/table.md +12 -1
  134. package/docs/tabs.json +17 -7
  135. package/docs/tabs.md +3 -2
  136. package/docs/tag.json +14 -4
  137. package/docs/tag.md +6 -6
  138. package/docs/tags-input.json +29 -2
  139. package/docs/tags-input.md +4 -1
  140. package/docs/text-field.json +2 -1
  141. package/docs/text-field.md +2 -2
  142. package/docs/textarea.json +1 -0
  143. package/docs/textarea.md +1 -1
  144. package/docs/time-field.json +1 -0
  145. package/docs/time-field.md +1 -1
  146. package/docs/timeline.json +138 -132
  147. package/docs/timeline.md +125 -125
  148. package/docs/toast.json +7 -1
  149. package/docs/toast.md +3 -3
  150. package/docs/toggle-group.json +14 -3
  151. package/docs/toggle-group.md +3 -3
  152. package/docs/toggle.json +12 -3
  153. package/docs/toggle.md +3 -3
  154. package/docs/tokens.md +467 -0
  155. package/docs/tour.json +1 -1
  156. package/docs/typography.json +4 -2
  157. package/docs/typography.md +4 -4
  158. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  159. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-action-bar.mjs +22 -11
  161. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  163. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-alert.mjs +18 -11
  165. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  167. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  169. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  171. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  173. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  175. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-badge.mjs +14 -10
  177. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  179. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  181. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-button.mjs +90 -29
  183. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  185. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-card.mjs +18 -16
  187. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  189. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-cascader.mjs +166 -66
  191. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-chart.mjs +53 -20
  193. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  195. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  197. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  199. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  201. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  203. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  205. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-combobox.mjs +112 -39
  207. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  209. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-container.mjs +6 -4
  211. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  213. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  215. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  217. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-data-grid.mjs +354 -113
  219. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  221. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  223. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  225. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  227. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  229. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  231. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  233. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  235. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  237. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  239. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-divider.mjs +7 -5
  241. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-drawer.mjs +53 -29
  243. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
  245. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  247. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  249. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-field.mjs +35 -15
  251. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
  253. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-form.mjs +18 -10
  255. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  257. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-grid.mjs +4 -2
  259. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  261. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  263. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-icon.mjs +6 -3
  265. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-image.mjs +13 -10
  267. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  269. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  271. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-inline.mjs +4 -2
  273. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  275. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-link.mjs +5 -3
  277. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  279. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-list.mjs +37 -22
  281. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  283. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  285. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  287. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-menu.mjs +51 -29
  289. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  291. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  293. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-message.mjs +113 -51
  295. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-multi-select.mjs +189 -87
  297. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  299. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  301. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  303. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  305. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-page-header.mjs +75 -45
  307. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-page.mjs +38 -10
  309. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  311. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-popover.mjs +32 -19
  313. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  315. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
  317. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-prose.mjs +14 -11
  319. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  321. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-rating.mjs +138 -82
  323. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  325. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  327. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  329. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-section.mjs +53 -18
  331. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  333. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-select.mjs +184 -94
  335. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  337. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  339. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-slider.mjs +31 -11
  341. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  343. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  345. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  347. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-stack.mjs +4 -2
  349. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  351. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  353. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  355. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-switch.mjs +15 -10
  357. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  359. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-table.mjs +243 -73
  361. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  363. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-tag.mjs +19 -12
  365. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  367. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  369. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  371. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  373. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  375. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  377. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  379. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-toast.mjs +43 -31
  381. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  383. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  385. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-toolbar.mjs +22 -11
  387. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  389. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  391. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-tour.mjs +47 -22
  393. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  395. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tree.mjs +74 -26
  397. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-typography.mjs +8 -4
  399. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-upload.mjs +125 -57
  401. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  403. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  405. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  406. package/package.json +3 -3
  407. package/types/slotted-angular-accordion.d.ts.map +1 -1
  408. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  409. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  410. package/types/slotted-angular-alert.d.ts +2 -2
  411. package/types/slotted-angular-alert.d.ts.map +1 -1
  412. package/types/slotted-angular-app-shell.d.ts +11 -3
  413. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  414. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  415. package/types/slotted-angular-attachment.d.ts +1 -1
  416. package/types/slotted-angular-attachment.d.ts.map +1 -1
  417. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  418. package/types/slotted-angular-avatar.d.ts +11 -3
  419. package/types/slotted-angular-avatar.d.ts.map +1 -1
  420. package/types/slotted-angular-badge.d.ts +1 -1
  421. package/types/slotted-angular-badge.d.ts.map +1 -1
  422. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  423. package/types/slotted-angular-button-group.d.ts +1 -1
  424. package/types/slotted-angular-button-group.d.ts.map +1 -1
  425. package/types/slotted-angular-button.d.ts +33 -13
  426. package/types/slotted-angular-button.d.ts.map +1 -1
  427. package/types/slotted-angular-calendar.d.ts +30 -2
  428. package/types/slotted-angular-calendar.d.ts.map +1 -1
  429. package/types/slotted-angular-card.d.ts.map +1 -1
  430. package/types/slotted-angular-carousel.d.ts.map +1 -1
  431. package/types/slotted-angular-cascader.d.ts.map +1 -1
  432. package/types/slotted-angular-chart.d.ts +10 -0
  433. package/types/slotted-angular-chart.d.ts.map +1 -1
  434. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  435. package/types/slotted-angular-checkbox.d.ts +7 -1
  436. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  437. package/types/slotted-angular-code-block.d.ts +1 -1
  438. package/types/slotted-angular-code-block.d.ts.map +1 -1
  439. package/types/slotted-angular-collapsible.d.ts +1 -1
  440. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  441. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  442. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  443. package/types/slotted-angular-combobox.d.ts +5 -1
  444. package/types/slotted-angular-combobox.d.ts.map +1 -1
  445. package/types/slotted-angular-command-palette.d.ts +10 -1
  446. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  447. package/types/slotted-angular-container.d.ts.map +1 -1
  448. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  449. package/types/slotted-angular-currency-field.d.ts +63 -15
  450. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  451. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  452. package/types/slotted-angular-data-grid.d.ts +49 -4
  453. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  454. package/types/slotted-angular-data-list.d.ts.map +1 -1
  455. package/types/slotted-angular-date-field.d.ts +11 -1
  456. package/types/slotted-angular-date-field.d.ts.map +1 -1
  457. package/types/slotted-angular-date-picker.d.ts +38 -12
  458. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  459. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  460. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  461. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  462. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  463. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  464. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  465. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  466. package/types/slotted-angular-description-list.d.ts.map +1 -1
  467. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  468. package/types/slotted-angular-dialog.d.ts +10 -3
  469. package/types/slotted-angular-dialog.d.ts.map +1 -1
  470. package/types/slotted-angular-divider.d.ts.map +1 -1
  471. package/types/slotted-angular-drawer.d.ts +7 -1
  472. package/types/slotted-angular-drawer.d.ts.map +1 -1
  473. package/types/slotted-angular-entity-picker.d.ts +63 -15
  474. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-event-calendar.d.ts +9 -2
  476. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  477. package/types/slotted-angular-field-group.d.ts.map +1 -1
  478. package/types/slotted-angular-field.d.ts.map +1 -1
  479. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  480. package/types/slotted-angular-form.d.ts.map +1 -1
  481. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  482. package/types/slotted-angular-grid.d.ts.map +1 -1
  483. package/types/slotted-angular-highlight.d.ts.map +1 -1
  484. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  485. package/types/slotted-angular-icon.d.ts +2 -2
  486. package/types/slotted-angular-icon.d.ts.map +1 -1
  487. package/types/slotted-angular-image.d.ts.map +1 -1
  488. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  489. package/types/slotted-angular-inline-message.d.ts +25 -25
  490. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  491. package/types/slotted-angular-inline.d.ts.map +1 -1
  492. package/types/slotted-angular-kbd.d.ts.map +1 -1
  493. package/types/slotted-angular-link.d.ts.map +1 -1
  494. package/types/slotted-angular-list-item.d.ts +1 -1
  495. package/types/slotted-angular-list-item.d.ts.map +1 -1
  496. package/types/slotted-angular-list.d.ts +42 -27
  497. package/types/slotted-angular-list.d.ts.map +1 -1
  498. package/types/slotted-angular-listbox.d.ts.map +1 -1
  499. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  500. package/types/slotted-angular-markdown.d.ts.map +1 -1
  501. package/types/slotted-angular-menu.d.ts +11 -2
  502. package/types/slotted-angular-menu.d.ts.map +1 -1
  503. package/types/slotted-angular-menubar.d.ts.map +1 -1
  504. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  505. package/types/slotted-angular-message.d.ts +1 -1
  506. package/types/slotted-angular-message.d.ts.map +1 -1
  507. package/types/slotted-angular-multi-select.d.ts +15 -1
  508. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  509. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  510. package/types/slotted-angular-notification-center.d.ts +1 -1
  511. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  512. package/types/slotted-angular-number-field.d.ts.map +1 -1
  513. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  514. package/types/slotted-angular-page-header.d.ts +4 -4
  515. package/types/slotted-angular-page-header.d.ts.map +1 -1
  516. package/types/slotted-angular-page.d.ts.map +1 -1
  517. package/types/slotted-angular-pagination.d.ts.map +1 -1
  518. package/types/slotted-angular-popover.d.ts.map +1 -1
  519. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  520. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  521. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  522. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  523. package/types/slotted-angular-prose.d.ts.map +1 -1
  524. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  525. package/types/slotted-angular-rating.d.ts +1 -1
  526. package/types/slotted-angular-rating.d.ts.map +1 -1
  527. package/types/slotted-angular-result-state.d.ts.map +1 -1
  528. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  529. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  530. package/types/slotted-angular-section.d.ts +11 -3
  531. package/types/slotted-angular-section.d.ts.map +1 -1
  532. package/types/slotted-angular-segmented-control.d.ts +15 -2
  533. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  534. package/types/slotted-angular-select.d.ts +12 -2
  535. package/types/slotted-angular-select.d.ts.map +1 -1
  536. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  537. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  538. package/types/slotted-angular-slider.d.ts.map +1 -1
  539. package/types/slotted-angular-sparkline.d.ts +7 -1
  540. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  541. package/types/slotted-angular-split-button.d.ts +2 -2
  542. package/types/slotted-angular-split-button.d.ts.map +1 -1
  543. package/types/slotted-angular-splitter.d.ts.map +1 -1
  544. package/types/slotted-angular-stack.d.ts.map +1 -1
  545. package/types/slotted-angular-stat-card.d.ts +1 -1
  546. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  547. package/types/slotted-angular-status-indicator.d.ts +1 -1
  548. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  549. package/types/slotted-angular-stepper.d.ts +1 -1
  550. package/types/slotted-angular-stepper.d.ts.map +1 -1
  551. package/types/slotted-angular-switch.d.ts.map +1 -1
  552. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  553. package/types/slotted-angular-table.d.ts +63 -6
  554. package/types/slotted-angular-table.d.ts.map +1 -1
  555. package/types/slotted-angular-tabs.d.ts +3 -4
  556. package/types/slotted-angular-tabs.d.ts.map +1 -1
  557. package/types/slotted-angular-tag.d.ts +1 -1
  558. package/types/slotted-angular-tag.d.ts.map +1 -1
  559. package/types/slotted-angular-tags-input.d.ts +33 -1
  560. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  561. package/types/slotted-angular-text-field.d.ts.map +1 -1
  562. package/types/slotted-angular-textarea.d.ts.map +1 -1
  563. package/types/slotted-angular-theme.d.ts +1 -1
  564. package/types/slotted-angular-time-field.d.ts.map +1 -1
  565. package/types/slotted-angular-time-picker.d.ts +0 -1
  566. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  567. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  568. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  569. package/types/slotted-angular-timeline.d.ts +1 -1
  570. package/types/slotted-angular-timeline.d.ts.map +1 -1
  571. package/types/slotted-angular-toast.d.ts +3 -3
  572. package/types/slotted-angular-toast.d.ts.map +1 -1
  573. package/types/slotted-angular-toggle-group.d.ts +8 -2
  574. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  575. package/types/slotted-angular-toggle.d.ts +1 -1
  576. package/types/slotted-angular-toggle.d.ts.map +1 -1
  577. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  578. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  579. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  580. package/types/slotted-angular-tour.d.ts.map +1 -1
  581. package/types/slotted-angular-transfer.d.ts.map +1 -1
  582. package/types/slotted-angular-tree.d.ts.map +1 -1
  583. package/types/slotted-angular-typography.d.ts +1 -1
  584. package/types/slotted-angular-typography.d.ts.map +1 -1
  585. package/types/slotted-angular-upload.d.ts +2 -2
  586. package/types/slotted-angular-upload.d.ts.map +1 -1
  587. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  588. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-description-list.mjs","sources":["../../description-list/src/description-list.constants.ts","../../description-list/src/description-list.ts","../../description-list/src/slotted-angular-description-list.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { writeToClipboard } from '@slotted/core/clipboard';\n\n/** The term beside its value, or above it. */\nexport type DescriptionListLayout = 'row' | 'stack';\n\n/** How many pairs stand side by side before the container narrows. */\nexport type DescriptionListColumns = 1 | 2 | 3;\n\n/** Nothing between pairs, a rule between them, or a framed table. */\nexport type DescriptionListVariant = 'plain' | 'ruled' | 'framed';\n\n/**\n * What happened when a value was copied. It is not a `ChangeRequest`: the\n * clipboard belongs to the platform, so there is no previous value, nothing to\n * cancel, and no state the family holds. The output reports, after the fact,\n * what a consumer may want to log or announce differently.\n */\nexport interface DescriptionListCopyRequest {\n readonly value: string;\n readonly reason: 'pointer' | 'keyboard';\n /** `false` when the platform refused the write or offers no clipboard. */\n readonly copied: boolean;\n /**\n * `true` when the write was refused and the value was selected instead, so\n * the reader can copy it with the keyboard.\n */\n readonly selected: boolean;\n readonly source?: Event;\n}\n\nexport interface DescriptionListDefaults {\n columns?: DescriptionListColumns;\n layout?: DescriptionListLayout;\n /** The maximum width of the term column, as a CSS length. */\n termWidth?: string;\n variant?: DescriptionListVariant;\n}\n\nexport const DESCRIPTION_LIST_DEFAULT_LAYOUT: DescriptionListLayout = 'row';\nexport const DESCRIPTION_LIST_DEFAULT_COLUMNS: DescriptionListColumns = 1;\nexport const DESCRIPTION_LIST_DEFAULT_VARIANT: DescriptionListVariant = 'plain';\n\n/**\n * The mark a row shows where it has no value: an em dash, which is what a table\n * has used for a missing value since tables were set in lead. It is a character\n * and therefore content, which is why it is written in the template and not\n * generated by the stylesheet, and never a hyphen — that is a word joiner, half\n * the width, sitting at a different height (DL2).\n */\nexport const DESCRIPTION_LIST_EMPTY_VALUE_MARK = '\\u2014';\n\n/** How long the copy control says it succeeded before returning to rest. */\nexport const COPIED_FOR = 1500;\n\nexport const DESCRIPTION_LIST_DEFAULTS_TOKEN = new InjectionToken<DescriptionListDefaults>(\n 'slotted description list defaults',\n { providedIn: 'root', factory: (): DescriptionListDefaults => ({}) },\n);\n\n/**\n * An application decides once how its details panels are arranged. A list\n * that states any of it itself still wins: an explicit input is never\n * overridden by the token. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideDescriptionListDefaults(defaults: DescriptionListDefaults) {\n return { provide: DESCRIPTION_LIST_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectDescriptionListDefaults(): DescriptionListDefaults {\n return inject(DESCRIPTION_LIST_DEFAULTS_TOKEN);\n}\n\n/**\n * A span is stated in columns and the list may have fewer, so a pair asking for\n * three columns of a two-column list takes two. Grid would otherwise invent the\n * tracks it was asked for and the list would quietly grow a column nobody\n * declared. Shared with the React binding through the tests that assert the\n * same table, and deliberately not through `@slotted/core`: it is three lines,\n * and a core module exists for arithmetic two bindings would otherwise get\n * *differently* wrong.\n */\nexport function spanWithin(span: number | undefined, columns: number): number | undefined {\n if (span === undefined) return undefined;\n const clamped = Math.min(Math.max(Math.trunc(span), 1), columns);\n return clamped > 1 ? clamped : undefined;\n}\n\n/**\n * Whether a value wants more room than the lines it was given.\n *\n * It compares the height the text wants against the height the clamp allows,\n * rather than comparing the box to itself: `scrollHeight` reports the full\n * content either way, so the answer does not change when the clamp is released\n * and the control does not disappear under the hand that pressed it. A line\n * height CSS cannot resolve — `normal`, or an element with no layout — answers\n * no, which leaves the control absent rather than present and useless.\n *\n * Shared with the React binding through the tests that assert the same table.\n */\nexport function overflowsClamp(scrollHeight: number, lineHeight: number, lines: number): boolean {\n if (!Number.isFinite(lineHeight) || lineHeight <= 0 || lines <= 0) return false;\n return scrollHeight > lineHeight * lines + 1;\n}\n\n/**\n * Puts the value under the reader's own selection, which is the one thing left\n * to offer when the platform refuses the clipboard. It returns whether it\n * managed to, so the request can say what actually happened.\n */\nexport function selectValue(node: HTMLElement | null | undefined): boolean {\n const selection = node?.ownerDocument.defaultView?.getSelection();\n if (!node || !selection) return false;\n\n try {\n selection.removeAllRanges();\n const range = node.ownerDocument.createRange();\n range.selectNodeContents(node);\n selection.addRange(range);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Putting a value on the clipboard, and saying whether it got there.\n *\n * The two ways and the order they are tried in belong to `@slotted/core`, which\n * is where behaviour the two bindings would otherwise get differently wrong\n * lives: a temporary selection that is not taken back destroys the reader's\n * own, and that is a bug a family would rediscover once per framework (DL1).\n *\n * What is left here is the family's own reading of the answer: the control says\n * it copied whichever way the text went, and says it could not only when both\n * ways were refused.\n */\nexport async function copyToClipboard(value: string): Promise<boolean> {\n return (await writeToClipboard(value)) !== 'refused';\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlDescriptionListIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-description-list-${this.count}`;\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n Injector,\n numberAttribute,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n descriptionListMessages,\n type DescriptionListMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n COPIED_FOR,\n copyToClipboard,\n DESCRIPTION_LIST_DEFAULT_COLUMNS,\n DESCRIPTION_LIST_DEFAULT_LAYOUT,\n DESCRIPTION_LIST_DEFAULT_VARIANT,\n DESCRIPTION_LIST_EMPTY_VALUE_MARK,\n injectDescriptionListDefaults,\n overflowsClamp,\n selectValue,\n SlDescriptionListIdFactory,\n spanWithin,\n type DescriptionListColumns,\n type DescriptionListCopyRequest,\n type DescriptionListLayout,\n type DescriptionListVariant,\n} from './description-list.constants';\n\n/**\n * Pairs of a term and its description, read rather than edited.\n *\n * **The semantics are the platform's.** `dl`, `dt` and `dd` already carry\n * `list`, `term` and `definition`, so the family writes no role: MDN records\n * that authoring the ARIA `term` and `definition` roles by hand changes how\n * VoiceOver announces the construct.\n *\n * **The `dl` is the component's and the element around it is the consumer's.**\n * An element with `container-type: inline-size` is a query container for its\n * descendants and not for itself, and what the container query changes here is\n * the grid — so the consumer's own element is the container, and the `dl` the\n * component draws inside it is the grid. Every pair a consumer writes is\n * projected into that `dl`.\n */\n@Component({\n selector: 'div[slDescriptionList]',\n standalone: true,\n template: '<dl data-part=\"list\"><ng-content></ng-content></dl>',\n styleUrls: [\n '../../../styles/src/description-list/description-list.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slDescriptionList',\n host: {\n 'data-ui': 'description-list',\n 'data-part': 'root',\n '[attr.data-layout]': 'layoutValue()',\n '[attr.data-columns]': 'columnsValue()',\n '[attr.data-variant]': 'variantValue()',\n '[style.--slotted-description-list-term-width]': 'termWidthValue() ?? null',\n },\n})\nexport class SlDescriptionList {\n readonly layout = input<DescriptionListLayout | undefined>(undefined);\n readonly columns = input(undefined, { transform: optionalColumns });\n readonly variant = input<DescriptionListVariant | undefined>(undefined);\n /** The maximum width of the term column, as a CSS length. */\n readonly termWidth = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * copy control and its announcements, the reveal control, and the sentence\n * read in place of a missing value.\n */\n readonly messages = input<PartialMessages<DescriptionListMessages> | undefined>(undefined);\n\n private readonly defaults = injectDescriptionListDefaults();\n\n readonly layoutValue = computed(\n () => this.layout() ?? this.defaults.layout ?? DESCRIPTION_LIST_DEFAULT_LAYOUT,\n );\n readonly columnsValue = computed(\n () => this.columns() ?? this.defaults.columns ?? DESCRIPTION_LIST_DEFAULT_COLUMNS,\n );\n readonly variantValue = computed(\n () => this.variant() ?? this.defaults.variant ?? DESCRIPTION_LIST_DEFAULT_VARIANT,\n );\n readonly termWidthValue = computed(() => this.termWidth() ?? this.defaults.termWidth);\n\n /** The family's words in the language in force, with this list's `messages` laid over them. */\n readonly t = injectMessages(descriptionListMessages, this.messages);\n}\n\n/**\n * One name-value pair, and the `div` the HTML Standard permits inside a `dl`.\n *\n * It is the box a rule, a tint and a span apply to, and the only part that can\n * see both the term and the action — so it is where the identifier that ties\n * the two together is made.\n */\n@Directive({\n selector: 'div[slDescriptionListItem]',\n standalone: true,\n exportAs: 'slDescriptionListItem',\n host: {\n 'data-part': 'item',\n '[attr.data-span]': 'spanValue()',\n },\n})\nexport class SlDescriptionListItem {\n readonly list = inject(SlDescriptionList);\n readonly span = input(undefined, { transform: optionalColumns });\n\n /** The `dt`'s identifier, which the row's action is described by. */\n readonly termId = inject(SlDescriptionListIdFactory).next();\n\n readonly spanValue = computed(() => spanWithin(this.span(), this.list.columnsValue()) ?? null);\n}\n\n/**\n * The name. It carries an identifier so the row's action can be described by\n * it; a static `id` the consumer wrote wins, because a page that already\n * references this term references it by the name it chose.\n */\n@Directive({\n selector: 'dt[slDescriptionListTerm]',\n standalone: true,\n exportAs: 'slDescriptionListTerm',\n host: {\n 'data-part': 'term',\n '[attr.id]': 'identifier',\n },\n})\nexport class SlDescriptionListTerm {\n private readonly item = inject(SlDescriptionListItem, { optional: true });\n private readonly ownId = inject(new HostAttributeToken('id'), { optional: true });\n\n readonly identifier = this.ownId ?? this.item?.termId ?? null;\n}\n\n/**\n * One line explaining what the term means, inside the `dt` that names it. It is\n * part of the term's own text on purpose: a reader who reaches the term hears\n * the explanation with it, and the row's action — described by the same `dt` —\n * inherits the context rather than repeating it.\n */\n@Directive({\n selector: '[slDescriptionListHint]',\n standalone: true,\n exportAs: 'slDescriptionListHint',\n host: { 'data-part': 'hint' },\n})\nexport class SlDescriptionListHint {}\n\n/**\n * The value's cell: the value itself, and the controls that reach it.\n *\n * **Clamping is visual only.** Every character stays in the DOM, selectable,\n * copyable and readable by a screen reader, which is what section 10 of the\n * feature guide means by never truncating without access.\n *\n * **Empty is stated rather than inferred.** Angular cannot read projected\n * content without reading the DOM after a render, so the absence of a value is\n * an input here where React reads nullish children. Levelling the two down to\n * the input in both would remove the case that matters most in React — a value\n * missing because the data is missing — to make the two look alike.\n */\n@Component({\n selector: 'dd[slDescriptionListDescription]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n template: `\n <span #value data-part=\"value\">\n <ng-content></ng-content>\n @if (empty()) {\n @if (placeholder()) {\n <span data-part=\"placeholder\">{{ placeholder() }}</span>\n } @else {\n <span aria-hidden=\"true\" data-part=\"placeholder\">{{ emptyMark }}</span>\n <span data-ui=\"visually-hidden\">{{ placeholderText() }}</span>\n }\n }\n </span>\n @if (copy()) {\n <button\n [attr.aria-label]=\"list.t('copy')\"\n [attr.data-complete]=\"copied() ? '' : null\"\n data-part=\"copy\"\n type=\"button\"\n (click)=\"onCopy($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <!-- A finished copy changes its mark as well as its colour. -->\n <span slIcon><svg slGlyph [name]=\"copied() ? 'check' : 'copy'\"></svg></span>\n </button>\n }\n @if (clampValue() > 0 && overflows()) {\n <button\n [attr.aria-expanded]=\"revealed()\"\n data-part=\"toggle\"\n type=\"button\"\n (click)=\"onToggle($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n {{ revealed() ? list.t('collapse') : list.t('reveal') }}\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n }\n `,\n styleUrls: [\n '../../../styles/src/description-list/description-list.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slDescriptionListDescription',\n host: {\n 'data-part': 'description',\n '[attr.data-clamp]': 'clampValue() > 0 ? \"\" : null',\n '[attr.data-revealed]': 'clampValue() > 0 && revealed() ? \"\" : null',\n '[style.--slotted-description-list-clamp]': 'clampValue() > 0 ? clampValue() : null',\n },\n})\nexport class SlDescriptionListDescription {\n readonly list = inject(SlDescriptionList);\n\n /** The character a row shows where it has no value. */\n protected readonly emptyMark = DESCRIPTION_LIST_EMPTY_VALUE_MARK;\n\n /** Lines the value is held to before it is revealed. `0` never clamps. */\n readonly clamp = input(0, { transform: (value: number | string) => numberAttribute(value, 0) });\n /** Draws the control that puts the value on the clipboard. */\n readonly copy = input(false, { transform: booleanAttribute });\n /**\n * The text the control copies. Absent, the rendered text of the value is read\n * at the moment of the press, which is what a formatted value needs.\n */\n readonly copyValue = input<string | undefined>(undefined);\n /** Draws the placeholder in place of a value that is missing. */\n readonly empty = input(false, { transform: booleanAttribute });\n /** What is read in place of that value. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /**\n * Present means controlled, for the life of the component, which is why the\n * unset value is `undefined` rather than `false`: a family that read `false`\n * as a consumer's answer would never own its own state.\n */\n readonly revealedValue = input(undefined, {\n alias: 'revealed',\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n /** What an uncontrolled description starts from, read once. */\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n\n /**\n * Emitted before the value is revealed, carrying the value it replaces, the\n * reason and the event it came from. It is not the second half of a two-way\n * binding: one slot can carry none of those.\n */\n readonly revealedChange = output<ChangeRequest<boolean>>();\n /** Emitted after a copy, whether or not the platform accepted it. */\n readonly copied$ = output<DescriptionListCopyRequest>({ alias: 'copied' });\n\n private readonly own = signal(false);\n private readonly done = signal(false);\n private readonly overflowing = signal(false);\n private readonly value = viewChild<ElementRef<HTMLElement>>('value');\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private timer: ReturnType<typeof setTimeout> | undefined;\n private observer: ResizeObserver | undefined;\n private keyed = false;\n\n readonly revealed = computed(() => this.revealedValue() ?? this.own());\n readonly clampValue = computed(() => Math.max(0, Math.trunc(this.clamp())));\n readonly copied = computed(() => this.done());\n /** Whether the value wants more room than the clamp gives it. */\n readonly overflows = computed(() => this.overflowing());\n readonly placeholderText = computed(() => this.placeholder() ?? this.list.t('placeholder'));\n\n constructor() {\n this.own.set(this.defaultRevealed());\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.timer);\n this.observer?.disconnect();\n });\n\n /**\n * A control that reveals nothing is a control a reader presses once and\n * learns to distrust. A clamp is a maximum rather than a promise: most\n * values in a panel are shorter than it, and the toggle appears only for\n * the ones that are not. The value is remeasured whenever its box changes,\n * which is what the container query does to it at every breakpoint.\n */\n afterNextRender(\n () => {\n effect(\n () => {\n const lines = this.clampValue();\n const node = this.value()?.nativeElement;\n this.observer?.disconnect();\n this.observer = undefined;\n\n if (lines <= 0 || !node || typeof ResizeObserver === 'undefined') {\n this.overflowing.set(false);\n return;\n }\n\n const measure = () => {\n const lineHeight = Number.parseFloat(getComputedStyle(node).lineHeight);\n this.overflowing.set(overflowsClamp(node.scrollHeight, lineHeight, lines));\n };\n\n measure();\n this.observer = new ResizeObserver(measure);\n this.observer.observe(node);\n },\n { injector: this.injector },\n );\n },\n { injector: this.injector },\n );\n }\n\n /**\n * `Enter` and `Space` both activate a button and the browser turns each into\n * a click, so the reason a request carries is decided by whether a key came\n * first. It is the difference between a press and a key, and a consumer that\n * has to guess writes the wrong handler.\n */\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') this.keyed = true;\n }\n\n onToggle(event: Event) {\n const reason = this.takeReason();\n const state = createControllable<boolean>({\n controlled: this.revealedValue(),\n initial: this.revealed(),\n onRequest: (request) => this.revealedChange.emit(request),\n });\n if (state.request(!this.revealed(), reason, event)) this.own.set(!this.own());\n }\n\n async onCopy(event: Event) {\n const reason = this.takeReason();\n /* Read at the moment of the press rather than at render: a formatted value\n is what the reader sees, and `copyValue` is for when it is not. */\n const text = this.copyValue() ?? this.value()?.nativeElement.textContent?.trim() ?? '';\n const copied = await copyToClipboard(text);\n let selected = false;\n\n if (copied) {\n this.done.set(true);\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.done.set(false), COPIED_FOR);\n /* Through the shared announcer rather than a region this family owns, so\n two copies in one update are both heard. */\n getLiveAnnouncer().announce(this.list.t('copied'));\n } else {\n /**\n * A refused write used to leave the control at rest and the reader with\n * nothing — which is indistinguishable from a broken button, and is\n * exactly what a browser does when the document is not focused or the\n * page is in an iframe carrying no `clipboard-write` permission. So the\n * family does the part it still can: it selects the value, which the\n * reader can see and copy with the keyboard, and says so.\n */\n selected = selectValue(this.value()?.nativeElement);\n getLiveAnnouncer().announce(this.list.t('copyBlocked'));\n }\n\n this.copied$.emit({ copied, reason, selected, source: event, value: text });\n }\n\n private takeReason(): 'pointer' | 'keyboard' {\n const reason = this.keyed ? 'keyboard' : 'pointer';\n this.keyed = false;\n return reason;\n }\n}\n\n/**\n * The row's own action, in a second `dd` of the same group — which is what a\n * `dt` followed by more than one `dd` is for, and what GOV.UK's summary list\n * does.\n *\n * It is named by its own term through `aria-describedby`, so a reader who\n * reaches \"Change\" out of context hears which row it changes. GOV.UK repeats\n * the term as visually hidden text inside every action, which a template system\n * has to do; a reference says it once and cannot drift. A static\n * `aria-describedby` the consumer wrote is composed with rather than replaced.\n */\n@Directive({\n selector: 'dd[slDescriptionListAction]',\n standalone: true,\n exportAs: 'slDescriptionListAction',\n host: {\n 'data-part': 'action',\n '[attr.aria-describedby]': 'describedBy',\n },\n})\nexport class SlDescriptionListAction {\n private readonly item = inject(SlDescriptionListItem, { optional: true });\n private readonly own = inject(new HostAttributeToken('aria-describedby'), { optional: true });\n\n readonly describedBy = [this.own, this.item?.termId].filter(Boolean).join(' ') || null;\n}\n\n/**\n * Absence has to survive the transform: `numberAttribute` maps an unset input\n * to `NaN`, and a family that read that would stop deferring to the provider.\n */\nfunction optionalColumns(value: DescriptionListColumns | string | undefined) {\n if (value === undefined || value === null || value === '') return undefined;\n const parsed = numberAttribute(value);\n if (!Number.isFinite(parsed)) return undefined;\n return Math.min(Math.max(Math.trunc(parsed), 1), 3) as DescriptionListColumns;\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-description-list.mjs","sources":["../../description-list/src/description-list.constants.ts","../../description-list/src/description-list.ts","../../description-list/src/slotted-angular-description-list.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { writeToClipboard } from '@slotted/core/clipboard';\n\n/** The term beside its value, or above it. */\nexport type DescriptionListLayout = 'row' | 'stack';\n\n/** How many pairs stand side by side before the container narrows. */\nexport type DescriptionListColumns = 1 | 2 | 3;\n\n/** Nothing between pairs, a rule between them, or a framed table. */\nexport type DescriptionListVariant = 'plain' | 'ruled' | 'framed';\n\n/**\n * What happened when a value was copied. It is not a `ChangeRequest`: the\n * clipboard belongs to the platform, so there is no previous value, nothing to\n * cancel, and no state the family holds. The output reports, after the fact,\n * what a consumer may want to log or announce differently.\n */\nexport interface DescriptionListCopyRequest {\n readonly value: string;\n readonly reason: 'pointer' | 'keyboard';\n /** `false` when the platform refused the write or offers no clipboard. */\n readonly copied: boolean;\n /**\n * `true` when the write was refused and the value was selected instead, so\n * the reader can copy it with the keyboard.\n */\n readonly selected: boolean;\n readonly source?: Event;\n}\n\nexport interface DescriptionListDefaults {\n columns?: DescriptionListColumns;\n layout?: DescriptionListLayout;\n /** The maximum width of the term column, as a CSS length. */\n termWidth?: string;\n variant?: DescriptionListVariant;\n}\n\nexport const DESCRIPTION_LIST_DEFAULT_LAYOUT: DescriptionListLayout = 'row';\nexport const DESCRIPTION_LIST_DEFAULT_COLUMNS: DescriptionListColumns = 1;\nexport const DESCRIPTION_LIST_DEFAULT_VARIANT: DescriptionListVariant = 'plain';\n\n/**\n * The mark a row shows where it has no value: an em dash, which is what a table\n * has used for a missing value since tables were set in lead. It is a character\n * and therefore content, which is why it is written in the template and not\n * generated by the stylesheet, and never a hyphen — that is a word joiner, half\n * the width, sitting at a different height (DL2).\n */\nexport const DESCRIPTION_LIST_EMPTY_VALUE_MARK = '\\u2014';\n\n/** How long the copy control says it succeeded before returning to rest. */\nexport const COPIED_FOR = 1500;\n\nexport const DESCRIPTION_LIST_DEFAULTS_TOKEN = new InjectionToken<DescriptionListDefaults>(\n 'slotted description list defaults',\n { providedIn: 'root', factory: (): DescriptionListDefaults => ({}) },\n);\n\n/**\n * An application decides once how its details panels are arranged. A list\n * that states any of it itself still wins: an explicit input is never\n * overridden by the token. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideDescriptionListDefaults(defaults: DescriptionListDefaults) {\n return { provide: DESCRIPTION_LIST_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectDescriptionListDefaults(): DescriptionListDefaults {\n return inject(DESCRIPTION_LIST_DEFAULTS_TOKEN);\n}\n\n/**\n * A span is stated in columns and the list may have fewer, so a pair asking for\n * three columns of a two-column list takes two. Grid would otherwise invent the\n * tracks it was asked for and the list would quietly grow a column nobody\n * declared. Shared with the React binding through the tests that assert the\n * same table, and deliberately not through `@slotted/core`: it is three lines,\n * and a core module exists for arithmetic two bindings would otherwise get\n * *differently* wrong.\n */\nexport function spanWithin(span: number | undefined, columns: number): number | undefined {\n if (span === undefined) return undefined;\n const clamped = Math.min(Math.max(Math.trunc(span), 1), columns);\n return clamped > 1 ? clamped : undefined;\n}\n\n/**\n * Whether a value wants more room than the lines it was given.\n *\n * It compares the height the text wants against the height the clamp allows,\n * rather than comparing the box to itself: `scrollHeight` reports the full\n * content either way, so the answer does not change when the clamp is released\n * and the control does not disappear under the hand that pressed it. A line\n * height CSS cannot resolve — `normal`, or an element with no layout — answers\n * no, which leaves the control absent rather than present and useless.\n *\n * Shared with the React binding through the tests that assert the same table.\n */\nexport function overflowsClamp(scrollHeight: number, lineHeight: number, lines: number): boolean {\n if (!Number.isFinite(lineHeight) || lineHeight <= 0 || lines <= 0) return false;\n return scrollHeight > lineHeight * lines + 1;\n}\n\n/**\n * Puts the value under the reader's own selection, which is the one thing left\n * to offer when the platform refuses the clipboard. It returns whether it\n * managed to, so the request can say what actually happened.\n */\nexport function selectValue(node: HTMLElement | null | undefined): boolean {\n const selection = node?.ownerDocument.defaultView?.getSelection();\n if (!node || !selection) return false;\n\n try {\n selection.removeAllRanges();\n const range = node.ownerDocument.createRange();\n range.selectNodeContents(node);\n selection.addRange(range);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Putting a value on the clipboard, and saying whether it got there.\n *\n * The two ways and the order they are tried in belong to `@slotted/core`, which\n * is where behaviour the two bindings would otherwise get differently wrong\n * lives: a temporary selection that is not taken back destroys the reader's\n * own, and that is a bug a family would rediscover once per framework (DL1).\n *\n * What is left here is the family's own reading of the answer: the control says\n * it copied whichever way the text went, and says it could not only when both\n * ways were refused.\n */\nexport async function copyToClipboard(value: string): Promise<boolean> {\n return (await writeToClipboard(value)) !== 'refused';\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlDescriptionListIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-description-list-${this.count}`;\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n Injector,\n numberAttribute,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n descriptionListMessages,\n type DescriptionListMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n COPIED_FOR,\n copyToClipboard,\n DESCRIPTION_LIST_DEFAULT_COLUMNS,\n DESCRIPTION_LIST_DEFAULT_LAYOUT,\n DESCRIPTION_LIST_DEFAULT_VARIANT,\n DESCRIPTION_LIST_EMPTY_VALUE_MARK,\n injectDescriptionListDefaults,\n overflowsClamp,\n selectValue,\n SlDescriptionListIdFactory,\n spanWithin,\n type DescriptionListColumns,\n type DescriptionListCopyRequest,\n type DescriptionListLayout,\n type DescriptionListVariant,\n} from './description-list.constants';\n\n/**\n * Pairs of a term and its description, read rather than edited.\n *\n * **The semantics are the platform's.** `dl`, `dt` and `dd` already carry\n * `list`, `term` and `definition`, so the family writes no role: MDN records\n * that authoring the ARIA `term` and `definition` roles by hand changes how\n * VoiceOver announces the construct.\n *\n * **The `dl` is the component's and the element around it is the consumer's.**\n * An element with `container-type: inline-size` is a query container for its\n * descendants and not for itself, and what the container query changes here is\n * the grid — so the consumer's own element is the container, and the `dl` the\n * component draws inside it is the grid. Every pair a consumer writes is\n * projected into that `dl`.\n */\n@Component({\n selector: 'div[slDescriptionList]',\n standalone: true,\n template: '<dl data-part=\"list\" data-part-list=\"\"><ng-content></ng-content></dl>',\n styleUrls: [\n '../../../styles/src/description-list/description-list.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slDescriptionList',\n host: {\n 'data-ui': 'description-list',\n 'data-ui-description-list': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-layout]': 'layoutValue()',\n '[attr.data-columns]': 'columnsValue()',\n '[attr.data-variant]': 'variantValue()',\n '[style.--slotted-description-list-term-width]': 'termWidthValue() ?? null',\n },\n})\nexport class SlDescriptionList {\n readonly layout = input<DescriptionListLayout | undefined>(undefined);\n readonly columns = input(undefined, { transform: optionalColumns });\n readonly variant = input<DescriptionListVariant | undefined>(undefined);\n /** The maximum width of the term column, as a CSS length. */\n readonly termWidth = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * copy control and its announcements, the reveal control, and the sentence\n * read in place of a missing value.\n */\n readonly messages = input<PartialMessages<DescriptionListMessages> | undefined>(undefined);\n\n private readonly defaults = injectDescriptionListDefaults();\n\n readonly layoutValue = computed(\n () => this.layout() ?? this.defaults.layout ?? DESCRIPTION_LIST_DEFAULT_LAYOUT,\n );\n readonly columnsValue = computed(\n () => this.columns() ?? this.defaults.columns ?? DESCRIPTION_LIST_DEFAULT_COLUMNS,\n );\n readonly variantValue = computed(\n () => this.variant() ?? this.defaults.variant ?? DESCRIPTION_LIST_DEFAULT_VARIANT,\n );\n readonly termWidthValue = computed(() => this.termWidth() ?? this.defaults.termWidth);\n\n /** The family's words in the language in force, with this list's `messages` laid over them. */\n readonly t = injectMessages(descriptionListMessages, this.messages);\n}\n\n/**\n * One name-value pair, and the `div` the HTML Standard permits inside a `dl`.\n *\n * It is the box a rule, a tint and a span apply to, and the only part that can\n * see both the term and the action — so it is where the identifier that ties\n * the two together is made.\n */\n@Directive({\n selector: 'div[slDescriptionListItem]',\n standalone: true,\n exportAs: 'slDescriptionListItem',\n host: {\n 'data-part': 'item',\n 'data-part-item': '',\n '[attr.data-span]': 'spanValue()',\n },\n})\nexport class SlDescriptionListItem {\n readonly list = inject(SlDescriptionList);\n readonly span = input(undefined, { transform: optionalColumns });\n\n /** The `dt`'s identifier, which the row's action is described by. */\n readonly termId = inject(SlDescriptionListIdFactory).next();\n\n readonly spanValue = computed(() => spanWithin(this.span(), this.list.columnsValue()) ?? null);\n}\n\n/**\n * The name. It carries an identifier so the row's action can be described by\n * it; a static `id` the consumer wrote wins, because a page that already\n * references this term references it by the name it chose.\n */\n@Directive({\n selector: 'dt[slDescriptionListTerm]',\n standalone: true,\n exportAs: 'slDescriptionListTerm',\n host: {\n 'data-part': 'term',\n 'data-part-term': '',\n '[attr.id]': 'identifier',\n },\n})\nexport class SlDescriptionListTerm {\n private readonly item = inject(SlDescriptionListItem, { optional: true });\n private readonly ownId = inject(new HostAttributeToken('id'), { optional: true });\n\n readonly identifier = this.ownId ?? this.item?.termId ?? null;\n}\n\n/**\n * One line explaining what the term means, inside the `dt` that names it. It is\n * part of the term's own text on purpose: a reader who reaches the term hears\n * the explanation with it, and the row's action — described by the same `dt` —\n * inherits the context rather than repeating it.\n */\n@Directive({\n selector: '[slDescriptionListHint]',\n standalone: true,\n exportAs: 'slDescriptionListHint',\n host: { 'data-part': 'hint', 'data-part-hint': '' },\n})\nexport class SlDescriptionListHint {}\n\n/**\n * The value's cell: the value itself, and the controls that reach it.\n *\n * **Clamping is visual only.** Every character stays in the DOM, selectable,\n * copyable and readable by a screen reader, which is what section 10 of the\n * feature guide means by never truncating without access.\n *\n * **Empty is stated rather than inferred.** Angular cannot read projected\n * content without reading the DOM after a render, so the absence of a value is\n * an input here where React reads nullish children. Levelling the two down to\n * the input in both would remove the case that matters most in React — a value\n * missing because the data is missing — to make the two look alike.\n */\n@Component({\n selector: 'dd[slDescriptionListDescription]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n template: `\n <span #value data-part=\"value\" data-part-value=\"\">\n <ng-content></ng-content>\n @if (empty()) {\n @if (placeholder()) {\n <span data-part=\"placeholder\" data-part-placeholder=\"\">{{ placeholder() }}</span>\n } @else {\n <span aria-hidden=\"true\" data-part=\"placeholder\" data-part-placeholder=\"\">{{\n emptyMark\n }}</span>\n <span data-ui=\"visually-hidden\" data-ui-visually-hidden=\"\">{{ placeholderText() }}</span>\n }\n }\n </span>\n @if (copy()) {\n <button\n [attr.aria-label]=\"list.t('copy')\"\n [attr.data-complete]=\"copied() ? '' : null\"\n data-part=\"copy\"\n data-part-copy=\"\"\n type=\"button\"\n (click)=\"onCopy($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <!-- A finished copy changes its mark as well as its colour. -->\n <span slIcon><svg slGlyph [name]=\"copied() ? 'check' : 'copy'\"></svg></span>\n </button>\n }\n @if (clampValue() > 0 && overflows()) {\n <button\n [attr.aria-expanded]=\"revealed()\"\n data-part=\"toggle\"\n data-part-toggle=\"\"\n type=\"button\"\n (click)=\"onToggle($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n {{ revealed() ? list.t('collapse') : list.t('reveal') }}\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n }\n `,\n styleUrls: [\n '../../../styles/src/description-list/description-list.css',\n '../../../styles/src/visually-hidden/visually-hidden.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slDescriptionListDescription',\n host: {\n 'data-part': 'description',\n 'data-part-description': '',\n '[attr.data-clamp]': 'clampValue() > 0 ? \"\" : null',\n '[attr.data-revealed]': 'clampValue() > 0 && revealed() ? \"\" : null',\n '[style.--slotted-description-list-clamp]': 'clampValue() > 0 ? clampValue() : null',\n },\n})\nexport class SlDescriptionListDescription {\n readonly list = inject(SlDescriptionList);\n\n /** The character a row shows where it has no value. */\n protected readonly emptyMark = DESCRIPTION_LIST_EMPTY_VALUE_MARK;\n\n /** Lines the value is held to before it is revealed. `0` never clamps. */\n readonly clamp = input(0, { transform: (value: number | string) => numberAttribute(value, 0) });\n /** Draws the control that puts the value on the clipboard. */\n readonly copy = input(false, { transform: booleanAttribute });\n /**\n * The text the control copies. Absent, the rendered text of the value is read\n * at the moment of the press, which is what a formatted value needs.\n */\n readonly copyValue = input<string | undefined>(undefined);\n /** Draws the placeholder in place of a value that is missing. */\n readonly empty = input(false, { transform: booleanAttribute });\n /** What is read in place of that value. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /**\n * Present means controlled, for the life of the component, which is why the\n * unset value is `undefined` rather than `false`: a family that read `false`\n * as a consumer's answer would never own its own state.\n */\n readonly revealedValue = input(undefined, {\n alias: 'revealed',\n transform: (value: boolean | string | undefined) =>\n value === undefined ? undefined : booleanAttribute(value),\n });\n /** What an uncontrolled description starts from, read once. */\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n\n /**\n * Emitted before the value is revealed, carrying the value it replaces, the\n * reason and the event it came from. It is not the second half of a two-way\n * binding: one slot can carry none of those.\n */\n readonly revealedChange = output<ChangeRequest<boolean>>();\n /** Emitted after a copy, whether or not the platform accepted it. */\n readonly copied$ = output<DescriptionListCopyRequest>({ alias: 'copied' });\n\n private readonly own = signal(false);\n private readonly done = signal(false);\n private readonly overflowing = signal(false);\n private readonly value = viewChild<ElementRef<HTMLElement>>('value');\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private timer: ReturnType<typeof setTimeout> | undefined;\n private observer: ResizeObserver | undefined;\n private keyed = false;\n\n readonly revealed = computed(() => this.revealedValue() ?? this.own());\n readonly clampValue = computed(() => Math.max(0, Math.trunc(this.clamp())));\n readonly copied = computed(() => this.done());\n /** Whether the value wants more room than the clamp gives it. */\n readonly overflows = computed(() => this.overflowing());\n readonly placeholderText = computed(() => this.placeholder() ?? this.list.t('placeholder'));\n\n constructor() {\n this.own.set(this.defaultRevealed());\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.timer);\n this.observer?.disconnect();\n });\n\n /**\n * A control that reveals nothing is a control a reader presses once and\n * learns to distrust. A clamp is a maximum rather than a promise: most\n * values in a panel are shorter than it, and the toggle appears only for\n * the ones that are not. The value is remeasured whenever its box changes,\n * which is what the container query does to it at every breakpoint.\n */\n afterNextRender(\n () => {\n effect(\n () => {\n const lines = this.clampValue();\n const node = this.value()?.nativeElement;\n this.observer?.disconnect();\n this.observer = undefined;\n\n if (lines <= 0 || !node || typeof ResizeObserver === 'undefined') {\n this.overflowing.set(false);\n return;\n }\n\n const measure = () => {\n const lineHeight = Number.parseFloat(getComputedStyle(node).lineHeight);\n this.overflowing.set(overflowsClamp(node.scrollHeight, lineHeight, lines));\n };\n\n measure();\n this.observer = new ResizeObserver(measure);\n this.observer.observe(node);\n },\n { injector: this.injector },\n );\n },\n { injector: this.injector },\n );\n }\n\n /**\n * `Enter` and `Space` both activate a button and the browser turns each into\n * a click, so the reason a request carries is decided by whether a key came\n * first. It is the difference between a press and a key, and a consumer that\n * has to guess writes the wrong handler.\n */\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') this.keyed = true;\n }\n\n onToggle(event: Event) {\n const reason = this.takeReason();\n const state = createControllable<boolean>({\n controlled: this.revealedValue(),\n initial: this.revealed(),\n onRequest: (request) => this.revealedChange.emit(request),\n });\n if (state.request(!this.revealed(), reason, event)) this.own.set(!this.own());\n }\n\n async onCopy(event: Event) {\n const reason = this.takeReason();\n /* Read at the moment of the press rather than at render: a formatted value\n is what the reader sees, and `copyValue` is for when it is not. */\n const text = this.copyValue() ?? this.value()?.nativeElement.textContent?.trim() ?? '';\n const copied = await copyToClipboard(text);\n let selected = false;\n\n if (copied) {\n this.done.set(true);\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.done.set(false), COPIED_FOR);\n /* Through the shared announcer rather than a region this family owns, so\n two copies in one update are both heard. */\n getLiveAnnouncer().announce(this.list.t('copied'));\n } else {\n /**\n * A refused write used to leave the control at rest and the reader with\n * nothing — which is indistinguishable from a broken button, and is\n * exactly what a browser does when the document is not focused or the\n * page is in an iframe carrying no `clipboard-write` permission. So the\n * family does the part it still can: it selects the value, which the\n * reader can see and copy with the keyboard, and says so.\n */\n selected = selectValue(this.value()?.nativeElement);\n getLiveAnnouncer().announce(this.list.t('copyBlocked'));\n }\n\n this.copied$.emit({ copied, reason, selected, source: event, value: text });\n }\n\n private takeReason(): 'pointer' | 'keyboard' {\n const reason = this.keyed ? 'keyboard' : 'pointer';\n this.keyed = false;\n return reason;\n }\n}\n\n/**\n * The row's own action, in a second `dd` of the same group — which is what a\n * `dt` followed by more than one `dd` is for, and what GOV.UK's summary list\n * does.\n *\n * It is named by its own term through `aria-describedby`, so a reader who\n * reaches \"Change\" out of context hears which row it changes. GOV.UK repeats\n * the term as visually hidden text inside every action, which a template system\n * has to do; a reference says it once and cannot drift. A static\n * `aria-describedby` the consumer wrote is composed with rather than replaced.\n */\n@Directive({\n selector: 'dd[slDescriptionListAction]',\n standalone: true,\n exportAs: 'slDescriptionListAction',\n host: {\n 'data-part': 'action',\n 'data-part-action': '',\n '[attr.aria-describedby]': 'describedBy',\n },\n})\nexport class SlDescriptionListAction {\n private readonly item = inject(SlDescriptionListItem, { optional: true });\n private readonly own = inject(new HostAttributeToken('aria-describedby'), { optional: true });\n\n readonly describedBy = [this.own, this.item?.termId].filter(Boolean).join(' ') || null;\n}\n\n/**\n * Absence has to survive the transform: `numberAttribute` maps an unset input\n * to `NaN`, and a family that read that would stop deferring to the provider.\n */\nfunction optionalColumns(value: DescriptionListColumns | string | undefined) {\n if (value === undefined || value === null || value === '') return undefined;\n const parsed = numberAttribute(value);\n if (!Number.isFinite(parsed)) return undefined;\n return Math.min(Math.max(Math.trunc(parsed), 1), 3) as DescriptionListColumns;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -283,7 +283,7 @@ class SlDetailPanel {
283
283
  return this.resolvedScroll() === 'self' ? this.native : findScrollParent(this.native);
284
284
  }
285
285
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
286
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.7", type: SlDetailPanel, isStandalone: true, selector: "[slDetailPanel]", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, aside: { classPropertyName: "aside", publicName: "aside", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null }, mount: { classPropertyName: "mount", publicName: "mount", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, recordKey: { classPropertyName: "recordKey", publicName: "recordKey", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, section: { classPropertyName: "section", publicName: "section", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { section: "sectionChange", sectionRequest: "sectionRequest" }, host: { attributes: { "data-ui": "detail-panel", "data-part": "root" }, properties: { "attr.data-layout": "resolvedLayout()", "attr.data-aside": "resolvedAside()", "attr.data-level": "resolvedLevel()", "attr.data-size": "resolvedSize()", "attr.data-scroll": "resolvedScroll()", "attr.data-mount": "resolvedMount()", "attr.data-status": "status()", "attr.data-loading": "loading() ? '' : null", "attr.aria-busy": "loading() ? 'true' : null", "attr.data-key": "recordKey() ?? null", "attr.aria-labelledby": "labelledBy()", "attr.aria-label": "label()" } }, providers: [
286
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.7", type: SlDetailPanel, isStandalone: true, selector: "[slDetailPanel]", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, aside: { classPropertyName: "aside", publicName: "aside", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null }, mount: { classPropertyName: "mount", publicName: "mount", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, recordKey: { classPropertyName: "recordKey", publicName: "recordKey", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, section: { classPropertyName: "section", publicName: "section", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { section: "sectionChange", sectionRequest: "sectionRequest" }, host: { attributes: { "data-ui": "detail-panel", "data-ui-detail-panel": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-layout": "resolvedLayout()", "attr.data-aside": "resolvedAside()", "attr.data-level": "resolvedLevel()", "attr.data-size": "resolvedSize()", "attr.data-scroll": "resolvedScroll()", "attr.data-mount": "resolvedMount()", "attr.data-status": "status()", "attr.data-loading": "loading() ? '' : null", "attr.aria-busy": "loading() ? 'true' : null", "attr.data-key": "recordKey() ?? null", "attr.aria-labelledby": "labelledBy()", "attr.aria-label": "label()" } }, providers: [
287
287
  {
288
288
  provide: PAGE_HEADER_DEFAULTS,
289
289
  useFactory: () => {
@@ -307,7 +307,7 @@ class SlDetailPanel {
307
307
  };
308
308
  },
309
309
  },
310
- ], queries: [{ propertyName: "sections", predicate: SlDetailPanelSection, descendants: true, isSignal: true }], exportAs: ["slDetailPanel"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=detail-panel]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-detail-panel-border, var(--slotted-border-subtle, ButtonBorder));--_ground: var(--slotted-page-ground, var(--slotted-surface, Canvas));--_aside-size: var(--slotted-detail-panel-aside-size-md, 16rem);--_gap: var(--slotted-detail-panel-gap-md, var(--slotted-space-8, 1.5rem));--_rhythm: var(--slotted-detail-panel-rhythm, var(--slotted-space-8, 1.5rem));--_inset-block: var(--slotted-detail-panel-inset-block-md, var(--slotted-space-8, 1.5rem));--_rule-size: var(--slotted-border-width-thin, 1px);color:var(--_text);container-name:detail-panel;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:0;position:relative}[data-ui=detail-panel][data-size=sm]{--_aside-size: var(--slotted-detail-panel-aside-size-sm, 14rem);--_gap: var(--slotted-detail-panel-gap-sm, var(--slotted-space-7, 1.25rem));--_inset-block: var(--slotted-detail-panel-inset-block-sm, var(--slotted-space-7, 1.25rem))}[data-ui=detail-panel][data-size=lg]{--_aside-size: var(--slotted-detail-panel-aside-size-lg, 18rem);--_gap: var(--slotted-detail-panel-gap-lg, var(--slotted-space-9, 2rem));--_inset-block: var(--slotted-detail-panel-inset-block-lg, var(--slotted-space-9, 2rem))}[data-ui=detail-panel][data-scroll=self]{block-size:100%;min-block-size:0;overflow:auto;overscroll-behavior:contain}[data-ui=detail-panel]>[data-part=body]{display:flex;flex:1 0 auto;flex-direction:column;min-inline-size:0;padding-block:var(--_inset-block)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]{row-gap:var(--_rhythm)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=banner]{min-inline-size:0}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]{display:grid;gap:var(--_gap);grid-template-columns:minmax(0,1fr);min-inline-size:0}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]{display:flex;flex-direction:column;gap:var(--_rhythm);min-inline-size:0}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=aside]{border-block-start:var(--_rule-size) solid var(--_rule);min-inline-size:0;overflow-wrap:anywhere;padding-block-start:var(--_gap)}@container detail-panel (min-width: 600px){[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]{grid-template-columns:minmax(0,1fr) var(--_aside-size)}[data-ui=detail-panel][data-aside=start]>[data-part=body]>[data-ui=container]>[data-part=columns]{grid-template-columns:var(--_aside-size) minmax(0,1fr)}[data-ui=detail-panel][data-aside=none]>[data-part=body]>[data-ui=container]>[data-part=columns]{grid-template-columns:minmax(0,1fr)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=aside]{border-block-start:0;border-inline-start:var(--_rule-size) solid var(--_rule);padding-block-start:0;padding-inline-start:var(--_gap)}[data-ui=detail-panel][data-aside=start]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=aside]{border-inline-end:var(--_rule-size) solid var(--_rule);border-inline-start:0;order:-1;padding-inline-end:var(--_gap);padding-inline-start:0}}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section]{min-inline-size:0;scroll-margin-block-start:var(--slotted-page-sticky-top, 0px)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section][hidden]{display:none}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section][role=tabpanel]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=detail-panel][data-layout=tabs]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section]:not([hidden]){animation:slotted-detail-panel-section-in var(--slotted-duration-short) var(--slotted-easing-enter)}@keyframes slotted-detail-panel-section-in{0%{opacity:0}}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section]>[data-part=section-actions]{align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-control-gap-md, 8px);justify-content:flex-end;margin-block-end:var(--slotted-space-5, .75rem)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=message]{display:grid;min-block-size:calc(4 * var(--slotted-space-12, 4rem));min-inline-size:0;place-items:center}[data-ui=detail-panel]>[data-part=footer]{background-color:var(--_ground);border-block-start:var(--_rule-size) solid var(--_rule);inset-block-end:var(--slotted-page-sticky-bottom, 0px);margin-block-start:auto;padding-block:var(--slotted-space-4, .5rem);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
310
+ ], queries: [{ propertyName: "sections", predicate: SlDetailPanelSection, descendants: true, isSignal: true }], exportAs: ["slDetailPanel"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-detail-panel]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-detail-panel-border, var(--slotted-border-subtle, ButtonBorder));--_ground: var(--slotted-page-ground, var(--slotted-surface, Canvas));--_aside-size: var(--slotted-detail-panel-aside-size-md, 16rem);--_gap: var(--slotted-detail-panel-gap-md, var(--slotted-space-8, 1.5rem));--_rhythm: var(--slotted-detail-panel-rhythm, var(--slotted-space-8, 1.5rem));--_inset-block: var(--slotted-detail-panel-inset-block-md, var(--slotted-space-8, 1.5rem));--_rule-size: var(--slotted-border-width-thin, 1px);color:var(--_text);container-name:detail-panel;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:0;position:relative}[data-ui-detail-panel][data-size=sm]{--_aside-size: var(--slotted-detail-panel-aside-size-sm, 14rem);--_gap: var(--slotted-detail-panel-gap-sm, var(--slotted-space-7, 1.25rem));--_inset-block: var(--slotted-detail-panel-inset-block-sm, var(--slotted-space-7, 1.25rem))}[data-ui-detail-panel][data-size=lg]{--_aside-size: var(--slotted-detail-panel-aside-size-lg, 18rem);--_gap: var(--slotted-detail-panel-gap-lg, var(--slotted-space-9, 2rem));--_inset-block: var(--slotted-detail-panel-inset-block-lg, var(--slotted-space-9, 2rem))}[data-ui-detail-panel][data-scroll=self]{block-size:100%;min-block-size:0;overflow:auto;overscroll-behavior:contain}[data-ui-detail-panel]>[data-part-body]{display:flex;flex:1 0 auto;flex-direction:column;min-inline-size:0;padding-block:var(--_inset-block)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]{row-gap:var(--_rhythm)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-banner]{min-inline-size:0}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]{display:grid;gap:var(--_gap);grid-template-columns:minmax(0,1fr);min-inline-size:0}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]{display:flex;flex-direction:column;gap:var(--_rhythm);min-inline-size:0}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-aside]{border-block-start:var(--_rule-size) solid var(--_rule);min-inline-size:0;overflow-wrap:anywhere;padding-block-start:var(--_gap)}@container detail-panel (min-width: 600px){[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]{grid-template-columns:minmax(0,1fr) var(--_aside-size)}[data-ui-detail-panel][data-aside=start]>[data-part-body]>[data-ui-container]>[data-part-columns]{grid-template-columns:var(--_aside-size) minmax(0,1fr)}[data-ui-detail-panel][data-aside=none]>[data-part-body]>[data-ui-container]>[data-part-columns]{grid-template-columns:minmax(0,1fr)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-aside]{border-block-start:0;border-inline-start:var(--_rule-size) solid var(--_rule);padding-block-start:0;padding-inline-start:var(--_gap)}[data-ui-detail-panel][data-aside=start]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-aside]{border-inline-end:var(--_rule-size) solid var(--_rule);border-inline-start:0;order:-1;padding-inline-end:var(--_gap);padding-inline-start:0}}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section]{min-inline-size:0;scroll-margin-block-start:var(--slotted-page-sticky-top, 0px)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section][hidden]{display:none}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section][role=tabpanel]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui-detail-panel][data-layout=tabs]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section]:not([hidden]){animation:slotted-detail-panel-section-in var(--slotted-duration-short) var(--slotted-easing-enter)}@keyframes slotted-detail-panel-section-in{0%{opacity:0}}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section]>[data-part-section-actions]{align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-control-gap-md, 8px);justify-content:flex-end;margin-block-end:var(--slotted-space-5, .75rem)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-message]{display:grid;min-block-size:calc(4 * var(--slotted-space-12, 4rem));min-inline-size:0;place-items:center}[data-ui-detail-panel]>[data-part-footer]{background-color:var(--_ground);border-block-start:var(--_rule-size) solid var(--_rule);inset-block-end:var(--slotted-page-sticky-bottom, 0px);margin-block-start:auto;padding-block:var(--slotted-space-4, .5rem);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
311
311
  }
312
312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanel, decorators: [{
313
313
  type: Component,
@@ -337,7 +337,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
337
337
  },
338
338
  ], host: {
339
339
  'data-ui': 'detail-panel',
340
+ 'data-ui-detail-panel': '',
340
341
  'data-part': 'root',
342
+ 'data-part-root': '',
341
343
  '[attr.data-layout]': 'resolvedLayout()',
342
344
  '[attr.data-aside]': 'resolvedAside()',
343
345
  '[attr.data-level]': 'resolvedLevel()',
@@ -350,7 +352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
350
352
  '[attr.data-key]': 'recordKey() ?? null',
351
353
  '[attr.aria-labelledby]': 'labelledBy()',
352
354
  '[attr.aria-label]': 'label()',
353
- }, styles: ["@layer slotted.components{[data-ui=detail-panel]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-detail-panel-border, var(--slotted-border-subtle, ButtonBorder));--_ground: var(--slotted-page-ground, var(--slotted-surface, Canvas));--_aside-size: var(--slotted-detail-panel-aside-size-md, 16rem);--_gap: var(--slotted-detail-panel-gap-md, var(--slotted-space-8, 1.5rem));--_rhythm: var(--slotted-detail-panel-rhythm, var(--slotted-space-8, 1.5rem));--_inset-block: var(--slotted-detail-panel-inset-block-md, var(--slotted-space-8, 1.5rem));--_rule-size: var(--slotted-border-width-thin, 1px);color:var(--_text);container-name:detail-panel;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:0;position:relative}[data-ui=detail-panel][data-size=sm]{--_aside-size: var(--slotted-detail-panel-aside-size-sm, 14rem);--_gap: var(--slotted-detail-panel-gap-sm, var(--slotted-space-7, 1.25rem));--_inset-block: var(--slotted-detail-panel-inset-block-sm, var(--slotted-space-7, 1.25rem))}[data-ui=detail-panel][data-size=lg]{--_aside-size: var(--slotted-detail-panel-aside-size-lg, 18rem);--_gap: var(--slotted-detail-panel-gap-lg, var(--slotted-space-9, 2rem));--_inset-block: var(--slotted-detail-panel-inset-block-lg, var(--slotted-space-9, 2rem))}[data-ui=detail-panel][data-scroll=self]{block-size:100%;min-block-size:0;overflow:auto;overscroll-behavior:contain}[data-ui=detail-panel]>[data-part=body]{display:flex;flex:1 0 auto;flex-direction:column;min-inline-size:0;padding-block:var(--_inset-block)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]{row-gap:var(--_rhythm)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=banner]{min-inline-size:0}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]{display:grid;gap:var(--_gap);grid-template-columns:minmax(0,1fr);min-inline-size:0}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]{display:flex;flex-direction:column;gap:var(--_rhythm);min-inline-size:0}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=aside]{border-block-start:var(--_rule-size) solid var(--_rule);min-inline-size:0;overflow-wrap:anywhere;padding-block-start:var(--_gap)}@container detail-panel (min-width: 600px){[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]{grid-template-columns:minmax(0,1fr) var(--_aside-size)}[data-ui=detail-panel][data-aside=start]>[data-part=body]>[data-ui=container]>[data-part=columns]{grid-template-columns:var(--_aside-size) minmax(0,1fr)}[data-ui=detail-panel][data-aside=none]>[data-part=body]>[data-ui=container]>[data-part=columns]{grid-template-columns:minmax(0,1fr)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=aside]{border-block-start:0;border-inline-start:var(--_rule-size) solid var(--_rule);padding-block-start:0;padding-inline-start:var(--_gap)}[data-ui=detail-panel][data-aside=start]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=aside]{border-inline-end:var(--_rule-size) solid var(--_rule);border-inline-start:0;order:-1;padding-inline-end:var(--_gap);padding-inline-start:0}}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section]{min-inline-size:0;scroll-margin-block-start:var(--slotted-page-sticky-top, 0px)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section][hidden]{display:none}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section][role=tabpanel]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=detail-panel][data-layout=tabs]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section]:not([hidden]){animation:slotted-detail-panel-section-in var(--slotted-duration-short) var(--slotted-easing-enter)}@keyframes slotted-detail-panel-section-in{0%{opacity:0}}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=columns]>[data-part=main]>[data-part=section]>[data-part=section-actions]{align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-control-gap-md, 8px);justify-content:flex-end;margin-block-end:var(--slotted-space-5, .75rem)}[data-ui=detail-panel]>[data-part=body]>[data-ui=container]>[data-part=message]{display:grid;min-block-size:calc(4 * var(--slotted-space-12, 4rem));min-inline-size:0;place-items:center}[data-ui=detail-panel]>[data-part=footer]{background-color:var(--_ground);border-block-start:var(--_rule-size) solid var(--_rule);inset-block-end:var(--slotted-page-sticky-bottom, 0px);margin-block-start:auto;padding-block:var(--slotted-space-4, .5rem);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}}\n"] }]
355
+ }, styles: ["@layer slotted.components{[data-ui-detail-panel]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_rule: var(--slotted-detail-panel-border, var(--slotted-border-subtle, ButtonBorder));--_ground: var(--slotted-page-ground, var(--slotted-surface, Canvas));--_aside-size: var(--slotted-detail-panel-aside-size-md, 16rem);--_gap: var(--slotted-detail-panel-gap-md, var(--slotted-space-8, 1.5rem));--_rhythm: var(--slotted-detail-panel-rhythm, var(--slotted-space-8, 1.5rem));--_inset-block: var(--slotted-detail-panel-inset-block-md, var(--slotted-space-8, 1.5rem));--_rule-size: var(--slotted-border-width-thin, 1px);color:var(--_text);container-name:detail-panel;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:0;position:relative}[data-ui-detail-panel][data-size=sm]{--_aside-size: var(--slotted-detail-panel-aside-size-sm, 14rem);--_gap: var(--slotted-detail-panel-gap-sm, var(--slotted-space-7, 1.25rem));--_inset-block: var(--slotted-detail-panel-inset-block-sm, var(--slotted-space-7, 1.25rem))}[data-ui-detail-panel][data-size=lg]{--_aside-size: var(--slotted-detail-panel-aside-size-lg, 18rem);--_gap: var(--slotted-detail-panel-gap-lg, var(--slotted-space-9, 2rem));--_inset-block: var(--slotted-detail-panel-inset-block-lg, var(--slotted-space-9, 2rem))}[data-ui-detail-panel][data-scroll=self]{block-size:100%;min-block-size:0;overflow:auto;overscroll-behavior:contain}[data-ui-detail-panel]>[data-part-body]{display:flex;flex:1 0 auto;flex-direction:column;min-inline-size:0;padding-block:var(--_inset-block)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]{row-gap:var(--_rhythm)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-banner]{min-inline-size:0}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]{display:grid;gap:var(--_gap);grid-template-columns:minmax(0,1fr);min-inline-size:0}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]{display:flex;flex-direction:column;gap:var(--_rhythm);min-inline-size:0}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-aside]{border-block-start:var(--_rule-size) solid var(--_rule);min-inline-size:0;overflow-wrap:anywhere;padding-block-start:var(--_gap)}@container detail-panel (min-width: 600px){[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]{grid-template-columns:minmax(0,1fr) var(--_aside-size)}[data-ui-detail-panel][data-aside=start]>[data-part-body]>[data-ui-container]>[data-part-columns]{grid-template-columns:var(--_aside-size) minmax(0,1fr)}[data-ui-detail-panel][data-aside=none]>[data-part-body]>[data-ui-container]>[data-part-columns]{grid-template-columns:minmax(0,1fr)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-aside]{border-block-start:0;border-inline-start:var(--_rule-size) solid var(--_rule);padding-block-start:0;padding-inline-start:var(--_gap)}[data-ui-detail-panel][data-aside=start]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-aside]{border-inline-end:var(--_rule-size) solid var(--_rule);border-inline-start:0;order:-1;padding-inline-end:var(--_gap);padding-inline-start:0}}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section]{min-inline-size:0;scroll-margin-block-start:var(--slotted-page-sticky-top, 0px)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section][hidden]{display:none}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section][role=tabpanel]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui-detail-panel][data-layout=tabs]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section]:not([hidden]){animation:slotted-detail-panel-section-in var(--slotted-duration-short) var(--slotted-easing-enter)}@keyframes slotted-detail-panel-section-in{0%{opacity:0}}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-columns]>[data-part-main]>[data-part-section]>[data-part-section-actions]{align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-control-gap-md, 8px);justify-content:flex-end;margin-block-end:var(--slotted-space-5, .75rem)}[data-ui-detail-panel]>[data-part-body]>[data-ui-container]>[data-part-message]{display:grid;min-block-size:calc(4 * var(--slotted-space-12, 4rem));min-inline-size:0;place-items:center}[data-ui-detail-panel]>[data-part-footer]{background-color:var(--_ground);border-block-start:var(--_rule-size) solid var(--_rule);inset-block-end:var(--slotted-page-sticky-bottom, 0px);margin-block-start:auto;padding-block:var(--slotted-space-4, .5rem);position:sticky;z-index:var(--slotted-z-index-sticky, 100)}}\n"] }]
354
356
  }], ctorParameters: () => [], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], aside: [{ type: i0.Input, args: [{ isSignal: true, alias: "aside", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], scroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "scroll", required: false }] }], mount: [{ type: i0.Input, args: [{ isSignal: true, alias: "mount", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], recordKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "recordKey", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], section: [{ type: i0.Input, args: [{ isSignal: true, alias: "section", required: false }] }, { type: i0.Output, args: ["sectionChange"] }], sectionRequest: [{ type: i0.Output, args: ["sectionRequest"] }], sections: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SlDetailPanelSection), { ...{ descendants: true }, isSignal: true }] }] } });
355
357
 
356
358
  /** How many placeholder lines a waiting section and a waiting aside draw. */
@@ -359,23 +361,27 @@ const ASIDE_SKELETON_LINES = 4;
359
361
  /** An alert about the record, above the columns. */
360
362
  class SlDetailPanelBanner {
361
363
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelBanner, deps: [], target: i0.ɵɵFactoryTarget.Directive });
362
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlDetailPanelBanner, isStandalone: true, selector: "[slDetailPanelBanner]", host: { attributes: { "data-part": "banner" } }, ngImport: i0 });
364
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlDetailPanelBanner, isStandalone: true, selector: "[slDetailPanelBanner]", host: { attributes: { "data-part": "banner", "data-part-banner": "" } }, ngImport: i0 });
363
365
  }
364
366
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelBanner, decorators: [{
365
367
  type: Directive,
366
- args: [{ selector: '[slDetailPanelBanner]', standalone: true, host: { 'data-part': 'banner' } }]
368
+ args: [{
369
+ selector: '[slDetailPanelBanner]',
370
+ standalone: true,
371
+ host: { 'data-part': 'banner', 'data-part-banner': '' },
372
+ }]
367
373
  }] });
368
374
  /** What stands in place of the columns when the record is not there: a result-state. */
369
375
  class SlDetailPanelMessage {
370
376
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelMessage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
371
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlDetailPanelMessage, isStandalone: true, selector: "[slDetailPanelMessage]", host: { attributes: { "data-part": "message" } }, ngImport: i0 });
377
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlDetailPanelMessage, isStandalone: true, selector: "[slDetailPanelMessage]", host: { attributes: { "data-part": "message", "data-part-message": "" } }, ngImport: i0 });
372
378
  }
373
379
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelMessage, decorators: [{
374
380
  type: Directive,
375
381
  args: [{
376
382
  selector: '[slDetailPanelMessage]',
377
383
  standalone: true,
378
- host: { 'data-part': 'message' },
384
+ host: { 'data-part': 'message', 'data-part-message': '' },
379
385
  }]
380
386
  }] });
381
387
  /**
@@ -390,7 +396,7 @@ class SlDetailPanelAside {
390
396
  name = computed(() => this.written ?? this.panel.t('aside'), /* @ts-ignore */
391
397
  ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
392
398
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelAside, deps: [], target: i0.ɵɵFactoryTarget.Component });
393
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlDetailPanelAside, isStandalone: true, selector: "aside[slDetailPanelAside]", host: { attributes: { "data-part": "aside" }, properties: { "attr.aria-label": "name()" } }, exportAs: ["slDetailPanelAside"], ngImport: i0, template: `@if (panel.loading()) {
399
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlDetailPanelAside, isStandalone: true, selector: "aside[slDetailPanelAside]", host: { attributes: { "data-part": "aside", "data-part-aside": "" }, properties: { "attr.aria-label": "name()" } }, exportAs: ["slDetailPanelAside"], ngImport: i0, template: `@if (panel.loading()) {
394
400
  <span slSkeletonText [lines]="lines" inlineSize="60%"></span>
395
401
  } @else {
396
402
  <ng-content />
@@ -412,6 +418,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
412
418
  encapsulation: ViewEncapsulation.None,
413
419
  host: {
414
420
  'data-part': 'aside',
421
+ 'data-part-aside': '',
415
422
  '[attr.aria-label]': 'name()',
416
423
  },
417
424
  }]
@@ -423,7 +430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
423
430
  class SlDetailPanelFooter {
424
431
  page = inject(SlPage, { optional: true });
425
432
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelFooter, deps: [], target: i0.ɵɵFactoryTarget.Component });
426
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: SlDetailPanelFooter, isStandalone: true, selector: "footer[slDetailPanelFooter]", host: { attributes: { "data-part": "footer" } }, exportAs: ["slDetailPanelFooter"], ngImport: i0, template: `<div slContainer [size]="page?.resolvedWidth()" [inset]="page?.resolvedInset()">
433
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: SlDetailPanelFooter, isStandalone: true, selector: "footer[slDetailPanelFooter]", host: { attributes: { "data-part": "footer", "data-part-footer": "" } }, exportAs: ["slDetailPanelFooter"], ngImport: i0, template: `<div slContainer [size]="page?.resolvedWidth()" [inset]="page?.resolvedInset()">
427
434
  <ng-content />
428
435
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SlContainer, selector: "[slContainer]", inputs: ["size", "inset", "align"], exportAs: ["slContainer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
429
436
  }
@@ -439,7 +446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
439
446
  </div>`,
440
447
  changeDetection: ChangeDetectionStrategy.OnPush,
441
448
  encapsulation: ViewEncapsulation.None,
442
- host: { 'data-part': 'footer' },
449
+ host: { 'data-part': 'footer', 'data-part-footer': '' },
443
450
  }]
444
451
  }] });
445
452
  /**
@@ -476,15 +483,16 @@ class SlDetailPanelBody {
476
483
  return mount === 'lazy' && this.panel.hasSeen(name);
477
484
  }
478
485
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlDetailPanelBody, deps: [], target: i0.ɵɵFactoryTarget.Component });
479
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlDetailPanelBody, isStandalone: true, selector: "[slDetailPanelBody]", host: { attributes: { "data-part": "body" } }, queries: [{ propertyName: "aside", first: true, predicate: SlDetailPanelAside, descendants: true, isSignal: true }], exportAs: ["slDetailPanelBody"], ngImport: i0, template: `<div slContainer [size]="page?.resolvedWidth()" [inset]="page?.resolvedInset()">
486
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlDetailPanelBody, isStandalone: true, selector: "[slDetailPanelBody]", host: { attributes: { "data-part": "body", "data-part-body": "" } }, queries: [{ propertyName: "aside", first: true, predicate: SlDetailPanelAside, descendants: true, isSignal: true }], exportAs: ["slDetailPanelBody"], ngImport: i0, template: `<div slContainer [size]="page?.resolvedWidth()" [inset]="page?.resolvedInset()">
480
487
  <ng-content select="[slDetailPanelBanner]" />
481
488
  @if (panel.status() === 'ready') {
482
- <div data-part="columns">
483
- <div data-part="main">
489
+ <div data-part="columns" data-part-columns="">
490
+ <div data-part="main" data-part-main="">
484
491
  @for (section of panel.sections(); track section.name()) {
485
492
  @if (tabbed()) {
486
493
  <div
487
494
  data-part="section"
495
+ data-part-section=""
488
496
  role="tabpanel"
489
497
  tabindex="0"
490
498
  [attr.id]="identity(section.name())?.panelId"
@@ -494,7 +502,7 @@ class SlDetailPanelBody {
494
502
  [hidden]="panel.current() !== section.name()"
495
503
  >
496
504
  @if (section.actions(); as actions) {
497
- <div data-part="section-actions">
505
+ <div data-part="section-actions" data-part-section-actions="">
498
506
  <ng-container *ngTemplateOutlet="actions" />
499
507
  </div>
500
508
  }
@@ -509,6 +517,7 @@ class SlDetailPanelBody {
509
517
  } @else {
510
518
  <div
511
519
  data-part="section"
520
+ data-part-section=""
512
521
  [attr.data-name]="section.name()"
513
522
  [attr.data-current]="panel.current() === section.name() ? '' : null"
514
523
  >
@@ -577,12 +586,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
577
586
  template: `<div slContainer [size]="page?.resolvedWidth()" [inset]="page?.resolvedInset()">
578
587
  <ng-content select="[slDetailPanelBanner]" />
579
588
  @if (panel.status() === 'ready') {
580
- <div data-part="columns">
581
- <div data-part="main">
589
+ <div data-part="columns" data-part-columns="">
590
+ <div data-part="main" data-part-main="">
582
591
  @for (section of panel.sections(); track section.name()) {
583
592
  @if (tabbed()) {
584
593
  <div
585
594
  data-part="section"
595
+ data-part-section=""
586
596
  role="tabpanel"
587
597
  tabindex="0"
588
598
  [attr.id]="identity(section.name())?.panelId"
@@ -592,7 +602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
592
602
  [hidden]="panel.current() !== section.name()"
593
603
  >
594
604
  @if (section.actions(); as actions) {
595
- <div data-part="section-actions">
605
+ <div data-part="section-actions" data-part-section-actions="">
596
606
  <ng-container *ngTemplateOutlet="actions" />
597
607
  </div>
598
608
  }
@@ -607,6 +617,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
607
617
  } @else {
608
618
  <div
609
619
  data-part="section"
620
+ data-part-section=""
610
621
  [attr.data-name]="section.name()"
611
622
  [attr.data-current]="panel.current() === section.name() ? '' : null"
612
623
  >
@@ -655,7 +666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
655
666
  </div>`,
656
667
  changeDetection: ChangeDetectionStrategy.OnPush,
657
668
  encapsulation: ViewEncapsulation.None,
658
- host: { 'data-part': 'body' },
669
+ host: { 'data-part': 'body', 'data-part-body': '' },
659
670
  }]
660
671
  }], propDecorators: { aside: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlDetailPanelAside), { isSignal: true }] }] } });
661
672
  /**