@slotted/angular 0.1.0-beta.7 → 0.1.0-beta.9

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 (421) hide show
  1. package/docs/calendar.json +1 -1
  2. package/docs/code-block.json +92 -92
  3. package/docs/code-block.md +69 -69
  4. package/docs/currency-field.json +7 -0
  5. package/docs/currency-field.md +1 -0
  6. package/docs/data-grid.examples.md +1 -1
  7. package/docs/data-grid.json +21 -4
  8. package/docs/data-grid.md +1 -1
  9. package/docs/data-grid.props.md +5 -3
  10. package/docs/dialog.examples.md +138 -136
  11. package/docs/dialog.json +8 -8
  12. package/docs/filter-bar.json +118 -118
  13. package/docs/filter-bar.md +79 -79
  14. package/docs/guidelines/async-feedback.md +10 -0
  15. package/docs/guidelines/composition.md +11 -7
  16. package/docs/guidelines/index.md +6 -1
  17. package/docs/guidelines/list-pages.md +30 -0
  18. package/docs/guidelines/overviews.md +10 -0
  19. package/docs/markdown.json +79 -79
  20. package/docs/markdown.md +65 -65
  21. package/docs/page-header.json +1 -1
  22. package/docs/skills/compose-screen/SKILL.md +22 -10
  23. package/docs/skills/review-screen/SKILL.md +6 -0
  24. package/docs/skills/waiting-states/SKILL.md +4 -1
  25. package/docs/tags-input.json +28 -2
  26. package/docs/tags-input.md +4 -1
  27. package/docs/timeline.json +131 -131
  28. package/docs/timeline.md +123 -123
  29. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  30. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  31. package/fesm2022/slotted-angular-action-bar.mjs +21 -10
  32. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  33. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  34. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  35. package/fesm2022/slotted-angular-alert.mjs +17 -11
  36. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  37. package/fesm2022/slotted-angular-app-shell.mjs +52 -40
  38. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  39. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  40. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  41. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  42. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  43. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  44. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  45. package/fesm2022/slotted-angular-avatar.mjs +9 -6
  46. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  47. package/fesm2022/slotted-angular-badge.mjs +14 -10
  48. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  49. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  50. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  51. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  52. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  53. package/fesm2022/slotted-angular-button.mjs +53 -25
  54. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  55. package/fesm2022/slotted-angular-calendar.mjs +82 -30
  56. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  57. package/fesm2022/slotted-angular-card.mjs +18 -16
  58. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  59. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  60. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  61. package/fesm2022/slotted-angular-cascader.mjs +158 -64
  62. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  63. package/fesm2022/slotted-angular-chart.mjs +4 -2
  64. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  65. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  66. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  67. package/fesm2022/slotted-angular-checkbox.mjs +13 -8
  68. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  69. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  70. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  71. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  72. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  73. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  74. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  75. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  76. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  77. package/fesm2022/slotted-angular-combobox.mjs +77 -31
  78. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  79. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  80. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  81. package/fesm2022/slotted-angular-container.mjs +6 -4
  82. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  83. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  84. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  85. package/fesm2022/slotted-angular-currency-field.mjs +98 -32
  86. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  87. package/fesm2022/slotted-angular-dashboard-grid.mjs +127 -44
  88. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  89. package/fesm2022/slotted-angular-data-grid.mjs +309 -104
  90. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  91. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  92. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  93. package/fesm2022/slotted-angular-date-field.mjs +40 -14
  94. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  95. package/fesm2022/slotted-angular-date-picker.mjs +19 -9
  96. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  97. package/fesm2022/slotted-angular-date-range-picker.mjs +41 -16
  98. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  99. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  100. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  101. package/fesm2022/slotted-angular-datetime-picker.mjs +37 -23
  102. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  103. package/fesm2022/slotted-angular-datetime-range-picker.mjs +111 -42
  104. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  105. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  106. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  107. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  108. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  109. package/fesm2022/slotted-angular-dialog.mjs +61 -28
  110. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  111. package/fesm2022/slotted-angular-divider.mjs +7 -5
  112. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  113. package/fesm2022/slotted-angular-drawer.mjs +38 -26
  114. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  115. package/fesm2022/slotted-angular-entity-picker.mjs +195 -67
  116. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  117. package/fesm2022/slotted-angular-event-calendar.mjs +259 -102
  118. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  119. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  120. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  121. package/fesm2022/slotted-angular-field.mjs +35 -15
  122. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  123. package/fesm2022/slotted-angular-filter-bar.mjs +104 -43
  124. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  125. package/fesm2022/slotted-angular-form.mjs +18 -10
  126. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  127. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  128. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  129. package/fesm2022/slotted-angular-grid.mjs +4 -2
  130. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  131. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  132. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  133. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  134. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  135. package/fesm2022/slotted-angular-icon.mjs +6 -3
  136. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  137. package/fesm2022/slotted-angular-image.mjs +13 -10
  138. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  139. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  140. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  141. package/fesm2022/slotted-angular-inline-message.mjs +10 -8
  142. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  143. package/fesm2022/slotted-angular-inline.mjs +4 -2
  144. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  145. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  146. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  147. package/fesm2022/slotted-angular-link.mjs +5 -3
  148. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  149. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  150. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  151. package/fesm2022/slotted-angular-list.mjs +14 -10
  152. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  153. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  154. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  155. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  156. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  157. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  158. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  159. package/fesm2022/slotted-angular-menu.mjs +41 -27
  160. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  161. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  162. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  163. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  164. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  165. package/fesm2022/slotted-angular-message.mjs +113 -51
  166. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  167. package/fesm2022/slotted-angular-multi-select.mjs +133 -57
  168. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  169. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  170. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  171. package/fesm2022/slotted-angular-notification-center.mjs +107 -65
  172. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  173. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  174. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  175. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  176. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  177. package/fesm2022/slotted-angular-page-header.mjs +72 -42
  178. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  179. package/fesm2022/slotted-angular-page.mjs +18 -9
  180. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  181. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  182. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  183. package/fesm2022/slotted-angular-popover.mjs +25 -18
  184. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  185. package/fesm2022/slotted-angular-progress-indicator.mjs +122 -30
  186. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  187. package/fesm2022/slotted-angular-prompt-composer.mjs +24 -18
  188. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  189. package/fesm2022/slotted-angular-prose.mjs +14 -11
  190. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  191. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  192. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  193. package/fesm2022/slotted-angular-rating.mjs +138 -82
  194. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  195. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  196. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  197. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  198. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  199. package/fesm2022/slotted-angular-scroll-area.mjs +9 -5
  200. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  201. package/fesm2022/slotted-angular-section.mjs +34 -15
  202. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  203. package/fesm2022/slotted-angular-segmented-control.mjs +15 -9
  204. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  205. package/fesm2022/slotted-angular-select.mjs +135 -53
  206. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  207. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  208. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  209. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  210. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  211. package/fesm2022/slotted-angular-slider.mjs +31 -11
  212. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  213. package/fesm2022/slotted-angular-sparkline.mjs +29 -13
  214. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  215. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  216. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  217. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  218. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  219. package/fesm2022/slotted-angular-stack.mjs +4 -2
  220. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  221. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  222. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  223. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  224. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  225. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  226. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  227. package/fesm2022/slotted-angular-switch.mjs +15 -10
  228. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  229. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  230. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  231. package/fesm2022/slotted-angular-table.mjs +135 -72
  232. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  233. package/fesm2022/slotted-angular-tabs.mjs +31 -14
  234. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  235. package/fesm2022/slotted-angular-tag.mjs +19 -12
  236. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  237. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  238. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  239. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  240. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  241. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  242. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  243. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  244. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  245. package/fesm2022/slotted-angular-time-picker.mjs +28 -14
  246. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  247. package/fesm2022/slotted-angular-time-range-picker.mjs +109 -40
  248. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  249. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  250. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  251. package/fesm2022/slotted-angular-toast.mjs +42 -31
  252. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  253. package/fesm2022/slotted-angular-toggle-group.mjs +10 -6
  254. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  255. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  256. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  257. package/fesm2022/slotted-angular-toolbar.mjs +21 -10
  258. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  259. package/fesm2022/slotted-angular-tooltip.mjs +8 -5
  260. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  261. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  262. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  263. package/fesm2022/slotted-angular-tour.mjs +46 -21
  264. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  265. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  266. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  267. package/fesm2022/slotted-angular-tree.mjs +74 -26
  268. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  269. package/fesm2022/slotted-angular-typography.mjs +8 -4
  270. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  271. package/fesm2022/slotted-angular-upload.mjs +125 -57
  272. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  273. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  274. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  275. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  276. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  277. package/package.json +3 -3
  278. package/types/slotted-angular-accordion.d.ts.map +1 -1
  279. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  280. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  281. package/types/slotted-angular-alert.d.ts +1 -1
  282. package/types/slotted-angular-alert.d.ts.map +1 -1
  283. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  284. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  285. package/types/slotted-angular-attachment.d.ts +1 -1
  286. package/types/slotted-angular-attachment.d.ts.map +1 -1
  287. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  288. package/types/slotted-angular-avatar.d.ts.map +1 -1
  289. package/types/slotted-angular-badge.d.ts.map +1 -1
  290. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  291. package/types/slotted-angular-button-group.d.ts.map +1 -1
  292. package/types/slotted-angular-button.d.ts.map +1 -1
  293. package/types/slotted-angular-calendar.d.ts +2 -0
  294. package/types/slotted-angular-calendar.d.ts.map +1 -1
  295. package/types/slotted-angular-card.d.ts.map +1 -1
  296. package/types/slotted-angular-carousel.d.ts.map +1 -1
  297. package/types/slotted-angular-cascader.d.ts.map +1 -1
  298. package/types/slotted-angular-chart.d.ts.map +1 -1
  299. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  300. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  301. package/types/slotted-angular-code-block.d.ts +1 -1
  302. package/types/slotted-angular-code-block.d.ts.map +1 -1
  303. package/types/slotted-angular-collapsible.d.ts +1 -1
  304. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  305. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  306. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  307. package/types/slotted-angular-combobox.d.ts +1 -1
  308. package/types/slotted-angular-combobox.d.ts.map +1 -1
  309. package/types/slotted-angular-command-palette.d.ts +10 -1
  310. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  311. package/types/slotted-angular-container.d.ts.map +1 -1
  312. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  313. package/types/slotted-angular-currency-field.d.ts +39 -13
  314. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  315. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  316. package/types/slotted-angular-data-grid.d.ts +26 -2
  317. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  318. package/types/slotted-angular-data-list.d.ts.map +1 -1
  319. package/types/slotted-angular-date-field.d.ts.map +1 -1
  320. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  321. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  322. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  323. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  324. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  325. package/types/slotted-angular-description-list.d.ts.map +1 -1
  326. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  327. package/types/slotted-angular-dialog.d.ts +2 -1
  328. package/types/slotted-angular-dialog.d.ts.map +1 -1
  329. package/types/slotted-angular-divider.d.ts.map +1 -1
  330. package/types/slotted-angular-drawer.d.ts.map +1 -1
  331. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  332. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  333. package/types/slotted-angular-field-group.d.ts.map +1 -1
  334. package/types/slotted-angular-field.d.ts.map +1 -1
  335. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  336. package/types/slotted-angular-form.d.ts.map +1 -1
  337. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  338. package/types/slotted-angular-grid.d.ts.map +1 -1
  339. package/types/slotted-angular-highlight.d.ts.map +1 -1
  340. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  341. package/types/slotted-angular-icon.d.ts +1 -1
  342. package/types/slotted-angular-icon.d.ts.map +1 -1
  343. package/types/slotted-angular-image.d.ts.map +1 -1
  344. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  345. package/types/slotted-angular-inline-message.d.ts +1 -1
  346. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  347. package/types/slotted-angular-inline.d.ts.map +1 -1
  348. package/types/slotted-angular-kbd.d.ts.map +1 -1
  349. package/types/slotted-angular-link.d.ts.map +1 -1
  350. package/types/slotted-angular-list-item.d.ts.map +1 -1
  351. package/types/slotted-angular-list.d.ts.map +1 -1
  352. package/types/slotted-angular-listbox.d.ts.map +1 -1
  353. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  354. package/types/slotted-angular-markdown.d.ts.map +1 -1
  355. package/types/slotted-angular-menu.d.ts.map +1 -1
  356. package/types/slotted-angular-menubar.d.ts.map +1 -1
  357. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  358. package/types/slotted-angular-message.d.ts.map +1 -1
  359. package/types/slotted-angular-multi-select.d.ts +1 -1
  360. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  361. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  362. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  363. package/types/slotted-angular-number-field.d.ts.map +1 -1
  364. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  365. package/types/slotted-angular-page-header.d.ts +1 -1
  366. package/types/slotted-angular-page-header.d.ts.map +1 -1
  367. package/types/slotted-angular-page.d.ts.map +1 -1
  368. package/types/slotted-angular-pagination.d.ts.map +1 -1
  369. package/types/slotted-angular-popover.d.ts.map +1 -1
  370. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  371. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  372. package/types/slotted-angular-prose.d.ts.map +1 -1
  373. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  374. package/types/slotted-angular-rating.d.ts.map +1 -1
  375. package/types/slotted-angular-result-state.d.ts.map +1 -1
  376. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  377. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  378. package/types/slotted-angular-section.d.ts.map +1 -1
  379. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  380. package/types/slotted-angular-select.d.ts +1 -1
  381. package/types/slotted-angular-select.d.ts.map +1 -1
  382. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  383. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  384. package/types/slotted-angular-slider.d.ts.map +1 -1
  385. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  386. package/types/slotted-angular-split-button.d.ts.map +1 -1
  387. package/types/slotted-angular-splitter.d.ts.map +1 -1
  388. package/types/slotted-angular-stack.d.ts.map +1 -1
  389. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  390. package/types/slotted-angular-status-indicator.d.ts +1 -1
  391. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  392. package/types/slotted-angular-stepper.d.ts +1 -1
  393. package/types/slotted-angular-stepper.d.ts.map +1 -1
  394. package/types/slotted-angular-switch.d.ts.map +1 -1
  395. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  396. package/types/slotted-angular-table.d.ts.map +1 -1
  397. package/types/slotted-angular-tabs.d.ts.map +1 -1
  398. package/types/slotted-angular-tag.d.ts.map +1 -1
  399. package/types/slotted-angular-tags-input.d.ts +33 -1
  400. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  401. package/types/slotted-angular-text-field.d.ts.map +1 -1
  402. package/types/slotted-angular-textarea.d.ts.map +1 -1
  403. package/types/slotted-angular-time-field.d.ts.map +1 -1
  404. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  405. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  406. package/types/slotted-angular-timeline.d.ts.map +1 -1
  407. package/types/slotted-angular-toast.d.ts +2 -2
  408. package/types/slotted-angular-toast.d.ts.map +1 -1
  409. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  410. package/types/slotted-angular-toggle.d.ts.map +1 -1
  411. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  412. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  413. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  414. package/types/slotted-angular-tour.d.ts.map +1 -1
  415. package/types/slotted-angular-transfer.d.ts.map +1 -1
  416. package/types/slotted-angular-tree.d.ts.map +1 -1
  417. package/types/slotted-angular-typography.d.ts.map +1 -1
  418. package/types/slotted-angular-upload.d.ts +2 -2
  419. package/types/slotted-angular-upload.d.ts.map +1 -1
  420. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  421. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-fullscreen.mjs","sources":["../../fullscreen/src/fullscreen-defaults.ts","../../fullscreen/src/fullscreen.ts","../../fullscreen/src/slotted-angular-fullscreen.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { FullscreenNavigationUI, FullscreenPolicy } from '@slotted/core/fullscreen';\n\nexport type FullscreenTriggerSize = 'sm' | 'md' | 'lg';\n\n/** `ghost` inside a bar that is already framed; `outline` over content. */\nexport type FullscreenTriggerVariant = 'ghost' | 'outline';\n\nexport interface FullscreenDefaults {\n mode: FullscreenPolicy;\n navigationUI: FullscreenNavigationUI;\n size: FullscreenTriggerSize;\n variant: FullscreenTriggerVariant;\n}\n\nconst FALLBACK: FullscreenDefaults = {\n mode: 'auto',\n navigationUI: 'auto',\n size: 'md',\n variant: 'ghost',\n};\n\nexport const FULLSCREEN_DEFAULTS = new InjectionToken<FullscreenDefaults>(\n 'slotted fullscreen defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once whether its regions ask the platform and how the\n * control is drawn; a region or a control that states any of them itself still\n * wins. The words come from the language in force (`provideSlotted`).\n */\nexport function provideFullscreenDefaults(defaults: Partial<FullscreenDefaults>) {\n return {\n provide: FULLSCREEN_DEFAULTS,\n useFactory: (): FullscreenDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectFullscreenDefaults(): FullscreenDefaults {\n return inject(FULLSCREEN_DEFAULTS);\n}\n","import {\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { createFullscreen, fullscreenSupported } from '@slotted/core/fullscreen';\nimport type {\n FullscreenController,\n FullscreenError,\n FullscreenMode,\n FullscreenNavigationUI,\n FullscreenOptions,\n FullscreenPolicy,\n} from '@slotted/core/fullscreen';\nimport {\n fullscreenMessages,\n type FullscreenMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectFullscreenDefaults } from './fullscreen-defaults';\nimport type { FullscreenTriggerSize, FullscreenTriggerVariant } from './fullscreen-defaults';\n\n/**\n * Why the state moved. `escape` is the leave nobody asked for: `Escape` in the\n * layout, or the agent's own exit in native — a key, F11, its interface.\n */\nexport type FullscreenReason = 'pointer' | 'keyboard' | 'escape' | 'programmatic';\n\n/**\n * A region the reader can give the whole screen: by the Fullscreen API where\n * the page may ask, fixed over the page where it may not. At rest it paints\n * nothing — it is the container the consumer already had — so it is a\n * directive on that container rather than a wrapper around it.\n *\n * `[(fullscreen)]` holds the state; every move is first asked through\n * `fullscreenChangeRequest`, whose `cancel()` refuses it. `Escape` in native\n * full screen belongs to the agent, and no listener is written for it; the\n * leave arrives as a request with the reason `escape`, and the agent has\n * already left by then.\n */\n@Directive({\n selector: '[slFullscreen]',\n standalone: true,\n exportAs: 'slFullscreen',\n host: {\n 'data-ui': 'fullscreen',\n 'data-part': 'root',\n '[attr.data-fullscreen]': \"fullscreen() ? '' : null\",\n '[attr.data-mode]': 'mode()',\n },\n})\nexport class SlFullscreen {\n readonly fullscreen = model(false);\n /** The value an uncontrolled region starts from, read once. */\n readonly defaultFullscreen = input(false, { transform: booleanAttribute });\n /** `auto` asks the platform and falls back to the layout; `layout` never asks. */\n readonly policy = input<FullscreenPolicy | undefined>(undefined, { alias: 'mode' });\n readonly navigationUI = input<FullscreenNavigationUI | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * control's (`enter`, `exit`) and the announcements (`entered`, `exited`).\n */\n readonly messages = input<PartialMessages<FullscreenMessages> | undefined>(undefined);\n\n readonly fullscreenChangeRequest = output<ChangeRequest<boolean>>();\n /** The platform was absent or refused. The region is in the layout by then. */\n readonly fullscreenError = output<FullscreenError>();\n\n private readonly defaults = injectFullscreenDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\n /** The way that answered, or `null` while the region is not full screen. */\n readonly mode = signal<FullscreenMode | null>(null);\n /** Whether the page may ask for native full screen. `false` until rendered. */\n readonly supported = signal(false);\n /** The last refusal, cleared on the next entry. */\n readonly error = signal<FullscreenError | null>(null);\n /** The family's words in the language in force, with this region's `messages` laid over them. */\n readonly t = injectMessages(fullscreenMessages, this.messages);\n\n private controller: FullscreenController | null = null;\n /* Set when the agent left native and the state was kept: a new request\n outside a gesture would only be refused. */\n private agentLeft = false;\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n if (this.defaultFullscreen()) this.fullscreen.set(true);\n this.supported.set(fullscreenSupported(this.element.ownerDocument));\n this.controller = createFullscreen(this.element, this.options());\n this.apply();\n });\n\n /* Options the controller reads on its next move. */\n effect(() => {\n const options = this.options();\n untracked(() => this.controller?.update(options));\n });\n\n /* The state applied: a two-way value the page set, and a value the page\n kept after the agent left. */\n effect(() => {\n this.fullscreen();\n this.mode();\n untracked(() => this.apply());\n });\n\n destroyRef.onDestroy(() => {\n this.controller?.destroy();\n this.controller = null;\n });\n }\n\n /** Asks to enter. From code the reason is `programmatic`. */\n enter(reason: FullscreenReason = 'programmatic', source?: unknown) {\n this.request(true, reason, source);\n }\n\n exit(reason: FullscreenReason = 'programmatic', source?: unknown) {\n this.request(false, reason, source);\n }\n\n toggle(reason: FullscreenReason = 'programmatic', source?: unknown) {\n this.request(!this.fullscreen(), reason, source);\n }\n\n /**\n * The request, and on acceptance the entry itself — inside the handler that\n * asked, because the agent grants native full screen only to a request made\n * during a gesture.\n */\n private request(next: boolean, reason: FullscreenReason, source?: unknown) {\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.fullscreen(),\n onRequest: (request) => {\n this.fullscreenChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n if (!state.request(next, reason, source) || cancelled) return;\n this.fullscreen.set(next);\n if (next) {\n this.error.set(null);\n void this.controller?.enter();\n } else void this.controller?.exit();\n }\n\n private apply() {\n const controller = this.controller;\n if (!controller) return;\n if (this.fullscreen() && controller.mode === null) {\n const native = !this.agentLeft;\n this.agentLeft = false;\n void controller.enter({ native });\n } else if (!this.fullscreen() && controller.mode !== null) {\n void controller.exit();\n }\n }\n\n private options(): FullscreenOptions {\n return {\n policy: this.policy() ?? this.defaults.mode,\n navigationUI: this.navigationUI() ?? this.defaults.navigationUI,\n t: this.t,\n onModeChange: (mode) => this.mode.set(mode),\n onError: (failure) => {\n this.error.set(failure);\n this.fullscreenError.emit(failure);\n },\n onExit: (source) => {\n /* In native the agent has already left and the controller is out; in\n the layout `Escape` only asked, and the region is still there. */\n this.agentLeft = this.controller?.mode === null;\n this.request(false, 'escape', source);\n },\n };\n }\n}\n\n/**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count.\n */\nfunction activationReason(event: Event): FullscreenReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * The control. Its words and its mark say what the press does next and change\n * with the state, so it is not a toggle and writes no `aria-pressed` (APG\n * Button pattern). Inside `[slFullscreen]` it reaches the region by injection;\n * anywhere else it takes the region's instance: `[slFullscreenTrigger]=\"fs\"`.\n *\n * Projected content replaces the words, and an element marked `slFullscreenIcon`\n * replaces the mark; both can read `fs.fullscreen()` to follow the state.\n */\n@Component({\n selector: 'button[slFullscreenTrigger]',\n standalone: true,\n exportAs: 'slFullscreenTrigger',\n imports: [SlGlyph, SlIcon],\n /* The mark follows the state unless the consumer projected their own. */\n template: `<span data-part=\"icon\" aria-hidden=\"true\"\n ><ng-content select=\"[slFullscreenIcon]\"\n ><span slIcon\n ><svg slGlyph [name]=\"on() ? 'minimize' : 'maximize'\"></svg></span></ng-content></span\n ><span data-part=\"label\"\n ><ng-content>{{ label() }}</ng-content></span\n >`,\n styleUrl: '../../../styles/src/fullscreen/fullscreen.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'fullscreen',\n 'data-part': 'trigger',\n '[attr.type]': 'type',\n '[attr.data-fullscreen]': \"on() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-icon-only]': \"iconOnly() ? '' : null\",\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[disabled]': 'disabled()',\n },\n})\nexport class SlFullscreenTrigger implements AfterViewInit {\n /** The region, when the control is not inside it. */\n readonly target = input<SlFullscreen | '' | undefined>(undefined, {\n alias: 'slFullscreenTrigger',\n });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly size = input<FullscreenTriggerSize | undefined>(undefined);\n readonly variant = input<FullscreenTriggerVariant | undefined>(undefined);\n\n private readonly defaults = injectFullscreenDefaults();\n /* A control with no region has no region's words, and speaks the catalog's. */\n private readonly own = injectMessages(fullscreenMessages);\n private readonly enclosing = inject(SlFullscreen, { optional: true });\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n /** A `type` the consumer wrote survives, read before the host binding writes it. */\n private readonly writtenType = inject(new HostAttributeToken('type'), { optional: true });\n protected readonly type = this.writtenType ?? 'button';\n\n readonly region = computed(() => {\n const target = this.target();\n return target instanceof SlFullscreen ? target : this.enclosing;\n });\n readonly on = computed(() => this.region()?.fullscreen() ?? false);\n protected readonly label = computed(() =>\n (this.region()?.t ?? this.own)(this.on() ? 'exit' : 'enter'),\n );\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n\n /**\n * After the view: a `(click)` the consumer wrote on the same element is\n * bound first, so its `preventDefault()` is read before the family acts.\n */\n ngAfterViewInit() {\n const listener = (event: Event) => {\n if (this.disabled() || event.defaultPrevented) return;\n this.region()?.toggle(activationReason(event), event);\n };\n this.element.addEventListener('click', listener);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', listener));\n }\n}\n\n/**\n * The part that takes the height the other children of the region leave\n * while it is full screen — a chart under its header, a document under its\n * toolbar — and whose first child fills it. A direct child of the region; at\n * rest it is the element the consumer wrote, unchanged.\n */\n@Directive({\n selector: '[slFullscreenContent]',\n standalone: true,\n host: {\n 'data-ui': 'fullscreen',\n 'data-part': 'content',\n },\n})\nexport class SlFullscreenContent {}\n\n/** Marks the consumer's own mark for the control's icon part. */\n@Directive({\n selector: '[slFullscreenIcon]',\n standalone: true,\n})\nexport class SlFullscreenIcon {}\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-fullscreen.mjs","sources":["../../fullscreen/src/fullscreen-defaults.ts","../../fullscreen/src/fullscreen.ts","../../fullscreen/src/slotted-angular-fullscreen.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { FullscreenNavigationUI, FullscreenPolicy } from '@slotted/core/fullscreen';\n\nexport type FullscreenTriggerSize = 'sm' | 'md' | 'lg';\n\n/** `ghost` inside a bar that is already framed; `outline` over content. */\nexport type FullscreenTriggerVariant = 'ghost' | 'outline';\n\nexport interface FullscreenDefaults {\n mode: FullscreenPolicy;\n navigationUI: FullscreenNavigationUI;\n size: FullscreenTriggerSize;\n variant: FullscreenTriggerVariant;\n}\n\nconst FALLBACK: FullscreenDefaults = {\n mode: 'auto',\n navigationUI: 'auto',\n size: 'md',\n variant: 'ghost',\n};\n\nexport const FULLSCREEN_DEFAULTS = new InjectionToken<FullscreenDefaults>(\n 'slotted fullscreen defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once whether its regions ask the platform and how the\n * control is drawn; a region or a control that states any of them itself still\n * wins. The words come from the language in force (`provideSlotted`).\n */\nexport function provideFullscreenDefaults(defaults: Partial<FullscreenDefaults>) {\n return {\n provide: FULLSCREEN_DEFAULTS,\n useFactory: (): FullscreenDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectFullscreenDefaults(): FullscreenDefaults {\n return inject(FULLSCREEN_DEFAULTS);\n}\n","import {\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { createFullscreen, fullscreenSupported } from '@slotted/core/fullscreen';\nimport type {\n FullscreenController,\n FullscreenError,\n FullscreenMode,\n FullscreenNavigationUI,\n FullscreenOptions,\n FullscreenPolicy,\n} from '@slotted/core/fullscreen';\nimport {\n fullscreenMessages,\n type FullscreenMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectFullscreenDefaults } from './fullscreen-defaults';\nimport type { FullscreenTriggerSize, FullscreenTriggerVariant } from './fullscreen-defaults';\n\n/**\n * Why the state moved. `escape` is the leave nobody asked for: `Escape` in the\n * layout, or the agent's own exit in native — a key, F11, its interface.\n */\nexport type FullscreenReason = 'pointer' | 'keyboard' | 'escape' | 'programmatic';\n\n/**\n * A region the reader can give the whole screen: by the Fullscreen API where\n * the page may ask, fixed over the page where it may not. At rest it paints\n * nothing — it is the container the consumer already had — so it is a\n * directive on that container rather than a wrapper around it.\n *\n * `[(fullscreen)]` holds the state; every move is first asked through\n * `fullscreenChangeRequest`, whose `cancel()` refuses it. `Escape` in native\n * full screen belongs to the agent, and no listener is written for it; the\n * leave arrives as a request with the reason `escape`, and the agent has\n * already left by then.\n */\n@Directive({\n selector: '[slFullscreen]',\n standalone: true,\n exportAs: 'slFullscreen',\n host: {\n 'data-ui': 'fullscreen',\n 'data-ui-fullscreen': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-fullscreen]': \"fullscreen() ? '' : null\",\n '[attr.data-mode]': 'mode()',\n },\n})\nexport class SlFullscreen {\n readonly fullscreen = model(false);\n /** The value an uncontrolled region starts from, read once. */\n readonly defaultFullscreen = input(false, { transform: booleanAttribute });\n /** `auto` asks the platform and falls back to the layout; `layout` never asks. */\n readonly policy = input<FullscreenPolicy | undefined>(undefined, { alias: 'mode' });\n readonly navigationUI = input<FullscreenNavigationUI | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * control's (`enter`, `exit`) and the announcements (`entered`, `exited`).\n */\n readonly messages = input<PartialMessages<FullscreenMessages> | undefined>(undefined);\n\n readonly fullscreenChangeRequest = output<ChangeRequest<boolean>>();\n /** The platform was absent or refused. The region is in the layout by then. */\n readonly fullscreenError = output<FullscreenError>();\n\n private readonly defaults = injectFullscreenDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement;\n\n /** The way that answered, or `null` while the region is not full screen. */\n readonly mode = signal<FullscreenMode | null>(null);\n /** Whether the page may ask for native full screen. `false` until rendered. */\n readonly supported = signal(false);\n /** The last refusal, cleared on the next entry. */\n readonly error = signal<FullscreenError | null>(null);\n /** The family's words in the language in force, with this region's `messages` laid over them. */\n readonly t = injectMessages(fullscreenMessages, this.messages);\n\n private controller: FullscreenController | null = null;\n /* Set when the agent left native and the state was kept: a new request\n outside a gesture would only be refused. */\n private agentLeft = false;\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n if (this.defaultFullscreen()) this.fullscreen.set(true);\n this.supported.set(fullscreenSupported(this.element.ownerDocument));\n this.controller = createFullscreen(this.element, this.options());\n this.apply();\n });\n\n /* Options the controller reads on its next move. */\n effect(() => {\n const options = this.options();\n untracked(() => this.controller?.update(options));\n });\n\n /* The state applied: a two-way value the page set, and a value the page\n kept after the agent left. */\n effect(() => {\n this.fullscreen();\n this.mode();\n untracked(() => this.apply());\n });\n\n destroyRef.onDestroy(() => {\n this.controller?.destroy();\n this.controller = null;\n });\n }\n\n /** Asks to enter. From code the reason is `programmatic`. */\n enter(reason: FullscreenReason = 'programmatic', source?: unknown) {\n this.request(true, reason, source);\n }\n\n exit(reason: FullscreenReason = 'programmatic', source?: unknown) {\n this.request(false, reason, source);\n }\n\n toggle(reason: FullscreenReason = 'programmatic', source?: unknown) {\n this.request(!this.fullscreen(), reason, source);\n }\n\n /**\n * The request, and on acceptance the entry itself — inside the handler that\n * asked, because the agent grants native full screen only to a request made\n * during a gesture.\n */\n private request(next: boolean, reason: FullscreenReason, source?: unknown) {\n let cancelled = false;\n const state = createControllable<boolean>({\n initial: this.fullscreen(),\n onRequest: (request) => {\n this.fullscreenChangeRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n if (!state.request(next, reason, source) || cancelled) return;\n this.fullscreen.set(next);\n if (next) {\n this.error.set(null);\n void this.controller?.enter();\n } else void this.controller?.exit();\n }\n\n private apply() {\n const controller = this.controller;\n if (!controller) return;\n if (this.fullscreen() && controller.mode === null) {\n const native = !this.agentLeft;\n this.agentLeft = false;\n void controller.enter({ native });\n } else if (!this.fullscreen() && controller.mode !== null) {\n void controller.exit();\n }\n }\n\n private options(): FullscreenOptions {\n return {\n policy: this.policy() ?? this.defaults.mode,\n navigationUI: this.navigationUI() ?? this.defaults.navigationUI,\n t: this.t,\n onModeChange: (mode) => this.mode.set(mode),\n onError: (failure) => {\n this.error.set(failure);\n this.fullscreenError.emit(failure);\n },\n onExit: (source) => {\n /* In native the agent has already left and the controller is out; in\n the layout `Escape` only asked, and the region is still there. */\n this.agentLeft = this.controller?.mode === null;\n this.request(false, 'escape', source);\n },\n };\n }\n}\n\n/**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count.\n */\nfunction activationReason(event: Event): FullscreenReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * The control. Its words and its mark say what the press does next and change\n * with the state, so it is not a toggle and writes no `aria-pressed` (APG\n * Button pattern). Inside `[slFullscreen]` it reaches the region by injection;\n * anywhere else it takes the region's instance: `[slFullscreenTrigger]=\"fs\"`.\n *\n * Projected content replaces the words, and an element marked `slFullscreenIcon`\n * replaces the mark; both can read `fs.fullscreen()` to follow the state.\n */\n@Component({\n selector: 'button[slFullscreenTrigger]',\n standalone: true,\n exportAs: 'slFullscreenTrigger',\n imports: [SlGlyph, SlIcon],\n /* The mark follows the state unless the consumer projected their own. */\n template: `<span data-part=\"icon\" data-part-icon=\"\" aria-hidden=\"true\"\n ><ng-content select=\"[slFullscreenIcon]\"\n ><span slIcon\n ><svg slGlyph [name]=\"on() ? 'minimize' : 'maximize'\"></svg></span></ng-content></span\n ><span data-part=\"label\" data-part-label=\"\"\n ><ng-content>{{ label() }}</ng-content></span\n >`,\n styleUrl: '../../../styles/src/fullscreen/fullscreen.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'fullscreen',\n 'data-ui-fullscreen': '',\n 'data-part': 'trigger',\n 'data-part-trigger': '',\n '[attr.type]': 'type',\n '[attr.data-fullscreen]': \"on() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-icon-only]': \"iconOnly() ? '' : null\",\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[disabled]': 'disabled()',\n },\n})\nexport class SlFullscreenTrigger implements AfterViewInit {\n /** The region, when the control is not inside it. */\n readonly target = input<SlFullscreen | '' | undefined>(undefined, {\n alias: 'slFullscreenTrigger',\n });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly size = input<FullscreenTriggerSize | undefined>(undefined);\n readonly variant = input<FullscreenTriggerVariant | undefined>(undefined);\n\n private readonly defaults = injectFullscreenDefaults();\n /* A control with no region has no region's words, and speaks the catalog's. */\n private readonly own = injectMessages(fullscreenMessages);\n private readonly enclosing = inject(SlFullscreen, { optional: true });\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n /** A `type` the consumer wrote survives, read before the host binding writes it. */\n private readonly writtenType = inject(new HostAttributeToken('type'), { optional: true });\n protected readonly type = this.writtenType ?? 'button';\n\n readonly region = computed(() => {\n const target = this.target();\n return target instanceof SlFullscreen ? target : this.enclosing;\n });\n readonly on = computed(() => this.region()?.fullscreen() ?? false);\n protected readonly label = computed(() =>\n (this.region()?.t ?? this.own)(this.on() ? 'exit' : 'enter'),\n );\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n\n /**\n * After the view: a `(click)` the consumer wrote on the same element is\n * bound first, so its `preventDefault()` is read before the family acts.\n */\n ngAfterViewInit() {\n const listener = (event: Event) => {\n if (this.disabled() || event.defaultPrevented) return;\n this.region()?.toggle(activationReason(event), event);\n };\n this.element.addEventListener('click', listener);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', listener));\n }\n}\n\n/**\n * The part that takes the height the other children of the region leave\n * while it is full screen — a chart under its header, a document under its\n * toolbar — and whose first child fills it. A direct child of the region; at\n * rest it is the element the consumer wrote, unchanged.\n */\n@Directive({\n selector: '[slFullscreenContent]',\n standalone: true,\n host: {\n 'data-ui': 'fullscreen',\n 'data-ui-fullscreen': '',\n 'data-part': 'content',\n 'data-part-content': '',\n },\n})\nexport class SlFullscreenContent {}\n\n/** Marks the consumer's own mark for the control's icon part. */\n@Directive({\n selector: '[slFullscreenIcon]',\n standalone: true,\n})\nexport class SlFullscreenIcon {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -31,13 +31,15 @@ class SlGrid {
31
31
  minItemWidth = input(/* @ts-ignore */
32
32
  ...(ngDevMode ? [undefined, { debugName: "minItemWidth" }] : /* istanbul ignore next */ []));
33
33
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlGrid, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlGrid, isStandalone: true, selector: "[slGrid]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, minItemWidth: { classPropertyName: "minItemWidth", publicName: "minItemWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "grid", "data-part": "root" }, properties: { "attr.data-gap": "gap() ?? null", "attr.data-columns": "columns() ?? null", "attr.data-min-item-width": "minItemWidth() ?? null", "attr.data-align": "align() ?? null", "attr.align": "null", "attr.data-justify": "justify() ?? null", "style.--slotted-grid-columns": "columns() ?? null" } }, exportAs: ["slGrid"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui=grid]{--_gap: var(--slotted-space-6, 1rem);--_min-item: var(--slotted-grid-min-item-width-md, 16rem);display:grid;gap:var(--_gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--_min-item)),1fr));min-inline-size:0}[data-ui=grid][data-columns]{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(var(--_min-item),(100% - (var(--slotted-grid-columns, 1) - 1) * var(--_gap)) / var(--slotted-grid-columns, 1))),1fr))}[data-ui=grid][data-gap=\"0\"]{--_gap: 0}[data-ui=grid][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui=grid][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui=grid][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui=grid][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui=grid][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui=grid][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui=grid][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui=grid][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui=grid][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui=grid][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui=grid][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui=grid][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui=grid][data-min-item-width=xs]{--_min-item: var(--slotted-grid-min-item-width-xs, 8rem)}[data-ui=grid][data-min-item-width=sm]{--_min-item: var(--slotted-grid-min-item-width-sm, 12rem)}[data-ui=grid][data-min-item-width=md]{--_min-item: var(--slotted-grid-min-item-width-md, 16rem)}[data-ui=grid][data-min-item-width=lg]{--_min-item: var(--slotted-grid-min-item-width-lg, 20rem)}[data-ui=grid][data-min-item-width=xl]{--_min-item: var(--slotted-grid-min-item-width-xl, 24rem)}[data-ui=grid][data-align=start]{align-items:start}[data-ui=grid][data-align=center]{align-items:center}[data-ui=grid][data-align=end]{align-items:end}[data-ui=grid][data-align=stretch]{align-items:stretch}[data-ui=grid][data-justify=start]{justify-items:start}[data-ui=grid][data-justify=center]{justify-items:center}[data-ui=grid][data-justify=end]{justify-items:end}[data-ui=grid][data-justify=stretch]{justify-items:stretch}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlGrid, isStandalone: true, selector: "[slGrid]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, minItemWidth: { classPropertyName: "minItemWidth", publicName: "minItemWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "grid", "data-ui-grid": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-gap": "gap() ?? null", "attr.data-columns": "columns() ?? null", "attr.data-min-item-width": "minItemWidth() ?? null", "attr.data-align": "align() ?? null", "attr.align": "null", "attr.data-justify": "justify() ?? null", "style.--slotted-grid-columns": "columns() ?? null" } }, exportAs: ["slGrid"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui-grid]{--_gap: var(--slotted-space-6, 1rem);--_min-item: var(--slotted-grid-min-item-width-md, 16rem);display:grid;gap:var(--_gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--_min-item)),1fr));min-inline-size:0}[data-ui-grid][data-columns]{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(var(--_min-item),(100% - (var(--slotted-grid-columns, 1) - 1) * var(--_gap)) / var(--slotted-grid-columns, 1))),1fr))}[data-ui-grid][data-gap=\"0\"]{--_gap: 0}[data-ui-grid][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui-grid][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui-grid][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui-grid][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui-grid][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui-grid][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui-grid][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui-grid][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui-grid][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui-grid][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui-grid][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui-grid][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui-grid][data-min-item-width=xs]{--_min-item: var(--slotted-grid-min-item-width-xs, 8rem)}[data-ui-grid][data-min-item-width=sm]{--_min-item: var(--slotted-grid-min-item-width-sm, 12rem)}[data-ui-grid][data-min-item-width=md]{--_min-item: var(--slotted-grid-min-item-width-md, 16rem)}[data-ui-grid][data-min-item-width=lg]{--_min-item: var(--slotted-grid-min-item-width-lg, 20rem)}[data-ui-grid][data-min-item-width=xl]{--_min-item: var(--slotted-grid-min-item-width-xl, 24rem)}[data-ui-grid][data-align=start]{align-items:start}[data-ui-grid][data-align=center]{align-items:center}[data-ui-grid][data-align=end]{align-items:end}[data-ui-grid][data-align=stretch]{align-items:stretch}[data-ui-grid][data-justify=start]{justify-items:start}[data-ui-grid][data-justify=center]{justify-items:center}[data-ui-grid][data-justify=end]{justify-items:end}[data-ui-grid][data-justify=stretch]{justify-items:stretch}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlGrid, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: '[slGrid]', standalone: true, exportAs: 'slGrid', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
39
39
  'data-ui': 'grid',
40
+ 'data-ui-grid': '',
40
41
  'data-part': 'root',
42
+ 'data-part-root': '',
41
43
  '[attr.data-gap]': 'gap() ?? null',
42
44
  '[attr.data-columns]': 'columns() ?? null',
43
45
  '[attr.data-min-item-width]': 'minItemWidth() ?? null',
@@ -47,7 +49,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
47
49
  '[attr.align]': 'null',
48
50
  '[attr.data-justify]': 'justify() ?? null',
49
51
  '[style.--slotted-grid-columns]': 'columns() ?? null',
50
- }, styles: ["@layer slotted.components{[data-ui=grid]{--_gap: var(--slotted-space-6, 1rem);--_min-item: var(--slotted-grid-min-item-width-md, 16rem);display:grid;gap:var(--_gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--_min-item)),1fr));min-inline-size:0}[data-ui=grid][data-columns]{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(var(--_min-item),(100% - (var(--slotted-grid-columns, 1) - 1) * var(--_gap)) / var(--slotted-grid-columns, 1))),1fr))}[data-ui=grid][data-gap=\"0\"]{--_gap: 0}[data-ui=grid][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui=grid][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui=grid][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui=grid][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui=grid][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui=grid][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui=grid][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui=grid][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui=grid][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui=grid][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui=grid][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui=grid][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui=grid][data-min-item-width=xs]{--_min-item: var(--slotted-grid-min-item-width-xs, 8rem)}[data-ui=grid][data-min-item-width=sm]{--_min-item: var(--slotted-grid-min-item-width-sm, 12rem)}[data-ui=grid][data-min-item-width=md]{--_min-item: var(--slotted-grid-min-item-width-md, 16rem)}[data-ui=grid][data-min-item-width=lg]{--_min-item: var(--slotted-grid-min-item-width-lg, 20rem)}[data-ui=grid][data-min-item-width=xl]{--_min-item: var(--slotted-grid-min-item-width-xl, 24rem)}[data-ui=grid][data-align=start]{align-items:start}[data-ui=grid][data-align=center]{align-items:center}[data-ui=grid][data-align=end]{align-items:end}[data-ui=grid][data-align=stretch]{align-items:stretch}[data-ui=grid][data-justify=start]{justify-items:start}[data-ui=grid][data-justify=center]{justify-items:center}[data-ui=grid][data-justify=end]{justify-items:end}[data-ui=grid][data-justify=stretch]{justify-items:stretch}}\n"] }]
52
+ }, styles: ["@layer slotted.components{[data-ui-grid]{--_gap: var(--slotted-space-6, 1rem);--_min-item: var(--slotted-grid-min-item-width-md, 16rem);display:grid;gap:var(--_gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--_min-item)),1fr));min-inline-size:0}[data-ui-grid][data-columns]{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(var(--_min-item),(100% - (var(--slotted-grid-columns, 1) - 1) * var(--_gap)) / var(--slotted-grid-columns, 1))),1fr))}[data-ui-grid][data-gap=\"0\"]{--_gap: 0}[data-ui-grid][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui-grid][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui-grid][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui-grid][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui-grid][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui-grid][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui-grid][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui-grid][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui-grid][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui-grid][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui-grid][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui-grid][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui-grid][data-min-item-width=xs]{--_min-item: var(--slotted-grid-min-item-width-xs, 8rem)}[data-ui-grid][data-min-item-width=sm]{--_min-item: var(--slotted-grid-min-item-width-sm, 12rem)}[data-ui-grid][data-min-item-width=md]{--_min-item: var(--slotted-grid-min-item-width-md, 16rem)}[data-ui-grid][data-min-item-width=lg]{--_min-item: var(--slotted-grid-min-item-width-lg, 20rem)}[data-ui-grid][data-min-item-width=xl]{--_min-item: var(--slotted-grid-min-item-width-xl, 24rem)}[data-ui-grid][data-align=start]{align-items:start}[data-ui-grid][data-align=center]{align-items:center}[data-ui-grid][data-align=end]{align-items:end}[data-ui-grid][data-align=stretch]{align-items:stretch}[data-ui-grid][data-justify=start]{justify-items:start}[data-ui-grid][data-justify=center]{justify-items:center}[data-ui-grid][data-justify=end]{justify-items:end}[data-ui-grid][data-justify=stretch]{justify-items:stretch}}\n"] }]
51
53
  }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], minItemWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minItemWidth", required: false }] }] } });
