@slotted/angular 0.0.0-stage → 0.1.0-beta.0

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 (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -2
  3. package/docs/AGENTS.snippet.md +10 -0
  4. package/docs/accordion.json +345 -0
  5. package/docs/accordion.md +207 -0
  6. package/docs/action-bar.json +421 -0
  7. package/docs/action-bar.md +364 -0
  8. package/docs/action-sheet.json +210 -0
  9. package/docs/action-sheet.md +19 -0
  10. package/docs/alert.json +407 -0
  11. package/docs/alert.md +239 -0
  12. package/docs/app-shell.examples.md +349 -0
  13. package/docs/app-shell.json +835 -0
  14. package/docs/app-shell.md +214 -0
  15. package/docs/aspect-ratio.json +159 -0
  16. package/docs/aspect-ratio.md +134 -0
  17. package/docs/attachment.json +486 -0
  18. package/docs/attachment.md +253 -0
  19. package/docs/avatar-group.json +208 -0
  20. package/docs/avatar-group.md +130 -0
  21. package/docs/avatar.json +342 -0
  22. package/docs/avatar.md +142 -0
  23. package/docs/badge.json +334 -0
  24. package/docs/badge.md +138 -0
  25. package/docs/breadcrumb.json +368 -0
  26. package/docs/breadcrumb.md +237 -0
  27. package/docs/button-group.json +158 -0
  28. package/docs/button-group.md +72 -0
  29. package/docs/button.examples.md +621 -0
  30. package/docs/button.json +977 -0
  31. package/docs/button.md +200 -0
  32. package/docs/calendar.json +592 -0
  33. package/docs/calendar.md +242 -0
  34. package/docs/card.json +283 -0
  35. package/docs/card.md +130 -0
  36. package/docs/carousel.json +560 -0
  37. package/docs/carousel.md +357 -0
  38. package/docs/cascader.json +933 -0
  39. package/docs/cascader.md +379 -0
  40. package/docs/chart.examples.md +582 -0
  41. package/docs/chart.json +1359 -0
  42. package/docs/chart.md +187 -0
  43. package/docs/checkbox-group.examples.md +612 -0
  44. package/docs/checkbox-group.json +395 -0
  45. package/docs/checkbox-group.md +106 -0
  46. package/docs/checkbox.examples.md +546 -0
  47. package/docs/checkbox.json +506 -0
  48. package/docs/checkbox.md +104 -0
  49. package/docs/code-block.json +616 -0
  50. package/docs/code-block.md +303 -0
  51. package/docs/collapsible.json +456 -0
  52. package/docs/collapsible.md +261 -0
  53. package/docs/color-picker.json +523 -0
  54. package/docs/color-picker.md +201 -0
  55. package/docs/column-manager.json +486 -0
  56. package/docs/column-manager.md +277 -0
  57. package/docs/combobox.examples.md +1732 -0
  58. package/docs/combobox.json +1250 -0
  59. package/docs/combobox.md +209 -0
  60. package/docs/command-palette.json +800 -0
  61. package/docs/command-palette.md +419 -0
  62. package/docs/container.json +156 -0
  63. package/docs/container.md +92 -0
  64. package/docs/context-menu.json +231 -0
  65. package/docs/context-menu.md +176 -0
  66. package/docs/currency-field.examples.md +321 -0
  67. package/docs/currency-field.json +649 -0
  68. package/docs/currency-field.md +128 -0
  69. package/docs/dashboard-grid.json +680 -0
  70. package/docs/dashboard-grid.md +265 -0
  71. package/docs/data-grid.examples.md +3064 -0
  72. package/docs/data-grid.json +1577 -0
  73. package/docs/data-grid.md +237 -0
  74. package/docs/data-grid.props.md +81 -0
  75. package/docs/data-list.json +685 -0
  76. package/docs/data-list.md +327 -0
  77. package/docs/date-field.json +490 -0
  78. package/docs/date-field.md +235 -0
  79. package/docs/date-picker.examples.md +1226 -0
  80. package/docs/date-picker.json +696 -0
  81. package/docs/date-picker.md +121 -0
  82. package/docs/date-range-picker.examples.md +1300 -0
  83. package/docs/date-range-picker.json +903 -0
  84. package/docs/date-range-picker.md +142 -0
  85. package/docs/datetime-field.json +665 -0
  86. package/docs/datetime-field.md +337 -0
  87. package/docs/datetime-picker.examples.md +1269 -0
  88. package/docs/datetime-picker.json +928 -0
  89. package/docs/datetime-picker.md +150 -0
  90. package/docs/datetime-range-picker.examples.md +225 -0
  91. package/docs/datetime-range-picker.json +1015 -0
  92. package/docs/datetime-range-picker.md +162 -0
  93. package/docs/description-list.json +471 -0
  94. package/docs/description-list.md +268 -0
  95. package/docs/detail-panel.json +530 -0
  96. package/docs/detail-panel.md +361 -0
  97. package/docs/dialog.examples.md +2467 -0
  98. package/docs/dialog.json +1141 -0
  99. package/docs/dialog.md +217 -0
  100. package/docs/dialog.props.md +63 -0
  101. package/docs/divider.json +148 -0
  102. package/docs/divider.md +83 -0
  103. package/docs/drawer.examples.md +1929 -0
  104. package/docs/drawer.json +753 -0
  105. package/docs/drawer.md +199 -0
  106. package/docs/entity-picker.json +946 -0
  107. package/docs/entity-picker.md +365 -0
  108. package/docs/event-calendar.examples.md +308 -0
  109. package/docs/event-calendar.json +1202 -0
  110. package/docs/event-calendar.md +201 -0
  111. package/docs/field-group.json +333 -0
  112. package/docs/field-group.md +181 -0
  113. package/docs/field.examples.md +676 -0
  114. package/docs/field.json +528 -0
  115. package/docs/field.md +127 -0
  116. package/docs/filter-bar.json +817 -0
  117. package/docs/filter-bar.md +380 -0
  118. package/docs/form.json +378 -0
  119. package/docs/form.md +235 -0
  120. package/docs/fullscreen.json +395 -0
  121. package/docs/fullscreen.md +225 -0
  122. package/docs/grid.json +176 -0
  123. package/docs/grid.md +74 -0
  124. package/docs/highlight.json +279 -0
  125. package/docs/highlight.md +210 -0
  126. package/docs/hover-card.json +254 -0
  127. package/docs/hover-card.md +213 -0
  128. package/docs/icon.json +173 -0
  129. package/docs/icon.md +101 -0
  130. package/docs/image.json +476 -0
  131. package/docs/image.md +254 -0
  132. package/docs/import-export-center.json +836 -0
  133. package/docs/import-export-center.md +345 -0
  134. package/docs/index.md +141 -0
  135. package/docs/inline-message.json +312 -0
  136. package/docs/inline-message.md +191 -0
  137. package/docs/inline.json +149 -0
  138. package/docs/inline.md +72 -0
  139. package/docs/kbd.json +350 -0
  140. package/docs/kbd.md +210 -0
  141. package/docs/link.json +264 -0
  142. package/docs/link.md +167 -0
  143. package/docs/list-item.json +463 -0
  144. package/docs/list-item.md +236 -0
  145. package/docs/list.json +321 -0
  146. package/docs/list.md +185 -0
  147. package/docs/listbox.json +807 -0
  148. package/docs/listbox.md +413 -0
  149. package/docs/loading-overlay.json +440 -0
  150. package/docs/loading-overlay.md +248 -0
  151. package/docs/markdown.json +461 -0
  152. package/docs/markdown.md +266 -0
  153. package/docs/menu.examples.md +1651 -0
  154. package/docs/menu.json +922 -0
  155. package/docs/menu.md +155 -0
  156. package/docs/menubar.json +292 -0
  157. package/docs/menubar.md +173 -0
  158. package/docs/message-scroller.json +401 -0
  159. package/docs/message-scroller.md +212 -0
  160. package/docs/message.json +862 -0
  161. package/docs/message.md +473 -0
  162. package/docs/multi-select.examples.md +1922 -0
  163. package/docs/multi-select.json +1314 -0
  164. package/docs/multi-select.md +213 -0
  165. package/docs/navigation-menu.json +529 -0
  166. package/docs/navigation-menu.md +329 -0
  167. package/docs/notification-center.json +664 -0
  168. package/docs/notification-center.md +372 -0
  169. package/docs/number-field.examples.md +1078 -0
  170. package/docs/number-field.json +668 -0
  171. package/docs/number-field.md +137 -0
  172. package/docs/otp-input.json +479 -0
  173. package/docs/otp-input.md +291 -0
  174. package/docs/page-header.json +574 -0
  175. package/docs/page-header.md +338 -0
  176. package/docs/page.json +332 -0
  177. package/docs/page.md +184 -0
  178. package/docs/pagination.json +434 -0
  179. package/docs/pagination.md +238 -0
  180. package/docs/popover.examples.md +1235 -0
  181. package/docs/popover.json +656 -0
  182. package/docs/popover.md +199 -0
  183. package/docs/progress-indicator.json +501 -0
  184. package/docs/progress-indicator.md +329 -0
  185. package/docs/prompt-composer.json +498 -0
  186. package/docs/prompt-composer.md +278 -0
  187. package/docs/prose.json +357 -0
  188. package/docs/prose.md +226 -0
  189. package/docs/radio-group.examples.md +626 -0
  190. package/docs/radio-group.json +541 -0
  191. package/docs/radio-group.md +112 -0
  192. package/docs/rating.json +1053 -0
  193. package/docs/rating.md +435 -0
  194. package/docs/result-state.json +376 -0
  195. package/docs/result-state.md +286 -0
  196. package/docs/saved-views.json +384 -0
  197. package/docs/saved-views.md +242 -0
  198. package/docs/scroll-area.json +120 -0
  199. package/docs/scroll-area.md +8 -0
  200. package/docs/section.json +344 -0
  201. package/docs/section.md +208 -0
  202. package/docs/segmented-control.json +429 -0
  203. package/docs/segmented-control.md +240 -0
  204. package/docs/select.examples.md +1214 -0
  205. package/docs/select.json +1147 -0
  206. package/docs/select.md +199 -0
  207. package/docs/side-navigation.json +632 -0
  208. package/docs/side-navigation.md +430 -0
  209. package/docs/skeleton.json +358 -0
  210. package/docs/skeleton.md +223 -0
  211. package/docs/slider.json +522 -0
  212. package/docs/slider.md +261 -0
  213. package/docs/sparkline.json +426 -0
  214. package/docs/sparkline.md +206 -0
  215. package/docs/split-button.json +361 -0
  216. package/docs/split-button.md +275 -0
  217. package/docs/splitter.json +142 -0
  218. package/docs/splitter.md +14 -0
  219. package/docs/stack.json +135 -0
  220. package/docs/stack.md +74 -0
  221. package/docs/stat-card.json +529 -0
  222. package/docs/stat-card.md +270 -0
  223. package/docs/status-indicator.json +314 -0
  224. package/docs/status-indicator.md +197 -0
  225. package/docs/stepper.json +451 -0
  226. package/docs/stepper.md +250 -0
  227. package/docs/switch.json +451 -0
  228. package/docs/switch.md +508 -0
  229. package/docs/table-of-contents.json +553 -0
  230. package/docs/table-of-contents.md +289 -0
  231. package/docs/table.examples.md +1981 -0
  232. package/docs/table.json +1059 -0
  233. package/docs/table.md +290 -0
  234. package/docs/tabs.examples.md +1370 -0
  235. package/docs/tabs.json +661 -0
  236. package/docs/tabs.md +211 -0
  237. package/docs/tag.json +813 -0
  238. package/docs/tag.md +241 -0
  239. package/docs/tags-input.json +771 -0
  240. package/docs/tags-input.md +361 -0
  241. package/docs/text-field.examples.md +821 -0
  242. package/docs/text-field.json +604 -0
  243. package/docs/text-field.md +125 -0
  244. package/docs/textarea.examples.md +612 -0
  245. package/docs/textarea.json +440 -0
  246. package/docs/textarea.md +98 -0
  247. package/docs/time-field.json +584 -0
  248. package/docs/time-field.md +291 -0
  249. package/docs/time-picker.json +679 -0
  250. package/docs/time-picker.md +315 -0
  251. package/docs/time-range-picker.examples.md +191 -0
  252. package/docs/time-range-picker.json +924 -0
  253. package/docs/time-range-picker.md +152 -0
  254. package/docs/timeline.json +839 -0
  255. package/docs/timeline.md +401 -0
  256. package/docs/toast.json +642 -0
  257. package/docs/toast.md +311 -0
  258. package/docs/toggle-group.json +417 -0
  259. package/docs/toggle-group.md +255 -0
  260. package/docs/toggle.json +326 -0
  261. package/docs/toggle.md +222 -0
  262. package/docs/toolbar.json +380 -0
  263. package/docs/toolbar.md +240 -0
  264. package/docs/tooltip.examples.md +664 -0
  265. package/docs/tooltip.json +604 -0
  266. package/docs/tooltip.md +146 -0
  267. package/docs/top-navigation.examples.md +287 -0
  268. package/docs/top-navigation.json +648 -0
  269. package/docs/top-navigation.md +138 -0
  270. package/docs/tour.json +759 -0
  271. package/docs/tour.md +337 -0
  272. package/docs/transfer.json +746 -0
  273. package/docs/transfer.md +273 -0
  274. package/docs/tree.json +918 -0
  275. package/docs/tree.md +397 -0
  276. package/docs/typography.json +317 -0
  277. package/docs/typography.md +107 -0
  278. package/docs/upload.examples.md +358 -0
  279. package/docs/upload.json +1103 -0
  280. package/docs/upload.md +166 -0
  281. package/docs/visually-hidden.json +71 -0
  282. package/docs/visually-hidden.md +42 -0
  283. package/docs/wizard.json +724 -0
  284. package/docs/wizard.md +295 -0
  285. package/fesm2022/slotted-angular-accordion.mjs +247 -0
  286. package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
  287. package/fesm2022/slotted-angular-action-bar.mjs +639 -0
  288. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
  289. package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
  290. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
  291. package/fesm2022/slotted-angular-alert.mjs +427 -0
  292. package/fesm2022/slotted-angular-alert.mjs.map +1 -0
  293. package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
  294. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
  295. package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
  296. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
  297. package/fesm2022/slotted-angular-attachment.mjs +595 -0
  298. package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
  299. package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
  300. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
  301. package/fesm2022/slotted-angular-avatar.mjs +330 -0
  302. package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
  303. package/fesm2022/slotted-angular-badge.mjs +255 -0
  304. package/fesm2022/slotted-angular-badge.mjs.map +1 -0
  305. package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
  306. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
  307. package/fesm2022/slotted-angular-button-group.mjs +146 -0
  308. package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
  309. package/fesm2022/slotted-angular-button.mjs +692 -0
  310. package/fesm2022/slotted-angular-button.mjs.map +1 -0
  311. package/fesm2022/slotted-angular-calendar.mjs +916 -0
  312. package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
  313. package/fesm2022/slotted-angular-card.mjs +225 -0
  314. package/fesm2022/slotted-angular-card.mjs.map +1 -0
  315. package/fesm2022/slotted-angular-carousel.mjs +840 -0
  316. package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
  317. package/fesm2022/slotted-angular-cascader.mjs +1839 -0
  318. package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
  319. package/fesm2022/slotted-angular-chart.mjs +974 -0
  320. package/fesm2022/slotted-angular-chart.mjs.map +1 -0
  321. package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
  322. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
  323. package/fesm2022/slotted-angular-checkbox.mjs +468 -0
  324. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
  325. package/fesm2022/slotted-angular-code-block.mjs +476 -0
  326. package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
  327. package/fesm2022/slotted-angular-collapsible.mjs +479 -0
  328. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
  329. package/fesm2022/slotted-angular-color-picker.mjs +910 -0
  330. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
  331. package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
  332. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
  333. package/fesm2022/slotted-angular-combobox.mjs +1480 -0
  334. package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
  335. package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
  336. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
  337. package/fesm2022/slotted-angular-container.mjs +105 -0
  338. package/fesm2022/slotted-angular-container.mjs.map +1 -0
  339. package/fesm2022/slotted-angular-context-menu.mjs +221 -0
  340. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
  341. package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
  342. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
  343. package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
  344. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
  345. package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
  346. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
  347. package/fesm2022/slotted-angular-data-list.mjs +1418 -0
  348. package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
  349. package/fesm2022/slotted-angular-date-field.mjs +772 -0
  350. package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
  351. package/fesm2022/slotted-angular-date-picker.mjs +690 -0
  352. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
  353. package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
  354. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
  355. package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
  356. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
  357. package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
  358. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
  359. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
  360. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
  361. package/fesm2022/slotted-angular-description-list.mjs +545 -0
  362. package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
  363. package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
  364. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
  365. package/fesm2022/slotted-angular-dialog.mjs +980 -0
  366. package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
  367. package/fesm2022/slotted-angular-divider.mjs +76 -0
  368. package/fesm2022/slotted-angular-divider.mjs.map +1 -0
  369. package/fesm2022/slotted-angular-drawer.mjs +1397 -0
  370. package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
  371. package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
  372. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
  373. package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
  374. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
  375. package/fesm2022/slotted-angular-field-group.mjs +301 -0
  376. package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
  377. package/fesm2022/slotted-angular-field.mjs +928 -0
  378. package/fesm2022/slotted-angular-field.mjs.map +1 -0
  379. package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
  380. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
  381. package/fesm2022/slotted-angular-form.mjs +592 -0
  382. package/fesm2022/slotted-angular-form.mjs.map +1 -0
  383. package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
  384. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
  385. package/fesm2022/slotted-angular-grid.mjs +58 -0
  386. package/fesm2022/slotted-angular-grid.mjs.map +1 -0
  387. package/fesm2022/slotted-angular-highlight.mjs +123 -0
  388. package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
  389. package/fesm2022/slotted-angular-hover-card.mjs +326 -0
  390. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
  391. package/fesm2022/slotted-angular-i18n.mjs +75 -0
  392. package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
  393. package/fesm2022/slotted-angular-icon.mjs +232 -0
  394. package/fesm2022/slotted-angular-icon.mjs.map +1 -0
  395. package/fesm2022/slotted-angular-image.mjs +442 -0
  396. package/fesm2022/slotted-angular-image.mjs.map +1 -0
  397. package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
  398. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
  399. package/fesm2022/slotted-angular-inline-message.mjs +280 -0
  400. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
  401. package/fesm2022/slotted-angular-inline.mjs +52 -0
  402. package/fesm2022/slotted-angular-inline.mjs.map +1 -0
  403. package/fesm2022/slotted-angular-kbd.mjs +284 -0
  404. package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
  405. package/fesm2022/slotted-angular-link.mjs +182 -0
  406. package/fesm2022/slotted-angular-link.mjs.map +1 -0
  407. package/fesm2022/slotted-angular-list-item.mjs +367 -0
  408. package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
  409. package/fesm2022/slotted-angular-list.mjs +256 -0
  410. package/fesm2022/slotted-angular-list.mjs.map +1 -0
  411. package/fesm2022/slotted-angular-listbox.mjs +1274 -0
  412. package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
  413. package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
  414. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
  415. package/fesm2022/slotted-angular-markdown.mjs +914 -0
  416. package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
  417. package/fesm2022/slotted-angular-menu.mjs +1211 -0
  418. package/fesm2022/slotted-angular-menu.mjs.map +1 -0
  419. package/fesm2022/slotted-angular-menubar.mjs +230 -0
  420. package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
  421. package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
  422. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
  423. package/fesm2022/slotted-angular-message.mjs +866 -0
  424. package/fesm2022/slotted-angular-message.mjs.map +1 -0
  425. package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
  426. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
  427. package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
  428. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
  429. package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
  430. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
  431. package/fesm2022/slotted-angular-number-field.mjs +966 -0
  432. package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
  433. package/fesm2022/slotted-angular-otp-input.mjs +629 -0
  434. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
  435. package/fesm2022/slotted-angular-page-header.mjs +788 -0
  436. package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
  437. package/fesm2022/slotted-angular-page.mjs +255 -0
  438. package/fesm2022/slotted-angular-page.mjs.map +1 -0
  439. package/fesm2022/slotted-angular-pagination.mjs +562 -0
  440. package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
  441. package/fesm2022/slotted-angular-popover.mjs +799 -0
  442. package/fesm2022/slotted-angular-popover.mjs.map +1 -0
  443. package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
  444. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
  445. package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
  446. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
  447. package/fesm2022/slotted-angular-prose.mjs +314 -0
  448. package/fesm2022/slotted-angular-prose.mjs.map +1 -0
  449. package/fesm2022/slotted-angular-radio-group.mjs +469 -0
  450. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
  451. package/fesm2022/slotted-angular-rating.mjs +1174 -0
  452. package/fesm2022/slotted-angular-rating.mjs.map +1 -0
  453. package/fesm2022/slotted-angular-result-state.mjs +330 -0
  454. package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
  455. package/fesm2022/slotted-angular-saved-views.mjs +877 -0
  456. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
  457. package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
  458. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
  459. package/fesm2022/slotted-angular-section.mjs +266 -0
  460. package/fesm2022/slotted-angular-section.mjs.map +1 -0
  461. package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
  462. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
  463. package/fesm2022/slotted-angular-select.mjs +1899 -0
  464. package/fesm2022/slotted-angular-select.mjs.map +1 -0
  465. package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
  466. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
  467. package/fesm2022/slotted-angular-skeleton.mjs +316 -0
  468. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
  469. package/fesm2022/slotted-angular-slider.mjs +586 -0
  470. package/fesm2022/slotted-angular-slider.mjs.map +1 -0
  471. package/fesm2022/slotted-angular-sparkline.mjs +235 -0
  472. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
  473. package/fesm2022/slotted-angular-split-button.mjs +331 -0
  474. package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
  475. package/fesm2022/slotted-angular-splitter.mjs +516 -0
  476. package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
  477. package/fesm2022/slotted-angular-stack.mjs +48 -0
  478. package/fesm2022/slotted-angular-stack.mjs.map +1 -0
  479. package/fesm2022/slotted-angular-stat-card.mjs +478 -0
  480. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
  481. package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
  482. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
  483. package/fesm2022/slotted-angular-stepper.mjs +536 -0
  484. package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
  485. package/fesm2022/slotted-angular-switch.mjs +447 -0
  486. package/fesm2022/slotted-angular-switch.mjs.map +1 -0
  487. package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
  488. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
  489. package/fesm2022/slotted-angular-table.mjs +2518 -0
  490. package/fesm2022/slotted-angular-table.mjs.map +1 -0
  491. package/fesm2022/slotted-angular-tabs.mjs +829 -0
  492. package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
  493. package/fesm2022/slotted-angular-tag.mjs +595 -0
  494. package/fesm2022/slotted-angular-tag.mjs.map +1 -0
  495. package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
  496. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
  497. package/fesm2022/slotted-angular-text-field.mjs +674 -0
  498. package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
  499. package/fesm2022/slotted-angular-textarea.mjs +275 -0
  500. package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
  501. package/fesm2022/slotted-angular-theme.mjs +45 -0
  502. package/fesm2022/slotted-angular-theme.mjs.map +1 -0
  503. package/fesm2022/slotted-angular-time-field.mjs +895 -0
  504. package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
  505. package/fesm2022/slotted-angular-time-picker.mjs +856 -0
  506. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
  507. package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
  508. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
  509. package/fesm2022/slotted-angular-timeline.mjs +928 -0
  510. package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
  511. package/fesm2022/slotted-angular-toast.mjs +917 -0
  512. package/fesm2022/slotted-angular-toast.mjs.map +1 -0
  513. package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
  514. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
  515. package/fesm2022/slotted-angular-toggle.mjs +162 -0
  516. package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
  517. package/fesm2022/slotted-angular-toolbar.mjs +536 -0
  518. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
  519. package/fesm2022/slotted-angular-tooltip.mjs +798 -0
  520. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
  521. package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
  522. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
  523. package/fesm2022/slotted-angular-tour.mjs +1330 -0
  524. package/fesm2022/slotted-angular-tour.mjs.map +1 -0
  525. package/fesm2022/slotted-angular-transfer.mjs +1406 -0
  526. package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
  527. package/fesm2022/slotted-angular-tree.mjs +1448 -0
  528. package/fesm2022/slotted-angular-tree.mjs.map +1 -0
  529. package/fesm2022/slotted-angular-typography.mjs +184 -0
  530. package/fesm2022/slotted-angular-typography.mjs.map +1 -0
  531. package/fesm2022/slotted-angular-upload.mjs +1523 -0
  532. package/fesm2022/slotted-angular-upload.mjs.map +1 -0
  533. package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
  534. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
  535. package/fesm2022/slotted-angular-wizard.mjs +1715 -0
  536. package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
  537. package/fesm2022/slotted-angular.mjs +4 -0
  538. package/fesm2022/slotted-angular.mjs.map +1 -0
  539. package/package.json +537 -3
  540. package/types/slotted-angular-accordion.d.ts +156 -0
  541. package/types/slotted-angular-accordion.d.ts.map +1 -0
  542. package/types/slotted-angular-action-bar.d.ts +291 -0
  543. package/types/slotted-angular-action-bar.d.ts.map +1 -0
  544. package/types/slotted-angular-action-sheet.d.ts +294 -0
  545. package/types/slotted-angular-action-sheet.d.ts.map +1 -0
  546. package/types/slotted-angular-alert.d.ts +214 -0
  547. package/types/slotted-angular-alert.d.ts.map +1 -0
  548. package/types/slotted-angular-app-shell.d.ts +549 -0
  549. package/types/slotted-angular-app-shell.d.ts.map +1 -0
  550. package/types/slotted-angular-aspect-ratio.d.ts +57 -0
  551. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
  552. package/types/slotted-angular-attachment.d.ts +294 -0
  553. package/types/slotted-angular-attachment.d.ts.map +1 -0
  554. package/types/slotted-angular-avatar-group.d.ts +119 -0
  555. package/types/slotted-angular-avatar-group.d.ts.map +1 -0
  556. package/types/slotted-angular-avatar.d.ts +202 -0
  557. package/types/slotted-angular-avatar.d.ts.map +1 -0
  558. package/types/slotted-angular-badge.d.ts +166 -0
  559. package/types/slotted-angular-badge.d.ts.map +1 -0
  560. package/types/slotted-angular-breadcrumb.d.ts +251 -0
  561. package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
  562. package/types/slotted-angular-button-group.d.ts +89 -0
  563. package/types/slotted-angular-button-group.d.ts.map +1 -0
  564. package/types/slotted-angular-button.d.ts +390 -0
  565. package/types/slotted-angular-button.d.ts.map +1 -0
  566. package/types/slotted-angular-calendar.d.ts +280 -0
  567. package/types/slotted-angular-calendar.d.ts.map +1 -0
  568. package/types/slotted-angular-card.d.ts +140 -0
  569. package/types/slotted-angular-card.d.ts.map +1 -0
  570. package/types/slotted-angular-carousel.d.ts +288 -0
  571. package/types/slotted-angular-carousel.d.ts.map +1 -0
  572. package/types/slotted-angular-cascader.d.ts +351 -0
  573. package/types/slotted-angular-cascader.d.ts.map +1 -0
  574. package/types/slotted-angular-chart.d.ts +319 -0
  575. package/types/slotted-angular-chart.d.ts.map +1 -0
  576. package/types/slotted-angular-checkbox-group.d.ts +156 -0
  577. package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
  578. package/types/slotted-angular-checkbox.d.ts +197 -0
  579. package/types/slotted-angular-checkbox.d.ts.map +1 -0
  580. package/types/slotted-angular-code-block.d.ts +158 -0
  581. package/types/slotted-angular-code-block.d.ts.map +1 -0
  582. package/types/slotted-angular-collapsible.d.ts +272 -0
  583. package/types/slotted-angular-collapsible.d.ts.map +1 -0
  584. package/types/slotted-angular-color-picker.d.ts +181 -0
  585. package/types/slotted-angular-color-picker.d.ts.map +1 -0
  586. package/types/slotted-angular-column-manager.d.ts +200 -0
  587. package/types/slotted-angular-column-manager.d.ts.map +1 -0
  588. package/types/slotted-angular-combobox.d.ts +449 -0
  589. package/types/slotted-angular-combobox.d.ts.map +1 -0
  590. package/types/slotted-angular-command-palette.d.ts +256 -0
  591. package/types/slotted-angular-command-palette.d.ts.map +1 -0
  592. package/types/slotted-angular-container.d.ts +84 -0
  593. package/types/slotted-angular-container.d.ts.map +1 -0
  594. package/types/slotted-angular-context-menu.d.ts +84 -0
  595. package/types/slotted-angular-context-menu.d.ts.map +1 -0
  596. package/types/slotted-angular-currency-field.d.ts +480 -0
  597. package/types/slotted-angular-currency-field.d.ts.map +1 -0
  598. package/types/slotted-angular-dashboard-grid.d.ts +341 -0
  599. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
  600. package/types/slotted-angular-data-grid.d.ts +1077 -0
  601. package/types/slotted-angular-data-grid.d.ts.map +1 -0
  602. package/types/slotted-angular-data-list.d.ts +272 -0
  603. package/types/slotted-angular-data-list.d.ts.map +1 -0
  604. package/types/slotted-angular-date-field.d.ts +320 -0
  605. package/types/slotted-angular-date-field.d.ts.map +1 -0
  606. package/types/slotted-angular-date-picker.d.ts +224 -0
  607. package/types/slotted-angular-date-picker.d.ts.map +1 -0
  608. package/types/slotted-angular-date-range-picker.d.ts +310 -0
  609. package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
  610. package/types/slotted-angular-datetime-field.d.ts +362 -0
  611. package/types/slotted-angular-datetime-field.d.ts.map +1 -0
  612. package/types/slotted-angular-datetime-picker.d.ts +370 -0
  613. package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
  614. package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
  615. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
  616. package/types/slotted-angular-description-list.d.ts +281 -0
  617. package/types/slotted-angular-description-list.d.ts.map +1 -0
  618. package/types/slotted-angular-detail-panel.d.ts +240 -0
  619. package/types/slotted-angular-detail-panel.d.ts.map +1 -0
  620. package/types/slotted-angular-dialog.d.ts +497 -0
  621. package/types/slotted-angular-dialog.d.ts.map +1 -0
  622. package/types/slotted-angular-divider.d.ts +40 -0
  623. package/types/slotted-angular-divider.d.ts.map +1 -0
  624. package/types/slotted-angular-drawer.d.ts +532 -0
  625. package/types/slotted-angular-drawer.d.ts.map +1 -0
  626. package/types/slotted-angular-entity-picker.d.ts +338 -0
  627. package/types/slotted-angular-entity-picker.d.ts.map +1 -0
  628. package/types/slotted-angular-event-calendar.d.ts +574 -0
  629. package/types/slotted-angular-event-calendar.d.ts.map +1 -0
  630. package/types/slotted-angular-field-group.d.ts +152 -0
  631. package/types/slotted-angular-field-group.d.ts.map +1 -0
  632. package/types/slotted-angular-field.d.ts +535 -0
  633. package/types/slotted-angular-field.d.ts.map +1 -0
  634. package/types/slotted-angular-filter-bar.d.ts +573 -0
  635. package/types/slotted-angular-filter-bar.d.ts.map +1 -0
  636. package/types/slotted-angular-form.d.ts +298 -0
  637. package/types/slotted-angular-form.d.ts.map +1 -0
  638. package/types/slotted-angular-fullscreen.d.ts +145 -0
  639. package/types/slotted-angular-fullscreen.d.ts.map +1 -0
  640. package/types/slotted-angular-grid.d.ts +50 -0
  641. package/types/slotted-angular-grid.d.ts.map +1 -0
  642. package/types/slotted-angular-highlight.d.ts +93 -0
  643. package/types/slotted-angular-highlight.d.ts.map +1 -0
  644. package/types/slotted-angular-hover-card.d.ts +140 -0
  645. package/types/slotted-angular-hover-card.d.ts.map +1 -0
  646. package/types/slotted-angular-i18n.d.ts +46 -0
  647. package/types/slotted-angular-i18n.d.ts.map +1 -0
  648. package/types/slotted-angular-icon.d.ts +94 -0
  649. package/types/slotted-angular-icon.d.ts.map +1 -0
  650. package/types/slotted-angular-image.d.ts +251 -0
  651. package/types/slotted-angular-image.d.ts.map +1 -0
  652. package/types/slotted-angular-import-export-center.d.ts +351 -0
  653. package/types/slotted-angular-import-export-center.d.ts.map +1 -0
  654. package/types/slotted-angular-inline-message.d.ts +195 -0
  655. package/types/slotted-angular-inline-message.d.ts.map +1 -0
  656. package/types/slotted-angular-inline.d.ts +41 -0
  657. package/types/slotted-angular-inline.d.ts.map +1 -0
  658. package/types/slotted-angular-kbd.d.ts +174 -0
  659. package/types/slotted-angular-kbd.d.ts.map +1 -0
  660. package/types/slotted-angular-link.d.ts +94 -0
  661. package/types/slotted-angular-link.d.ts.map +1 -0
  662. package/types/slotted-angular-list-item.d.ts +210 -0
  663. package/types/slotted-angular-list-item.d.ts.map +1 -0
  664. package/types/slotted-angular-list.d.ts +176 -0
  665. package/types/slotted-angular-list.d.ts.map +1 -0
  666. package/types/slotted-angular-listbox.d.ts +470 -0
  667. package/types/slotted-angular-listbox.d.ts.map +1 -0
  668. package/types/slotted-angular-loading-overlay.d.ts +219 -0
  669. package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
  670. package/types/slotted-angular-markdown.d.ts +172 -0
  671. package/types/slotted-angular-markdown.d.ts.map +1 -0
  672. package/types/slotted-angular-menu.d.ts +448 -0
  673. package/types/slotted-angular-menu.d.ts.map +1 -0
  674. package/types/slotted-angular-menubar.d.ts +90 -0
  675. package/types/slotted-angular-menubar.d.ts.map +1 -0
  676. package/types/slotted-angular-message-scroller.d.ts +151 -0
  677. package/types/slotted-angular-message-scroller.d.ts.map +1 -0
  678. package/types/slotted-angular-message.d.ts +348 -0
  679. package/types/slotted-angular-message.d.ts.map +1 -0
  680. package/types/slotted-angular-multi-select.d.ts +462 -0
  681. package/types/slotted-angular-multi-select.d.ts.map +1 -0
  682. package/types/slotted-angular-navigation-menu.d.ts +309 -0
  683. package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
  684. package/types/slotted-angular-notification-center.d.ts +318 -0
  685. package/types/slotted-angular-notification-center.d.ts.map +1 -0
  686. package/types/slotted-angular-number-field.d.ts +402 -0
  687. package/types/slotted-angular-number-field.d.ts.map +1 -0
  688. package/types/slotted-angular-otp-input.d.ts +286 -0
  689. package/types/slotted-angular-otp-input.d.ts.map +1 -0
  690. package/types/slotted-angular-page-header.d.ts +334 -0
  691. package/types/slotted-angular-page-header.d.ts.map +1 -0
  692. package/types/slotted-angular-page.d.ts +141 -0
  693. package/types/slotted-angular-page.d.ts.map +1 -0
  694. package/types/slotted-angular-pagination.d.ts +213 -0
  695. package/types/slotted-angular-pagination.d.ts.map +1 -0
  696. package/types/slotted-angular-popover.d.ts +366 -0
  697. package/types/slotted-angular-popover.d.ts.map +1 -0
  698. package/types/slotted-angular-progress-indicator.d.ts +312 -0
  699. package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
  700. package/types/slotted-angular-prompt-composer.d.ts +242 -0
  701. package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
  702. package/types/slotted-angular-prose.d.ts +171 -0
  703. package/types/slotted-angular-prose.d.ts.map +1 -0
  704. package/types/slotted-angular-radio-group.d.ts +268 -0
  705. package/types/slotted-angular-radio-group.d.ts.map +1 -0
  706. package/types/slotted-angular-rating.d.ts +374 -0
  707. package/types/slotted-angular-rating.d.ts.map +1 -0
  708. package/types/slotted-angular-result-state.d.ts +217 -0
  709. package/types/slotted-angular-result-state.d.ts.map +1 -0
  710. package/types/slotted-angular-saved-views.d.ts +198 -0
  711. package/types/slotted-angular-saved-views.d.ts.map +1 -0
  712. package/types/slotted-angular-scroll-area.d.ts +186 -0
  713. package/types/slotted-angular-scroll-area.d.ts.map +1 -0
  714. package/types/slotted-angular-section.d.ts +143 -0
  715. package/types/slotted-angular-section.d.ts.map +1 -0
  716. package/types/slotted-angular-segmented-control.d.ts +251 -0
  717. package/types/slotted-angular-segmented-control.d.ts.map +1 -0
  718. package/types/slotted-angular-select.d.ts +507 -0
  719. package/types/slotted-angular-select.d.ts.map +1 -0
  720. package/types/slotted-angular-side-navigation.d.ts +373 -0
  721. package/types/slotted-angular-side-navigation.d.ts.map +1 -0
  722. package/types/slotted-angular-skeleton.d.ts +198 -0
  723. package/types/slotted-angular-skeleton.d.ts.map +1 -0
  724. package/types/slotted-angular-slider.d.ts +216 -0
  725. package/types/slotted-angular-slider.d.ts.map +1 -0
  726. package/types/slotted-angular-sparkline.d.ts +106 -0
  727. package/types/slotted-angular-sparkline.d.ts.map +1 -0
  728. package/types/slotted-angular-split-button.d.ts +180 -0
  729. package/types/slotted-angular-split-button.d.ts.map +1 -0
  730. package/types/slotted-angular-splitter.d.ts +206 -0
  731. package/types/slotted-angular-splitter.d.ts.map +1 -0
  732. package/types/slotted-angular-stack.d.ts +38 -0
  733. package/types/slotted-angular-stack.d.ts.map +1 -0
  734. package/types/slotted-angular-stat-card.d.ts +232 -0
  735. package/types/slotted-angular-stat-card.d.ts.map +1 -0
  736. package/types/slotted-angular-status-indicator.d.ts +106 -0
  737. package/types/slotted-angular-status-indicator.d.ts.map +1 -0
  738. package/types/slotted-angular-stepper.d.ts +198 -0
  739. package/types/slotted-angular-stepper.d.ts.map +1 -0
  740. package/types/slotted-angular-switch.d.ts +243 -0
  741. package/types/slotted-angular-switch.d.ts.map +1 -0
  742. package/types/slotted-angular-table-of-contents.d.ts +210 -0
  743. package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
  744. package/types/slotted-angular-table.d.ts +888 -0
  745. package/types/slotted-angular-table.d.ts.map +1 -0
  746. package/types/slotted-angular-tabs.d.ts +340 -0
  747. package/types/slotted-angular-tabs.d.ts.map +1 -0
  748. package/types/slotted-angular-tag.d.ts +279 -0
  749. package/types/slotted-angular-tag.d.ts.map +1 -0
  750. package/types/slotted-angular-tags-input.d.ts +302 -0
  751. package/types/slotted-angular-tags-input.d.ts.map +1 -0
  752. package/types/slotted-angular-text-field.d.ts +334 -0
  753. package/types/slotted-angular-text-field.d.ts.map +1 -0
  754. package/types/slotted-angular-textarea.d.ts +150 -0
  755. package/types/slotted-angular-textarea.d.ts.map +1 -0
  756. package/types/slotted-angular-theme.d.ts +26 -0
  757. package/types/slotted-angular-theme.d.ts.map +1 -0
  758. package/types/slotted-angular-time-field.d.ts +300 -0
  759. package/types/slotted-angular-time-field.d.ts.map +1 -0
  760. package/types/slotted-angular-time-picker.d.ts +260 -0
  761. package/types/slotted-angular-time-picker.d.ts.map +1 -0
  762. package/types/slotted-angular-time-range-picker.d.ts +401 -0
  763. package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
  764. package/types/slotted-angular-timeline.d.ts +329 -0
  765. package/types/slotted-angular-timeline.d.ts.map +1 -0
  766. package/types/slotted-angular-toast.d.ts +340 -0
  767. package/types/slotted-angular-toast.d.ts.map +1 -0
  768. package/types/slotted-angular-toggle-group.d.ts +167 -0
  769. package/types/slotted-angular-toggle-group.d.ts.map +1 -0
  770. package/types/slotted-angular-toggle.d.ts +106 -0
  771. package/types/slotted-angular-toggle.d.ts.map +1 -0
  772. package/types/slotted-angular-toolbar.d.ts +252 -0
  773. package/types/slotted-angular-toolbar.d.ts.map +1 -0
  774. package/types/slotted-angular-tooltip.d.ts +388 -0
  775. package/types/slotted-angular-tooltip.d.ts.map +1 -0
  776. package/types/slotted-angular-top-navigation.d.ts +442 -0
  777. package/types/slotted-angular-top-navigation.d.ts.map +1 -0
  778. package/types/slotted-angular-tour.d.ts +440 -0
  779. package/types/slotted-angular-tour.d.ts.map +1 -0
  780. package/types/slotted-angular-transfer.d.ts +296 -0
  781. package/types/slotted-angular-transfer.d.ts.map +1 -0
  782. package/types/slotted-angular-tree.d.ts +499 -0
  783. package/types/slotted-angular-tree.d.ts.map +1 -0
  784. package/types/slotted-angular-typography.d.ts +89 -0
  785. package/types/slotted-angular-typography.d.ts.map +1 -0
  786. package/types/slotted-angular-upload.d.ts +365 -0
  787. package/types/slotted-angular-upload.d.ts.map +1 -0
  788. package/types/slotted-angular-visually-hidden.d.ts +19 -0
  789. package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
  790. package/types/slotted-angular-wizard.d.ts +441 -0
  791. package/types/slotted-angular-wizard.d.ts.map +1 -0
  792. package/types/slotted-angular.d.ts +3 -0
  793. package/types/slotted-angular.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-command-palette.mjs","sources":["../../command-palette/src/command-palette-defaults.ts","../../command-palette/src/command-palette.ts","../../command-palette/src/slotted-angular-command-palette.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider, TemplateRef } from '@angular/core';\n\nimport type { CommandItem } from '@slotted/core/commands';\nimport type { DialogDismissPolicy } from '@slotted/angular/dialog';\n\nexport type { CommandGroup, CommandRanker } from '@slotted/core/commands';\n\n/**\n * Where the panel stands. `dialog` composes the dialog family; `inline` draws\n * the panel where it was written — the filtered menu `menu` refused.\n */\nexport type CommandPalettePresentation = 'dialog' | 'inline';\nexport type CommandPaletteSize = 'sm' | 'md' | 'lg';\n\nexport type CommandPaletteOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'select' | 'dismiss' | 'programmatic';\nexport type CommandPaletteQueryReason = 'keyboard' | 'clear' | 'select' | 'programmatic';\nexport type CommandPaletteHighlightReason = 'pointer' | 'keyboard' | 'programmatic';\nexport type CommandPalettePagesReason = 'select' | 'keyboard' | 'pointer' | 'programmatic';\nexport type CommandPaletteSelectReason = 'pointer' | 'keyboard';\n\n/**\n * What an executed item is handed. `keepOpen()` holds the palette open after\n * the handler returns.\n */\nexport interface CommandPaletteSelectRequest<Item extends CommandPaletteItem = CommandPaletteItem> {\n readonly item: Item;\n readonly reason: CommandPaletteSelectReason;\n readonly source: Event | undefined;\n keepOpen: () => void;\n}\n\n/**\n * One command. `id`, `label` and `keywords` are what the ranker reads; the rest\n * is what the row draws. `children` opens a page; `href` is a destination.\n * The mark in the first column comes from the item template, which is where\n * an Angular consumer writes an icon.\n */\nexport interface CommandPaletteItem extends CommandItem {\n readonly meta?: string | undefined;\n /** In the library's notation, `mod+shift+p`; drawn by `kbd` and announced. */\n readonly shortcut?: string | undefined;\n readonly href?: string | undefined;\n readonly target?: string | undefined;\n /** Runs before the root's `select` output. A promise keeps the palette open. */\n readonly onSelect?:\n ((request: CommandPaletteSelectRequest) => void | Promise<unknown>) | undefined;\n readonly children?: readonly CommandPaletteItem[] | undefined;\n}\n\n/** What the item template receives. */\nexport interface CommandPaletteItemContext<Item extends CommandPaletteItem = CommandPaletteItem> {\n $implicit: Item;\n current: boolean;\n disabled: boolean;\n pending: boolean;\n query: string;\n /** The label's runs, marked where the query matched. */\n runs: readonly { text: string; matched: boolean }[];\n}\n\nexport type CommandPaletteItemTemplate<Item extends CommandPaletteItem = CommandPaletteItem> =\n TemplateRef<CommandPaletteItemContext<Item>>;\n\nexport interface CommandPaletteDefaults {\n presentation: CommandPalettePresentation;\n size: CommandPaletteSize;\n outsidePress: DialogDismissPolicy;\n loop: boolean;\n autoHighlight: boolean;\n closeOnSelect: boolean;\n clearOnClose: boolean;\n highlightMatch: boolean;\n /** The chord that opens the palette anywhere in the document; `null` for none. */\n hotkey: string | null;\n recentLimit: number;\n}\n\n/**\n * The numbers, and why they are these numbers: the React binding's\n * `COMMAND_PALETTE_FALLBACK` records them, and the two lists are one list.\n */\nexport const COMMAND_PALETTE_FALLBACK: CommandPaletteDefaults = {\n presentation: 'dialog',\n size: 'md',\n outsidePress: 'close',\n loop: true,\n autoHighlight: true,\n closeOnSelect: true,\n clearOnClose: true,\n highlightMatch: true,\n hotkey: 'mod+k',\n recentLimit: 5,\n};\n\nexport const COMMAND_PALETTE_DEFAULTS = new InjectionToken<CommandPaletteDefaults>(\n 'COMMAND_PALETTE_DEFAULTS',\n { providedIn: 'root', factory: () => COMMAND_PALETTE_FALLBACK },\n);\n\n/**\n * The decisions an application takes once. The sentences the family speaks\n * come from the language in force (`provideSlotted`).\n */\nexport function provideCommandPaletteDefaults(defaults: Partial<CommandPaletteDefaults>): Provider {\n return {\n provide: COMMAND_PALETTE_DEFAULTS,\n useValue: { ...COMMAND_PALETTE_FALLBACK, ...defaults },\n };\n}\n\nexport function injectCommandPaletteDefaults(): CommandPaletteDefaults {\n return inject(COMMAND_PALETTE_DEFAULTS);\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlDialog, SlDialogTitle } from '@slotted/angular/dialog';\nimport type { DialogChangeRequest, DialogDismissPolicy } from '@slotted/angular/dialog';\nimport { SlHighlight } from '@slotted/angular/highlight';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { injectKbdPlatform, SlShortcut } from '@slotted/angular/kbd';\nimport { moveIndex, splitByMatch } from '@slotted/core/collection';\nimport type { MoveIntent } from '@slotted/core/collection';\nimport { createCommandRanker, pushRecent, resolveCommands } from '@slotted/core/commands';\nimport type { CommandGroup, CommandRanker } from '@slotted/core/commands';\nimport {\n commandPaletteMessages,\n type CommandPaletteMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { canonicalKey, isEditableTarget, matchesShortcut, parseShortcut } from '@slotted/core/keys';\nimport type { KbdPlatform } from '@slotted/core/keys';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectCommandPaletteDefaults } from './command-palette-defaults';\nimport type {\n CommandPaletteHighlightReason,\n CommandPaletteItem,\n CommandPaletteItemContext,\n CommandPaletteOpenReason,\n CommandPalettePagesReason,\n CommandPalettePresentation,\n CommandPaletteQueryReason,\n CommandPaletteSelectReason,\n CommandPaletteSelectRequest,\n CommandPaletteSize,\n} from './command-palette-defaults';\n\n/**\n * A search that executes.\n *\n * `<sl-command-palette>` is written in place and its template holds the\n * `<sl-dialog>` — the layer, the scrim, the focus containment and the\n * dismissal are the dialog family's, as `upload-viewer` composes them — or,\n * under `presentation=\"inline\"`, the panel itself. DOM focus stays on the\n * input and the list is walked with `aria-activedescendant`, the model\n * `combobox` uses. Which rows are drawn, in which order, is\n * `@slotted/core/commands`, the same function the React binding asks.\n */\n\nlet nextId = 0;\n\n/**\n * The shortcut as `aria-keyshortcuts` states it; a sequence is drawn only.\n *\n * The attribute's grammar is the UI Events `key` values — `Control`, `Alt`,\n * `Meta`, `Shift` — which a screen reader parses and speaks in its own\n * language. They are tokens rather than words, so they stay out of the\n * catalog: a translated or platform-named modifier (`Option`, `Command`) is\n * not a value the attribute accepts.\n */\nfunction announceShortcut(keys: string, platform: KbdPlatform): string | null {\n const steps = parseShortcut(keys);\n if (steps.length !== 1) return null;\n return (\n steps[0]\n ?.map((token) => {\n const canonical = canonicalKey(token);\n if (canonical === 'mod') return platform === 'mac' ? 'Meta' : 'Control';\n if (canonical === 'ctrl') return 'Control';\n const word = canonical ?? token;\n return word.length === 1 ? word.toUpperCase() : `${word[0]?.toUpperCase()}${word.slice(1)}`;\n })\n .join('+') ?? null\n );\n}\n\n/** The content of a row, written by the consumer on an `ng-template`. */\n@Directive({ selector: 'ng-template[slCommandPaletteItem]', standalone: true })\nexport class SlCommandPaletteItem<Item extends CommandPaletteItem = CommandPaletteItem> {\n readonly template = inject<TemplateRef<CommandPaletteItemContext<Item>>>(TemplateRef);\n /* Types the template's context, so `let-item` is an `Item` in the template. */\n static ngTemplateContextGuard<Item extends CommandPaletteItem>(\n _directive: SlCommandPaletteItem<Item>,\n context: unknown,\n ): context is CommandPaletteItemContext<Item> {\n return context !== null;\n }\n}\n\n/** The footer's content, in place of the family's hints. */\n@Directive({ selector: 'ng-template[slCommandPaletteFooter]', standalone: true })\nexport class SlCommandPaletteFooter {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n/** The empty message, in place of the catalog's `empty`. */\n@Directive({ selector: 'ng-template[slCommandPaletteEmpty]', standalone: true })\nexport class SlCommandPaletteEmpty {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Component({\n selector: 'sl-command-palette',\n standalone: true,\n exportAs: 'slCommandPalette',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, SlDialog, SlDialogTitle, SlGlyph, SlHighlight, SlIcon, SlShortcut],\n styleUrls: [\n '../../../styles/src/command-palette/command-palette.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n host: { '[style.display]': \"'contents'\" },\n template: `\n @if (inline()) {\n <ng-container *ngTemplateOutlet=\"panel\" />\n } @else {\n <sl-dialog\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onDialogRequest($event)\"\n [container]=\"container()\"\n [size]=\"resolvedSize()\"\n [outsidePress]=\"resolvedOutsidePress()\"\n [initialFocus]=\"inputElement()\"\n escape=\"none\"\n fullScreen=\"narrow\"\n placement=\"top\"\n surface=\"plain\"\n >\n <!-- The dialog takes its name from a title it points at; the title is\n read by assistive technology and hidden from the eye, because the\n field under it is the name a reader sees. -->\n <h2 slDialogTitle hidden>{{ t('label') }}</h2>\n <ng-container *ngTemplateOutlet=\"panel\" />\n </sl-dialog>\n }\n\n <ng-template #panel>\n <div\n data-ui=\"command-palette\"\n data-part=\"root\"\n [attr.data-presentation]=\"resolvedPresentation()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n [attr.data-query]=\"query() === '' ? null : ''\"\n [attr.data-empty]=\"isEmpty() ? '' : null\"\n >\n <div data-part=\"header\">\n @if (loading()) {\n <span data-part=\"busy\" data-ui=\"spinner\" aria-hidden=\"true\"></span>\n } @else {\n <span data-part=\"search\" aria-hidden=\"true\"\n ><span slIcon><svg slGlyph name=\"search\"></svg></span\n ></span>\n }\n @if (rows().trail.length > 0) {\n <ol data-part=\"pages\" [attr.aria-label]=\"t('back')\">\n @for (entry of rows().trail; track entry.id; let index = $index) {\n <li>\n <!-- The chevron between two pages, mirrored in a right-to-left document. -->\n @if (index > 0) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n <button data-part=\"page\" type=\"button\" (click)=\"returnTo(index, $event)\">\n <span>{{ entry.label }}</span>\n </button>\n </li>\n }\n </ol>\n }\n <input\n #field\n data-part=\"input\"\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [id]=\"inputId\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.placeholder]=\"t('placeholder')\"\n [disabled]=\"disabled()\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n />\n <button\n data-part=\"clear\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n @if (!inline()) {\n <!-- The way out where the scrim is not: shown by the stylesheet\n under the dialog's full-screen query alone. -->\n <button data-part=\"close\" type=\"button\" (click)=\"setOpen(false, 'dismiss', $event)\">\n {{ t('close') }}\n </button>\n }\n </div>\n\n <div\n #list\n data-part=\"list\"\n role=\"listbox\"\n [id]=\"listId\"\n [attr.aria-label]=\"t('input')\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n @if (loading() && rows().count === 0) {\n <div data-part=\"placeholder\" aria-hidden=\"true\">\n @for (row of [0, 1, 2]; track row) {\n <div>\n <span data-ui=\"skeleton\" data-part=\"root\" data-shape=\"text\" data-loading></span>\n </div>\n }\n </div>\n }\n @if (isEmpty()) {\n <div data-part=\"empty\">\n @if (emptyTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template.template\" />\n } @else {\n {{ t('empty') }}\n }\n </div>\n }\n @for (section of rows().sections; track $index; let sectionIndex = $index) {\n @if (sectionIndex > 0) {\n <div data-part=\"separator\" role=\"separator\"></div>\n }\n @if (headingOf(section); as heading) {\n <div\n data-part=\"group\"\n role=\"group\"\n [attr.aria-labelledby]=\"baseId + '-group-' + sectionIndex\"\n >\n <div\n data-part=\"group-label\"\n role=\"presentation\"\n [id]=\"baseId + '-group-' + sectionIndex\"\n >\n {{ heading }}\n </div>\n @for (item of section.items; track item.id) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: item }\" />\n }\n </div>\n } @else {\n @for (item of section.items; track item.id) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: item }\" />\n }\n }\n }\n </div>\n\n <div data-part=\"status\" role=\"status\">{{ status() }}</div>\n\n @if (footerTemplate(); as footer) {\n <div data-part=\"footer\" aria-hidden=\"true\">\n <ng-container *ngTemplateOutlet=\"footer.template\" />\n </div>\n } @else if (!hideFooter()) {\n <div data-part=\"footer\" aria-hidden=\"true\">\n <span data-part=\"hint\">\n <kbd slShortcut keys=\"up\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <kbd slShortcut keys=\"down\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintNavigate') }}</span>\n </span>\n <span data-part=\"hint\">\n <kbd slShortcut keys=\"enter\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintSelect') }}</span>\n </span>\n @if (pages().length > 0) {\n <span data-part=\"hint\">\n <kbd\n slShortcut\n keys=\"backspace\"\n separator=\"\"\n size=\"inherit\"\n variant=\"outline\"\n ></kbd>\n <span>{{ t('hintBack') }}</span>\n </span>\n }\n @if (!inline()) {\n <span data-part=\"hint\">\n <kbd slShortcut keys=\"escape\" separator=\"\" size=\"inherit\" variant=\"outline\"></kbd>\n <span>{{ t('hintClose') }}</span>\n </span>\n }\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #row let-item>\n @if (item.href; as href) {\n <a\n data-part=\"item\"\n role=\"option\"\n [id]=\"domId(item.id)\"\n [href]=\"href\"\n [attr.target]=\"item.target ?? null\"\n [attr.title]=\"item.label\"\n [attr.aria-selected]=\"highlightedId() === item.id\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-busy]=\"pending().has(item.id) ? 'true' : null\"\n [attr.aria-keyshortcuts]=\"keyshortcuts(item)\"\n [attr.data-current]=\"highlightedId() === item.id ? '' : null\"\n [attr.data-disabled]=\"item.disabled ? '' : null\"\n [attr.data-loading]=\"pending().has(item.id) ? '' : null\"\n [attr.data-page]=\"item.children ? '' : null\"\n (pointermove)=\"hover(item, $event)\"\n (click)=\"press(item, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"cells; context: { $implicit: item }\" />\n </a>\n } @else {\n <div\n data-part=\"item\"\n role=\"option\"\n [id]=\"domId(item.id)\"\n [attr.title]=\"item.label\"\n [attr.aria-selected]=\"highlightedId() === item.id\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-busy]=\"pending().has(item.id) ? 'true' : null\"\n [attr.aria-keyshortcuts]=\"keyshortcuts(item)\"\n [attr.data-current]=\"highlightedId() === item.id ? '' : null\"\n [attr.data-disabled]=\"item.disabled ? '' : null\"\n [attr.data-loading]=\"pending().has(item.id) ? '' : null\"\n [attr.data-page]=\"item.children ? '' : null\"\n (pointermove)=\"hover(item, $event)\"\n (click)=\"press(item, $event)\"\n >\n <ng-container *ngTemplateOutlet=\"cells; context: { $implicit: item }\" />\n </div>\n }\n </ng-template>\n\n <ng-template #cells let-item>\n @if (itemTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"\n custom.template;\n context: {\n $implicit: item,\n current: highlightedId() === item.id,\n disabled: item.disabled === true,\n pending: pending().has(item.id),\n query: query(),\n runs: runsOf(item),\n }\n \"\n />\n } @else {\n <span data-part=\"icon\"></span>\n <span data-part=\"label\">\n @if (marking()) {\n <span\n slHighlight\n [text]=\"item.label\"\n [query]=\"query()\"\n [locale]=\"resolvedLocale()\"\n ></span>\n } @else {\n {{ item.label }}\n }\n </span>\n @if (item.description; as description) {\n <span data-part=\"description\">{{ description }}</span>\n }\n @if (item.meta; as meta) {\n <span data-part=\"meta\" aria-hidden=\"true\">{{ meta }}</span>\n }\n @if (!item.children && item.shortcut; as shortcut) {\n <span data-part=\"shortcut\" aria-hidden=\"true\">\n <kbd slShortcut [keys]=\"shortcut\" size=\"inherit\" separator=\"\" variant=\"outline\"></kbd>\n </span>\n }\n @if (item.children) {\n <!-- The mark that says the item opens a page, mirrored in a right-to-left document. -->\n <span data-part=\"arrow\" aria-hidden=\"true\"\n ><span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span\n ></span>\n }\n @if (pending().has(item.id)) {\n <span data-part=\"busy\" data-ui=\"spinner\" aria-hidden=\"true\"></span>\n }\n }\n </ng-template>\n `,\n})\nexport class SlCommandPalette<Item extends CommandPaletteItem = CommandPaletteItem> {\n private static flag(value: unknown) {\n return value === undefined ? undefined : booleanAttribute(value);\n }\n\n private static count(value: unknown) {\n return value === undefined ? undefined : numberAttribute(value);\n }\n\n private readonly defaults = injectCommandPaletteDefaults();\n private readonly platformOf = injectKbdPlatform();\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n\n protected readonly baseId =\n inject(new HostAttributeToken('id'), { optional: true }) ?? `sl-command-palette-${nextId++}`;\n protected readonly inputId = `${this.baseId}-input`;\n protected readonly listId = `${this.baseId}-list`;\n\n /* ── Inputs ───────────────────────────────────────────────────────────── */\n\n readonly items = input.required<readonly Item[]>();\n readonly groups = input<readonly CommandGroup[] | undefined>(undefined);\n /** The adapter. Absent takes the core ranker; `null` shows the items as they came. */\n readonly rank = input<CommandRanker<Item> | null | undefined>(undefined);\n /** BCP 47, for the comparison the default ranker makes. Defaults to the language in force. */\n readonly locale = input<string | undefined>(undefined);\n readonly limit = input(undefined, { transform: SlCommandPalette.count });\n\n readonly presentation = input<CommandPalettePresentation | undefined>(undefined);\n readonly size = input<CommandPaletteSize | undefined>(undefined);\n readonly outsidePress = input<DialogDismissPolicy | undefined>(undefined);\n readonly loop = input(undefined, { transform: SlCommandPalette.flag });\n readonly autoHighlight = input(undefined, { transform: SlCommandPalette.flag });\n readonly closeOnSelect = input(undefined, { transform: SlCommandPalette.flag });\n readonly clearOnClose = input(undefined, { transform: SlCommandPalette.flag });\n readonly highlightMatch = input(undefined, { transform: SlCommandPalette.flag });\n /** `null` turns the hotkey off; absent takes the provider's. */\n readonly hotkey = input<string | null | undefined>(undefined);\n readonly recentLimit = input(undefined, { transform: SlCommandPalette.count });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n /** A parent for the layer alone, instead of the portal root the dialog makes beside this host. */\n readonly container = input<Element | null | undefined>(undefined);\n /** Removes the footer. An `ng-template[slCommandPaletteFooter]` replaces it instead. */\n readonly hideFooter = input(false, { transform: booleanAttribute });\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * dialog's name (`label`), the input's name and placeholder, the empty,\n * loading, count and error sentences, the recents heading, the clear, close\n * and back controls, and the footer's hints.\n */\n readonly messages = input<PartialMessages<CommandPaletteMessages> | undefined>(undefined);\n\n /* ── The five values ──────────────────────────────────────────────────── */\n\n readonly open = model<boolean>(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly query = model<string>('');\n readonly queryChangeRequest = output<ChangeRequest<string>>();\n\n readonly highlightedId = model<string | null>(null);\n readonly highlightedIdChangeRequest = output<ChangeRequest<string | null>>();\n\n readonly pages = model<readonly string[]>([]);\n readonly pagesChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n readonly recent = model<readonly string[]>([]);\n readonly recentChangeRequest = output<ChangeRequest<readonly string[]>>();\n\n /** Every executed item, after the item's own handler. */\n readonly select = output<CommandPaletteSelectRequest<Item>>();\n\n /* ── Content ──────────────────────────────────────────────────────────── */\n\n protected readonly itemTemplate = contentChild(SlCommandPaletteItem<Item>);\n protected readonly footerTemplate = contentChild(SlCommandPaletteFooter);\n protected readonly emptyTemplate = contentChild(SlCommandPaletteEmpty);\n\n /** The layer, while there is one; the trigger registers itself on it. */\n readonly dialog = viewChild(SlDialog);\n\n private readonly field = viewChild<ElementRef<HTMLInputElement>>('field');\n private readonly list = viewChild<ElementRef<HTMLDivElement>>('list');\n\n /* ── Resolution ───────────────────────────────────────────────────────── */\n\n protected readonly resolvedPresentation = computed(\n () => this.presentation() ?? this.defaults.presentation,\n );\n protected readonly inline = computed(() => this.resolvedPresentation() === 'inline');\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedOutsidePress = computed(\n () => this.outsidePress() ?? this.defaults.outsidePress,\n );\n protected readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n protected readonly resolvedAutoHighlight = computed(\n () => this.autoHighlight() ?? this.defaults.autoHighlight,\n );\n protected readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n protected readonly resolvedClearOnClose = computed(\n () => this.clearOnClose() ?? this.defaults.clearOnClose,\n );\n protected readonly resolvedHighlightMatch = computed(\n () => this.highlightMatch() ?? this.defaults.highlightMatch,\n );\n protected readonly resolvedHotkey = computed(() => {\n const own = this.hotkey();\n return own === undefined ? this.defaults.hotkey : own;\n });\n protected readonly resolvedRecentLimit = computed(\n () => this.recentLimit() ?? this.defaults.recentLimit,\n );\n /** The family's words in the language in force, with this palette's `messages` laid over them. */\n readonly t = injectMessages(commandPaletteMessages, this.messages);\n private readonly appLocale = injectLocale();\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n\n /** Open for the stylesheet and the dialog: an inline palette is always open. */\n protected readonly isOpen = computed(() => this.inline() || this.open());\n protected readonly inputElement = computed(() => this.field()?.nativeElement ?? undefined);\n\n /* ── The rows ─────────────────────────────────────────────────────────── */\n\n private readonly ranker = computed<CommandRanker<Item> | null>(() => {\n const own = this.rank();\n return own === undefined ? createCommandRanker<Item>({ locale: this.resolvedLocale() }) : own;\n });\n\n protected readonly rows = computed(() =>\n resolveCommands<Item>({\n items: this.items(),\n query: this.query(),\n pages: this.pages(),\n recent: this.recent(),\n groups: this.groups(),\n rank: this.ranker(),\n limit: this.limit(),\n }),\n );\n private readonly rowIds = computed(() => this.rows().rows.map((item) => item.id));\n private readonly enabled = computed(() => this.rows().rows.map((item) => item.disabled !== true));\n\n protected readonly isEmpty = computed(() => !this.loading() && this.rows().count === 0);\n protected readonly activeDescendant = computed(() => {\n const id = this.highlightedId();\n return id === null ? null : this.domId(id);\n });\n\n protected readonly pending = signal<ReadonlySet<string>>(new Set());\n private readonly error = signal<string | null>(null);\n\n protected readonly status = computed(() => {\n if (this.loading()) return this.t('loading');\n const failure = this.error();\n if (failure !== null) return this.t('error', { message: failure });\n return this.t('count', { count: this.rows().count });\n });\n\n constructor() {\n /* Where the highlight stands once the rows have changed: on the row it was\n on, on the first enabled row with autoHighlight, and nowhere otherwise. */\n effect(() => {\n if (!this.isOpen()) return;\n const ids = this.rowIds();\n const enabled = this.enabled();\n const current = this.highlightedId();\n const at = current === null ? -1 : ids.indexOf(current);\n if (at !== -1 && enabled[at] === true) return;\n const first = this.resolvedAutoHighlight()\n ? moveIndex({ enabled, from: -1, intent: 'first', loop: false })\n : -1;\n untracked(() =>\n this.setHighlighted(first === -1 ? null : (ids[first] ?? null), 'programmatic'),\n );\n });\n\n /* The row the highlight is on scrolls into view; it holds no focus. */\n effect(() => {\n const id = this.highlightedId();\n if (id === null) return;\n const node = this.list()?.nativeElement.querySelector<HTMLElement>(\n `#${CSS.escape(this.domId(id))}`,\n );\n if (typeof node?.scrollIntoView === 'function') node.scrollIntoView({ block: 'nearest' });\n });\n\n /* Closing puts the palette back where it started, each value by its own\n request, so a consumer owning one of them hears about it. */\n let wasOpen = untracked(() => this.isOpen());\n effect(() => {\n const open = this.isOpen();\n if (wasOpen && !open && untracked(() => this.resolvedClearOnClose())) {\n untracked(() => {\n this.setQuery('', 'programmatic');\n this.setPages([], 'programmatic');\n this.setHighlighted(null, 'programmatic');\n });\n }\n wasOpen = open;\n });\n\n /* The count, the wait and the failure, said once each. */\n effect(() => {\n if (!this.isOpen()) return;\n const message = this.status();\n getLiveAnnouncer(this.document).announce(message);\n });\n\n /* A failure belongs to the moment it happened: typing or turning a page clears it. */\n effect(() => {\n this.query();\n this.pages();\n untracked(() => this.error.set(null));\n });\n\n /* The hotkey, on the document, in the capture phase. */\n const onKey = (event: KeyboardEvent) => {\n const keys = this.resolvedHotkey();\n if (keys === null || this.inline() || this.disabled()) return;\n const platform = this.platformOf();\n if (!matchesShortcut(event, keys, platform)) return;\n const bare = parseShortcut(keys)[0]?.every(\n (token) => !['mod', 'meta', 'ctrl', 'alt'].includes(canonicalKey(token) ?? ''),\n );\n if (bare === true && isEditableTarget(event)) return;\n event.preventDefault();\n if (this.isOpen()) {\n this.focus();\n return;\n }\n this.setOpen(true, 'keyboard', event);\n };\n this.document.addEventListener('keydown', onKey, true);\n this.destroyRef.onDestroy(() => this.document.removeEventListener('keydown', onKey, true));\n }\n\n /* ── Requests ─────────────────────────────────────────────────────────── */\n\n setOpen(next: boolean, reason: CommandPaletteOpenReason, source?: Event) {\n if (this.inline() || next === this.open()) return;\n const state = createControllable<boolean>({\n initial: this.open(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.open.set(next);\n }\n\n setQuery(next: string, reason: CommandPaletteQueryReason, source?: Event) {\n if (next === this.query()) return;\n const state = createControllable<string>({\n initial: this.query(),\n onRequest: (request) => this.queryChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.query.set(next);\n }\n\n setHighlighted(next: string | null, reason: CommandPaletteHighlightReason, source?: Event) {\n if (next === this.highlightedId()) return;\n const state = createControllable<string | null>({\n initial: this.highlightedId(),\n onRequest: (request) => this.highlightedIdChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.highlightedId.set(next);\n }\n\n setPages(next: readonly string[], reason: CommandPalettePagesReason, source?: Event) {\n const current = this.pages();\n if (next.length === current.length && next.every((id, index) => id === current[index])) return;\n const state = createControllable<readonly string[]>({\n initial: current,\n onRequest: (request) => this.pagesChangeRequest.emit(request),\n equals: () => false,\n });\n if (state.request(next, reason, source)) this.pages.set(next);\n }\n\n private setRecent(next: readonly string[], source?: Event) {\n const state = createControllable<readonly string[]>({\n initial: this.recent(),\n onRequest: (request) => this.recentChangeRequest.emit(request),\n equals: (a, b) => a.length === b.length && a.every((id, index) => id === b[index]),\n });\n if (state.request(next, 'select', source)) this.recent.set(next);\n }\n\n /* ── The handle ───────────────────────────────────────────────────────── */\n\n openPalette() {\n this.setOpen(true, 'programmatic');\n }\n\n close() {\n this.setOpen(false, 'programmatic');\n }\n\n toggle() {\n this.setOpen(!this.open(), 'programmatic');\n }\n\n /** Focuses the input and selects the query. */\n focus() {\n const node = this.field()?.nativeElement;\n if (node === undefined) return;\n node.focus();\n node.select();\n }\n\n /** Highlights the row with this id and scrolls it into view. */\n scrollToId(id: string) {\n this.setHighlighted(id, 'programmatic');\n }\n\n /* ── Executing ────────────────────────────────────────────────────────── */\n\n private execute(item: Item, reason: CommandPaletteSelectReason, source: Event | undefined) {\n if (item.disabled === true || this.pending().has(item.id)) return;\n\n if (item.children !== undefined) {\n this.setPages(\n [...this.pages(), item.id],\n reason === 'pointer' ? 'pointer' : 'select',\n source,\n );\n this.setQuery('', 'select', source);\n return;\n }\n\n let keep = false;\n const request: CommandPaletteSelectRequest<Item> = {\n item,\n reason,\n source,\n keepOpen: () => {\n keep = true;\n },\n };\n\n const finish = () => {\n this.setRecent(pushRecent(this.recent(), item.id, this.resolvedRecentLimit()), source);\n this.select.emit(request);\n if (this.resolvedCloseOnSelect() && !keep) this.setOpen(false, 'select', source);\n };\n\n const settle = () => {\n this.pending.update((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n };\n\n let outcome: unknown;\n try {\n outcome = item.onSelect?.(request);\n } catch (thrown) {\n this.error.set(thrown instanceof Error ? thrown.message : String(thrown));\n return;\n }\n\n if (outcome instanceof Promise) {\n this.error.set(null);\n this.pending.update((previous) => new Set(previous).add(item.id));\n void outcome.then(\n () => {\n settle();\n finish();\n },\n (thrown: unknown) => {\n settle();\n this.error.set(thrown instanceof Error ? thrown.message : String(thrown));\n },\n );\n return;\n }\n\n finish();\n }\n\n /* ── Template helpers ─────────────────────────────────────────────────── */\n\n protected domId(id: string) {\n return `${this.baseId}-${id.replace(/[^\\w-]/g, (character) => `_${character.charCodeAt(0).toString(16)}`)}`;\n }\n\n protected headingOf(section: { recent: boolean; label: string | undefined }) {\n return section.recent ? this.t('recent') : section.label;\n }\n\n /** Whether the rows mark the query: the family's own switch, and a query to mark. */\n protected readonly marking = computed(\n () => this.resolvedHighlightMatch() && this.query().trim() !== '',\n );\n\n /**\n * The runs of a row's label, handed to a consumer's own row template as\n * `runs`. The default row renders the `highlight` family instead; the\n * context keeps the runs for a template written before wave 10.\n */\n protected runsOf(item: Item) {\n const query = this.query();\n if (!this.resolvedHighlightMatch() || query.trim() === '') {\n return [{ text: item.label, matched: false }];\n }\n return splitByMatch(item.label, query, { locale: this.resolvedLocale() });\n }\n\n protected keyshortcuts(item: Item) {\n if (item.children !== undefined || item.shortcut === undefined) return null;\n return announceShortcut(item.shortcut, this.platformOf());\n }\n\n protected onInput(event: Event) {\n this.setQuery((event.target as HTMLInputElement).value, 'keyboard', event);\n }\n\n protected clear(event: Event) {\n this.setQuery('', 'clear', event);\n this.field()?.nativeElement.focus();\n }\n\n protected returnTo(index: number, event: Event) {\n this.setPages(this.pages().slice(0, index + 1), 'pointer', event);\n }\n\n protected hover(item: Item, event: Event) {\n if (item.disabled === true) return;\n this.setHighlighted(item.id, 'pointer', event);\n }\n\n protected press(item: Item, event: MouseEvent) {\n if (item.disabled === true || this.pending().has(item.id)) {\n event.preventDefault();\n return;\n }\n /* A link with a modifier is the browser's: a new tab, a download. */\n if (item.href !== undefined && (event.metaKey || event.ctrlKey || event.shiftKey)) return;\n this.execute(item, 'pointer', event);\n }\n\n protected onDialogRequest(request: DialogChangeRequest) {\n const reason: CommandPaletteOpenReason =\n request.reason === 'outsidePress' || request.reason === 'escape'\n ? request.reason\n : request.reason === 'pointer' || request.reason === 'keyboard'\n ? request.reason\n : 'dismiss';\n const state = createControllable<boolean>({\n initial: this.open(),\n onRequest: (own) => this.openChangeRequest.emit(own),\n });\n if (!state.request(request.value, reason, request.source)) {\n request.cancel();\n return;\n }\n this.open.set(request.value);\n }\n\n private move(intent: MoveIntent, event: KeyboardEvent) {\n const ids = this.rowIds();\n const current = this.highlightedId();\n const from = current === null ? -1 : ids.indexOf(current);\n const paged = intent === 'pageDown' || intent === 'pageUp';\n const next = moveIndex({\n enabled: this.enabled(),\n from,\n intent,\n loop: this.resolvedLoop() && !paged,\n });\n event.preventDefault();\n if (next === -1) return;\n this.setHighlighted(ids[next] ?? null, 'keyboard', event);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.isComposing) return;\n switch (event.key) {\n case 'ArrowDown':\n this.move('next', event);\n return;\n case 'ArrowUp':\n this.move('previous', event);\n return;\n case 'PageDown':\n this.move('pageDown', event);\n return;\n case 'PageUp':\n this.move('pageUp', event);\n return;\n case 'Home':\n if (event.ctrlKey) this.move('first', event);\n return;\n case 'End':\n if (event.ctrlKey) this.move('last', event);\n return;\n case 'Enter': {\n const id = this.highlightedId();\n const item = id === null ? undefined : this.rows().rows.find((row) => row.id === id);\n if (item === undefined) return;\n event.preventDefault();\n if (item.href !== undefined) {\n const node = this.list()?.nativeElement.querySelector<HTMLAnchorElement>(\n `#${CSS.escape(this.domId(item.id))}`,\n );\n if (event.metaKey || event.ctrlKey || event.shiftKey) {\n node?.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n metaKey: event.metaKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n }),\n );\n return;\n }\n this.execute(item, 'keyboard', event);\n node?.click();\n return;\n }\n this.execute(item, 'keyboard', event);\n return;\n }\n case 'Escape':\n if (this.query() !== '') {\n event.preventDefault();\n event.stopPropagation();\n this.setQuery('', 'clear', event);\n return;\n }\n if (this.pages().length > 0) {\n event.preventDefault();\n event.stopPropagation();\n this.setPages(this.pages().slice(0, -1), 'keyboard', event);\n return;\n }\n if (!this.inline()) {\n event.preventDefault();\n this.setOpen(false, 'escape', event);\n }\n return;\n case 'Backspace':\n if (this.query() === '' && this.pages().length > 0) {\n event.preventDefault();\n this.setPages(this.pages().slice(0, -1), 'keyboard', event);\n }\n return;\n default:\n return;\n }\n }\n}\n\n/**\n * The control that opens the palette, on the consumer's own element. The\n * dialog family's trigger is not composed here because it needs the dialog\n * instance, which lives inside this component's template; what the trigger\n * needs from it — the open, the `aria-expanded`, the `aria-haspopup` — is\n * written from the palette instead, and the focus returns to the element\n * that held it when the layer opened, which is this one.\n */\n@Directive({\n selector: '[slCommandPaletteTrigger]',\n standalone: true,\n exportAs: 'slCommandPaletteTrigger',\n host: {\n 'data-part': 'trigger',\n 'aria-haspopup': 'dialog',\n '[attr.aria-expanded]': 'palette().open()',\n '[attr.data-open]': 'palette().open() ? \"\" : null',\n '[attr.disabled]': 'palette().disabled() ? \"\" : null',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlCommandPaletteTrigger {\n readonly palette = input.required<SlCommandPalette>({ alias: 'slCommandPaletteTrigger' });\n\n private readonly native: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n /* The dialog's own trigger registers its node as the layer's focus origin\n and as a branch the outside press ignores; this one does the same, on\n the dialog the palette holds, whenever that dialog exists. */\n effect(() => {\n const dialog = this.palette().dialog();\n if (dialog === undefined) return;\n untracked(() => dialog.triggerNode.set(this.native));\n });\n inject(DestroyRef).onDestroy(() => {\n const dialog = this.palette().dialog();\n if (dialog?.triggerNode() === this.native) dialog.triggerNode.set(null);\n });\n }\n\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented) return;\n this.palette().setOpen(true, event.detail === 0 ? 'keyboard' : '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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"}
@@ -0,0 +1,105 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive } from '@angular/core';
3
+
4
+ /**
5
+ * `content` rather than the widest bounded step, which is what the four
6
+ * surveyed libraries that state a default all choose. A dashboard that
7
+ * inherits `content` looks too narrow the first time it is opened and is
8
+ * corrected; a settings page that inherits `wide` merely has lines that are
9
+ * somewhat too long, which nobody reports.
10
+ */
11
+ const FALLBACK = { align: 'center', inset: 6, size: 'content' };
12
+ const CONTAINER_DEFAULTS = new InjectionToken('slotted container defaults', { providedIn: 'root', factory: () => ({ ...FALLBACK }) });
13
+ /**
14
+ * An application decides once what its pages are bounded to and how far they
15
+ * are inset, rather than repeating three inputs on every container. A
16
+ * container that states any of them itself still wins: an explicit input is
17
+ * never overridden by the token.
18
+ */
19
+ function provideContainerDefaults(defaults) {
20
+ return {
21
+ provide: CONTAINER_DEFAULTS,
22
+ useFactory: () => ({
23
+ align: defaults.align ?? FALLBACK.align,
24
+ inset: defaults.inset ?? FALLBACK.inset,
25
+ size: defaults.size ?? FALLBACK.size,
26
+ }),
27
+ };
28
+ }
29
+ /** What a container bounds here, before it states anything of its own. */
30
+ function injectContainerDefaults() {
31
+ return inject(CONTAINER_DEFAULTS);
32
+ }
33
+
34
+ /**
35
+ * Bounds the inline size of a region, insets it from the edge of the space it
36
+ * was given, and places it inside that space. It paints nothing, separates
37
+ * nothing and claims no semantics: the directive is written on the element the
38
+ * page chose, so a `main`, a `section` and an `article` are all the same
39
+ * container.
40
+ *
41
+ * The root is a three-track grid rather than a box with a maximum, because a
42
+ * `slContainerBreakout` child needs a track to span. A run of text written
43
+ * directly inside it becomes an item nothing can select and is placed in the
44
+ * start gutter; wrap text in an element, as every layout family in this
45
+ * library already requires.
46
+ */
47
+ class SlContainer {
48
+ /** What the column bounds. Falls back to the injected default. */
49
+ size = input(/* @ts-ignore */
50
+ ...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
51
+ /** The gap between the column and the edge, as a step on the space scale. */
52
+ inset = input(/* @ts-ignore */
53
+ ...(ngDevMode ? [undefined, { debugName: "inset" }] : /* istanbul ignore next */ []));
54
+ /** Where the column sits when there is space left over. */
55
+ align = input(/* @ts-ignore */
56
+ ...(ngDevMode ? [undefined, { debugName: "align" }] : /* istanbul ignore next */ []));
57
+ defaults = injectContainerDefaults();
58
+ resolvedSize = computed(() => this.size() ?? this.defaults.size, /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
60
+ resolvedInset = computed(() => String(this.inset() ?? this.defaults.inset), /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "resolvedInset" }] : /* istanbul ignore next */ []));
62
+ resolvedAlign = computed(() => this.align() ?? this.defaults.align, /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlContainer, isStandalone: true, selector: "[slContainer]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "container", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-inset": "resolvedInset()", "attr.data-align": "resolvedAlign()" } }, exportAs: ["slContainer"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui=container]{--_max: var(--slotted-container-content, 56rem);--_inset: var(--slotted-space-6, 1rem);--_start-track: 1fr;--_end-track: 1fr;display:grid;grid-template-columns:[full-start] minmax(var(--_inset),var(--_start-track)) [content-start] min(100% - 2 * var(--_inset),var(--_max)) [content-end] minmax(var(--_inset),var(--_end-track)) [full-end];inline-size:100%}[data-ui=container]>*{grid-column:content;min-inline-size:0}[data-ui=container]>[data-part=breakout]{grid-column:full}[data-ui=container][data-size=measure]{--_max: var(--slotted-container-measure, 65ch)}[data-ui=container][data-size=content]{--_max: var(--slotted-container-content, 56rem)}[data-ui=container][data-size=wide]{--_max: var(--slotted-container-wide, 80rem)}[data-ui=container][data-size=full]{--_max: var(--slotted-container-full, 120rem)}[data-ui=container][data-size=bleed]{--_max: 100%}[data-ui=container][data-inset=\"0\"]{--_inset: 0px}[data-ui=container][data-inset=\"1\"]{--_inset: var(--slotted-space-1, .125rem)}[data-ui=container][data-inset=\"2\"]{--_inset: var(--slotted-space-2, .25rem)}[data-ui=container][data-inset=\"3\"]{--_inset: var(--slotted-space-3, .375rem)}[data-ui=container][data-inset=\"4\"]{--_inset: var(--slotted-space-4, .5rem)}[data-ui=container][data-inset=\"5\"]{--_inset: var(--slotted-space-5, .75rem)}[data-ui=container][data-inset=\"6\"]{--_inset: var(--slotted-space-6, 1rem)}[data-ui=container][data-inset=\"7\"]{--_inset: var(--slotted-space-7, 1.25rem)}[data-ui=container][data-inset=\"8\"]{--_inset: var(--slotted-space-8, 1.5rem)}[data-ui=container][data-inset=\"9\"]{--_inset: var(--slotted-space-9, 2rem)}[data-ui=container][data-inset=\"10\"]{--_inset: var(--slotted-space-10, 2.5rem)}[data-ui=container][data-inset=\"11\"]{--_inset: var(--slotted-space-11, 3rem)}[data-ui=container][data-inset=\"12\"]{--_inset: var(--slotted-space-12, 4rem)}[data-ui=container][data-align=center]{--_start-track: 1fr;--_end-track: 1fr}[data-ui=container][data-align=start]{--_start-track: var(--_inset)}[data-ui=container][data-align=end]{--_end-track: var(--_inset)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainer, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: '[slContainer]', standalone: true, exportAs: 'slContainer', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
70
+ 'data-ui': 'container',
71
+ 'data-part': 'root',
72
+ '[attr.data-size]': 'resolvedSize()',
73
+ '[attr.data-inset]': 'resolvedInset()',
74
+ '[attr.data-align]': 'resolvedAlign()',
75
+ }, styles: ["@layer slotted.components{[data-ui=container]{--_max: var(--slotted-container-content, 56rem);--_inset: var(--slotted-space-6, 1rem);--_start-track: 1fr;--_end-track: 1fr;display:grid;grid-template-columns:[full-start] minmax(var(--_inset),var(--_start-track)) [content-start] min(100% - 2 * var(--_inset),var(--_max)) [content-end] minmax(var(--_inset),var(--_end-track)) [full-end];inline-size:100%}[data-ui=container]>*{grid-column:content;min-inline-size:0}[data-ui=container]>[data-part=breakout]{grid-column:full}[data-ui=container][data-size=measure]{--_max: var(--slotted-container-measure, 65ch)}[data-ui=container][data-size=content]{--_max: var(--slotted-container-content, 56rem)}[data-ui=container][data-size=wide]{--_max: var(--slotted-container-wide, 80rem)}[data-ui=container][data-size=full]{--_max: var(--slotted-container-full, 120rem)}[data-ui=container][data-size=bleed]{--_max: 100%}[data-ui=container][data-inset=\"0\"]{--_inset: 0px}[data-ui=container][data-inset=\"1\"]{--_inset: var(--slotted-space-1, .125rem)}[data-ui=container][data-inset=\"2\"]{--_inset: var(--slotted-space-2, .25rem)}[data-ui=container][data-inset=\"3\"]{--_inset: var(--slotted-space-3, .375rem)}[data-ui=container][data-inset=\"4\"]{--_inset: var(--slotted-space-4, .5rem)}[data-ui=container][data-inset=\"5\"]{--_inset: var(--slotted-space-5, .75rem)}[data-ui=container][data-inset=\"6\"]{--_inset: var(--slotted-space-6, 1rem)}[data-ui=container][data-inset=\"7\"]{--_inset: var(--slotted-space-7, 1.25rem)}[data-ui=container][data-inset=\"8\"]{--_inset: var(--slotted-space-8, 1.5rem)}[data-ui=container][data-inset=\"9\"]{--_inset: var(--slotted-space-9, 2rem)}[data-ui=container][data-inset=\"10\"]{--_inset: var(--slotted-space-10, 2.5rem)}[data-ui=container][data-inset=\"11\"]{--_inset: var(--slotted-space-11, 3rem)}[data-ui=container][data-inset=\"12\"]{--_inset: var(--slotted-space-12, 4rem)}[data-ui=container][data-align=center]{--_start-track: 1fr;--_end-track: 1fr}[data-ui=container][data-align=start]{--_start-track: var(--_inset)}[data-ui=container][data-align=end]{--_end-track: var(--_inset)}}\n"] }]
76
+ }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
77
+
78
+ /**
79
+ * A child that leaves the bound behind and reaches both edges of the
80
+ * container: a table, a banner, a strip of media inside a page of prose.
81
+ *
82
+ * It answers the container rather than the viewport, so it is still correct
83
+ * nested, inside a scroll region, and in a container that does not fill the
84
+ * page. Bounded content returns inside it by nesting another `slContainer`.
85
+ */
86
+ class SlContainerBreakout {
87
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainerBreakout, deps: [], target: i0.ɵɵFactoryTarget.Directive });
88
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlContainerBreakout, isStandalone: true, selector: "[slContainerBreakout]", host: { attributes: { "data-part": "breakout" } }, exportAs: ["slContainerBreakout"], ngImport: i0 });
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContainerBreakout, decorators: [{
91
+ type: Directive,
92
+ args: [{
93
+ selector: '[slContainerBreakout]',
94
+ standalone: true,
95
+ exportAs: 'slContainerBreakout',
96
+ host: { 'data-part': 'breakout' },
97
+ }]
98
+ }] });
99
+
100
+ /**
101
+ * Generated bundle index. Do not edit.
102
+ */
103
+
104
+ export { CONTAINER_DEFAULTS, SlContainer, SlContainerBreakout, injectContainerDefaults, provideContainerDefaults };
105
+ //# sourceMappingURL=slotted-angular-container.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-container.mjs","sources":["../../container/src/container-defaults.ts","../../container/src/container.ts","../../container/src/container-breakout.ts","../../container/src/slotted-angular-container.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/**\n * What the column bounds, rather than how big it is. `sm`/`md`/`lg` is this\n * library's word for control geometry; a container's maximum is chosen by what\n * is inside it, and a letter hides the choice.\n *\n * `measure` is the comfortable reading line, counted in characters so it\n * follows the inherited type and the reader's zoom. `full` removes the\n * maximum and keeps the inset.\n */\nexport type ContainerSize = 'measure' | 'content' | 'wide' | 'full' | 'bleed';\n\n/**\n * The gap between the column and the edge of the space the container was\n * given, as a step on the space scale — the same scale Stack, Inline and Grid\n * take their `gap` from. `0` is the absence of an inset.\n */\nexport type ContainerInset = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** Where the column sits when there is space left over. */\nexport type ContainerAlign = 'center' | 'start' | 'end';\n\nexport interface ContainerDefaults {\n align: ContainerAlign;\n inset: ContainerInset;\n size: ContainerSize;\n}\n\n/**\n * `content` rather than the widest bounded step, which is what the four\n * surveyed libraries that state a default all choose. A dashboard that\n * inherits `content` looks too narrow the first time it is opened and is\n * corrected; a settings page that inherits `wide` merely has lines that are\n * somewhat too long, which nobody reports.\n */\nconst FALLBACK: ContainerDefaults = { align: 'center', inset: 6, size: 'content' };\n\nexport const CONTAINER_DEFAULTS = new InjectionToken<ContainerDefaults>(\n 'slotted container defaults',\n { providedIn: 'root', factory: (): ContainerDefaults => ({ ...FALLBACK }) },\n);\n\n/**\n * An application decides once what its pages are bounded to and how far they\n * are inset, rather than repeating three inputs on every container. A\n * container that states any of them itself still wins: an explicit input is\n * never overridden by the token.\n */\nexport function provideContainerDefaults(defaults: Partial<ContainerDefaults>) {\n return {\n provide: CONTAINER_DEFAULTS,\n useFactory: (): ContainerDefaults => ({\n align: defaults.align ?? FALLBACK.align,\n inset: defaults.inset ?? FALLBACK.inset,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a container bounds here, before it states anything of its own. */\nexport function injectContainerDefaults(): ContainerDefaults {\n return inject(CONTAINER_DEFAULTS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectContainerDefaults } from './container-defaults';\nimport type { ContainerAlign, ContainerInset, ContainerSize } from './container-defaults';\n\nexport type { ContainerAlign, ContainerInset, ContainerSize } from './container-defaults';\n\n/**\n * Bounds the inline size of a region, insets it from the edge of the space it\n * was given, and places it inside that space. It paints nothing, separates\n * nothing and claims no semantics: the directive is written on the element the\n * page chose, so a `main`, a `section` and an `article` are all the same\n * container.\n *\n * The root is a three-track grid rather than a box with a maximum, because a\n * `slContainerBreakout` child needs a track to span. A run of text written\n * directly inside it becomes an item nothing can select and is placed in the\n * start gutter; wrap text in an element, as every layout family in this\n * library already requires.\n */\n@Component({\n selector: '[slContainer]',\n standalone: true,\n exportAs: 'slContainer',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/container/container.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'container',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-inset]': 'resolvedInset()',\n '[attr.data-align]': 'resolvedAlign()',\n },\n})\nexport class SlContainer {\n /** What the column bounds. Falls back to the injected default. */\n readonly size = input<ContainerSize>();\n /** The gap between the column and the edge, as a step on the space scale. */\n readonly inset = input<ContainerInset>();\n /** Where the column sits when there is space left over. */\n readonly align = input<ContainerAlign>();\n\n private readonly defaults = injectContainerDefaults();\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedInset = computed(() => String(this.inset() ?? this.defaults.inset));\n protected readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A child that leaves the bound behind and reaches both edges of the\n * container: a table, a banner, a strip of media inside a page of prose.\n *\n * It answers the container rather than the viewport, so it is still correct\n * nested, inside a scroll region, and in a container that does not fill the\n * page. Bounded content returns inside it by nesting another `slContainer`.\n */\n@Directive({\n selector: '[slContainerBreakout]',\n standalone: true,\n exportAs: 'slContainerBreakout',\n host: { 'data-part': 'breakout' },\n})\nexport class SlContainerBreakout {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, input, booleanAttribute, numberAttribute, ElementRef, HostAttributeToken, signal, computed, DestroyRef, effect, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ /**
5
+ * A long press opens on touch and pen, after the delay `tooltip` already holds
6
+ * as `touchDelay`. The surface's own defaults are the menu's, and
7
+ * `provideMenuDefaults()` is where an application sets those; whether the
8
+ * family is disabled is the menu's `disabled`, so there is no second copy.
9
+ */
10
+ const FALLBACK = {
11
+ longPress: true,
12
+ longPressDelay: 500,
13
+ };
14
+ const CONTEXT_MENU_DEFAULTS = new InjectionToken('slotted context-menu defaults', { providedIn: 'root', factory: () => FALLBACK });
15
+ /** The decisions an application takes once, in its bootstrap. */
16
+ function provideContextMenuDefaults(defaults) {
17
+ return {
18
+ provide: CONTEXT_MENU_DEFAULTS,
19
+ useFactory: () => ({ ...FALLBACK, ...defaults }),
20
+ };
21
+ }
22
+ function injectContextMenuDefaults() {
23
+ return inject(CONTEXT_MENU_DEFAULTS);
24
+ }
25
+
26
+ /** A rectangle with no size at the point the reader pressed. */
27
+ function pointAnchor(x, y) {
28
+ const rect = new DOMRect(x, y, 0, 0);
29
+ return { getBoundingClientRect: () => rect };
30
+ }
31
+ /** Past this many pixels a held finger is a scroll, not a press. */
32
+ const MOVEMENT_THRESHOLD = 10;
33
+ /**
34
+ * The window after a keyboard opening in which a `contextmenu` event is the
35
+ * one Windows fires for the key rather than a second press.
36
+ */
37
+ const KEYBOARD_ECHO = 300;
38
+ /**
39
+ * The target of a context menu: the region a secondary click, a long press or
40
+ * `Shift+F10` opens an `sl-menu` on.
41
+ *
42
+ * It is written on the consumer's own element — a row, a card, a canvas — and
43
+ * it is the family's one part: the menu it opens is `sl-menu`, imported as it
44
+ * is, the way `sl-menubar` holds its menus. The state is the menu's `[(open)]`
45
+ * and this component only asks it to move, so there is no second owner.
46
+ *
47
+ * A component rather than a directive, as `slMenuItem` and `slLink` are,
48
+ * because a component is what can carry `styleUrl`: this is where the family's
49
+ * authored stylesheet enters an Angular application.
50
+ *
51
+ * It writes no `aria-haspopup`, which is not permitted on a generic element,
52
+ * and no `tabindex`, which would add a tab stop to every wrapped region. A
53
+ * target the consumer made focusable can be opened from the keyboard.
54
+ */
55
+ class SlContextMenuTrigger {
56
+ /** The menu this target opens. */
57
+ menu = input.required({ ...(ngDevMode ? { debugName: "menu" } : /* istanbul ignore next */ {}), alias: 'slContextMenuTriggerFor' });
58
+ longPress = input(undefined, { ...(ngDevMode ? { debugName: "longPress" } : /* istanbul ignore next */ {}), transform: (given) => (given === undefined ? undefined : booleanAttribute(given)) });
59
+ longPressDelay = input(undefined, { ...(ngDevMode ? { debugName: "longPressDelay" } : /* istanbul ignore next */ {}), transform: (given) => (given === undefined ? undefined : numberAttribute(given)) });
60
+ element = inject(ElementRef).nativeElement;
61
+ defaults = injectContextMenuDefaults();
62
+ /**
63
+ * Two directives on one element write host attributes into the same slot,
64
+ * and a host that already carries a part — a `slTableRow` — keeps it: the
65
+ * rule `menu-trigger.ts` records, read from the other side.
66
+ */
67
+ writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });
68
+ writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });
69
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
70
+ ui = this.writtenUi ?? 'context-menu';
71
+ part = this.writtenPart ?? 'root';
72
+ /** The menu names its surface after this element unless given `aria-label`. */
73
+ get id() {
74
+ return this.writtenId ?? this.menu().triggerId;
75
+ }
76
+ pressed = signal(false, /* @ts-ignore */
77
+ ...(ngDevMode ? [{ debugName: "pressed" }] : /* istanbul ignore next */ []));
78
+ press = null;
79
+ openedByKeyboardAt = 0;
80
+ resolvedLongPress = computed(() => this.longPress() ?? this.defaults.longPress, /* @ts-ignore */
81
+ ...(ngDevMode ? [{ debugName: "resolvedLongPress" }] : /* istanbul ignore next */ []));
82
+ resolvedLongPressDelay = computed(() => this.longPressDelay() ?? this.defaults.longPressDelay, /* @ts-ignore */
83
+ ...(ngDevMode ? [{ debugName: "resolvedLongPressDelay" }] : /* istanbul ignore next */ []));
84
+ constructor() {
85
+ const destroyRef = inject(DestroyRef);
86
+ /* The menu is told which element is its trigger — the portal origin, the
87
+ branch of the layer and the focus destination of last resort — as soon
88
+ as the input resolves. */
89
+ effect(() => {
90
+ this.menu().trigger.set(this.element);
91
+ });
92
+ /**
93
+ * The browser would draw its own menu over a secondary click on an item
94
+ * of the family's. While the surface shows, `contextmenu` inside it is
95
+ * prevented.
96
+ */
97
+ const guard = (event) => {
98
+ const menu = this.menu();
99
+ const surface = menu.surface();
100
+ if (!menu.isOpen() || surface === null)
101
+ return;
102
+ const layer = surface.parentElement ?? surface;
103
+ if (event.target instanceof Node && layer.contains(event.target))
104
+ event.preventDefault();
105
+ };
106
+ afterNextRender(() => {
107
+ this.element.ownerDocument.addEventListener('contextmenu', guard, true);
108
+ });
109
+ destroyRef.onDestroy(() => {
110
+ this.cancelPress();
111
+ this.element.ownerDocument.removeEventListener('contextmenu', guard, true);
112
+ });
113
+ }
114
+ /**
115
+ * Opens, or moves. The way back is captured now: the element that held focus
116
+ * when the reader pressed, and the target itself when nothing did. While the
117
+ * surface is already open the anchor moves and no request is emitted.
118
+ */
119
+ openAt(anchor, reason, source) {
120
+ const menu = this.menu();
121
+ if (!menu.isOpen()) {
122
+ const active = this.element.ownerDocument.activeElement;
123
+ menu.finalFocus.set(active instanceof HTMLElement && active !== active.ownerDocument.body
124
+ ? active
125
+ : this.element);
126
+ }
127
+ menu.anchor.set(anchor);
128
+ menu.entry.current = 'first';
129
+ menu.toggle(true, reason, source);
130
+ }
131
+ onContextMenu(source) {
132
+ const event = source;
133
+ if (this.menu().resolvedDisabled())
134
+ return;
135
+ event.preventDefault();
136
+ this.cancelPress();
137
+ /* Windows fires `contextmenu` for the key the family already answered. */
138
+ if (Date.now() - this.openedByKeyboardAt < KEYBOARD_ECHO)
139
+ return;
140
+ this.openAt(pointAnchor(event.clientX, event.clientY), 'pointer', event);
141
+ }
142
+ onKeyDown(source) {
143
+ const event = source;
144
+ if (this.menu().resolvedDisabled())
145
+ return;
146
+ if (event.key !== 'ContextMenu' && !(event.key === 'F10' && event.shiftKey))
147
+ return;
148
+ event.preventDefault();
149
+ this.openedByKeyboardAt = Date.now();
150
+ this.openAt(null, 'keyboard', event);
151
+ }
152
+ /**
153
+ * A primary press on the target while the menu shows closes it: the target
154
+ * is a branch of the layer, so the layer would not, and from the reader's
155
+ * side the target is elsewhere. On touch and pen the same press may also be
156
+ * the start of a long one.
157
+ */
158
+ onPointerDown(source) {
159
+ const event = source;
160
+ const menu = this.menu();
161
+ if (menu.resolvedDisabled())
162
+ return;
163
+ if (event.button === 0 && menu.isOpen())
164
+ menu.toggle(false, 'outsidePress', event);
165
+ if (!this.resolvedLongPress() || event.pointerType === 'mouse' || event.button !== 0)
166
+ return;
167
+ this.cancelPress();
168
+ const { clientX: x, clientY: y } = event;
169
+ this.press = {
170
+ x,
171
+ y,
172
+ timer: setTimeout(() => {
173
+ this.press = null;
174
+ this.pressed.set(false);
175
+ this.openAt(pointAnchor(x, y), 'pointer', event);
176
+ }, this.resolvedLongPressDelay()),
177
+ };
178
+ this.pressed.set(true);
179
+ }
180
+ onPointerMove(source) {
181
+ const event = source;
182
+ if (this.press === null)
183
+ return;
184
+ if (Math.hypot(event.clientX - this.press.x, event.clientY - this.press.y) > MOVEMENT_THRESHOLD) {
185
+ this.cancelPress();
186
+ }
187
+ }
188
+ cancelPress() {
189
+ if (this.press === null)
190
+ return;
191
+ clearTimeout(this.press.timer);
192
+ this.press = null;
193
+ this.pressed.set(false);
194
+ }
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component });
196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlContextMenuTrigger, isStandalone: true, selector: "[slContextMenuTriggerFor]", inputs: { menu: { classPropertyName: "menu", publicName: "slContextMenuTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, longPress: { classPropertyName: "longPress", publicName: "longPress", isSignal: true, isRequired: false, transformFunction: null }, longPressDelay: { classPropertyName: "longPressDelay", publicName: "longPressDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "contextmenu": "onContextMenu($event)", "keydown": "onKeyDown($event)", "pointerdown": "onPointerDown($event)", "pointermove": "onPointerMove($event)", "pointerup": "cancelPress()", "pointercancel": "cancelPress()" }, properties: { "attr.data-ui": "ui", "attr.data-part": "part", "attr.id": "id", "attr.data-open": "menu().isOpen() ? \"\" : null", "attr.data-pressed": "pressed() ? \"\" : null", "attr.data-disabled": "menu().resolvedDisabled() ? \"\" : null" } }, exportAs: ["slContextMenuTrigger"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=context-menu]{--_mark-width: var(--slotted-context-menu-mark-width, var(--slotted-border-width-thin, 1px));--_mark-color: var(--slotted-context-menu-mark-color, var(--slotted-border-strong, CanvasText))}@media(pointer:coarse){[data-ui=context-menu]{-webkit-touch-callout:none}}[data-ui=context-menu][data-pressed]{-webkit-user-select:none;user-select:none}[data-ui=context-menu]{position:relative}[data-ui=context-menu]:after{border-radius:inherit;box-shadow:inset 0 0 0 var(--_mark-width) transparent;content:\"\";inset:0;pointer-events:none;position:absolute;transition:box-shadow var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=context-menu][data-open]:after{box-shadow:inset 0 0 0 var(--_mark-width) var(--_mark-color)}[data-ui=context-menu]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlContextMenuTrigger, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: '[slContextMenuTriggerFor]', standalone: true, exportAs: 'slContextMenuTrigger', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
201
+ '[attr.data-ui]': 'ui',
202
+ '[attr.data-part]': 'part',
203
+ '[attr.id]': 'id',
204
+ '[attr.data-open]': 'menu().isOpen() ? "" : null',
205
+ '[attr.data-pressed]': 'pressed() ? "" : null',
206
+ '[attr.data-disabled]': 'menu().resolvedDisabled() ? "" : null',
207
+ '(contextmenu)': 'onContextMenu($event)',
208
+ '(keydown)': 'onKeyDown($event)',
209
+ '(pointerdown)': 'onPointerDown($event)',
210
+ '(pointermove)': 'onPointerMove($event)',
211
+ '(pointerup)': 'cancelPress()',
212
+ '(pointercancel)': 'cancelPress()',
213
+ }, styles: ["@layer slotted.components{[data-ui=context-menu]{--_mark-width: var(--slotted-context-menu-mark-width, var(--slotted-border-width-thin, 1px));--_mark-color: var(--slotted-context-menu-mark-color, var(--slotted-border-strong, CanvasText))}@media(pointer:coarse){[data-ui=context-menu]{-webkit-touch-callout:none}}[data-ui=context-menu][data-pressed]{-webkit-user-select:none;user-select:none}[data-ui=context-menu]{position:relative}[data-ui=context-menu]:after{border-radius:inherit;box-shadow:inset 0 0 0 var(--_mark-width) transparent;content:\"\";inset:0;pointer-events:none;position:absolute;transition:box-shadow var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=context-menu][data-open]:after{box-shadow:inset 0 0 0 var(--_mark-width) var(--_mark-color)}[data-ui=context-menu]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}}\n"] }]
214
+ }], ctorParameters: () => [], propDecorators: { menu: [{ type: i0.Input, args: [{ isSignal: true, alias: "slContextMenuTriggerFor", required: true }] }], longPress: [{ type: i0.Input, args: [{ isSignal: true, alias: "longPress", required: false }] }], longPressDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "longPressDelay", required: false }] }] } });
215
+
216
+ /**
217
+ * Generated bundle index. Do not edit.
218
+ */
219
+
220
+ export { CONTEXT_MENU_DEFAULTS, SlContextMenuTrigger, injectContextMenuDefaults, provideContextMenuDefaults };
221
+ //# sourceMappingURL=slotted-angular-context-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-context-menu.mjs","sources":["../../context-menu/src/context-menu-defaults.ts","../../context-menu/src/context-menu-trigger.ts","../../context-menu/src/slotted-angular-context-menu.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nexport interface ContextMenuDefaults {\n /** Whether a long press on touch and pen opens the menu. */\n longPress: boolean;\n /** How long the press is held before the menu opens, in milliseconds. */\n longPressDelay: number;\n}\n\n/**\n * A long press opens on touch and pen, after the delay `tooltip` already holds\n * as `touchDelay`. The surface's own defaults are the menu's, and\n * `provideMenuDefaults()` is where an application sets those; whether the\n * family is disabled is the menu's `disabled`, so there is no second copy.\n */\nconst FALLBACK: ContextMenuDefaults = {\n longPress: true,\n longPressDelay: 500,\n};\n\nexport const CONTEXT_MENU_DEFAULTS = new InjectionToken<ContextMenuDefaults>(\n 'slotted context-menu defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/** The decisions an application takes once, in its bootstrap. */\nexport function provideContextMenuDefaults(defaults: Partial<ContextMenuDefaults>) {\n return {\n provide: CONTEXT_MENU_DEFAULTS,\n useFactory: (): ContextMenuDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectContextMenuDefaults(): ContextMenuDefaults {\n return inject(CONTEXT_MENU_DEFAULTS);\n}\n","import type { PositionerAnchor } from '@slotted/core/positioner';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlMenu } from '@slotted/angular/menu';\n\nimport { injectContextMenuDefaults } from './context-menu-defaults';\n\n/** A rectangle with no size at the point the reader pressed. */\nfunction pointAnchor(x: number, y: number): PositionerAnchor {\n const rect = new DOMRect(x, y, 0, 0);\n return { getBoundingClientRect: () => rect };\n}\n\n/** Past this many pixels a held finger is a scroll, not a press. */\nconst MOVEMENT_THRESHOLD = 10;\n\n/**\n * The window after a keyboard opening in which a `contextmenu` event is the\n * one Windows fires for the key rather than a second press.\n */\nconst KEYBOARD_ECHO = 300;\n\n/**\n * The target of a context menu: the region a secondary click, a long press or\n * `Shift+F10` opens an `sl-menu` on.\n *\n * It is written on the consumer's own element — a row, a card, a canvas — and\n * it is the family's one part: the menu it opens is `sl-menu`, imported as it\n * is, the way `sl-menubar` holds its menus. The state is the menu's `[(open)]`\n * and this component only asks it to move, so there is no second owner.\n *\n * A component rather than a directive, as `slMenuItem` and `slLink` are,\n * because a component is what can carry `styleUrl`: this is where the family's\n * authored stylesheet enters an Angular application.\n *\n * It writes no `aria-haspopup`, which is not permitted on a generic element,\n * and no `tabindex`, which would add a tab stop to every wrapped region. A\n * target the consumer made focusable can be opened from the keyboard.\n */\n@Component({\n selector: '[slContextMenuTriggerFor]',\n standalone: true,\n exportAs: 'slContextMenuTrigger',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/context-menu/context-menu.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.data-ui]': 'ui',\n '[attr.data-part]': 'part',\n '[attr.id]': 'id',\n '[attr.data-open]': 'menu().isOpen() ? \"\" : null',\n '[attr.data-pressed]': 'pressed() ? \"\" : null',\n '[attr.data-disabled]': 'menu().resolvedDisabled() ? \"\" : null',\n '(contextmenu)': 'onContextMenu($event)',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'cancelPress()',\n '(pointercancel)': 'cancelPress()',\n },\n})\nexport class SlContextMenuTrigger {\n /** The menu this target opens. */\n readonly menu = input.required<SlMenu>({ alias: 'slContextMenuTriggerFor' });\n\n readonly longPress = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : booleanAttribute(given)),\n });\n readonly longPressDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly defaults = injectContextMenuDefaults();\n\n /**\n * Two directives on one element write host attributes into the same slot,\n * and a host that already carries a part — a `slTableRow` — keeps it: the\n * rule `menu-trigger.ts` records, read from the other side.\n */\n private readonly writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });\n private readonly writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly ui = this.writtenUi ?? 'context-menu';\n protected readonly part = this.writtenPart ?? 'root';\n /** The menu names its surface after this element unless given `aria-label`. */\n protected get id(): string {\n return this.writtenId ?? this.menu().triggerId;\n }\n\n protected readonly pressed = signal(false);\n private press: { timer: ReturnType<typeof setTimeout>; x: number; y: number } | null = null;\n private openedByKeyboardAt = 0;\n\n protected readonly resolvedLongPress = computed(\n () => this.longPress() ?? this.defaults.longPress,\n );\n protected readonly resolvedLongPressDelay = computed(\n () => this.longPressDelay() ?? this.defaults.longPressDelay,\n );\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n /* The menu is told which element is its trigger — the portal origin, the\n branch of the layer and the focus destination of last resort — as soon\n as the input resolves. */\n effect(() => {\n this.menu().trigger.set(this.element);\n });\n\n /**\n * The browser would draw its own menu over a secondary click on an item\n * of the family's. While the surface shows, `contextmenu` inside it is\n * prevented.\n */\n const guard = (event: Event) => {\n const menu = this.menu();\n const surface = menu.surface();\n if (!menu.isOpen() || surface === null) return;\n const layer = surface.parentElement ?? surface;\n if (event.target instanceof Node && layer.contains(event.target)) event.preventDefault();\n };\n afterNextRender(() => {\n this.element.ownerDocument.addEventListener('contextmenu', guard, true);\n });\n\n destroyRef.onDestroy(() => {\n this.cancelPress();\n this.element.ownerDocument.removeEventListener('contextmenu', guard, true);\n });\n }\n\n /**\n * Opens, or moves. The way back is captured now: the element that held focus\n * when the reader pressed, and the target itself when nothing did. While the\n * surface is already open the anchor moves and no request is emitted.\n */\n private openAt(anchor: PositionerAnchor | null, reason: 'pointer' | 'keyboard', source: Event) {\n const menu = this.menu();\n if (!menu.isOpen()) {\n const active = this.element.ownerDocument.activeElement;\n menu.finalFocus.set(\n active instanceof HTMLElement && active !== active.ownerDocument.body\n ? active\n : this.element,\n );\n }\n menu.anchor.set(anchor);\n menu.entry.current = 'first';\n menu.toggle(true, reason, source);\n }\n\n protected onContextMenu(source: Event) {\n const event = source as MouseEvent;\n if (this.menu().resolvedDisabled()) return;\n event.preventDefault();\n this.cancelPress();\n /* Windows fires `contextmenu` for the key the family already answered. */\n if (Date.now() - this.openedByKeyboardAt < KEYBOARD_ECHO) return;\n this.openAt(pointAnchor(event.clientX, event.clientY), 'pointer', event);\n }\n\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n if (this.menu().resolvedDisabled()) return;\n if (event.key !== 'ContextMenu' && !(event.key === 'F10' && event.shiftKey)) return;\n event.preventDefault();\n this.openedByKeyboardAt = Date.now();\n this.openAt(null, 'keyboard', event);\n }\n\n /**\n * A primary press on the target while the menu shows closes it: the target\n * is a branch of the layer, so the layer would not, and from the reader's\n * side the target is elsewhere. On touch and pen the same press may also be\n * the start of a long one.\n */\n protected onPointerDown(source: Event) {\n const event = source as PointerEvent;\n const menu = this.menu();\n if (menu.resolvedDisabled()) return;\n if (event.button === 0 && menu.isOpen()) menu.toggle(false, 'outsidePress', event);\n if (!this.resolvedLongPress() || event.pointerType === 'mouse' || event.button !== 0) return;\n\n this.cancelPress();\n const { clientX: x, clientY: y } = event;\n this.press = {\n x,\n y,\n timer: setTimeout(() => {\n this.press = null;\n this.pressed.set(false);\n this.openAt(pointAnchor(x, y), 'pointer', event);\n }, this.resolvedLongPressDelay()),\n };\n this.pressed.set(true);\n }\n\n protected onPointerMove(source: Event) {\n const event = source as PointerEvent;\n if (this.press === null) return;\n if (\n Math.hypot(event.clientX - this.press.x, event.clientY - this.press.y) > MOVEMENT_THRESHOLD\n ) {\n this.cancelPress();\n }\n }\n\n protected cancelPress() {\n if (this.press === null) return;\n clearTimeout(this.press.timer);\n this.press = null;\n this.pressed.set(false);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}