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

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-text-field.mjs","sources":["../../text-field/src/text-field-defaults.ts","../../text-field/src/text-field.ts","../../text-field/src/text-field-input.ts","../../text-field/src/text-field-parts.ts","../../text-field/src/slotted-angular-text-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\n\n/** The type step the control sits at, matching the field around it. */\nexport type TextFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. `outline` takes the ground it is placed on,\n * `subtle` sinks into the page, and `plain` shows nothing at rest — which is\n * what a dense table needs: a cell that is only a control while it is used, and\n * that keeps the same box so the row does not reflow under the pointer.\n */\nexport type TextFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * The six text types. Anything else an `input` accepts still reaches the\n * element, because the consumer writes it there; the six are the ones this\n * family paints, sizes and reveals.\n */\nexport type TextFieldType = 'text' | 'search' | 'email' | 'url' | 'tel' | 'password';\n\nexport interface TextFieldDefaults {\n mono: boolean;\n size: TextFieldSize;\n variant: TextFieldVariant;\n}\n\nconst FALLBACK: TextFieldDefaults = {\n mono: false,\n size: 'md',\n variant: 'outline',\n};\n\nexport const TEXT_FIELD_DEFAULTS = new InjectionToken<TextFieldDefaults>(\n 'slotted text field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once what its text fields look like, rather than\n * repeating the same inputs on every control in a form. A control that states\n * any of them itself still wins. What the buttons and marks say comes from the\n * language in force (`provideSlotted`).\n *\n * `size` is the one the field outranks: a `size=\"sm\"` field holding an `md`\n * control is a field and a control disagreeing about one row, so a control\n * inside a field takes the field's step and this token answers only outside\n * one.\n */\nexport function provideTextFieldDefaults(defaults: Partial<TextFieldDefaults>) {\n return {\n provide: TEXT_FIELD_DEFAULTS,\n useFactory: (): TextFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a text field renders as here, before it states anything of its own. */\nexport function injectTextFieldDefaults(): TextFieldDefaults {\n return inject(TEXT_FIELD_DEFAULTS);\n}\n\n/**\n * What the frame needs to know about the control inside it, and what the\n * control needs the frame to call.\n *\n * It is an abstract class rather than an import so the two directives can\n * depend on each other without a cycle — the shape `SlFieldDefaultsSource`\n * already has in `field`. The input provides itself as this, and the frame\n * queries for it.\n */\nexport abstract class SlTextFieldControl {\n /** Whether there is anything to clear. */\n abstract readonly empty: Signal<boolean>;\n /** Whether the control is a password, which is what the toggle is for. */\n abstract readonly password: Signal<boolean>;\n /** Whether the password is currently showing. */\n abstract readonly revealed: Signal<boolean>;\n /** Whether Caps Lock is on while a password has focus. */\n abstract readonly capsLock: Signal<boolean>;\n /** What the element shows, for the copy button. */\n abstract readonly currentValue: Signal<string>;\n abstract readonly resolvedDisabled: Signal<boolean | undefined>;\n abstract readonly resolvedReadOnly: Signal<boolean | undefined>;\n abstract readonly resolvedInvalid: Signal<boolean | undefined>;\n /** Empties the value with reason `clear` and returns focus to the control. */\n abstract clear(source: Event): void;\n /** Turns the password from dots into characters, and holds the caret. */\n abstract toggleReveal(source: Event): void;\n}\n\n/** What a finished copy reports: whether the clipboard took it, and why it was asked. */\nexport interface TextFieldCopyDetail {\n copied: boolean;\n reason: 'pointer' | 'keyboard';\n source: Event;\n value: string;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlField } from '@slotted/angular/field';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { writeToClipboard } from '@slotted/core/clipboard';\nimport {\n type PartialMessages,\n textFieldMessages,\n type TextFieldMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\n\nimport { injectTextFieldDefaults, SlTextFieldControl } from './text-field-defaults';\nimport type { TextFieldCopyDetail, TextFieldSize, TextFieldVariant } from './text-field-defaults';\n\n/** How long the check stays in place of the copy mark: `code-block`'s number. */\nconst COPIED_FOR = 2000;\n\nexport type { TextFieldSize, TextFieldType, TextFieldVariant } from './text-field-defaults';\n\n/**\n * The frame: one line of text, and everything that sits inside its border.\n *\n * **It is not the control.** The element carrying `data-ui` is the consumer's\n * own box with no role; the `input` inside it holds the value, the identifier\n * and every native attribute. WAI-ARIA settles the shape: a `textbox` may hold\n * only non-interactive, presentational children, so the clear and reveal\n * buttons are the control's siblings rather than its children.\n *\n * **Angular pays one element for that frame, and React pays none.** React can\n * render a wrapper from inside a component; an Angular directive cannot create\n * a box around its own host. `slTextFieldInput` injects this class, so a\n * control written without the frame is a compile-time failure rather than a\n * silent one — the property `docs/history/designs/2026-08-31-field-aware-controls-design.md`\n * asks of every control this library ships.\n */\n@Component({\n selector: '[slTextField]',\n standalone: true,\n exportAs: 'slTextField',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content select=\"[slTextFieldStart]\" />\n <ng-content />\n <!-- The ring, the mark and the two buttons below stay rendered for as long\n as their capability is on, and leave through hidden, so the stylesheet\n can take them out as well as bring them in. -->\n @if (loading() !== undefined) {\n <span data-part=\"busy\" data-ui=\"spinner\" aria-hidden=\"true\" [hidden]=\"!loading()\"></span>\n }\n @if (control()?.password()) {\n <span data-part=\"caps-lock\" aria-hidden=\"true\" [hidden]=\"!control()!.capsLock()\">\n <span slIcon><svg slGlyph name=\"caps-lock\"></svg></span>\n </span>\n }\n @if (clearable()) {\n <button\n data-part=\"clear\"\n type=\"button\"\n [hidden]=\"!showClear()\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"control()!.clear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n @if (copyable()) {\n <button\n data-part=\"copy\"\n type=\"button\"\n [hidden]=\"!showCopy()\"\n [attr.aria-label]=\"t('copy')\"\n [attr.data-complete]=\"copied() ? '' : null\"\n (click)=\"copy($event)\"\n >\n <!-- Two blocks, so the check is a new element and arrives. -->\n @if (copied()) {\n <span slIcon><svg slGlyph name=\"check\"></svg></span>\n } @else {\n <span slIcon><svg slGlyph name=\"copy\"></svg></span>\n }\n </button>\n }\n @if (showReveal()) {\n <button\n data-part=\"reveal\"\n type=\"button\"\n [attr.aria-label]=\"t('reveal')\"\n [attr.aria-pressed]=\"control()!.revealed()\"\n (click)=\"control()!.toggleReveal($event)\"\n >\n @if (control()!.revealed()) {\n <span slIcon><svg slGlyph name=\"eye-off\"></svg></span>\n } @else {\n <span slIcon><svg slGlyph name=\"eye\"></svg></span>\n }\n </button>\n }\n <ng-content select=\"[slTextFieldEnd]\" />`,\n styleUrl: '../../../styles/src/text-field/text-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'text-field',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-mono]': \"resolvedMono() ? '' : null\",\n '[attr.data-disabled]': \"control()?.resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"control()?.resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"control()?.resolvedReadOnly() === true ? '' : null\",\n '[attr.data-loading]': \"loading() === true ? '' : null\",\n },\n})\nexport class SlTextField {\n /** Defaults to the field, then to the token, then to `md`. */\n readonly size = input<TextFieldSize | undefined>(undefined);\n /** Defaults to the token, then to `outline`. */\n readonly variant = input<TextFieldVariant | undefined>(undefined);\n /** Sets the value in the monospaced family, for identifiers, hashes and keys. */\n readonly mono = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Draws a button that empties the value and returns focus to the control. */\n readonly clearable = input(false, { transform: booleanAttribute });\n /** Draws a toggle that turns a password from dots into characters. */\n readonly revealable = input(false, { transform: booleanAttribute });\n /**\n * Draws a button that writes the value to the clipboard, shows a check for\n * two seconds and announces the outcome. It stays for a read-only value and\n * leaves while the value is empty or disabled.\n */\n readonly copyable = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * names of the clear, copy and reveal buttons (`reveal` does not change with\n * the state), and what a copy and the Caps Lock mark announce.\n */\n readonly messages = input<PartialMessages<TextFieldMessages> | undefined>(undefined);\n /**\n * Draws the shared ring before the buttons while something about the value\n * is being checked, and marks the control `aria-busy`. The value stays\n * editable. Stating it at all — `false` included — keeps the ring's place,\n * so it can leave as well as arrive.\n */\n readonly loading = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** Once the copy button has asked the clipboard, with the outcome. */\n readonly valueCopy = output<TextFieldCopyDetail>();\n\n protected readonly defaults = injectTextFieldDefaults();\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly copied = signal(false);\n private copiedTimer: ReturnType<typeof setTimeout> | undefined;\n private readonly field = inject(SlField, { optional: true });\n\n /**\n * The control inside. It provides itself as `SlTextFieldControl`, so the\n * frame can read whether the value is empty and whether it is a password\n * without either directive importing the other.\n */\n readonly control = contentChild(SlTextFieldControl, { descendants: true });\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedMono = computed(() => this.mono() ?? this.defaults.mono);\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(textFieldMessages, this.messages);\n\n /**\n * A button that clears an empty control, or a value the reader cannot change,\n * is a button that lies. Both cases withdraw it rather than disabling it,\n * because a disabled control in the frame is one more thing to tab past.\n */\n protected readonly showClear = computed(() => {\n const control = this.control();\n if (control === undefined || !this.clearable()) return false;\n return (\n !control.empty() && control.resolvedDisabled() !== true && control.resolvedReadOnly() !== true\n );\n });\n\n /** A read-only value may still be copied: only an empty or disabled one withdraws it. */\n protected readonly showCopy = computed(() => {\n const control = this.control();\n return control !== undefined && !control.empty() && control.resolvedDisabled() !== true;\n });\n\n constructor() {\n inject(DestroyRef).onDestroy(() => clearTimeout(this.copiedTimer));\n }\n\n protected async copy(event: MouseEvent) {\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n const value = this.control()?.currentValue() ?? '';\n const done = (await writeToClipboard(value)) !== 'refused';\n if (done) {\n this.copied.set(true);\n clearTimeout(this.copiedTimer);\n this.copiedTimer = setTimeout(() => this.copied.set(false), COPIED_FOR);\n }\n getLiveAnnouncer(this.element.ownerDocument).announce(\n done ? this.t('copied') : this.t('copyFailed'),\n );\n this.valueCopy.emit({ copied: done, reason, source: event, value });\n }\n\n /** A read-only password may still be read: only `disabled` withdraws it. */\n protected readonly showReveal = computed(() => {\n const control = this.control();\n if (control === undefined || !this.revealable()) return false;\n return control.password() && control.resolvedDisabled() !== true;\n });\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { SlField } from '@slotted/angular/field';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\n\nimport { SlTextFieldControl } from './text-field-defaults';\nimport type { TextFieldType } from './text-field-defaults';\nimport { SlTextField } from './text-field';\n\n/**\n * A native button fires the same `click` for a pointer, for Space and for\n * Enter. A click synthesised by the keyboard reports no detail; a real one\n * reports the click count — the rule `button` and `tag` both write.\n */\nfunction activationReason(event: Event): ChangeReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * The control itself: the value, the identifier, and everything the field\n * around it says.\n *\n * **The element owns the characters.** The directive keeps a mirror of what the\n * element shows, for the clear button and the count, and never a second copy of\n * the value. `writeValue` from a form and a `[value]` binding both write the\n * element; typing writes it directly, and nothing here fights the browser for\n * it — which is what Angular's own `DefaultValueAccessor` does, and the\n * asymmetry with React, where a controlled input's DOM belongs to React.\n *\n * **Unset means ask the field.** `disabled`, `readOnly` and `invalid` default to\n * `undefined` rather than `false`, which is what makes \"not disabled\" and \"said\n * nothing\" different answers. A value the consumer wrote as a static attribute\n * is read before the host binding computes, so the binding never writes over it.\n */\n@Directive({\n selector: 'input[slTextFieldInput]',\n standalone: true,\n exportAs: 'slTextFieldInput',\n providers: [\n { provide: SlTextFieldControl, useExisting: forwardRef(() => SlTextFieldInput) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTextFieldInput), multi: true },\n ],\n host: {\n 'data-part': 'input',\n '[attr.id]': 'controlId()',\n '[attr.type]': 'resolvedType()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'ariaInvalid()',\n '[attr.aria-required]': 'ariaRequired()',\n '[attr.disabled]': 'disabledAttribute()',\n '[attr.readonly]': 'readonlyAttribute()',\n '[attr.aria-busy]': \"textField.loading() === true ? 'true' : null\",\n '(input)': 'onInput($event)',\n '(keydown)': 'readCapsLock($event)',\n '(keyup)': 'readCapsLock($event)',\n '(blur)': 'onBlur()',\n },\n})\nexport class SlTextFieldInput implements ControlValueAccessor, OnInit, SlTextFieldControl {\n /** Present means the consumer owns the value. */\n readonly value = input<string | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<string | undefined>(undefined);\n /** Unstated rather than `false`, so the control defers to the field. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`. Reaches the element as the native `readonly`. */\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`. Reaches the element as `aria-invalid`. */\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Publishes the length of the value to the field, which draws the count. */\n readonly showCount = input(false, { transform: booleanAttribute });\n /**\n * The limit the count is measured against. Defaults to the element's own\n * `maxlength`, and set alone it is a soft limit: the value can pass it, and\n * the counter says so before validation runs.\n */\n readonly countMax = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** Present means the consumer owns whether the password is showing. */\n readonly revealedValue = input<boolean | undefined, boolean | string | undefined>(undefined, {\n alias: 'revealed',\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n /**\n * The element's own `type`, written or bound. An input rather than a host\n * attribute read once, because a bound `[type]` would otherwise go to the\n * element's property and the host binding below would never see it.\n */\n readonly type = input<TextFieldType | string | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no `[(value)]`,\n * because a two-way binding has one slot and can carry none of those; a form\n * gets the same movement through `ControlValueAccessor`.\n */\n readonly valueChange = output<ChangeRequest<string>>();\n readonly revealedChange = output<ChangeRequest<boolean>>();\n\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n private readonly injector = inject(Injector);\n /**\n * The frame around the control. Injected without `optional`, so an `input`\n * written without it fails at construction rather than silently losing its\n * border, its ring and the place its two buttons stand — the property\n * `docs/history/designs/2026-08-31-field-aware-controls-design.md` asks of\n * every control this library ships. It is public because a template that\n * reaches the input through `exportAs` may want the frame's resolved step.\n */\n readonly textField = inject(SlTextField);\n private readonly field = inject(SlField, { optional: true });\n\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {\n optional: true,\n });\n private readonly writtenRequired = inject(new HostAttributeToken('aria-required'), {\n optional: true,\n });\n private readonly writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });\n private readonly writtenMaxLength = inject(new HostAttributeToken('maxlength'), {\n optional: true,\n });\n\n /** What the element is showing. Never a second copy of the value. */\n private readonly mirror = signal('');\n private readonly ownRevealed = signal(false);\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private onChangeFn: (value: string) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n\n private readonly ownCapsLock = signal(false);\n readonly capsLock = this.ownCapsLock.asReadonly();\n readonly currentValue = this.mirror.asReadonly();\n readonly empty = computed(() => this.mirror() === '');\n readonly revealed = computed(() => this.revealedValue() ?? this.ownRevealed());\n private readonly ownType = computed(() => this.type() ?? 'text');\n readonly password = computed(() => this.ownType() === 'password');\n\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(\n () =>\n this.readOnly() ??\n (this.writtenReadonly === null ? undefined : true) ??\n this.field?.resolvedReadOnly(),\n );\n readonly resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid());\n\n protected readonly controlId = computed(\n () => this.writtenId ?? this.field?.ids().control ?? null,\n );\n /**\n * The swap the reveal button makes. It is the element's own `type` otherwise,\n * so a consumer's `type=\"email\"` survives the host binding that a directive\n * on the element would otherwise write over.\n */\n protected readonly resolvedType = computed<TextFieldType | string>(() =>\n this.password() && this.revealed() ? 'text' : this.ownType(),\n );\n /** Merged after the consumer's own, so a tour step is read before the help. */\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(\n () => this.writtenInvalid ?? (this.resolvedInvalid() === true ? 'true' : null),\n );\n protected readonly ariaRequired = computed(\n () => this.writtenRequired ?? (this.field?.required() === true ? 'true' : null),\n );\n protected readonly disabledAttribute = computed(() =>\n this.resolvedDisabled() === true ? '' : null,\n );\n protected readonly readonlyAttribute = computed(() =>\n this.resolvedReadOnly() === true ? '' : null,\n );\n\n private readonly limit = computed(() => {\n const written = this.writtenMaxLength === null ? undefined : Number(this.writtenMaxLength);\n return (\n this.countMax() ?? (written === undefined || Number.isNaN(written) ? undefined : written)\n );\n });\n\n constructor() {\n /* A consumer's own value writes the element, the way a form's does. */\n effect(() => {\n const next = this.value();\n if (next === undefined || next === this.element.value) return;\n this.element.value = next;\n this.mirror.set(next);\n });\n\n /* The count is the control's and the place is the field's. */\n effect(() => {\n if (this.field === null) return;\n if (!this.showCount()) {\n this.field.setCount(undefined);\n return;\n }\n this.field.setCount({ length: this.mirror().length, max: this.limit() });\n });\n }\n\n /**\n * Angular creates every directive in a template before it binds any input, so\n * the starting value is read here rather than in the constructor: read there,\n * `defaultValue` is always `undefined` and the mirror starts empty — which is\n * what the first run of this family's spec showed, as a clear button that\n * never appeared and a count that stayed at nought.\n */\n ngOnInit() {\n this.ownRevealed.set(this.defaultRevealed());\n const initial = this.defaultValue() ?? this.element.value;\n if (initial !== this.element.value) this.element.value = initial;\n this.mirror.set(this.element.value);\n }\n\n /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */\n get inputElement(): HTMLInputElement {\n return this.element;\n }\n\n writeValue(value: string | null | undefined) {\n this.element.value = value ?? '';\n this.mirror.set(this.element.value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n clear(source: Event) {\n if (this.request('', 'clear', source)) {\n this.element.value = '';\n this.mirror.set('');\n this.onChangeFn('');\n }\n this.element.focus();\n }\n\n toggleReveal(source: Event) {\n const start = this.element.selectionStart;\n const end = this.element.selectionEnd;\n const next = !this.revealed();\n\n let cancelled = false;\n const state = createControllable<boolean>({\n controlled: this.revealedValue(),\n initial: this.revealed(),\n onRequest: (request) => {\n this.revealedChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(next, activationReason(source), source);\n if (cancelled) return;\n this.ownRevealed.set(next);\n\n /* Swapping the type moves the caret to the end, so it is put back after\n the attribute is written rather than before. */\n afterNextRender(\n () => {\n this.element.focus();\n if (start !== null && end !== null) this.element.setSelectionRange(start, end);\n },\n { injector: this.injector },\n );\n }\n\n protected onInput(event: Event) {\n const next = this.element.value;\n if (this.request(next, 'keyboard', event)) {\n this.mirror.set(next);\n this.onChangeFn(next);\n }\n }\n\n protected onBlur() {\n this.ownCapsLock.set(false);\n this.onTouchedFn();\n }\n\n /**\n * Caps Lock is read from the key events the control already receives, and\n * only in a password: the platform exposes the modifier on an event and\n * nowhere else. It is announced once, as it turns on.\n */\n protected readCapsLock(event: KeyboardEvent) {\n if (!this.password() || typeof event.getModifierState !== 'function') return;\n const on = event.getModifierState('CapsLock');\n if (on && !this.ownCapsLock()) {\n getLiveAnnouncer(this.element.ownerDocument).announce(this.textField.t('capsLock'));\n }\n this.ownCapsLock.set(on);\n }\n\n /** Emits the request and says whether anything may commit. */\n private request(next: string, reason: ChangeReason, source: Event): boolean {\n if (next === this.mirror()) return false;\n\n let cancelled = false;\n const state = createControllable<string>({\n controlled: undefined,\n initial: this.mirror(),\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(next, reason, source);\n return !cancelled;\n }\n}\n","import { afterNextRender, Directive, ElementRef, HostAttributeToken, inject } from '@angular/core';\n\n/**\n * An adornment before the value in the reading direction: a currency mark, a\n * unit, an icon, an `@`. Named for the direction rather than for a side, so the\n * same markup puts the mark before the amount in both directions —\n * `docs/component-features.md` §2.4 states the preference and `tag` already\n * ships parts by these names.\n *\n * It is a directive on the consumer's own element, so an `icon`, a `kbd` or a\n * `span` all work and none of them loses its own semantics. The stylesheet\n * sizes any icon inside it from the control's own glyph scale.\n */\n@Directive({\n selector: '[slTextFieldStart]',\n standalone: true,\n exportAs: 'slTextFieldStart',\n host: { 'data-part': 'start' },\n})\nexport class SlTextFieldStart {}\n\n/** An adornment after the value in the reading direction. */\n@Directive({\n selector: '[slTextFieldEnd]',\n standalone: true,\n exportAs: 'slTextFieldEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlTextFieldEnd {}\n\n/**\n * A button of the consumer's inside the frame, projected into `start` or\n * `end`: a submit, a menu trigger naming a country, a tooltip on an\n * information mark. Named by `aria-label` it is drawn square, like the\n * family's own buttons; named by its text it takes a step of air a side.\n *\n * `slMenuTriggerFor` on the same element binds `data-part` to `null` outside\n * a bar or a surface, and that binding is a constant, so the part is written\n * back once after the first render and nothing writes over it again — the\n * rule `menu` records for its own trigger. A `type` the consumer wrote wins.\n */\n@Directive({\n selector: 'button[slTextFieldAction]',\n standalone: true,\n exportAs: 'slTextFieldAction',\n host: { 'data-part': 'action', '[attr.type]': 'type' },\n})\nexport class SlTextFieldAction {\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true }) ?? 'button';\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => element.setAttribute('data-part', 'action'));\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,275 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, input, booleanAttribute, numberAttribute, output, ElementRef, HostAttributeToken, signal, computed, effect, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { createControllable } from '@slotted/core/state';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { SlField } from '@slotted/angular/field';
6
+
7
+ const FALLBACK = {
8
+ mono: false,
9
+ resize: 'block',
10
+ size: 'md',
11
+ variant: 'outline',
12
+ };
13
+ const TEXTAREA_DEFAULTS = new InjectionToken('slotted textarea defaults', {
14
+ providedIn: 'root',
15
+ factory: () => FALLBACK,
16
+ });
17
+ /**
18
+ * An application decides once what its multi-line controls look like and
19
+ * whether their handle drags, rather than repeating the same inputs on every
20
+ * control. A control that states any of them itself still wins, and a control
21
+ * inside a field takes the field's step over this token's.
22
+ */
23
+ function provideTextareaDefaults(defaults) {
24
+ return {
25
+ provide: TEXTAREA_DEFAULTS,
26
+ useFactory: () => ({ ...FALLBACK, ...defaults }),
27
+ };
28
+ }
29
+ /** What a textarea renders as here, before it states anything of its own. */
30
+ function injectTextareaDefaults() {
31
+ return inject(TEXTAREA_DEFAULTS);
32
+ }
33
+
34
+ /**
35
+ * Many lines of text, in the element that already holds them.
36
+ *
37
+ * **No frame.** `text-field` wraps its input because an adornment and two
38
+ * buttons have to sit inside one border and a void element can hold no child.
39
+ * Nothing surveyed puts an adornment inside a textarea — the corner is where
40
+ * the resize handle goes — so this family is the control itself, and the two
41
+ * anatomies differ on purpose rather than matching for symmetry.
42
+ *
43
+ * **The platform grows it.** `autoSize` is CSS `field-sizing: content`. Nothing
44
+ * is measured on the main thread, no line height is cached and no layout is
45
+ * read per keystroke, which is what `cdkTextareaAutosize` does. `field-sizing`
46
+ * shrinkwraps, so `rows` stops being the floor: the two row counts reach the
47
+ * stylesheet as custom properties, and it states the floor and the ceiling in
48
+ * line boxes.
49
+ *
50
+ * **Enter makes a line.** Nothing is bound to a key. WAI-ARIA notes the
51
+ * difference between a single-line and a multi-line text control, and
52
+ * `docs/component-features.md` §6 requires it: a multi-line control never
53
+ * submits implicitly.
54
+ */
55
+ class SlTextarea {
56
+ /** Defaults to the field, then to the token, then to `md`. */
57
+ size = input(undefined, /* @ts-ignore */
58
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
59
+ /** Defaults to the token, then to `outline`. */
60
+ variant = input(undefined, /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
62
+ /** Defaults to the token, then to `block`. Withdrawn while `autoSize` is on. */
63
+ resize = input(undefined, /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "resize" }] : /* istanbul ignore next */ []));
65
+ /** Sets the value in the monospaced family, for a payload or a template. */
66
+ mono = input(undefined, { ...(ngDevMode ? { debugName: "mono" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
67
+ /** Grows with the content, through the platform rather than a measurement. */
68
+ autoSize = input(false, { ...(ngDevMode ? { debugName: "autoSize" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
69
+ /** The floor, in rows. It is the element's own `rows` as well. */
70
+ rows = input(3, { ...(ngDevMode ? { debugName: "rows" } : /* istanbul ignore next */ {}), transform: numberAttribute });
71
+ /**
72
+ * The ceiling `autoSize` grows to, in rows. It cannot be removed: a control
73
+ * that grows forever pushes the page out from under the caret, which is the
74
+ * defect every auto-grow implementation ships first.
75
+ */
76
+ maxRows = input(12, { ...(ngDevMode ? { debugName: "maxRows" } : /* istanbul ignore next */ {}), transform: numberAttribute });
77
+ /** Present means the consumer owns the value. */
78
+ value = input(undefined, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
80
+ /** The value the control starts from when nobody else writes one. */
81
+ defaultValue = input(undefined, /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
83
+ /** Unstated rather than `false`, so the control defers to the field. */
84
+ disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
85
+ readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
86
+ invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
87
+ /** Publishes the length of the value to the field, which draws the count. */
88
+ showCount = input(false, { ...(ngDevMode ? { debugName: "showCount" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
89
+ /**
90
+ * The native limit, as a binding. Without this input `[maxLength]` would set
91
+ * the element's property and the count would never see it; a static
92
+ * `maxlength` attribute is read as written.
93
+ */
94
+ maxLength = input(undefined, { ...(ngDevMode ? { debugName: "maxLength" } : /* istanbul ignore next */ {}), transform: (value) => value === undefined || value === null ? undefined : numberAttribute(value) });
95
+ /** The limit the count is measured against. Defaults to `maxlength`. */
96
+ countMax = input(undefined, { ...(ngDevMode ? { debugName: "countMax" } : /* istanbul ignore next */ {}), transform: (value) => value === undefined || value === null ? undefined : numberAttribute(value) });
97
+ /** One output for one transition, carrying the reason and `cancel()`. */
98
+ valueChange = output();
99
+ element = inject(ElementRef).nativeElement;
100
+ defaults = injectTextareaDefaults();
101
+ field = inject(SlField, { optional: true });
102
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
103
+ writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {
104
+ optional: true,
105
+ });
106
+ writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {
107
+ optional: true,
108
+ });
109
+ writtenRequired = inject(new HostAttributeToken('aria-required'), {
110
+ optional: true,
111
+ });
112
+ writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });
113
+ writtenMaxLength = inject(new HostAttributeToken('maxlength'), {
114
+ optional: true,
115
+ });
116
+ /** What the element is showing. Never a second copy of the value. */
117
+ mirror = signal('', /* @ts-ignore */
118
+ ...(ngDevMode ? [{ debugName: "mirror" }] : /* istanbul ignore next */ []));
119
+ formDisabled = signal(undefined, /* @ts-ignore */
120
+ ...(ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []));
121
+ onChangeFn = () => undefined;
122
+ onTouchedFn = () => undefined;
123
+ resolvedSize = computed(() => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size, /* @ts-ignore */
124
+ ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
125
+ resolvedVariant = computed(() => this.variant() ?? this.defaults.variant, /* @ts-ignore */
126
+ ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
127
+ resolvedMono = computed(() => this.mono() ?? this.defaults.mono, /* @ts-ignore */
128
+ ...(ngDevMode ? [{ debugName: "resolvedMono" }] : /* istanbul ignore next */ []));
129
+ /**
130
+ * A control that sizes itself and a handle that fixes its size disagree on
131
+ * the next keystroke, so the handle is withdrawn rather than left to fight.
132
+ */
133
+ resolvedResize = computed(() => this.autoSize() ? 'none' : (this.resize() ?? this.defaults.resize), /* @ts-ignore */
134
+ ...(ngDevMode ? [{ debugName: "resolvedResize" }] : /* istanbul ignore next */ []));
135
+ resolvedDisabled = computed(() => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(), /* @ts-ignore */
136
+ ...(ngDevMode ? [{ debugName: "resolvedDisabled" }] : /* istanbul ignore next */ []));
137
+ resolvedReadOnly = computed(() => this.readOnly() ??
138
+ (this.writtenReadonly === null ? undefined : true) ??
139
+ this.field?.resolvedReadOnly(), /* @ts-ignore */
140
+ ...(ngDevMode ? [{ debugName: "resolvedReadOnly" }] : /* istanbul ignore next */ []));
141
+ resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid(), /* @ts-ignore */
142
+ ...(ngDevMode ? [{ debugName: "resolvedInvalid" }] : /* istanbul ignore next */ []));
143
+ controlId = computed(() => this.writtenId ?? this.field?.ids().control ?? null, /* @ts-ignore */
144
+ ...(ngDevMode ? [{ debugName: "controlId" }] : /* istanbul ignore next */ []));
145
+ describedBy = computed(() => {
146
+ const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);
147
+ return merged.length === 0 ? null : merged.join(' ');
148
+ }, /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
150
+ ariaInvalid = computed(() => this.writtenInvalid ?? (this.resolvedInvalid() === true ? 'true' : null), /* @ts-ignore */
151
+ ...(ngDevMode ? [{ debugName: "ariaInvalid" }] : /* istanbul ignore next */ []));
152
+ ariaRequired = computed(() => this.writtenRequired ?? (this.field?.required() === true ? 'true' : null), /* @ts-ignore */
153
+ ...(ngDevMode ? [{ debugName: "ariaRequired" }] : /* istanbul ignore next */ []));
154
+ disabledAttribute = computed(() => this.resolvedDisabled() === true ? '' : null, /* @ts-ignore */
155
+ ...(ngDevMode ? [{ debugName: "disabledAttribute" }] : /* istanbul ignore next */ []));
156
+ readonlyAttribute = computed(() => this.resolvedReadOnly() === true ? '' : null, /* @ts-ignore */
157
+ ...(ngDevMode ? [{ debugName: "readonlyAttribute" }] : /* istanbul ignore next */ []));
158
+ maxLengthAttribute = computed(() => this.maxLength() ?? this.writtenMaxLength ?? null, /* @ts-ignore */
159
+ ...(ngDevMode ? [{ debugName: "maxLengthAttribute" }] : /* istanbul ignore next */ []));
160
+ limit = computed(() => {
161
+ const written = this.writtenMaxLength === null ? undefined : Number(this.writtenMaxLength);
162
+ return (this.countMax() ??
163
+ this.maxLength() ??
164
+ (written === undefined || Number.isNaN(written) ? undefined : written));
165
+ }, /* @ts-ignore */
166
+ ...(ngDevMode ? [{ debugName: "limit" }] : /* istanbul ignore next */ []));
167
+ constructor() {
168
+ effect(() => {
169
+ const next = this.value();
170
+ if (next === undefined || next === this.element.value)
171
+ return;
172
+ this.element.value = next;
173
+ this.mirror.set(next);
174
+ });
175
+ effect(() => {
176
+ if (this.field === null)
177
+ return;
178
+ if (!this.showCount()) {
179
+ this.field.setCount(undefined);
180
+ return;
181
+ }
182
+ this.field.setCount({ length: this.mirror().length, max: this.limit() });
183
+ });
184
+ }
185
+ /**
186
+ * Angular creates every directive in a template before it binds any input, so
187
+ * the starting value is read here rather than in the constructor, where
188
+ * `defaultValue` is always still `undefined`.
189
+ */
190
+ ngOnInit() {
191
+ const initial = this.defaultValue() ?? this.element.value;
192
+ if (initial !== this.element.value)
193
+ this.element.value = initial;
194
+ this.mirror.set(this.element.value);
195
+ }
196
+ /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */
197
+ get textareaElement() {
198
+ return this.element;
199
+ }
200
+ writeValue(value) {
201
+ this.element.value = value ?? '';
202
+ this.mirror.set(this.element.value);
203
+ }
204
+ registerOnChange(fn) {
205
+ this.onChangeFn = fn;
206
+ }
207
+ registerOnTouched(fn) {
208
+ this.onTouchedFn = fn;
209
+ }
210
+ setDisabledState(isDisabled) {
211
+ this.formDisabled.set(isDisabled);
212
+ }
213
+ onInput(event) {
214
+ const next = this.element.value;
215
+ if (next === this.mirror())
216
+ return;
217
+ let cancelled = false;
218
+ const state = createControllable({
219
+ controlled: undefined,
220
+ initial: this.mirror(),
221
+ onRequest: (request) => {
222
+ this.valueChange.emit(request);
223
+ cancelled = request.cancelled;
224
+ },
225
+ });
226
+ state.request(next, 'keyboard', event);
227
+ if (cancelled)
228
+ return;
229
+ this.mirror.set(next);
230
+ this.onChangeFn(next);
231
+ }
232
+ onBlur() {
233
+ this.onTouchedFn();
234
+ }
235
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlTextarea, deps: [], target: i0.ɵɵFactoryTarget.Component });
236
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlTextarea, isStandalone: true, selector: "textarea[slTextarea]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null }, mono: { classPropertyName: "mono", publicName: "mono", isSignal: true, isRequired: false, transformFunction: null }, autoSize: { classPropertyName: "autoSize", publicName: "autoSize", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, maxRows: { classPropertyName: "maxRows", publicName: "maxRows", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, countMax: { classPropertyName: "countMax", publicName: "countMax", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "textarea", "data-part": "root" }, listeners: { "input": "onInput($event)", "blur": "onBlur()" }, properties: { "attr.id": "controlId()", "attr.rows": "rows()", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-resize": "resolvedResize()", "attr.data-mono": "resolvedMono() ? '' : null", "attr.data-auto-size": "autoSize() ? '' : null", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.data-invalid": "resolvedInvalid() === true ? '' : null", "attr.data-readonly": "resolvedReadOnly() === true ? '' : null", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-required": "ariaRequired()", "attr.disabled": "disabledAttribute()", "attr.readonly": "readonlyAttribute()", "attr.maxlength": "maxLengthAttribute()", "style.--slotted-textarea-rows": "rows()", "style.--slotted-textarea-max-rows": "maxRows()" } }, providers: [
237
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTextarea), multi: true },
238
+ ], exportAs: ["slTextarea"], ngImport: i0, template: '', isInline: true, styles: ["@layer slotted.components{[data-ui=textarea][data-part=root]{--_font-size: var(--slotted-control-font-size-md, 13px);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_padding-block: max(0px, calc((var(--_height) - 1lh) / 2));--_frame: calc(var(--_padding-block) * 2 + var(--slotted-control-border-width, 1px) * 2);--_scroll-frame: calc(var(--_padding-block) + var(--slotted-control-border-width, 1px) * 2);--_rows: var(--slotted-textarea-rows, 3);--_max-rows: var(--slotted-textarea-max-rows, 12);background-color:var(--slotted-textarea-background, var(--slotted-control-surface, Field));border:var(--slotted-control-border-width, 1px) solid var(--slotted-textarea-border-color, var(--slotted-control-border-color, ButtonBorder));border-radius:var(--slotted-textarea-radius, var(--slotted-control-radius, 4px));box-shadow:var(--slotted-textarea-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;color:var(--slotted-textarea-color, var(--slotted-text, CanvasText));display:block;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);inline-size:100%;line-height:var(--slotted-textarea-line-height, var(--slotted-line-height-md, 1.5));min-inline-size:0;overflow-wrap:anywhere;padding-block:var(--_padding-block);padding-inline:var(--_padding-inline);resize:block;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),border-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),box-shadow var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=textarea][data-part=root]::placeholder{color:var(--slotted-textarea-placeholder-color, var(--slotted-text-muted, GrayText))}[data-ui=textarea][data-part=root][data-size=sm]{--_font-size: var(--slotted-control-font-size-sm, 12px);--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px)}[data-ui=textarea][data-part=root][data-size=md]{--_font-size: var(--slotted-control-font-size-md, 13px);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px)}[data-ui=textarea][data-part=root][data-size=lg]{--_font-size: var(--slotted-control-font-size-lg, 14px);--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px)}[data-ui=textarea][data-part=root][data-variant=subtle]{background-color:var( --slotted-textarea-subtle-background, var(--slotted-surface-sunken, Canvas) );border-color:var( --slotted-textarea-subtle-border-color, var(--slotted-border-subtle, ButtonBorder) )}[data-ui=textarea][data-part=root][data-variant=plain]{background-color:transparent;border-color:transparent;border-radius:var(--slotted-radius-none, 0px);box-shadow:none}@media(forced-colors:active){[data-ui=textarea][data-part=root][data-variant=plain]{border-color:ButtonBorder}}[data-ui=textarea][data-part=root][data-mono]{font-family:var(--slotted-font-family-mono, monospace);font-variant-numeric:tabular-nums}[data-ui=textarea][data-part=root][data-resize=none]{resize:none}[data-ui=textarea][data-part=root][data-resize=both]{resize:both}[data-ui=textarea][data-part=root][data-auto-size]{field-sizing:content;max-block-size:calc(var(--_max-rows) * 1lh + var(--_scroll-frame));min-block-size:calc(var(--_rows) * 1lh + var(--_frame));resize:none}[data-ui=textarea][data-part=root]:hover:not([data-disabled]):not(:disabled):not([data-readonly]):not([data-invalid]){border-color:var(--slotted-textarea-hover-border-color, var(--slotted-tone-accent-border))}[data-ui=textarea][data-part=root][data-variant=subtle]:hover:not([data-disabled]):not(:disabled):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-textarea-subtle-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=textarea][data-part=root][data-variant=plain]:hover:not([data-disabled]):not(:disabled):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-textarea-plain-hover-background, var(--slotted-tone-secondary-subtle-hover) );border-color:transparent}[data-ui=textarea][data-part=root]:focus-visible{box-shadow:var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px) var(--slotted-focus-ring-color, Highlight);outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=textarea][data-part=root][data-variant=plain]:focus-visible{box-shadow:none;outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=textarea][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-textarea-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );--_invalid-edge-width: var( --slotted-textarea-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );--_invalid-edge-color: var( --slotted-textarea-invalid-border-color, var(--slotted-tone-danger-border) );--_invalid-edge: inset 0 0 0 var(--_invalid-edge-width) var(--_invalid-edge-color);border-color:var(--slotted-textarea-invalid-border-color, var(--slotted-tone-danger-border));box-shadow:var(--_invalid-edge)}[data-ui=textarea][data-part=root][data-invalid]:focus-visible{box-shadow:var(--_invalid-edge),var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px) var(--slotted-focus-ring-color, Highlight)}[data-ui=textarea][data-part=root][data-variant=plain][data-invalid]:focus-visible{box-shadow:inset 0 0 0 calc(var(--slotted-focus-ring-offset, 2px) - var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width)) var(--_invalid-edge-color)}@media(forced-colors:active){[data-ui=textarea][data-part=root][data-invalid]{outline:var(--_invalid-edge-width) solid CanvasText;outline-offset:calc(-1 * (var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width)))}[data-ui=textarea][data-part=root][data-invalid]:focus-visible{outline:calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=textarea][data-part=root][data-variant=plain][data-invalid]:focus-visible{outline:calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * (var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)))}}[data-ui=textarea][data-part=root][data-readonly]{background-color:var( --slotted-textarea-readonly-background, var(--slotted-tone-secondary-subtle-hover) );cursor:default}[data-ui=textarea][data-part=root][data-disabled],[data-ui=textarea][data-part=root]:disabled{background-color:var( --slotted-textarea-disabled-background, var(--slotted-disabled-background) );border-color:var(--slotted-textarea-disabled-border-color, var(--slotted-disabled-border));box-shadow:none;color:var(--slotted-textarea-disabled-color, var(--slotted-disabled-foreground));cursor:not-allowed;resize:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
239
+ }
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlTextarea, decorators: [{
241
+ type: Component,
242
+ args: [{ selector: 'textarea[slTextarea]', standalone: true, exportAs: 'slTextarea', template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
243
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTextarea), multi: true },
244
+ ], host: {
245
+ 'data-ui': 'textarea',
246
+ 'data-part': 'root',
247
+ '[attr.id]': 'controlId()',
248
+ '[attr.rows]': 'rows()',
249
+ '[attr.data-size]': 'resolvedSize()',
250
+ '[attr.data-variant]': 'resolvedVariant()',
251
+ '[attr.data-resize]': 'resolvedResize()',
252
+ '[attr.data-mono]': "resolvedMono() ? '' : null",
253
+ '[attr.data-auto-size]': "autoSize() ? '' : null",
254
+ '[attr.data-disabled]': "resolvedDisabled() === true ? '' : null",
255
+ '[attr.data-invalid]': "resolvedInvalid() === true ? '' : null",
256
+ '[attr.data-readonly]': "resolvedReadOnly() === true ? '' : null",
257
+ '[attr.aria-describedby]': 'describedBy()',
258
+ '[attr.aria-invalid]': 'ariaInvalid()',
259
+ '[attr.aria-required]': 'ariaRequired()',
260
+ '[attr.disabled]': 'disabledAttribute()',
261
+ '[attr.readonly]': 'readonlyAttribute()',
262
+ '[attr.maxlength]': 'maxLengthAttribute()',
263
+ '[style.--slotted-textarea-rows]': 'rows()',
264
+ '[style.--slotted-textarea-max-rows]': 'maxRows()',
265
+ '(input)': 'onInput($event)',
266
+ '(blur)': 'onBlur()',
267
+ }, styles: ["@layer slotted.components{[data-ui=textarea][data-part=root]{--_font-size: var(--slotted-control-font-size-md, 13px);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_padding-block: max(0px, calc((var(--_height) - 1lh) / 2));--_frame: calc(var(--_padding-block) * 2 + var(--slotted-control-border-width, 1px) * 2);--_scroll-frame: calc(var(--_padding-block) + var(--slotted-control-border-width, 1px) * 2);--_rows: var(--slotted-textarea-rows, 3);--_max-rows: var(--slotted-textarea-max-rows, 12);background-color:var(--slotted-textarea-background, var(--slotted-control-surface, Field));border:var(--slotted-control-border-width, 1px) solid var(--slotted-textarea-border-color, var(--slotted-control-border-color, ButtonBorder));border-radius:var(--slotted-textarea-radius, var(--slotted-control-radius, 4px));box-shadow:var(--slotted-textarea-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;color:var(--slotted-textarea-color, var(--slotted-text, CanvasText));display:block;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);inline-size:100%;line-height:var(--slotted-textarea-line-height, var(--slotted-line-height-md, 1.5));min-inline-size:0;overflow-wrap:anywhere;padding-block:var(--_padding-block);padding-inline:var(--_padding-inline);resize:block;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),border-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),box-shadow var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=textarea][data-part=root]::placeholder{color:var(--slotted-textarea-placeholder-color, var(--slotted-text-muted, GrayText))}[data-ui=textarea][data-part=root][data-size=sm]{--_font-size: var(--slotted-control-font-size-sm, 12px);--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px)}[data-ui=textarea][data-part=root][data-size=md]{--_font-size: var(--slotted-control-font-size-md, 13px);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px)}[data-ui=textarea][data-part=root][data-size=lg]{--_font-size: var(--slotted-control-font-size-lg, 14px);--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px)}[data-ui=textarea][data-part=root][data-variant=subtle]{background-color:var( --slotted-textarea-subtle-background, var(--slotted-surface-sunken, Canvas) );border-color:var( --slotted-textarea-subtle-border-color, var(--slotted-border-subtle, ButtonBorder) )}[data-ui=textarea][data-part=root][data-variant=plain]{background-color:transparent;border-color:transparent;border-radius:var(--slotted-radius-none, 0px);box-shadow:none}@media(forced-colors:active){[data-ui=textarea][data-part=root][data-variant=plain]{border-color:ButtonBorder}}[data-ui=textarea][data-part=root][data-mono]{font-family:var(--slotted-font-family-mono, monospace);font-variant-numeric:tabular-nums}[data-ui=textarea][data-part=root][data-resize=none]{resize:none}[data-ui=textarea][data-part=root][data-resize=both]{resize:both}[data-ui=textarea][data-part=root][data-auto-size]{field-sizing:content;max-block-size:calc(var(--_max-rows) * 1lh + var(--_scroll-frame));min-block-size:calc(var(--_rows) * 1lh + var(--_frame));resize:none}[data-ui=textarea][data-part=root]:hover:not([data-disabled]):not(:disabled):not([data-readonly]):not([data-invalid]){border-color:var(--slotted-textarea-hover-border-color, var(--slotted-tone-accent-border))}[data-ui=textarea][data-part=root][data-variant=subtle]:hover:not([data-disabled]):not(:disabled):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-textarea-subtle-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=textarea][data-part=root][data-variant=plain]:hover:not([data-disabled]):not(:disabled):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-textarea-plain-hover-background, var(--slotted-tone-secondary-subtle-hover) );border-color:transparent}[data-ui=textarea][data-part=root]:focus-visible{box-shadow:var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px) var(--slotted-focus-ring-color, Highlight);outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=textarea][data-part=root][data-variant=plain]:focus-visible{box-shadow:none;outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=textarea][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-textarea-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );--_invalid-edge-width: var( --slotted-textarea-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );--_invalid-edge-color: var( --slotted-textarea-invalid-border-color, var(--slotted-tone-danger-border) );--_invalid-edge: inset 0 0 0 var(--_invalid-edge-width) var(--_invalid-edge-color);border-color:var(--slotted-textarea-invalid-border-color, var(--slotted-tone-danger-border));box-shadow:var(--_invalid-edge)}[data-ui=textarea][data-part=root][data-invalid]:focus-visible{box-shadow:var(--_invalid-edge),var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px) var(--slotted-focus-ring-color, Highlight)}[data-ui=textarea][data-part=root][data-variant=plain][data-invalid]:focus-visible{box-shadow:inset 0 0 0 calc(var(--slotted-focus-ring-offset, 2px) - var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width)) var(--_invalid-edge-color)}@media(forced-colors:active){[data-ui=textarea][data-part=root][data-invalid]{outline:var(--_invalid-edge-width) solid CanvasText;outline-offset:calc(-1 * (var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width)))}[data-ui=textarea][data-part=root][data-invalid]:focus-visible{outline:calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=textarea][data-part=root][data-variant=plain][data-invalid]:focus-visible{outline:calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * (var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)))}}[data-ui=textarea][data-part=root][data-readonly]{background-color:var( --slotted-textarea-readonly-background, var(--slotted-tone-secondary-subtle-hover) );cursor:default}[data-ui=textarea][data-part=root][data-disabled],[data-ui=textarea][data-part=root]:disabled{background-color:var( --slotted-textarea-disabled-background, var(--slotted-disabled-background) );border-color:var(--slotted-textarea-disabled-border-color, var(--slotted-disabled-border));box-shadow:none;color:var(--slotted-textarea-disabled-color, var(--slotted-disabled-foreground));cursor:not-allowed;resize:none}}\n"] }]
268
+ }], ctorParameters: () => [], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], resize: [{ type: i0.Input, args: [{ isSignal: true, alias: "resize", required: false }] }], mono: [{ type: i0.Input, args: [{ isSignal: true, alias: "mono", required: false }] }], autoSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoSize", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], maxRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxRows", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], showCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCount", required: false }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], countMax: [{ type: i0.Input, args: [{ isSignal: true, alias: "countMax", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
269
+
270
+ /**
271
+ * Generated bundle index. Do not edit.
272
+ */
273
+
274
+ export { SlTextarea, TEXTAREA_DEFAULTS, injectTextareaDefaults, provideTextareaDefaults };
275
+ //# sourceMappingURL=slotted-angular-textarea.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-textarea.mjs","sources":["../../textarea/src/textarea-defaults.ts","../../textarea/src/textarea.ts","../../textarea/src/slotted-angular-textarea.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the control sits at, matching the field around it. */\nexport type TextareaSize = 'sm' | 'md' | 'lg';\n\n/** How much frame the control shows. The three `text-field` draws. */\nexport type TextareaVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * Which way the manual handle may drag. `block` is the default rather than the\n * platform's `both`: a control wider than its field breaks the field's grid,\n * and a reader who widens one control in a form has broken its alignment.\n */\nexport type TextareaResize = 'block' | 'none' | 'both';\n\nexport interface TextareaDefaults {\n mono: boolean;\n resize: TextareaResize;\n size: TextareaSize;\n variant: TextareaVariant;\n}\n\nconst FALLBACK: TextareaDefaults = {\n mono: false,\n resize: 'block',\n size: 'md',\n variant: 'outline',\n};\n\nexport const TEXTAREA_DEFAULTS = new InjectionToken<TextareaDefaults>('slotted textarea defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once what its multi-line controls look like and\n * whether their handle drags, rather than repeating the same inputs on every\n * control. A control that states any of them itself still wins, and a control\n * inside a field takes the field's step over this token's.\n */\nexport function provideTextareaDefaults(defaults: Partial<TextareaDefaults>) {\n return {\n provide: TEXTAREA_DEFAULTS,\n useFactory: (): TextareaDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a textarea renders as here, before it states anything of its own. */\nexport function injectTextareaDefaults(): TextareaDefaults {\n return inject(TEXTAREA_DEFAULTS);\n}\n","import { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectTextareaDefaults } from './textarea-defaults';\nimport type { TextareaResize, TextareaSize, TextareaVariant } from './textarea-defaults';\n\nexport type { TextareaResize, TextareaSize, TextareaVariant } from './textarea-defaults';\n\n/**\n * Many lines of text, in the element that already holds them.\n *\n * **No frame.** `text-field` wraps its input because an adornment and two\n * buttons have to sit inside one border and a void element can hold no child.\n * Nothing surveyed puts an adornment inside a textarea — the corner is where\n * the resize handle goes — so this family is the control itself, and the two\n * anatomies differ on purpose rather than matching for symmetry.\n *\n * **The platform grows it.** `autoSize` is CSS `field-sizing: content`. Nothing\n * is measured on the main thread, no line height is cached and no layout is\n * read per keystroke, which is what `cdkTextareaAutosize` does. `field-sizing`\n * shrinkwraps, so `rows` stops being the floor: the two row counts reach the\n * stylesheet as custom properties, and it states the floor and the ceiling in\n * line boxes.\n *\n * **Enter makes a line.** Nothing is bound to a key. WAI-ARIA notes the\n * difference between a single-line and a multi-line text control, and\n * `docs/component-features.md` §6 requires it: a multi-line control never\n * submits implicitly.\n */\n@Component({\n selector: 'textarea[slTextarea]',\n standalone: true,\n exportAs: 'slTextarea',\n template: '',\n styleUrl: '../../../styles/src/textarea/textarea.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTextarea), multi: true },\n ],\n host: {\n 'data-ui': 'textarea',\n 'data-part': 'root',\n '[attr.id]': 'controlId()',\n '[attr.rows]': 'rows()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-resize]': 'resolvedResize()',\n '[attr.data-mono]': \"resolvedMono() ? '' : null\",\n '[attr.data-auto-size]': \"autoSize() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'ariaInvalid()',\n '[attr.aria-required]': 'ariaRequired()',\n '[attr.disabled]': 'disabledAttribute()',\n '[attr.readonly]': 'readonlyAttribute()',\n '[attr.maxlength]': 'maxLengthAttribute()',\n '[style.--slotted-textarea-rows]': 'rows()',\n '[style.--slotted-textarea-max-rows]': 'maxRows()',\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n },\n})\nexport class SlTextarea implements ControlValueAccessor, OnInit {\n /** Defaults to the field, then to the token, then to `md`. */\n readonly size = input<TextareaSize | undefined>(undefined);\n /** Defaults to the token, then to `outline`. */\n readonly variant = input<TextareaVariant | undefined>(undefined);\n /** Defaults to the token, then to `block`. Withdrawn while `autoSize` is on. */\n readonly resize = input<TextareaResize | undefined>(undefined);\n /** Sets the value in the monospaced family, for a payload or a template. */\n readonly mono = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Grows with the content, through the platform rather than a measurement. */\n readonly autoSize = input(false, { transform: booleanAttribute });\n /** The floor, in rows. It is the element's own `rows` as well. */\n readonly rows = input(3, { transform: numberAttribute });\n /**\n * The ceiling `autoSize` grows to, in rows. It cannot be removed: a control\n * that grows forever pushes the page out from under the caret, which is the\n * defect every auto-grow implementation ships first.\n */\n readonly maxRows = input(12, { transform: numberAttribute });\n\n /** Present means the consumer owns the value. */\n readonly value = input<string | undefined>(undefined);\n /** The value the control starts from when nobody else writes one. */\n readonly defaultValue = input<string | undefined>(undefined);\n /** Unstated rather than `false`, so the control defers to the field. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Publishes the length of the value to the field, which draws the count. */\n readonly showCount = input(false, { transform: booleanAttribute });\n /**\n * The native limit, as a binding. Without this input `[maxLength]` would set\n * the element's property and the count would never see it; a static\n * `maxlength` attribute is read as written.\n */\n readonly maxLength = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** The limit the count is measured against. Defaults to `maxlength`. */\n readonly countMax = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n\n /** One output for one transition, carrying the reason and `cancel()`. */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly element = inject<ElementRef<HTMLTextAreaElement>>(ElementRef).nativeElement;\n private readonly defaults = injectTextareaDefaults();\n private readonly field = inject(SlField, { optional: true });\n\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {\n optional: true,\n });\n private readonly writtenRequired = inject(new HostAttributeToken('aria-required'), {\n optional: true,\n });\n private readonly writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });\n private readonly writtenMaxLength = inject(new HostAttributeToken('maxlength'), {\n optional: true,\n });\n\n /** What the element is showing. Never a second copy of the value. */\n private readonly mirror = signal('');\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n private onChangeFn: (value: string) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedMono = computed(() => this.mono() ?? this.defaults.mono);\n /**\n * A control that sizes itself and a handle that fixes its size disagree on\n * the next keystroke, so the handle is withdrawn rather than left to fight.\n */\n readonly resolvedResize = computed<TextareaResize>(() =>\n this.autoSize() ? 'none' : (this.resize() ?? this.defaults.resize),\n );\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(\n () =>\n this.readOnly() ??\n (this.writtenReadonly === null ? undefined : true) ??\n this.field?.resolvedReadOnly(),\n );\n readonly resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid());\n\n protected readonly controlId = computed(\n () => this.writtenId ?? this.field?.ids().control ?? null,\n );\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(\n () => this.writtenInvalid ?? (this.resolvedInvalid() === true ? 'true' : null),\n );\n protected readonly ariaRequired = computed(\n () => this.writtenRequired ?? (this.field?.required() === true ? 'true' : null),\n );\n protected readonly disabledAttribute = computed(() =>\n this.resolvedDisabled() === true ? '' : null,\n );\n protected readonly readonlyAttribute = computed(() =>\n this.resolvedReadOnly() === true ? '' : null,\n );\n\n protected readonly maxLengthAttribute = computed(\n () => this.maxLength() ?? this.writtenMaxLength ?? null,\n );\n\n private readonly limit = computed(() => {\n const written = this.writtenMaxLength === null ? undefined : Number(this.writtenMaxLength);\n return (\n this.countMax() ??\n this.maxLength() ??\n (written === undefined || Number.isNaN(written) ? undefined : written)\n );\n });\n\n constructor() {\n effect(() => {\n const next = this.value();\n if (next === undefined || next === this.element.value) return;\n this.element.value = next;\n this.mirror.set(next);\n });\n\n effect(() => {\n if (this.field === null) return;\n if (!this.showCount()) {\n this.field.setCount(undefined);\n return;\n }\n this.field.setCount({ length: this.mirror().length, max: this.limit() });\n });\n }\n\n /**\n * Angular creates every directive in a template before it binds any input, so\n * the starting value is read here rather than in the constructor, where\n * `defaultValue` is always still `undefined`.\n */\n ngOnInit() {\n const initial = this.defaultValue() ?? this.element.value;\n if (initial !== this.element.value) this.element.value = initial;\n this.mirror.set(this.element.value);\n }\n\n /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */\n get textareaElement(): HTMLTextAreaElement {\n return this.element;\n }\n\n writeValue(value: string | null | undefined) {\n this.element.value = value ?? '';\n this.mirror.set(this.element.value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n protected onInput(event: Event) {\n const next = this.element.value;\n if (next === this.mirror()) return;\n\n let cancelled = false;\n const state = createControllable<string>({\n controlled: undefined,\n initial: this.mirror(),\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(next, 'keyboard', event);\n if (cancelled) return;\n\n this.mirror.set(next);\n this.onChangeFn(next);\n }\n\n protected onBlur() {\n this.onTouchedFn();\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,45 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, Directive } from '@angular/core';
3
+ import { seedStyle } from '@slotted/theme/seeds';
4
+
5
+ /**
6
+ * A subtree with its own theme, scheme, density or seeds, written on the host
7
+ * as the attributes and custom properties an application can write by hand.
8
+ */
9
+ class SlThemeScope {
10
+ theme = input(undefined, /* @ts-ignore */
11
+ ...(ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []));
12
+ scheme = input(undefined, /* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "scheme" }] : /* istanbul ignore next */ []));
14
+ density = input(undefined, /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
16
+ seeds = input(undefined, /* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "seeds" }] : /* istanbul ignore next */ []));
18
+ seedProperties = computed(() => {
19
+ const style = seedStyle(this.seeds() ?? {});
20
+ return Object.keys(style).length > 0 ? style : null;
21
+ }, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "seedProperties" }] : /* istanbul ignore next */ []));
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlThemeScope, deps: [], target: i0.ɵɵFactoryTarget.Directive });
24
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlThemeScope, isStandalone: true, selector: "[slThemeScope]", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, scheme: { classPropertyName: "scheme", publicName: "scheme", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null }, seeds: { classPropertyName: "seeds", publicName: "seeds", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-slotted-theme": "theme() ?? null", "attr.data-slotted-scheme": "scheme() ?? null", "attr.data-slotted-density": "density() ?? null", "attr.data-slotted-seeds": "seedProperties() ? '' : null", "style": "seedProperties()" } }, ngImport: i0 });
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlThemeScope, decorators: [{
27
+ type: Directive,
28
+ args: [{
29
+ selector: '[slThemeScope]',
30
+ host: {
31
+ '[attr.data-slotted-theme]': 'theme() ?? null',
32
+ '[attr.data-slotted-scheme]': 'scheme() ?? null',
33
+ '[attr.data-slotted-density]': 'density() ?? null',
34
+ '[attr.data-slotted-seeds]': "seedProperties() ? '' : null",
35
+ '[style]': 'seedProperties()',
36
+ },
37
+ }]
38
+ }], propDecorators: { theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], scheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "scheme", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], seeds: [{ type: i0.Input, args: [{ isSignal: true, alias: "seeds", required: false }] }] } });
39
+
40
+ /**
41
+ * Generated bundle index. Do not edit.
42
+ */
43
+
44
+ export { SlThemeScope };
45
+ //# sourceMappingURL=slotted-angular-theme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-theme.mjs","sources":["../../theme/src/theme-scope.ts","../../theme/src/slotted-angular-theme.ts"],"sourcesContent":["import { computed, Directive, input } from '@angular/core';\nimport type { Density, Scheme } from '@slotted/theme';\nimport { seedStyle, type SeedName } from '@slotted/theme/seeds';\n\n/** The five seeds a theme derives its colours from (`@slotted/theme` › `SEED_NAMES`). */\nexport type ThemeSeedName = SeedName;\n/** A recipe scheme (`@slotted/theme` › `Scheme`), plus `system`: resolved from `prefers-color-scheme`. */\nexport type ThemeSchemeName = Scheme | 'system';\nexport type ThemeDensityName = Density;\n\n/**\n * A subtree with its own theme, scheme, density or seeds, written on the host\n * as the attributes and custom properties an application can write by hand.\n */\n@Directive({\n selector: '[slThemeScope]',\n host: {\n '[attr.data-slotted-theme]': 'theme() ?? null',\n '[attr.data-slotted-scheme]': 'scheme() ?? null',\n '[attr.data-slotted-density]': 'density() ?? null',\n '[attr.data-slotted-seeds]': \"seedProperties() ? '' : null\",\n '[style]': 'seedProperties()',\n },\n})\nexport class SlThemeScope {\n readonly theme = input<string | undefined>(undefined);\n readonly scheme = input<ThemeSchemeName | undefined>(undefined);\n readonly density = input<ThemeDensityName | undefined>(undefined);\n readonly seeds = input<Readonly<Partial<Record<ThemeSeedName, string>>> | undefined>(undefined);\n\n protected readonly seedProperties = computed(() => {\n const style = seedStyle(this.seeds() ?? {});\n return Object.keys(style).length > 0 ? style : null;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAUA;;;AAGG;MAWU,YAAY,CAAA;IACd,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;IAC5C,MAAM,GAAG,KAAK,CAA8B,SAAS;+EAAC;IACtD,OAAO,GAAG,KAAK,CAA+B,SAAS;gFAAC;IACxD,KAAK,GAAG,KAAK,CAA+D,SAAS;8EAAC;AAE5E,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AAC3C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;IACrD,CAAC;uFAAC;uGATS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,2BAA2B,EAAE,iBAAiB;AAC9C,wBAAA,4BAA4B,EAAE,kBAAkB;AAChD,wBAAA,6BAA6B,EAAE,mBAAmB;AAClD,wBAAA,2BAA2B,EAAE,8BAA8B;AAC3D,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;AACF,iBAAA;;;ACvBD;;AAEG;;"}