52
54
 
53
55
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-grid.mjs","sources":["../../grid/src/grid.ts","../../grid/src/slotted-angular-grid.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A step on the space scale. Separation is chosen from the scale rather than\n * stated as a length, so a theme retunes every layout at once and no component\n * invents a rhythm of its own. `0` is the absence of separation.\n */\nexport type GridGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/**\n * A ceiling on the number of tracks, not a promise of them. The grid drops a\n * column whenever keeping it would take a cell below `minItemWidth`.\n */\nexport type GridColumns = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** The narrowest a cell may become before the grid drops a column. */\nexport type GridMinItemWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Across the flow, which for a cell is the block axis. */\nexport type GridAlign = 'start' | 'center' | 'end' | 'stretch';\n\n/** Along the flow, which for a cell is the inline axis. */\nexport type GridJustify = 'start' | 'center' | 'end' | 'stretch';\n\n/**\n * Grid arranges its children across two axes and reflows by measuring itself\n * rather than the viewport, so no breakpoint appears anywhere in the family. It\n * paints nothing and adds no semantics: the element is the one the consumer\n * wrote.\n *\n * It is not the APG grid widget. There is no `role=\"grid\"`, no cell and no\n * arrow-key navigation: this family lays children out, and the children keep\n * whatever semantics they already had.\n *\n * The count travels as a custom property as well as an attribute, because a\n * track function cannot read an integer from an attribute.\n */\n@Component({\n selector: '[slGrid]',\n standalone: true,\n exportAs: 'slGrid',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/grid/grid.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'grid',\n 'data-part': 'root',\n '[attr.data-gap]': 'gap() ?? null',\n '[attr.data-columns]': 'columns() ?? null',\n '[attr.data-min-item-width]': 'minItemWidth() ?? null',\n '[attr.data-align]': 'align() ?? null',\n /* `align` is also an obsolete HTML attribute a browser still honours on a\n div, centring its text; written statically for the input it would stay. */\n '[attr.align]': 'null',\n '[attr.data-justify]': 'justify() ?? null',\n '[style.--slotted-grid-columns]': 'columns() ?? null',\n },\n})\nexport class SlGrid {\n /** Positions a child across the flow, inside its own cell. */\n readonly align = input<GridAlign>();\n /** At most this many tracks. Absent, the grid fits as many as it can. */\n readonly columns = input<GridColumns>();\n /** Separation between cells, as a step on the space scale. */\n readonly gap = input<GridGap>();\n /** Positions a child along the flow, inside its own cell. */\n readonly justify = input<GridJustify>();\n /** The narrowest a cell may become before a column is dropped. */\n readonly minItemWidth = input<GridMinItemWidth>();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAwBA;;;;;;;;;;;;AAYG;MAuBU,MAAM,CAAA;;AAER,IAAA,KAAK,GAAG,KAAK;yFAAa;;AAE1B,IAAA,OAAO,GAAG,KAAK;2FAAe;;AAE9B,IAAA,GAAG,GAAG,KAAK;uFAAW;;AAEtB,IAAA,OAAO,GAAG,KAAK;2FAAe;;AAE9B,IAAA,YAAY,GAAG,KAAK;gGAAoB;uGAVtC,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,wkCAlBP,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ytEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAkB1B,MAAM,EAAA,UAAA,EAAA,CAAA;kBAtBlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,QAAQ,YACR,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,MAAM;AACjB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,eAAe;AAClC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,4BAA4B,EAAE,wBAAwB;AACtD,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC;AAC6E;AAC7E,wBAAA,cAAc,EAAE,MAAM;AACtB,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,gCAAgC,EAAE,mBAAmB;AACtD,qBAAA,EAAA,MAAA,EAAA,CAAA,ytEAAA,CAAA,EAAA;;;ACzDH;;AAEG;;"}
1
+ {"version":3,"file":"slotted-angular-grid.mjs","sources":["../../grid/src/grid.ts","../../grid/src/slotted-angular-grid.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A step on the space scale. Separation is chosen from the scale rather than\n * stated as a length, so a theme retunes every layout at once and no component\n * invents a rhythm of its own. `0` is the absence of separation.\n */\nexport type GridGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/**\n * A ceiling on the number of tracks, not a promise of them. The grid drops a\n * column whenever keeping it would take a cell below `minItemWidth`.\n */\nexport type GridColumns = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** The narrowest a cell may become before the grid drops a column. */\nexport type GridMinItemWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Across the flow, which for a cell is the block axis. */\nexport type GridAlign = 'start' | 'center' | 'end' | 'stretch';\n\n/** Along the flow, which for a cell is the inline axis. */\nexport type GridJustify = 'start' | 'center' | 'end' | 'stretch';\n\n/**\n * Grid arranges its children across two axes and reflows by measuring itself\n * rather than the viewport, so no breakpoint appears anywhere in the family. It\n * paints nothing and adds no semantics: the element is the one the consumer\n * wrote.\n *\n * It is not the APG grid widget. There is no `role=\"grid\"`, no cell and no\n * arrow-key navigation: this family lays children out, and the children keep\n * whatever semantics they already had.\n *\n * The count travels as a custom property as well as an attribute, because a\n * track function cannot read an integer from an attribute.\n */\n@Component({\n selector: '[slGrid]',\n standalone: true,\n exportAs: 'slGrid',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/grid/grid.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'grid',\n 'data-ui-grid': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-gap]': 'gap() ?? null',\n '[attr.data-columns]': 'columns() ?? null',\n '[attr.data-min-item-width]': 'minItemWidth() ?? null',\n '[attr.data-align]': 'align() ?? null',\n /* `align` is also an obsolete HTML attribute a browser still honours on a\n div, centring its text; written statically for the input it would stay. */\n '[attr.align]': 'null',\n '[attr.data-justify]': 'justify() ?? null',\n '[style.--slotted-grid-columns]': 'columns() ?? null',\n },\n})\nexport class SlGrid {\n /** Positions a child across the flow, inside its own cell. */\n readonly align = input<GridAlign>();\n /** At most this many tracks. Absent, the grid fits as many as it can. */\n readonly columns = input<GridColumns>();\n /** Separation between cells, as a step on the space scale. */\n readonly gap = input<GridGap>();\n /** Positions a child along the flow, inside its own cell. */\n readonly justify = input<GridJustify>();\n /** The narrowest a cell may become before a column is dropped. */\n readonly minItemWidth = input<GridMinItemWidth>();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAwBA;;;;;;;;;;;;AAYG;MAyBU,MAAM,CAAA;;AAER,IAAA,KAAK,GAAG,KAAK;yFAAa;;AAE1B,IAAA,OAAO,GAAG,KAAK;2FAAe;;AAE9B,IAAA,GAAG,GAAG,KAAK;uFAAW;;AAEtB,IAAA,OAAO,GAAG,KAAK;2FAAe;;AAE9B,IAAA,YAAY,GAAG,KAAK;gGAAoB;uGAVtC,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,knCApBP,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ytEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAoB1B,MAAM,EAAA,UAAA,EAAA,CAAA;kBAxBlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,QAAQ,YACR,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,MAAM;AACjB,wBAAA,cAAc,EAAE,EAAE;AAClB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,gBAAgB,EAAE,EAAE;AACpB,wBAAA,iBAAiB,EAAE,eAAe;AAClC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,4BAA4B,EAAE,wBAAwB;AACtD,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC;AAC6E;AAC7E,wBAAA,cAAc,EAAE,MAAM;AACtB,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,gCAAgC,EAAE,mBAAmB;AACtD,qBAAA,EAAA,MAAA,EAAA,CAAA,ytEAAA,CAAA,EAAA;;;AC3DH;;AAEG;;"}
@@ -104,15 +104,17 @@ class SlHighlight {
104
104
  }), /* @ts-ignore */
105
105
  ...(ngDevMode ? [{ debugName: "runs" }] : /* istanbul ignore next */ []));
106
106
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlHighlight, isStandalone: true, selector: "[slHighlight]", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, matcher: { classPropertyName: "matcher", publicName: "matcher", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, sensitivity: { classPropertyName: "sensitivity", publicName: "sensitivity", isSignal: true, isRequired: false, transformFunction: null }, occurrences: { classPropertyName: "occurrences", publicName: "occurrences", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "highlight", "data-part": "root" }, properties: { "attr.data-disabled": "disabled() ? \"\" : null" } }, exportAs: ["slHighlight"], ngImport: i0, template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part="match" [attr.data-current]="run.index === current() ? '' : null">{{ run.text }}</mark>} @else {{{ run.text }}}}`, isInline: true, styles: ["@layer slotted.components{[data-ui=highlight] [data-part=match]{background-color:var( --slotted-highlight-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:var(--slotted-radius-none, 0px);color:var(--slotted-highlight-color, var(--slotted-tone-accent-text));font-weight:inherit;letter-spacing:inherit;padding:0;text-decoration-color:var(--slotted-highlight-rule-color, var(--slotted-tone-accent-border));text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thin, 1px);text-underline-offset:var(--slotted-space-1, .125rem)}[data-ui=highlight] [data-part=match][data-current]{background-color:var(--slotted-highlight-current-background, var(--slotted-tone-accent-solid));color:var(--slotted-highlight-current-color, var(--slotted-tone-accent-on-solid));text-decoration-line:none}[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:var(--slotted-highlight-disabled-background, transparent);color:inherit;text-decoration-line:underline}@media(forced-colors:active){[data-ui=highlight] [data-part=match],[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:Mark;color:MarkText;forced-color-adjust:none}[data-ui=highlight] [data-part=match][data-current]{background-color:Highlight;color:HighlightText}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
107
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlHighlight, isStandalone: true, selector: "[slHighlight]", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, matcher: { classPropertyName: "matcher", publicName: "matcher", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, sensitivity: { classPropertyName: "sensitivity", publicName: "sensitivity", isSignal: true, isRequired: false, transformFunction: null }, occurrences: { classPropertyName: "occurrences", publicName: "occurrences", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "highlight", "data-ui-highlight": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-disabled": "disabled() ? \"\" : null" } }, exportAs: ["slHighlight"], ngImport: i0, template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part="match" data-part-match="" [attr.data-current]="run.index === current() ? '' : null">{{ run.text }}</mark>} @else {{{ run.text }}}}`, isInline: true, styles: ["@layer slotted.components{[data-ui-highlight] [data-part-match]{background-color:var( --slotted-highlight-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:var(--slotted-radius-none, 0px);color:var(--slotted-highlight-color, var(--slotted-tone-accent-text));font-weight:inherit;letter-spacing:inherit;padding:0;text-decoration-color:var(--slotted-highlight-rule-color, var(--slotted-tone-accent-border));text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thin, 1px);text-underline-offset:var(--slotted-space-1, .125rem)}[data-ui-highlight] [data-part-match][data-current]{background-color:var(--slotted-highlight-current-background, var(--slotted-tone-accent-solid));color:var(--slotted-highlight-current-color, var(--slotted-tone-accent-on-solid));text-decoration-line:none}[data-ui-highlight]:is([data-disabled],[data-disabled] *) [data-part-match]{background-color:var(--slotted-highlight-disabled-background, transparent);color:inherit;text-decoration-line:underline}@media(forced-colors:active){[data-ui-highlight] [data-part-match],[data-ui-highlight]:is([data-disabled],[data-disabled] *) [data-part-match]{background-color:Mark;color:MarkText;forced-color-adjust:none}[data-ui-highlight] [data-part-match][data-current]{background-color:Highlight;color:HighlightText}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
108
108
  }
109
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHighlight, decorators: [{
110
110
  type: Component,
111
- args: [{ selector: '[slHighlight]', standalone: true, exportAs: 'slHighlight', template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part="match" [attr.data-current]="run.index === current() ? '' : null">{{ run.text }}</mark>} @else {{{ run.text }}}}`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
111
+ args: [{ selector: '[slHighlight]', standalone: true, exportAs: 'slHighlight', template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part="match" data-part-match="" [attr.data-current]="run.index === current() ? '' : null">{{ run.text }}</mark>} @else {{{ run.text }}}}`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
112
112
  'data-ui': 'highlight',
113
+ 'data-ui-highlight': '',
113
114
  'data-part': 'root',
115
+ 'data-part-root': '',
114
116
  '[attr.data-disabled]': 'disabled() ? "" : null',
115
- }, styles: ["@layer slotted.components{[data-ui=highlight] [data-part=match]{background-color:var( --slotted-highlight-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:var(--slotted-radius-none, 0px);color:var(--slotted-highlight-color, var(--slotted-tone-accent-text));font-weight:inherit;letter-spacing:inherit;padding:0;text-decoration-color:var(--slotted-highlight-rule-color, var(--slotted-tone-accent-border));text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thin, 1px);text-underline-offset:var(--slotted-space-1, .125rem)}[data-ui=highlight] [data-part=match][data-current]{background-color:var(--slotted-highlight-current-background, var(--slotted-tone-accent-solid));color:var(--slotted-highlight-current-color, var(--slotted-tone-accent-on-solid));text-decoration-line:none}[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:var(--slotted-highlight-disabled-background, transparent);color:inherit;text-decoration-line:underline}@media(forced-colors:active){[data-ui=highlight] [data-part=match],[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:Mark;color:MarkText;forced-color-adjust:none}[data-ui=highlight] [data-part=match][data-current]{background-color:Highlight;color:HighlightText}}}\n"] }]
117
+ }, styles: ["@layer slotted.components{[data-ui-highlight] [data-part-match]{background-color:var( --slotted-highlight-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:var(--slotted-radius-none, 0px);color:var(--slotted-highlight-color, var(--slotted-tone-accent-text));font-weight:inherit;letter-spacing:inherit;padding:0;text-decoration-color:var(--slotted-highlight-rule-color, var(--slotted-tone-accent-border));text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thin, 1px);text-underline-offset:var(--slotted-space-1, .125rem)}[data-ui-highlight] [data-part-match][data-current]{background-color:var(--slotted-highlight-current-background, var(--slotted-tone-accent-solid));color:var(--slotted-highlight-current-color, var(--slotted-tone-accent-on-solid));text-decoration-line:none}[data-ui-highlight]:is([data-disabled],[data-disabled] *) [data-part-match]{background-color:var(--slotted-highlight-disabled-background, transparent);color:inherit;text-decoration-line:underline}@media(forced-colors:active){[data-ui-highlight] [data-part-match],[data-ui-highlight]:is([data-disabled],[data-disabled] *) [data-part-match]{background-color:Mark;color:MarkText;forced-color-adjust:none}[data-ui-highlight] [data-part-match][data-current]{background-color:Highlight;color:HighlightText}}}\n"] }]
116
118
  }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: false }] }], ranges: [{ type: i0.Input, args: [{ isSignal: true, alias: "ranges", required: false }] }], matcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "matcher", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], sensitivity: [{ type: i0.Input, args: [{ isSignal: true, alias: "sensitivity", required: false }] }], occurrences: [{ type: i0.Input, args: [{ isSignal: true, alias: "occurrences", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
117
119
 
118
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-highlight.mjs","sources":["../../highlight/src/highlight-defaults.ts","../../highlight/src/highlight.ts","../../highlight/src/slotted-angular-highlight.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { HighlightMatchOptions } from '@slotted/core/highlight';\n\nexport type {\n HighlightMatcher,\n HighlightMatchOptions,\n HighlightRange,\n HighlightRun,\n} from '@slotted/core/highlight';\n\nexport type HighlightOccurrences = NonNullable<HighlightMatchOptions['occurrences']>;\nexport type HighlightSensitivity = NonNullable<HighlightMatchOptions['sensitivity']>;\n\n/** What an application sets once for every mark under it. */\nexport interface HighlightDefaults {\n /** BCP 47. `undefined` asks the runtime. */\n locale: string | undefined;\n /** `base`: `resume` finds `Resumé`, as `typeahead` and `createFilter` compare. */\n sensitivity: HighlightSensitivity;\n /** `all`: every place a query appears; `first`: one span per query. */\n occurrences: HighlightOccurrences;\n}\n\nconst FALLBACK: HighlightDefaults = {\n locale: undefined,\n sensitivity: 'base',\n occurrences: 'all',\n};\n\nexport const HIGHLIGHT_DEFAULTS = new InjectionToken<HighlightDefaults>(\n 'slotted highlight defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application decides once which locale its marks compare in, how strict\n * the comparison is, and whether every occurrence is marked. A mark that\n * states any of them itself still wins: an explicit input is never overridden\n * by the token. A host — `combobox`, `select` — passes the locale its filter\n * used, which is the same rule from the other side.\n */\nexport function provideHighlightDefaults(defaults: Partial<HighlightDefaults>) {\n return {\n provide: HIGHLIGHT_DEFAULTS,\n useFactory: (): HighlightDefaults => ({\n locale: defaults.locale ?? FALLBACK.locale,\n sensitivity: defaults.sensitivity ?? FALLBACK.sensitivity,\n occurrences: defaults.occurrences ?? FALLBACK.occurrences,\n }),\n };\n}\n\n/** What a mark compares with here, before it states anything of its own. */\nexport function injectHighlightDefaults(): HighlightDefaults {\n return inject(HIGHLIGHT_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { highlightRuns } from '@slotted/core/highlight';\nimport type { HighlightMatcher, HighlightRange } from '@slotted/core/highlight';\n\nimport { injectHighlightDefaults } from './highlight-defaults';\nimport type { HighlightOccurrences, HighlightSensitivity } from './highlight-defaults';\n\n/**\n * The spans of a text a query found, marked.\n *\n * The component is written on the consumer's own element — the `span` that\n * holds an option's label, the `p` under a find bar — which is the element\n * that holds the text and the reason this binding needs no `render` input:\n * substituting the element is Angular's default. The `mark` inside it is\n * fixed; it is the element the HTML Standard defines for the term searched\n * for inside a result.\n *\n * It is content, not a control: nothing here is focusable and nothing answers\n * a key. What is marked is decided by `@slotted/core/highlight`, the same scan\n * `combobox`'s filter decides with. `text` is a string and the runs are\n * slices of it; nothing is projected, because a `mark` inside projected\n * content would be HTML the family interpreted.\n *\n * Every space in this template is load-bearing: a newline between two nodes\n * collapses into a space, and a space between two runs is a space inside the\n * text.\n */\n@Component({\n selector: '[slHighlight]',\n standalone: true,\n exportAs: 'slHighlight',\n // prettier-ignore\n template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part=\"match\" [attr.data-current]=\"run.index === current() ? '' : null\">{{ run.text }}</mark>} @else {{{ run.text }}}}`,\n styleUrl: '../../../styles/src/highlight/highlight.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'highlight',\n 'data-part': 'root',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class SlHighlight {\n /**\n * The text, whole. It is the only content the family renders: nothing in it\n * is HTML, and a run is a slice of it.\n */\n readonly text = input.required<string>();\n /** One query or several. Empty and whitespace-only entries find nothing. */\n readonly query = input<string | readonly string[] | undefined>(undefined);\n /**\n * Spans already found — by a server, by a fuzzy engine — in the text's own\n * code units. Wins over `query` and `matcher`; normalised like either.\n */\n readonly ranges = input<readonly HighlightRange[] | undefined>(undefined);\n /** Replaces the default matcher. Loses to `ranges`. */\n readonly matcher = input<HighlightMatcher | undefined>(undefined);\n /**\n * The match a find bar is standing on, counting matches only. It is stated,\n * never moved: the family has no keyboard. Out of range marks nothing.\n */\n readonly current = input<number | undefined>(undefined);\n /** Defaults to the provider, then to the runtime's locale. */\n readonly locale = input<string | undefined>(undefined);\n /** Defaults to the provider, then to `base`. */\n readonly sensitivity = input<HighlightSensitivity | undefined>(undefined);\n /** Defaults to the provider, then to `all`. */\n readonly occurrences = input<HighlightOccurrences | undefined>(undefined);\n /**\n * Steps the marks down without claiming the row's semantics. The row above\n * already says it with `data-disabled`, and the sheet reads that too.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectHighlightDefaults();\n\n /** The runs the template renders; a consumer counting matches reads it too. */\n readonly runs = computed(() =>\n highlightRuns(this.text(), {\n locale: this.locale() ?? this.defaults.locale,\n matcher: this.matcher(),\n occurrences: this.occurrences() ?? this.defaults.occurrences,\n query: this.query(),\n ranges: this.ranges(),\n sensitivity: this.sensitivity() ?? this.defaults.sensitivity,\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-highlight.mjs","sources":["../../highlight/src/highlight-defaults.ts","../../highlight/src/highlight.ts","../../highlight/src/slotted-angular-highlight.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { HighlightMatchOptions } from '@slotted/core/highlight';\n\nexport type {\n HighlightMatcher,\n HighlightMatchOptions,\n HighlightRange,\n HighlightRun,\n} from '@slotted/core/highlight';\n\nexport type HighlightOccurrences = NonNullable<HighlightMatchOptions['occurrences']>;\nexport type HighlightSensitivity = NonNullable<HighlightMatchOptions['sensitivity']>;\n\n/** What an application sets once for every mark under it. */\nexport interface HighlightDefaults {\n /** BCP 47. `undefined` asks the runtime. */\n locale: string | undefined;\n /** `base`: `resume` finds `Resumé`, as `typeahead` and `createFilter` compare. */\n sensitivity: HighlightSensitivity;\n /** `all`: every place a query appears; `first`: one span per query. */\n occurrences: HighlightOccurrences;\n}\n\nconst FALLBACK: HighlightDefaults = {\n locale: undefined,\n sensitivity: 'base',\n occurrences: 'all',\n};\n\nexport const HIGHLIGHT_DEFAULTS = new InjectionToken<HighlightDefaults>(\n 'slotted highlight defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application decides once which locale its marks compare in, how strict\n * the comparison is, and whether every occurrence is marked. A mark that\n * states any of them itself still wins: an explicit input is never overridden\n * by the token. A host — `combobox`, `select` — passes the locale its filter\n * used, which is the same rule from the other side.\n */\nexport function provideHighlightDefaults(defaults: Partial<HighlightDefaults>) {\n return {\n provide: HIGHLIGHT_DEFAULTS,\n useFactory: (): HighlightDefaults => ({\n locale: defaults.locale ?? FALLBACK.locale,\n sensitivity: defaults.sensitivity ?? FALLBACK.sensitivity,\n occurrences: defaults.occurrences ?? FALLBACK.occurrences,\n }),\n };\n}\n\n/** What a mark compares with here, before it states anything of its own. */\nexport function injectHighlightDefaults(): HighlightDefaults {\n return inject(HIGHLIGHT_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { highlightRuns } from '@slotted/core/highlight';\nimport type { HighlightMatcher, HighlightRange } from '@slotted/core/highlight';\n\nimport { injectHighlightDefaults } from './highlight-defaults';\nimport type { HighlightOccurrences, HighlightSensitivity } from './highlight-defaults';\n\n/**\n * The spans of a text a query found, marked.\n *\n * The component is written on the consumer's own element — the `span` that\n * holds an option's label, the `p` under a find bar — which is the element\n * that holds the text and the reason this binding needs no `render` input:\n * substituting the element is Angular's default. The `mark` inside it is\n * fixed; it is the element the HTML Standard defines for the term searched\n * for inside a result.\n *\n * It is content, not a control: nothing here is focusable and nothing answers\n * a key. What is marked is decided by `@slotted/core/highlight`, the same scan\n * `combobox`'s filter decides with. `text` is a string and the runs are\n * slices of it; nothing is projected, because a `mark` inside projected\n * content would be HTML the family interpreted.\n *\n * Every space in this template is load-bearing: a newline between two nodes\n * collapses into a space, and a space between two runs is a space inside the\n * text.\n */\n@Component({\n selector: '[slHighlight]',\n standalone: true,\n exportAs: 'slHighlight',\n // prettier-ignore\n template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part=\"match\" data-part-match=\"\" [attr.data-current]=\"run.index === current() ? '' : null\">{{ run.text }}</mark>} @else {{{ run.text }}}}`,\n styleUrl: '../../../styles/src/highlight/highlight.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'highlight',\n 'data-ui-highlight': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class SlHighlight {\n /**\n * The text, whole. It is the only content the family renders: nothing in it\n * is HTML, and a run is a slice of it.\n */\n readonly text = input.required<string>();\n /** One query or several. Empty and whitespace-only entries find nothing. */\n readonly query = input<string | readonly string[] | undefined>(undefined);\n /**\n * Spans already found — by a server, by a fuzzy engine — in the text's own\n * code units. Wins over `query` and `matcher`; normalised like either.\n */\n readonly ranges = input<readonly HighlightRange[] | undefined>(undefined);\n /** Replaces the default matcher. Loses to `ranges`. */\n readonly matcher = input<HighlightMatcher | undefined>(undefined);\n /**\n * The match a find bar is standing on, counting matches only. It is stated,\n * never moved: the family has no keyboard. Out of range marks nothing.\n */\n readonly current = input<number | undefined>(undefined);\n /** Defaults to the provider, then to the runtime's locale. */\n readonly locale = input<string | undefined>(undefined);\n /** Defaults to the provider, then to `base`. */\n readonly sensitivity = input<HighlightSensitivity | undefined>(undefined);\n /** Defaults to the provider, then to `all`. */\n readonly occurrences = input<HighlightOccurrences | undefined>(undefined);\n /**\n * Steps the marks down without claiming the row's semantics. The row above\n * already says it with `data-disabled`, and the sheet reads that too.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectHighlightDefaults();\n\n /** The runs the template renders; a consumer counting matches reads it too. */\n readonly runs = computed(() =>\n highlightRuns(this.text(), {\n locale: this.locale() ?? this.defaults.locale,\n matcher: this.matcher(),\n occurrences: this.occurrences() ?? this.defaults.occurrences,\n query: this.query(),\n ranges: this.ranges(),\n sensitivity: this.sensitivity() ?? this.defaults.sensitivity,\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { createPointerIntent } from '@slotted/core/pointer-intent';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, input, numberAttribute, booleanAttribute, computed, DestroyRef, effect, untracked, forwardRef, Directive, ElementRef, HostAttributeToken, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { SlPopover } from '@slotted/angular/popover';
5
+ import { hostSelectorKey } from '@slotted/core/selector-key';
5
6
  import { tabbables } from '@slotted/core/focus';
6
7
 
7
8
  /**
@@ -184,8 +185,8 @@ class SlHoverCardTrigger {
184
185
  it, as `menu-trigger.ts` records for two directives on one element. */
185
186
  writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });
186
187
  writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });
187
- ui = this.writtenUi ?? 'hover-card';
188
- part = this.writtenPart ?? 'root';
188
+ ui = hostSelectorKey(this.element, 'ui', this.writtenUi ?? 'hover-card');
189
+ part = hostSelectorKey(this.element, 'part', this.writtenPart ?? 'root');
189
190
  /** Whether this trigger is the one the open card hangs from. */
190
191
  anchors = computed(() => this.card.triggerNode() === this.element, /* @ts-ignore */
191
192
  ...(ngDevMode ? [{ debugName: "anchors" }] : /* istanbul ignore next */ []));
@@ -297,7 +298,7 @@ class SlHoverCardTrigger {
297
298
  this.card.toggle(true, 'pointer', event);
298
299
  }
299
300
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHoverCardTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component });
300
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: SlHoverCardTrigger, isStandalone: true, selector: "[slHoverCardTrigger]", host: { listeners: { "pointerenter": "onPointerEnter($event)", "pointerleave": "onPointerLeave($event)", "pointerdown": "onPointerDown($event)", "click": "onClick($event)", "focus": "onFocus($event)", "blur": "onBlur($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.data-ui": "ui", "attr.data-part": "part", "attr.data-open": "open() ? \"\" : null", "attr.aria-haspopup": "card.resolvedNavigable() ? \"dialog\" : null", "attr.aria-expanded": "card.resolvedNavigable() ? open() : null", "attr.aria-controls": "card.resolvedNavigable() && open() ? card.contentId : null" } }, exportAs: ["slHoverCardTrigger"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=hover-card]{--_text: var(--slotted-hover-card-color, var(--slotted-tone-accent-text, LinkText));--_underline: var( --slotted-hover-card-underline-color, color-mix(in oklab, var(--_text) 40%, transparent) );--_tint: var( --slotted-hover-card-tint, color-mix( in oklab, var(--_text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );--_halo: var(--slotted-hover-card-halo, var(--slotted-space-1, .125rem));border-radius:var(--slotted-hover-card-radius, var(--slotted-radius-xs, 2px));color:var(--_text);text-decoration-color:var(--_underline);text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=hover-card]:not([data-disabled]):hover{text-decoration-color:currentColor}[data-ui=hover-card][data-open]{background-color:var(--_tint);box-shadow:0 0 0 var(--_halo) var(--_tint);text-decoration-color:currentColor}[data-ui=hover-card]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@media(forced-colors:active){[data-ui=hover-card][data-open]{text-decoration-thickness:var(--slotted-border-width-thick, 2px)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
301
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: SlHoverCardTrigger, isStandalone: true, selector: "[slHoverCardTrigger]", host: { listeners: { "pointerenter": "onPointerEnter($event)", "pointerleave": "onPointerLeave($event)", "pointerdown": "onPointerDown($event)", "click": "onClick($event)", "focus": "onFocus($event)", "blur": "onBlur($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.data-ui": "ui", "attr.data-part": "part", "attr.data-open": "open() ? \"\" : null", "attr.aria-haspopup": "card.resolvedNavigable() ? \"dialog\" : null", "attr.aria-expanded": "card.resolvedNavigable() ? open() : null", "attr.aria-controls": "card.resolvedNavigable() && open() ? card.contentId : null" } }, exportAs: ["slHoverCardTrigger"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-hover-card]{--_text: var(--slotted-hover-card-color, var(--slotted-tone-accent-text, LinkText));--_underline: var( --slotted-hover-card-underline-color, color-mix(in oklab, var(--_text) 40%, transparent) );--_tint: var( --slotted-hover-card-tint, color-mix( in oklab, var(--_text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );--_halo: var(--slotted-hover-card-halo, var(--slotted-space-1, .125rem));border-radius:var(--slotted-hover-card-radius, var(--slotted-radius-xs, 2px));color:var(--_text);text-decoration-color:var(--_underline);text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-hover-card]:not([data-disabled]):hover{text-decoration-color:currentColor}[data-ui-hover-card][data-open]{background-color:var(--_tint);box-shadow:0 0 0 var(--_halo) var(--_tint);text-decoration-color:currentColor}[data-ui-hover-card]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@media(forced-colors:active){[data-ui-hover-card][data-open]{text-decoration-thickness:var(--slotted-border-width-thick, 2px)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
301
302
  }
302
303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHoverCardTrigger, decorators: [{
303
304
  type: Component,
@@ -315,7 +316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
315
316
  '(focus)': 'onFocus($event)',
316
317
  '(blur)': 'onBlur($event)',
317
318
  '(keydown)': 'onKeyDown($event)',
318
- }, styles: ["@layer slotted.components{[data-ui=hover-card]{--_text: var(--slotted-hover-card-color, var(--slotted-tone-accent-text, LinkText));--_underline: var( --slotted-hover-card-underline-color, color-mix(in oklab, var(--_text) 40%, transparent) );--_tint: var( --slotted-hover-card-tint, color-mix( in oklab, var(--_text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );--_halo: var(--slotted-hover-card-halo, var(--slotted-space-1, .125rem));border-radius:var(--slotted-hover-card-radius, var(--slotted-radius-xs, 2px));color:var(--_text);text-decoration-color:var(--_underline);text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=hover-card]:not([data-disabled]):hover{text-decoration-color:currentColor}[data-ui=hover-card][data-open]{background-color:var(--_tint);box-shadow:0 0 0 var(--_halo) var(--_tint);text-decoration-color:currentColor}[data-ui=hover-card]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@media(forced-colors:active){[data-ui=hover-card][data-open]{text-decoration-thickness:var(--slotted-border-width-thick, 2px)}}}\n"] }]
319
+ }, styles: ["@layer slotted.components{[data-ui-hover-card]{--_text: var(--slotted-hover-card-color, var(--slotted-tone-accent-text, LinkText));--_underline: var( --slotted-hover-card-underline-color, color-mix(in oklab, var(--_text) 40%, transparent) );--_tint: var( --slotted-hover-card-tint, color-mix( in oklab, var(--_text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );--_halo: var(--slotted-hover-card-halo, var(--slotted-space-1, .125rem));border-radius:var(--slotted-hover-card-radius, var(--slotted-radius-xs, 2px));color:var(--_text);text-decoration-color:var(--_underline);text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui-hover-card]:not([data-disabled]):hover{text-decoration-color:currentColor}[data-ui-hover-card][data-open]{background-color:var(--_tint);box-shadow:0 0 0 var(--_halo) var(--_tint);text-decoration-color:currentColor}[data-ui-hover-card]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@media(forced-colors:active){[data-ui-hover-card][data-open]{text-decoration-thickness:var(--slotted-border-width-thick, 2px)}}}\n"] }]
319
320
  }], ctorParameters: () => [] });
320
321
 
321
322
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-hover-card.mjs","sources":["../../hover-card/src/hover-card-defaults.ts","../../hover-card/src/hover-card.ts","../../hover-card/src/hover-card-trigger.ts","../../hover-card/src/slotted-angular-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nexport interface HoverCardDefaults {\n /** Milliseconds the pointer rests on the trigger before the card opens. */\n openDelay: number;\n /** Milliseconds after the pointer has left trigger and card before it closes. */\n closeDelay: number;\n /**\n * Whether the card holds controls a keyboard reader can reach. On, `Tab`\n * from the open trigger enters it, the panel is a `dialog` and the trigger\n * says so; off, the card is a `presentation` the link never announces.\n */\n navigable: boolean;\n}\n\n/**\n * 600 to open is the number `tooltip` holds and the one Base UI reached; 300\n * to close is Radix's and Base UI's. The card is not navigable until a\n * consumer says it holds controls. The panel's own defaults are the popover's,\n * and `providePopoverDefaults()` is where an application sets those.\n */\nconst FALLBACK: HoverCardDefaults = {\n closeDelay: 300,\n navigable: false,\n openDelay: 600,\n};\n\nexport const HOVER_CARD_DEFAULTS = new InjectionToken<HoverCardDefaults>(\n 'slotted hover-card defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/** The decisions an application takes once, in its bootstrap. */\nexport function provideHoverCardDefaults(defaults: Partial<HoverCardDefaults>) {\n return {\n provide: HOVER_CARD_DEFAULTS,\n useFactory: (): HoverCardDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectHoverCardDefaults(): HoverCardDefaults {\n return inject(HOVER_CARD_DEFAULTS);\n}\n","import { createPointerIntent } from '@slotted/core/pointer-intent';\nimport type { PointerIntentHandle } from '@slotted/core/pointer-intent';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n forwardRef,\n inject,\n input,\n numberAttribute,\n untracked,\n} from '@angular/core';\nimport { SlPopover } from '@slotted/angular/popover';\nimport type { PopoverOpenReason } from '@slotted/angular/popover';\n\nimport { injectHoverCardDefaults } from './hover-card-defaults';\n\n/**\n * The popover's reasons, plus `blur`: focus leaving the trigger is the one\n * way this family closes that the popover never does.\n */\nexport type HoverCardOpenReason = PopoverOpenReason | 'blur';\n\n/**\n * The halo the open mark draws past the link's box, plus the same again of\n * air: the popover puts its arrow's tip a pixel off the anchor, which is right\n * for a button and touched the halo on a word.\n */\nconst SIDE_OFFSET = 4;\n\n/**\n * A preview of a link or a person, opened by hover and by focus.\n *\n * The card is `slPopover` behind a trigger the popover does not have. The\n * directive *is* a popover — it extends `SlPopover` and provides itself as\n * one, so every `slPopover*` part written inside it reaches the card — and it\n * decides three things the popover leaves open: focus is never taken on open,\n * the panel's role follows `navigable`, and the layer stands off the link by\n * the halo the open mark draws. `slPopoverLayer`, `slPopoverBody` and the rest\n * are the popover's own, imported as they are.\n */\n@Directive({\n selector: '[slHoverCard]',\n standalone: true,\n exportAs: 'slHoverCard',\n providers: [{ provide: SlPopover, useExisting: forwardRef(() => SlHoverCard) }],\n})\nexport class SlHoverCard extends SlPopover {\n readonly openDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly closeDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly navigable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : booleanAttribute(given)),\n });\n\n private readonly cardDefaults = injectHoverCardDefaults();\n\n readonly resolvedOpenDelay = computed(() => this.openDelay() ?? this.cardDefaults.openDelay);\n readonly resolvedCloseDelay = computed(() => this.closeDelay() ?? this.cardDefaults.closeDelay);\n readonly resolvedNavigable = computed(\n () => (this.navigable() ?? this.cardDefaults.navigable) === true,\n );\n\n /** The card never takes focus: the reader's focus stays on the link. */\n override readonly resolvedAutoFocus = computed(() => false);\n /** A card the keyboard cannot enter is not a dialog nobody is told about. */\n override readonly contentRole = computed<string>(() =>\n this.resolvedNavigable() ? 'dialog' : 'presentation',\n );\n override readonly resolvedSideOffset = computed(() => this.sideOffset() ?? SIDE_OFFSET);\n\n /** Focus the family put back on the trigger must not reopen the card. */\n suppressFocusOpen = false;\n\n private timer: ReturnType<typeof setTimeout> | undefined;\n private intent: PointerIntentHandle | null = null;\n\n constructor() {\n super();\n const destroyRef = inject(DestroyRef);\n\n /**\n * The pointer on the card keeps it open, and leaving the card starts the\n * close. The listeners go on the layer — the padded box around the panel —\n * as soon as the popover has built it.\n */\n effect((onCleanup) => {\n const panel = this.contentNode();\n if (panel === null) return;\n const layer = panel.parentElement ?? panel;\n const enter = (event: Event) => {\n if ((event as PointerEvent).pointerType === 'touch') return;\n untracked(() => this.cancelPending());\n };\n const leave = (event: Event) => {\n if ((event as PointerEvent).pointerType === 'touch') return;\n untracked(() => this.closeAfterDelay(event));\n };\n layer.addEventListener('pointerenter', enter);\n layer.addEventListener('pointerleave', leave);\n onCleanup(() => {\n layer.removeEventListener('pointerenter', enter);\n layer.removeEventListener('pointerleave', leave);\n });\n });\n\n destroyRef.onDestroy(() => this.cancelPending());\n }\n\n /** Asks to open or close. A close the keyboard caused holds the reopening back. */\n override toggle(next: boolean, reason: HoverCardOpenReason, source?: Event) {\n this.cancelPending();\n super.toggle(next, reason as PopoverOpenReason, source);\n if (!next && !this.isOpen() && (reason === 'escape' || reason === 'keyboard')) {\n this.suppressFocusOpen = true;\n }\n }\n\n /** Cancels a pending open or close, and the grace area. */\n cancelPending() {\n if (this.timer !== undefined) clearTimeout(this.timer);\n this.timer = undefined;\n this.intent?.destroy();\n this.intent = null;\n }\n\n /** Opens after `openDelay`, unless something cancels it first. */\n openAfterDelay(source?: Event) {\n this.cancelPending();\n this.timer = setTimeout(() => this.toggle(true, 'pointer', source), this.resolvedOpenDelay());\n }\n\n /** Closes after `closeDelay`, unless the pointer comes back first. */\n closeAfterDelay(source?: Event) {\n this.cancelPending();\n this.timer = setTimeout(() => this.toggle(false, 'pointer', source), this.resolvedCloseDelay());\n }\n\n /**\n * The grace area: the card stays while the pointer's path from `origin`\n * still points into the card, and closes once it does not — unless the\n * pointer turns out to be on the trigger or the card after all.\n */\n graceToward(origin: () => DOMRect | null, stillOver: () => boolean, source?: Event) {\n this.cancelPending();\n this.intent = createPointerIntent({\n origin,\n target: () => {\n const panel = this.contentNode();\n return (panel?.parentElement ?? panel)?.getBoundingClientRect() ?? null;\n },\n timeout: this.resolvedCloseDelay(),\n onSettled: () => {\n this.intent = null;\n if (stillOver()) return;\n this.toggle(false, 'pointer', source);\n },\n });\n }\n}\n","import { tabbables } from '@slotted/core/focus';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlHoverCard } from './hover-card';\n\n/**\n * The link the card is about. It is the family's one part: the element painted\n * while the card shows, and the anchor the card is measured against — many\n * triggers may share one `slHoverCard`, and the one that starts an opening\n * registers itself.\n *\n * A component rather than a directive, as `slLink` and `slMenuItem` are,\n * because a component is what can carry `styleUrl`: this is where the family's\n * authored stylesheet enters an Angular application, and the trigger has to be\n * painted before any card has opened.\n *\n * The wiring — `aria-haspopup=\"dialog\"`, `aria-expanded`, `aria-controls` — is\n * written only when the card is navigable. A card the keyboard cannot enter is\n * not a popup the link has, and saying so would be a lie a screen reader\n * repeats.\n */\n@Component({\n selector: '[slHoverCardTrigger]',\n standalone: true,\n exportAs: 'slHoverCardTrigger',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/hover-card/hover-card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.data-ui]': 'ui',\n '[attr.data-part]': 'part',\n '[attr.data-open]': 'open() ? \"\" : null',\n '[attr.aria-haspopup]': 'card.resolvedNavigable() ? \"dialog\" : null',\n '[attr.aria-expanded]': 'card.resolvedNavigable() ? open() : null',\n '[attr.aria-controls]': 'card.resolvedNavigable() && open() ? card.contentId : null',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(click)': 'onClick($event)',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlHoverCardTrigger {\n protected readonly card = inject(SlHoverCard);\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n /* A host that already carries an identity — `a[slLink]` cannot, since two\n components do not share an element, but a consumer's own part can — keeps\n it, as `menu-trigger.ts` records for two directives on one element. */\n private readonly writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });\n private readonly writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });\n protected readonly ui = this.writtenUi ?? 'hover-card';\n protected readonly part = this.writtenPart ?? 'root';\n\n /** Whether this trigger is the one the open card hangs from. */\n protected readonly anchors = computed(() => this.card.triggerNode() === this.element);\n protected readonly open = computed(() => this.card.isOpen() && this.anchors());\n\n private tapped = false;\n\n constructor() {\n /* The first trigger to mount is the anchor until another takes it. */\n afterNextRender(() => {\n if (this.card.triggerNode() === null) this.card.triggerNode.set(this.element);\n });\n }\n\n private claim() {\n if (this.card.triggerNode() !== this.element) this.card.triggerNode.set(this.element);\n }\n\n private layer(): HTMLElement | null {\n const panel = this.card.contentNode();\n return panel?.parentElement ?? panel;\n }\n\n protected onPointerEnter(source: Event) {\n const event = source as PointerEvent;\n if (this.card.disabled() || event.pointerType === 'touch') return;\n this.claim();\n if (this.card.isOpen() && this.anchors()) {\n this.card.cancelPending();\n return;\n }\n this.card.openAfterDelay(event);\n }\n\n /**\n * Leaving the trigger with the card open starts the grace: the card stays\n * while the pointer's own path still points into it, and closes after\n * `closeDelay` once the pointer has parked somewhere else. Leaving with an\n * open still pending cancels the open.\n */\n protected onPointerLeave(source: Event) {\n const event = source as PointerEvent;\n if (event.pointerType === 'touch') return;\n if (!this.card.isOpen() || !this.anchors()) {\n this.card.cancelPending();\n return;\n }\n this.card.graceToward(\n () => this.element.getBoundingClientRect(),\n () => this.element.matches(':hover') || (this.layer()?.matches(':hover') ?? false),\n event,\n );\n }\n\n /**\n * `:focus-visible` rather than every focus: a press that focuses a link is a\n * navigation, not a request for its preview — and focus the family itself\n * put back after Escape or a focus guard must not reopen the card.\n */\n protected onFocus(event: Event) {\n if (this.card.disabled()) return;\n if (this.card.suppressFocusOpen) return;\n if (!this.element.matches(':focus-visible')) return;\n this.claim();\n this.card.toggle(true, 'keyboard', event);\n }\n\n protected onBlur(source: Event) {\n const event = source as FocusEvent;\n this.card.suppressFocusOpen = false;\n if (!this.card.isOpen() || !this.anchors()) return;\n const next = event.relatedTarget;\n if (next instanceof Node && this.layer()?.contains(next)) return;\n this.card.toggle(false, 'blur', event);\n }\n\n /**\n * `Tab` on the open trigger enters a navigable card, which lives at the end\n * of the document and would otherwise never be reached. The popover's focus\n * guards bring focus back out past either end.\n */\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n if (!this.card.resolvedNavigable() || !this.card.isOpen() || !this.anchors()) return;\n if (event.key !== 'Tab' || event.shiftKey) return;\n const panel = this.card.contentNode();\n if (panel === null) return;\n const [first] = tabbables(panel);\n if (first === undefined) return;\n event.preventDefault();\n first.focus();\n }\n\n /**\n * There is no hover on a coarse pointer. A tap on a closed trigger opens the\n * card and does not follow the link; a tap on an open one follows it.\n */\n protected onPointerDown(source: Event) {\n this.tapped = (source as PointerEvent).pointerType === 'touch';\n }\n\n protected onClick(event: Event) {\n if (!this.tapped) return;\n this.tapped = false;\n if (this.card.disabled() || (this.card.isOpen() && this.anchors())) return;\n event.preventDefault();\n this.claim();\n this.card.toggle(true, 'pointer', event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-hover-card.mjs","sources":["../../hover-card/src/hover-card-defaults.ts","../../hover-card/src/hover-card.ts","../../hover-card/src/hover-card-trigger.ts","../../hover-card/src/slotted-angular-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nexport interface HoverCardDefaults {\n /** Milliseconds the pointer rests on the trigger before the card opens. */\n openDelay: number;\n /** Milliseconds after the pointer has left trigger and card before it closes. */\n closeDelay: number;\n /**\n * Whether the card holds controls a keyboard reader can reach. On, `Tab`\n * from the open trigger enters it, the panel is a `dialog` and the trigger\n * says so; off, the card is a `presentation` the link never announces.\n */\n navigable: boolean;\n}\n\n/**\n * 600 to open is the number `tooltip` holds and the one Base UI reached; 300\n * to close is Radix's and Base UI's. The card is not navigable until a\n * consumer says it holds controls. The panel's own defaults are the popover's,\n * and `providePopoverDefaults()` is where an application sets those.\n */\nconst FALLBACK: HoverCardDefaults = {\n closeDelay: 300,\n navigable: false,\n openDelay: 600,\n};\n\nexport const HOVER_CARD_DEFAULTS = new InjectionToken<HoverCardDefaults>(\n 'slotted hover-card defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/** The decisions an application takes once, in its bootstrap. */\nexport function provideHoverCardDefaults(defaults: Partial<HoverCardDefaults>) {\n return {\n provide: HOVER_CARD_DEFAULTS,\n useFactory: (): HoverCardDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectHoverCardDefaults(): HoverCardDefaults {\n return inject(HOVER_CARD_DEFAULTS);\n}\n","import { createPointerIntent } from '@slotted/core/pointer-intent';\nimport type { PointerIntentHandle } from '@slotted/core/pointer-intent';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n forwardRef,\n inject,\n input,\n numberAttribute,\n untracked,\n} from '@angular/core';\nimport { SlPopover } from '@slotted/angular/popover';\nimport type { PopoverOpenReason } from '@slotted/angular/popover';\n\nimport { injectHoverCardDefaults } from './hover-card-defaults';\n\n/**\n * The popover's reasons, plus `blur`: focus leaving the trigger is the one\n * way this family closes that the popover never does.\n */\nexport type HoverCardOpenReason = PopoverOpenReason | 'blur';\n\n/**\n * The halo the open mark draws past the link's box, plus the same again of\n * air: the popover puts its arrow's tip a pixel off the anchor, which is right\n * for a button and touched the halo on a word.\n */\nconst SIDE_OFFSET = 4;\n\n/**\n * A preview of a link or a person, opened by hover and by focus.\n *\n * The card is `slPopover` behind a trigger the popover does not have. The\n * directive *is* a popover — it extends `SlPopover` and provides itself as\n * one, so every `slPopover*` part written inside it reaches the card — and it\n * decides three things the popover leaves open: focus is never taken on open,\n * the panel's role follows `navigable`, and the layer stands off the link by\n * the halo the open mark draws. `slPopoverLayer`, `slPopoverBody` and the rest\n * are the popover's own, imported as they are.\n */\n@Directive({\n selector: '[slHoverCard]',\n standalone: true,\n exportAs: 'slHoverCard',\n providers: [{ provide: SlPopover, useExisting: forwardRef(() => SlHoverCard) }],\n})\nexport class SlHoverCard extends SlPopover {\n readonly openDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly closeDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly navigable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : booleanAttribute(given)),\n });\n\n private readonly cardDefaults = injectHoverCardDefaults();\n\n readonly resolvedOpenDelay = computed(() => this.openDelay() ?? this.cardDefaults.openDelay);\n readonly resolvedCloseDelay = computed(() => this.closeDelay() ?? this.cardDefaults.closeDelay);\n readonly resolvedNavigable = computed(\n () => (this.navigable() ?? this.cardDefaults.navigable) === true,\n );\n\n /** The card never takes focus: the reader's focus stays on the link. */\n override readonly resolvedAutoFocus = computed(() => false);\n /** A card the keyboard cannot enter is not a dialog nobody is told about. */\n override readonly contentRole = computed<string>(() =>\n this.resolvedNavigable() ? 'dialog' : 'presentation',\n );\n override readonly resolvedSideOffset = computed(() => this.sideOffset() ?? SIDE_OFFSET);\n\n /** Focus the family put back on the trigger must not reopen the card. */\n suppressFocusOpen = false;\n\n private timer: ReturnType<typeof setTimeout> | undefined;\n private intent: PointerIntentHandle | null = null;\n\n constructor() {\n super();\n const destroyRef = inject(DestroyRef);\n\n /**\n * The pointer on the card keeps it open, and leaving the card starts the\n * close. The listeners go on the layer — the padded box around the panel —\n * as soon as the popover has built it.\n */\n effect((onCleanup) => {\n const panel = this.contentNode();\n if (panel === null) return;\n const layer = panel.parentElement ?? panel;\n const enter = (event: Event) => {\n if ((event as PointerEvent).pointerType === 'touch') return;\n untracked(() => this.cancelPending());\n };\n const leave = (event: Event) => {\n if ((event as PointerEvent).pointerType === 'touch') return;\n untracked(() => this.closeAfterDelay(event));\n };\n layer.addEventListener('pointerenter', enter);\n layer.addEventListener('pointerleave', leave);\n onCleanup(() => {\n layer.removeEventListener('pointerenter', enter);\n layer.removeEventListener('pointerleave', leave);\n });\n });\n\n destroyRef.onDestroy(() => this.cancelPending());\n }\n\n /** Asks to open or close. A close the keyboard caused holds the reopening back. */\n override toggle(next: boolean, reason: HoverCardOpenReason, source?: Event) {\n this.cancelPending();\n super.toggle(next, reason as PopoverOpenReason, source);\n if (!next && !this.isOpen() && (reason === 'escape' || reason === 'keyboard')) {\n this.suppressFocusOpen = true;\n }\n }\n\n /** Cancels a pending open or close, and the grace area. */\n cancelPending() {\n if (this.timer !== undefined) clearTimeout(this.timer);\n this.timer = undefined;\n this.intent?.destroy();\n this.intent = null;\n }\n\n /** Opens after `openDelay`, unless something cancels it first. */\n openAfterDelay(source?: Event) {\n this.cancelPending();\n this.timer = setTimeout(() => this.toggle(true, 'pointer', source), this.resolvedOpenDelay());\n }\n\n /** Closes after `closeDelay`, unless the pointer comes back first. */\n closeAfterDelay(source?: Event) {\n this.cancelPending();\n this.timer = setTimeout(() => this.toggle(false, 'pointer', source), this.resolvedCloseDelay());\n }\n\n /**\n * The grace area: the card stays while the pointer's path from `origin`\n * still points into the card, and closes once it does not — unless the\n * pointer turns out to be on the trigger or the card after all.\n */\n graceToward(origin: () => DOMRect | null, stillOver: () => boolean, source?: Event) {\n this.cancelPending();\n this.intent = createPointerIntent({\n origin,\n target: () => {\n const panel = this.contentNode();\n return (panel?.parentElement ?? panel)?.getBoundingClientRect() ?? null;\n },\n timeout: this.resolvedCloseDelay(),\n onSettled: () => {\n this.intent = null;\n if (stillOver()) return;\n this.toggle(false, 'pointer', source);\n },\n });\n }\n}\n","import { hostSelectorKey } from '@slotted/core/selector-key';\nimport { tabbables } from '@slotted/core/focus';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlHoverCard } from './hover-card';\n\n/**\n * The link the card is about. It is the family's one part: the element painted\n * while the card shows, and the anchor the card is measured against — many\n * triggers may share one `slHoverCard`, and the one that starts an opening\n * registers itself.\n *\n * A component rather than a directive, as `slLink` and `slMenuItem` are,\n * because a component is what can carry `styleUrl`: this is where the family's\n * authored stylesheet enters an Angular application, and the trigger has to be\n * painted before any card has opened.\n *\n * The wiring — `aria-haspopup=\"dialog\"`, `aria-expanded`, `aria-controls` — is\n * written only when the card is navigable. A card the keyboard cannot enter is\n * not a popup the link has, and saying so would be a lie a screen reader\n * repeats.\n */\n@Component({\n selector: '[slHoverCardTrigger]',\n standalone: true,\n exportAs: 'slHoverCardTrigger',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/hover-card/hover-card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.data-ui]': 'ui',\n '[attr.data-part]': 'part',\n '[attr.data-open]': 'open() ? \"\" : null',\n '[attr.aria-haspopup]': 'card.resolvedNavigable() ? \"dialog\" : null',\n '[attr.aria-expanded]': 'card.resolvedNavigable() ? open() : null',\n '[attr.aria-controls]': 'card.resolvedNavigable() && open() ? card.contentId : null',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(click)': 'onClick($event)',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlHoverCardTrigger {\n protected readonly card = inject(SlHoverCard);\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n /* A host that already carries an identity — `a[slLink]` cannot, since two\n components do not share an element, but a consumer's own part can — keeps\n it, as `menu-trigger.ts` records for two directives on one element. */\n private readonly writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });\n private readonly writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });\n protected readonly ui = hostSelectorKey(this.element, 'ui', this.writtenUi ?? 'hover-card');\n protected readonly part = hostSelectorKey(this.element, 'part', this.writtenPart ?? 'root');\n\n /** Whether this trigger is the one the open card hangs from. */\n protected readonly anchors = computed(() => this.card.triggerNode() === this.element);\n protected readonly open = computed(() => this.card.isOpen() && this.anchors());\n\n private tapped = false;\n\n constructor() {\n /* The first trigger to mount is the anchor until another takes it. */\n afterNextRender(() => {\n if (this.card.triggerNode() === null) this.card.triggerNode.set(this.element);\n });\n }\n\n private claim() {\n if (this.card.triggerNode() !== this.element) this.card.triggerNode.set(this.element);\n }\n\n private layer(): HTMLElement | null {\n const panel = this.card.contentNode();\n return panel?.parentElement ?? panel;\n }\n\n protected onPointerEnter(source: Event) {\n const event = source as PointerEvent;\n if (this.card.disabled() || event.pointerType === 'touch') return;\n this.claim();\n if (this.card.isOpen() && this.anchors()) {\n this.card.cancelPending();\n return;\n }\n this.card.openAfterDelay(event);\n }\n\n /**\n * Leaving the trigger with the card open starts the grace: the card stays\n * while the pointer's own path still points into it, and closes after\n * `closeDelay` once the pointer has parked somewhere else. Leaving with an\n * open still pending cancels the open.\n */\n protected onPointerLeave(source: Event) {\n const event = source as PointerEvent;\n if (event.pointerType === 'touch') return;\n if (!this.card.isOpen() || !this.anchors()) {\n this.card.cancelPending();\n return;\n }\n this.card.graceToward(\n () => this.element.getBoundingClientRect(),\n () => this.element.matches(':hover') || (this.layer()?.matches(':hover') ?? false),\n event,\n );\n }\n\n /**\n * `:focus-visible` rather than every focus: a press that focuses a link is a\n * navigation, not a request for its preview — and focus the family itself\n * put back after Escape or a focus guard must not reopen the card.\n */\n protected onFocus(event: Event) {\n if (this.card.disabled()) return;\n if (this.card.suppressFocusOpen) return;\n if (!this.element.matches(':focus-visible')) return;\n this.claim();\n this.card.toggle(true, 'keyboard', event);\n }\n\n protected onBlur(source: Event) {\n const event = source as FocusEvent;\n this.card.suppressFocusOpen = false;\n if (!this.card.isOpen() || !this.anchors()) return;\n const next = event.relatedTarget;\n if (next instanceof Node && this.layer()?.contains(next)) return;\n this.card.toggle(false, 'blur', event);\n }\n\n /**\n * `Tab` on the open trigger enters a navigable card, which lives at the end\n * of the document and would otherwise never be reached. The popover's focus\n * guards bring focus back out past either end.\n */\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n if (!this.card.resolvedNavigable() || !this.card.isOpen() || !this.anchors()) return;\n if (event.key !== 'Tab' || event.shiftKey) return;\n const panel = this.card.contentNode();\n if (panel === null) return;\n const [first] = tabbables(panel);\n if (first === undefined) return;\n event.preventDefault();\n first.focus();\n }\n\n /**\n * There is no hover on a coarse pointer. A tap on a closed trigger opens the\n * card and does not follow the link; a tap on an open one follows it.\n */\n protected onPointerDown(source: Event) {\n this.tapped = (source as PointerEvent).pointerType === 'touch';\n }\n\n protected onClick(event: Event) {\n if (!this.tapped) return;\n this.tapped = false;\n if (this.card.disabled() || (this.card.isOpen() && this.anchors())) return;\n event.preventDefault();\n this.claim();\n this.card.toggle(true, 'pointer', event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ class SlGlyph {
42
42
  }, /* @ts-ignore */
43
43
  ...(ngDevMode ? [{ debugName: "transform" }] : /* istanbul ignore next */ []));
44
44
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlGlyph, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlGlyph, isStandalone: true, selector: "svg[slGlyph]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, solid: { classPropertyName: "solid", publicName: "solid", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true", "focusable": "false", "data-part": "glyph" }, properties: { "attr.data-glyph": "name()", "attr.viewBox": "viewBox", "attr.data-solid": "solid() ? '' : null", "attr.fill": "solid() ? null : stroked() ? 'none' : 'currentColor'", "attr.stroke": "!solid() && stroked() ? 'currentColor' : null", "attr.stroke-width": "!solid() && stroked() ? drawing().strokeWidth : null", "attr.stroke-linecap": "!solid() && stroked() ? 'round' : null", "attr.stroke-linejoin": "!solid() && stroked() ? 'round' : null" } }, ngImport: i0, template: `@if (solid()) {
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlGlyph, isStandalone: true, selector: "svg[slGlyph]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, solid: { classPropertyName: "solid", publicName: "solid", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true", "focusable": "false", "data-part": "glyph", "data-part-glyph": "" }, properties: { "attr.data-glyph": "name()", "attr.viewBox": "viewBox", "attr.data-solid": "solid() ? '' : null", "attr.fill": "solid() ? null : stroked() ? 'none' : 'currentColor'", "attr.stroke": "!solid() && stroked() ? 'currentColor' : null", "attr.stroke-width": "!solid() && stroked() ? drawing().strokeWidth : null", "attr.stroke-linecap": "!solid() && stroked() ? 'round' : null", "attr.stroke-linejoin": "!solid() && stroked() ? 'round' : null" } }, ngImport: i0, template: `@if (solid()) {
46
46
  <svg:defs>
47
47
  <svg:mask
48
48
  [attr.id]="maskId"
@@ -137,6 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
137
137
  'aria-hidden': 'true',
138
138
  focusable: 'false',
139
139
  'data-part': 'glyph',
140
+ 'data-part-glyph': '',
140
141
  '[attr.data-glyph]': 'name()',
141
142
  '[attr.viewBox]': 'viewBox',
142
143
  '[attr.data-solid]': "solid() ? '' : null",
@@ -208,20 +209,22 @@ class SlIcon {
208
209
  toneAttribute = computed(() => toneAttribute(this.tone()), /* @ts-ignore */
209
210
  ...(ngDevMode ? [{ debugName: "toneAttribute" }] : /* istanbul ignore next */ []));
210
211
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlIcon, isStandalone: true, selector: "[slIcon]", inputs: { directional: { classPropertyName: "directional", publicName: "directional", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "icon", "data-part": "root" }, properties: { "attr.data-size": "size() ?? null", "attr.data-tone": "toneAttribute()", "attr.data-directional": "directional() ? \"\" : null", "attr.role": "role()", "attr.aria-label": "ariaLabel()", "attr.aria-hidden": "named() ? null : \"true\"" } }, exportAs: ["slIcon"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui=icon]{--_size: var(--slotted-icon-size, var(--slotted-control-icon-size-md, 16px));align-items:center;block-size:var(--_size);display:inline-flex;flex:none;inline-size:var(--_size);justify-content:center;line-height:1;vertical-align:var(--slotted-icon-baseline-shift, calc(.5cap - .5 * var(--_size)))}[data-ui=icon]>*,[data-ui=icon] svg{block-size:100%;display:block;font-size:var(--_size);inline-size:100%}[data-ui=icon][data-size=text]{--slotted-icon-size: 1em}[data-ui=icon][data-size=sm]{--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px)}[data-ui=icon][data-size=md]{--slotted-icon-size: var(--slotted-control-icon-size-md, 16px)}[data-ui=icon][data-size=lg]{--slotted-icon-size: var(--slotted-control-icon-size-lg, 18px)}[data-ui=icon][data-tone=default]{color:var(--slotted-text, CanvasText)}[data-ui=icon][data-tone=muted]{color:var(--slotted-text-muted, GrayText)}[data-ui=icon][data-tone=accent]{color:var(--slotted-tone-accent-text, LinkText)}[data-ui=icon][data-tone=success]{color:var(--slotted-tone-success-text, CanvasText)}[data-ui=icon][data-tone=warning]{color:var(--slotted-tone-warning-text, CanvasText)}[data-ui=icon][data-tone=danger]{color:var(--slotted-tone-danger-text, CanvasText)}[data-ui=icon][data-tone=inverse]{color:var(--slotted-text-inverse, Canvas)}[data-ui=icon][data-directional]:dir(rtl){scale:-1 1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
212
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlIcon, isStandalone: true, selector: "[slIcon]", inputs: { directional: { classPropertyName: "directional", publicName: "directional", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "icon", "data-ui-icon": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-size": "size() ?? null", "attr.data-tone": "toneAttribute()", "attr.data-directional": "directional() ? \"\" : null", "attr.role": "role()", "attr.aria-label": "ariaLabel()", "attr.aria-hidden": "named() ? null : \"true\"" } }, exportAs: ["slIcon"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui-icon]{--_size: var(--slotted-icon-size, var(--slotted-control-icon-size-md, 16px));align-items:center;block-size:var(--_size);display:inline-flex;flex:none;inline-size:var(--_size);justify-content:center;line-height:1;vertical-align:var(--slotted-icon-baseline-shift, calc(.5cap - .5 * var(--_size)))}[data-ui-icon]>*,[data-ui-icon] svg{block-size:100%;display:block;font-size:var(--_size);inline-size:100%}[data-ui-icon][data-size=text]{--slotted-icon-size: 1em}[data-ui-icon][data-size=sm]{--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px)}[data-ui-icon][data-size=md]{--slotted-icon-size: var(--slotted-control-icon-size-md, 16px)}[data-ui-icon][data-size=lg]{--slotted-icon-size: var(--slotted-control-icon-size-lg, 18px)}[data-ui-icon][data-tone=default]{color:var(--slotted-text, CanvasText)}[data-ui-icon][data-tone=muted]{color:var(--slotted-text-muted, GrayText)}[data-ui-icon][data-tone=accent]{color:var(--slotted-tone-accent-text, LinkText)}[data-ui-icon][data-tone=success]{color:var(--slotted-tone-success-text, CanvasText)}[data-ui-icon][data-tone=warning]{color:var(--slotted-tone-warning-text, CanvasText)}[data-ui-icon][data-tone=danger]{color:var(--slotted-tone-danger-text, CanvasText)}[data-ui-icon][data-tone=inverse]{color:var(--slotted-text-inverse, Canvas)}[data-ui-icon][data-directional]:dir(rtl){scale:-1 1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
212
213
  }
213
214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlIcon, decorators: [{
214
215
  type: Component,
215
216
  args: [{ selector: '[slIcon]', standalone: true, exportAs: 'slIcon', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
216
217
  'data-ui': 'icon',
218
+ 'data-ui-icon': '',
217
219
  'data-part': 'root',
220
+ 'data-part-root': '',
218
221
  '[attr.data-size]': 'size() ?? null',
219
222
  '[attr.data-tone]': 'toneAttribute()',
220
223
  '[attr.data-directional]': 'directional() ? "" : null',
221
224
  '[attr.role]': 'role()',
222
225
  '[attr.aria-label]': 'ariaLabel()',
223
226
  '[attr.aria-hidden]': 'named() ? null : "true"',
224
- }, styles: ["@layer slotted.components{[data-ui=icon]{--_size: var(--slotted-icon-size, var(--slotted-control-icon-size-md, 16px));align-items:center;block-size:var(--_size);display:inline-flex;flex:none;inline-size:var(--_size);justify-content:center;line-height:1;vertical-align:var(--slotted-icon-baseline-shift, calc(.5cap - .5 * var(--_size)))}[data-ui=icon]>*,[data-ui=icon] svg{block-size:100%;display:block;font-size:var(--_size);inline-size:100%}[data-ui=icon][data-size=text]{--slotted-icon-size: 1em}[data-ui=icon][data-size=sm]{--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px)}[data-ui=icon][data-size=md]{--slotted-icon-size: var(--slotted-control-icon-size-md, 16px)}[data-ui=icon][data-size=lg]{--slotted-icon-size: var(--slotted-control-icon-size-lg, 18px)}[data-ui=icon][data-tone=default]{color:var(--slotted-text, CanvasText)}[data-ui=icon][data-tone=muted]{color:var(--slotted-text-muted, GrayText)}[data-ui=icon][data-tone=accent]{color:var(--slotted-tone-accent-text, LinkText)}[data-ui=icon][data-tone=success]{color:var(--slotted-tone-success-text, CanvasText)}[data-ui=icon][data-tone=warning]{color:var(--slotted-tone-warning-text, CanvasText)}[data-ui=icon][data-tone=danger]{color:var(--slotted-tone-danger-text, CanvasText)}[data-ui=icon][data-tone=inverse]{color:var(--slotted-text-inverse, Canvas)}[data-ui=icon][data-directional]:dir(rtl){scale:-1 1}}\n"] }]
227
+ }, styles: ["@layer slotted.components{[data-ui-icon]{--_size: var(--slotted-icon-size, var(--slotted-control-icon-size-md, 16px));align-items:center;block-size:var(--_size);display:inline-flex;flex:none;inline-size:var(--_size);justify-content:center;line-height:1;vertical-align:var(--slotted-icon-baseline-shift, calc(.5cap - .5 * var(--_size)))}[data-ui-icon]>*,[data-ui-icon] svg{block-size:100%;display:block;font-size:var(--_size);inline-size:100%}[data-ui-icon][data-size=text]{--slotted-icon-size: 1em}[data-ui-icon][data-size=sm]{--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px)}[data-ui-icon][data-size=md]{--slotted-icon-size: var(--slotted-control-icon-size-md, 16px)}[data-ui-icon][data-size=lg]{--slotted-icon-size: var(--slotted-control-icon-size-lg, 18px)}[data-ui-icon][data-tone=default]{color:var(--slotted-text, CanvasText)}[data-ui-icon][data-tone=muted]{color:var(--slotted-text-muted, GrayText)}[data-ui-icon][data-tone=accent]{color:var(--slotted-tone-accent-text, LinkText)}[data-ui-icon][data-tone=success]{color:var(--slotted-tone-success-text, CanvasText)}[data-ui-icon][data-tone=warning]{color:var(--slotted-tone-warning-text, CanvasText)}[data-ui-icon][data-tone=danger]{color:var(--slotted-tone-danger-text, CanvasText)}[data-ui-icon][data-tone=inverse]{color:var(--slotted-text-inverse, Canvas)}[data-ui-icon][data-directional]:dir(rtl){scale:-1 1}}\n"] }]
225
228
  }], propDecorators: { directional: [{ type: i0.Input, args: [{ isSignal: true, alias: "directional", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }] } });
226
229
 
227
230
  /**