@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,1131 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, input, contentChild, computed, signal, DestroyRef, ViewEncapsulation, ChangeDetectionStrategy, Component, numberAttribute, booleanAttribute, output, ElementRef, HostAttributeToken, effect, forwardRef, Directive } from '@angular/core';
3
+ import { injectMessages, injectLocale } from '@slotted/angular/i18n';
4
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
5
+ import { currencyFieldMessages } from '@slotted/core/i18n';
6
+ import { STEP_REPEAT_DELAY_COARSE, STEP_REPEAT_DELAY, STEP_REPEAT_INTERVAL, stepNumber, SCRUB_SENSITIVITY, createScrub } from '@slotted/core/number';
7
+ import { SlField } from '@slotted/angular/field';
8
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
+ import { createCurrencyFormat, MAX_AMOUNT_DIGITS, withAmount } from '@slotted/core/currency';
10
+ import { clamp } from '@slotted/core/measure';
11
+ import { createControllable } from '@slotted/core/state';
12
+
13
+ const FALLBACK = {
14
+ align: 'end',
15
+ clamp: 'blur',
16
+ currency: undefined,
17
+ currencyDisplay: 'symbol',
18
+ entry: 'cents',
19
+ formatOn: 'change',
20
+ size: 'md',
21
+ stepper: 'none',
22
+ variant: 'outline',
23
+ };
24
+ const CURRENCY_FIELD_DEFAULTS = new InjectionToken('slotted currency field defaults', { providedIn: 'root', factory: () => FALLBACK });
25
+ /**
26
+ * An application decides once which currency it charges in and how its
27
+ * amounts are typed, rather than repeating the same inputs on every amount in a
28
+ * form. A control that states any of them itself still wins. The locale and the
29
+ * two buttons' words come from the language in force (`provideSlotted`).
30
+ *
31
+ * `currency` is the one worth setting first, and the only one a field cannot be
32
+ * built without: a product has one currency in nine screens out of ten, and the
33
+ * tenth states its own.
34
+ */
35
+ function provideCurrencyFieldDefaults(defaults) {
36
+ return {
37
+ provide: CURRENCY_FIELD_DEFAULTS,
38
+ useFactory: () => ({ ...FALLBACK, ...defaults }),
39
+ };
40
+ }
41
+ /** What a currency field renders as here, before it states anything of its own. */
42
+ function injectCurrencyFieldDefaults() {
43
+ return inject(CURRENCY_FIELD_DEFAULTS);
44
+ }
45
+ /**
46
+ * What the frame needs to know about the control inside it, and what the
47
+ * control needs the frame to call.
48
+ *
49
+ * It is an abstract class rather than an import so the two directives can
50
+ * depend on each other without a cycle — the shape `field`, `text-field` and
51
+ * `number-field` already have. The input provides itself as this, and the
52
+ * frame queries it.
53
+ */
54
+ class SlCurrencyFieldControl {
55
+ }
56
+
57
+ /**
58
+ * The frame: one amount, and the two buttons that move it when a product asks
59
+ * for them.
60
+ *
61
+ * **It is not the control.** The element carrying `data-ui` is the consumer's
62
+ * own box with no role; the `input` inside it holds the amount, the identifier
63
+ * and the APG's `spinbutton` role. WAI-ARIA settles the shape: a `spinbutton`
64
+ * may hold only non-interactive presentational children, so the two steppers
65
+ * are the control's siblings rather than its children.
66
+ *
67
+ * **The steppers are withdrawn by default**, where `number-field` ships them:
68
+ * an invoice total is typed, not nudged.
69
+ *
70
+ * **Angular pays one element for the frame, and React pays none.** React can
71
+ * render a wrapper from inside a component; an Angular directive cannot create
72
+ * a box around its own host. `slCurrencyFieldInput` injects this class, so a
73
+ * control written without the frame is a compile-time failure rather than a
74
+ * silent one.
75
+ */
76
+ class SlCurrencyField {
77
+ /** Defaults to the field, then to the token, then to `md`. */
78
+ size = input(undefined, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
80
+ /** Defaults to the token, then to `outline`. */
81
+ variant = input(undefined, /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
83
+ /** Which edge the amount is set against. Defaults to the token, then `end`. */
84
+ align = input(undefined, /* @ts-ignore */
85
+ ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
86
+ /** Where the two steppers sit. Defaults to the token, then `none`. */
87
+ stepper = input(undefined, /* @ts-ignore */
88
+ ...(ngDevMode ? [{ debugName: "stepper" }] : /* istanbul ignore next */ []));
89
+ /**
90
+ * Words laid over the catalog of the language in force, key by key: the
91
+ * `increment` and `decrement` buttons' accessible names.
92
+ */
93
+ messages = input(undefined, /* @ts-ignore */
94
+ ...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
95
+ defaults = injectCurrencyFieldDefaults();
96
+ field = inject(SlField, { optional: true });
97
+ /**
98
+ * The control inside. It provides itself as `SlCurrencyFieldControl`, so the
99
+ * frame can read the bounds, the submission name and the shared states
100
+ * without either directive importing the other.
101
+ */
102
+ control = contentChild(SlCurrencyFieldControl, { ...(ngDevMode ? { debugName: "control" } : /* istanbul ignore next */ {}), descendants: true });
103
+ resolvedSize = computed(() => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size, /* @ts-ignore */
104
+ ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
105
+ resolvedVariant = computed(() => this.variant() ?? this.defaults.variant, /* @ts-ignore */
106
+ ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
107
+ resolvedAlign = computed(() => this.align() ?? this.defaults.align, /* @ts-ignore */
108
+ ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
109
+ resolvedStepper = computed(() => this.stepper() ?? this.defaults.stepper, /* @ts-ignore */
110
+ ...(ngDevMode ? [{ debugName: "resolvedStepper" }] : /* istanbul ignore next */ []));
111
+ /**
112
+ * The entry model belongs to the control, because it is behaviour before it
113
+ * is an axis: the frame only paints what the control resolved. Two inputs
114
+ * for one decision would let the box and the element disagree about how the
115
+ * next keystroke is read.
116
+ */
117
+ resolvedEntry = computed(() => this.control()?.resolvedEntry() ?? this.defaults.entry, /* @ts-ignore */
118
+ ...(ngDevMode ? [{ debugName: "resolvedEntry" }] : /* istanbul ignore next */ []));
119
+ /** The family's words in the language in force, with this field's `messages` laid over them. */
120
+ t = injectMessages(currencyFieldMessages, this.messages);
121
+ /** Whether a `slCurrencyFieldScrub` inside is being dragged. */
122
+ scrubbing = signal(false, /* @ts-ignore */
123
+ ...(ngDevMode ? [{ debugName: "scrubbing" }] : /* istanbul ignore next */ []));
124
+ /** A control nobody can change has two buttons that would lie about it. */
125
+ inert = computed(() => {
126
+ const control = this.control();
127
+ return control?.resolvedDisabled() === true || control?.resolvedReadOnly() === true;
128
+ }, /* @ts-ignore */
129
+ ...(ngDevMode ? [{ debugName: "inert" }] : /* istanbul ignore next */ []));
130
+ incrementDisabled = computed(() => this.inert() || this.control()?.atMax() === true, /* @ts-ignore */
131
+ ...(ngDevMode ? [{ debugName: "incrementDisabled" }] : /* istanbul ignore next */ []));
132
+ decrementDisabled = computed(() => this.inert() || this.control()?.atMin() === true, /* @ts-ignore */
133
+ ...(ngDevMode ? [{ debugName: "decrementDisabled" }] : /* istanbul ignore next */ []));
134
+ hiddenValue = computed(() => {
135
+ const value = this.control()?.numberValue() ?? null;
136
+ return value === null ? '' : String(value);
137
+ }, /* @ts-ignore */
138
+ ...(ngDevMode ? [{ debugName: "hiddenValue" }] : /* istanbul ignore next */ []));
139
+ delay;
140
+ interval;
141
+ constructor() {
142
+ /* A button unmounted mid-press would otherwise leave a timer running. */
143
+ inject(DestroyRef).onDestroy(() => this.release());
144
+ }
145
+ /**
146
+ * One step now, then repeating while the button is held. A coarse pointer
147
+ * waits longer before the first repeat, because a finger that is starting to
148
+ * scroll rests on the button first.
149
+ */
150
+ press(direction, event) {
151
+ if (event.button !== 0)
152
+ return;
153
+ /* Focus stays on the amount: the button is out of the tab order and the
154
+ caret is what the reader came back to. */
155
+ event.preventDefault();
156
+ const control = this.control();
157
+ if (control === undefined)
158
+ return;
159
+ control.stepBy(direction, event);
160
+ this.release();
161
+ const wait = event.pointerType === 'touch' ? STEP_REPEAT_DELAY_COARSE : STEP_REPEAT_DELAY;
162
+ this.delay = setTimeout(() => {
163
+ this.interval = setInterval(() => control.stepBy(direction, undefined), STEP_REPEAT_INTERVAL);
164
+ }, wait);
165
+ }
166
+ release() {
167
+ clearTimeout(this.delay);
168
+ clearInterval(this.interval);
169
+ this.delay = undefined;
170
+ this.interval = undefined;
171
+ }
172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyField, deps: [], target: i0.ɵɵFactoryTarget.Component });
173
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCurrencyField, isStandalone: true, selector: "[slCurrencyField]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, stepper: { classPropertyName: "stepper", publicName: "stepper", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "currency-field", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-align": "resolvedAlign()", "attr.data-entry": "resolvedEntry()", "attr.data-stepper": "resolvedStepper()", "attr.data-disabled": "control()?.resolvedDisabled() === true ? '' : null", "attr.data-invalid": "control()?.resolvedInvalid() === true ? '' : null", "attr.data-readonly": "control()?.resolvedReadOnly() === true ? '' : null", "attr.data-scrubbing": "scrubbing() ? '' : null" } }, queries: [{ propertyName: "control", first: true, predicate: SlCurrencyFieldControl, descendants: true, isSignal: true }], exportAs: ["slCurrencyField"], ngImport: i0, template: `@if (resolvedStepper() === 'split') {
174
+ <button
175
+ data-part="decrement"
176
+ type="button"
177
+ tabindex="-1"
178
+ [attr.aria-controls]="control()?.controlId()"
179
+ [attr.aria-label]="t('decrement')"
180
+ [disabled]="decrementDisabled()"
181
+ (pointerdown)="press(-1, $event)"
182
+ (pointerup)="release()"
183
+ (pointerleave)="release()"
184
+ (pointercancel)="release()"
185
+ >
186
+ <span slIcon><svg slGlyph name="minus"></svg></span>
187
+ </button>
188
+ }
189
+ <ng-content select="[slCurrencyFieldStart]" />
190
+ <ng-content />
191
+ <ng-content select="[slCurrencyFieldEnd]" />
192
+ @if (resolvedStepper() === 'split') {
193
+ <button
194
+ data-part="increment"
195
+ type="button"
196
+ tabindex="-1"
197
+ [attr.aria-controls]="control()?.controlId()"
198
+ [attr.aria-label]="t('increment')"
199
+ [disabled]="incrementDisabled()"
200
+ (pointerdown)="press(1, $event)"
201
+ (pointerup)="release()"
202
+ (pointerleave)="release()"
203
+ (pointercancel)="release()"
204
+ >
205
+ <span slIcon><svg slGlyph name="plus"></svg></span>
206
+ </button>
207
+ } @else if (resolvedStepper() === 'stacked') {
208
+ <span data-part="stepper">
209
+ <button
210
+ data-part="increment"
211
+ type="button"
212
+ tabindex="-1"
213
+ [attr.aria-controls]="control()?.controlId()"
214
+ [attr.aria-label]="t('increment')"
215
+ [disabled]="incrementDisabled()"
216
+ (pointerdown)="press(1, $event)"
217
+ (pointerup)="release()"
218
+ (pointerleave)="release()"
219
+ (pointercancel)="release()"
220
+ >
221
+ <!-- Both halves draw the down chevron; the stylesheet turns the
222
+ increment's half a turn. -->
223
+ <span slIcon><svg slGlyph name="chevron-down"></svg></span>
224
+ </button>
225
+ <button
226
+ data-part="decrement"
227
+ type="button"
228
+ tabindex="-1"
229
+ [attr.aria-controls]="control()?.controlId()"
230
+ [attr.aria-label]="t('decrement')"
231
+ [disabled]="decrementDisabled()"
232
+ (pointerdown)="press(-1, $event)"
233
+ (pointerup)="release()"
234
+ (pointerleave)="release()"
235
+ (pointercancel)="release()"
236
+ >
237
+ <span slIcon><svg slGlyph name="chevron-down"></svg></span>
238
+ </button>
239
+ </span>
240
+ }
241
+ @if (control()?.submissionName(); as submissionName) {
242
+ <input
243
+ type="hidden"
244
+ [attr.name]="submissionName"
245
+ [attr.form]="control()?.submissionForm()"
246
+ [value]="hiddenValue()"
247
+ />
248
+ }`, isInline: true, styles: ["@layer slotted.components{[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-md, 8px);--_icon-floor: var(--slotted-currency-field-icon-size-min, 14px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-md, 16px));--_inner-size: var(--slotted-control-inner-size-md, 24px);--_stepper-size: var( --slotted-currency-field-stepper-size, max( var(--slotted-target-min, 24px), min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)), var(--_inner-size)) ) );--_action-size: var( --slotted-currency-field-action-size, min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)), var(--_inner-size)) );--_inset: max( 0px, calc( (var(--_height) - 2 * var(--slotted-control-border-width, 1px) - var(--_action-size)) / 2 ) );--_action-radius: max( var(--slotted-radius-xs, 2px), calc(var(--slotted-currency-field-radius, var(--slotted-control-radius, 4px)) - var(--_inset)) );--_column-inset: var(--slotted-space-1, 2px);--_column-radius: max( var(--slotted-radius-xs, 2px), calc( var(--slotted-currency-field-radius, var(--slotted-control-radius, 4px)) - var(--_column-inset) ) );align-items:center;background-color:var( --slotted-currency-field-background, var(--slotted-control-surface, Field) );border:var(--slotted-control-border-width, 1px) solid var(--slotted-currency-field-border-color, var(--slotted-control-border-color, ButtonBorder));border-radius:var(--slotted-currency-field-radius, var(--slotted-control-radius, 4px));box-shadow:var(--slotted-currency-field-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;color:var(--slotted-currency-field-color, var(--slotted-text, CanvasText));display:flex;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);gap:var(--_gap);inline-size:100%;min-inline-size:0;min-block-size:var(--_height);padding-inline:var(--_padding-inline);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=currency-field]>[data-part=input]{background-color:transparent;align-self:stretch;margin-block:calc(var(--slotted-control-border-width, 1px) * -1);border:0;color:inherit;flex:1 1 auto;font:inherit;font-variant-numeric:tabular-nums;outline:none;padding:0;min-inline-size:0;text-overflow:ellipsis;unicode-bidi:plaintext}[data-ui=currency-field]>[data-part=input]::placeholder{color:var(--slotted-currency-field-placeholder-color, var(--slotted-text-muted, GrayText));text-overflow:ellipsis}[data-ui=currency-field][data-align=end]>[data-part=input]{text-align:right}[data-ui=currency-field][data-align=end]:dir(rtl)>[data-part=input]{text-align:left}[data-ui=currency-field][data-align=start]>[data-part=input]{text-align:left}[data-ui=currency-field][data-align=start]:dir(rtl)>[data-part=input]{text-align:right}[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-sm, 6px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-sm, 14px));--_inner-size: var(--slotted-control-inner-size-sm, 22px)}[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-md, 8px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-md, 16px));--_inner-size: var(--slotted-control-inner-size-md, 24px)}[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-lg, 8px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-lg, 18px));--_inner-size: var(--slotted-control-inner-size-lg, 28px)}[data-ui=currency-field][data-part=root][data-variant=subtle]{background-color:var( --slotted-currency-field-subtle-background, var(--slotted-surface-sunken, Canvas) );border-color:var( --slotted-currency-field-subtle-border-color, var(--slotted-border-subtle, ButtonBorder) )}[data-ui=currency-field][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=currency-field][data-part=root][data-variant=plain]{border-color:ButtonBorder}}[data-ui=currency-field]>[data-part=start],[data-ui=currency-field]>[data-part=end]{align-items:center;color:var(--slotted-currency-field-adornment-color, var(--slotted-text-muted, GrayText));display:inline-flex;flex:0 0 auto;gap:var(--slotted-space-2, .25rem);line-height:1;unicode-bidi:plaintext;--slotted-icon-size: var(--_icon-size)}[data-ui=currency-field]>[data-part=start]>svg,[data-ui=currency-field]>[data-part=end]>svg{block-size:var(--_icon-size);inline-size:var(--_icon-size)}[data-ui=currency-field]>[data-part=start]:not(:has(svg,img,[data-ui=icon])),[data-ui=currency-field]>[data-part=end]:not(:has(svg,img,[data-ui=icon])){padding-inline:calc(var(--_icon-size) / 8)}[data-ui=currency-field]>:is([data-part=start],[data-part=end]):has(>[data-part=scrub]){align-self:stretch}[data-ui=currency-field] [data-part=scrub]{align-items:center;align-self:stretch;cursor:ew-resize;display:inline-flex;gap:var(--slotted-space-2, .25rem);touch-action:none;transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);unicode-bidi:plaintext;user-select:none;-webkit-user-select:none}[data-ui=currency-field]:not([data-disabled]):not([data-readonly]) [data-part=scrub]:is(:hover,[data-scrubbing]){color:var(--slotted-currency-field-scrub-active-color, var(--slotted-text, CanvasText))}[data-ui=currency-field]:is([data-disabled],[data-readonly]) [data-part=scrub]{cursor:default;touch-action:auto}[data-ui=currency-field]>[data-part=stepper]>button,[data-ui=currency-field]>[data-part=decrement],[data-ui=currency-field]>[data-part=increment]{align-items:center;appearance:none;background-color:transparent;border:0;color:var(--slotted-currency-field-stepper-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:0 0 auto;justify-content:center;padding:0;position:relative;touch-action:manipulation;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);-webkit-tap-highlight-color:transparent}[data-ui=currency-field] [data-part=decrement],[data-ui=currency-field] [data-part=increment]{--slotted-icon-size: var(--_icon-size)}[data-ui=currency-field][data-stepper=stacked] [data-part=increment]>[data-ui=icon]{rotate:.5turn}[data-ui=currency-field][data-part=root][data-stepper=stacked]{padding-inline-end:0}[data-ui=currency-field]>[data-part=stepper]{align-self:stretch;box-sizing:content-box;display:flex;flex:0 0 auto;flex-direction:column;inline-size:var(--_stepper-size);padding-block:var(--_column-inset);padding-inline-end:var(--_column-inset)}[data-ui=currency-field]>[data-part=stepper]>button{block-size:50%;border-radius:var(--_column-radius);inline-size:100%}[data-ui=currency-field]>[data-part=stepper]>:is([data-part=increment],[data-part=decrement]):after{content:\"\";inset-inline:0 calc(var(--_column-inset) * -1);position:absolute}[data-ui=currency-field]>[data-part=stepper]>[data-part=increment]:after{inset-block:calc(var(--_column-inset) * -1) 0}[data-ui=currency-field]>[data-part=stepper]>[data-part=decrement]:after{inset-block:0 calc(var(--_column-inset) * -1)}[data-ui=currency-field]>[data-part=stepper]>button>[data-ui=icon]{block-size:min(var(--_icon-size),100%);contain:size}[data-ui=currency-field][data-part=root][data-stepper=split]{gap:0;padding-inline:var(--_inset)}[data-ui=currency-field][data-stepper=split]>[data-part=decrement],[data-ui=currency-field][data-stepper=split]>[data-part=increment]{block-size:var(--_action-size);border-radius:var(--_action-radius);inline-size:var(--_action-size)}[data-ui=currency-field][data-stepper=split]>[data-part=start]{padding-inline-start:var(--_gap)}[data-ui=currency-field][data-stepper=split]>[data-part=end]{padding-inline-end:var(--_gap)}[data-ui=currency-field][data-stepper=split]>[data-part=input]{padding-inline:var(--_padding-inline)}[data-ui=currency-field][data-stepper=split]>[data-part=decrement]:after,[data-ui=currency-field][data-stepper=split]>[data-part=increment]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(pointer:coarse){[data-ui=currency-field][data-stepper=split]>:is([data-part=decrement],[data-part=increment]):after{inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2))}[data-ui=currency-field]>[data-part=stepper]>:is([data-part=increment],[data-part=decrement]):after{inset-inline:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2))}}[data-ui=currency-field] [data-part=decrement]:hover:not(:disabled),[data-ui=currency-field] [data-part=increment]:hover:not(:disabled){background-color:var( --slotted-currency-field-stepper-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=currency-field] [data-part=decrement]:active:not(:disabled),[data-ui=currency-field] [data-part=increment]:active:not(:disabled){background-color:var( --slotted-currency-field-stepper-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=currency-field] [data-part=decrement]:disabled,[data-ui=currency-field] [data-part=increment]:disabled{background-color:var( --slotted-currency-field-stepper-disabled-background, var(--slotted-disabled-background) );color:var(--slotted-currency-field-stepper-disabled-color, var(--slotted-disabled-foreground));cursor:not-allowed}[data-ui=currency-field] [data-part=decrement]:focus-visible,[data-ui=currency-field] [data-part=increment]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=currency-field][data-part=root]:hover:not([data-disabled]):not([data-readonly]):not([data-invalid]){border-color:var( --slotted-currency-field-hover-border-color, var(--slotted-tone-accent-border) )}[data-ui=currency-field][data-part=root][data-variant=subtle]:hover:not([data-disabled]):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-currency-field-subtle-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=currency-field][data-part=root][data-variant=plain]:hover:not([data-disabled]):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-currency-field-plain-hover-background, var(--slotted-tone-secondary-subtle-hover) );border-color:transparent}[data-ui=currency-field][data-part=root]:has(>[data-part=input]: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=currency-field][data-part=root][data-variant=plain]:has(>[data-part=input]:focus-visible){box-shadow:none;outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=currency-field][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-currency-field-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );--_invalid-edge-width: var( --slotted-currency-field-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );--_invalid-edge-color: var( --slotted-currency-field-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-currency-field-invalid-border-color, var(--slotted-tone-danger-border) );box-shadow:var(--_invalid-edge)}[data-ui=currency-field][data-part=root][data-invalid]:has(>[data-part=input]: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=currency-field][data-part=root][data-variant=plain][data-invalid]:has(>[data-part=input]: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=currency-field][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=currency-field][data-part=root][data-invalid]:has(>[data-part=input]: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=currency-field][data-part=root][data-variant=plain][data-invalid]:has(>[data-part=input]: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=currency-field][data-part=root][data-readonly]{background-color:var( --slotted-currency-field-readonly-background, var(--slotted-tone-secondary-subtle-hover) );border-color:var( --slotted-currency-field-readonly-border-color, var(--slotted-border-subtle, ButtonBorder) );cursor:default}[data-ui=currency-field][data-part=root][data-disabled],[data-ui=currency-field][data-part=root]:has(>[data-part=input]:disabled){background-color:var( --slotted-currency-field-disabled-background, var(--slotted-disabled-background) );border-color:var( --slotted-currency-field-disabled-border-color, var(--slotted-disabled-border) );box-shadow:none;color:var(--slotted-currency-field-disabled-color, var(--slotted-disabled-foreground));cursor:not-allowed}[data-ui=currency-field][data-part=root][data-disabled]>[data-part=start],[data-ui=currency-field][data-part=root][data-disabled]>[data-part=end]{color:var(--slotted-disabled-foreground)}}\n"], dependencies: [{ kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
249
+ }
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyField, decorators: [{
251
+ type: Component,
252
+ args: [{ selector: '[slCurrencyField]', standalone: true, exportAs: 'slCurrencyField', imports: [SlGlyph, SlIcon], template: `@if (resolvedStepper() === 'split') {
253
+ <button
254
+ data-part="decrement"
255
+ type="button"
256
+ tabindex="-1"
257
+ [attr.aria-controls]="control()?.controlId()"
258
+ [attr.aria-label]="t('decrement')"
259
+ [disabled]="decrementDisabled()"
260
+ (pointerdown)="press(-1, $event)"
261
+ (pointerup)="release()"
262
+ (pointerleave)="release()"
263
+ (pointercancel)="release()"
264
+ >
265
+ <span slIcon><svg slGlyph name="minus"></svg></span>
266
+ </button>
267
+ }
268
+ <ng-content select="[slCurrencyFieldStart]" />
269
+ <ng-content />
270
+ <ng-content select="[slCurrencyFieldEnd]" />
271
+ @if (resolvedStepper() === 'split') {
272
+ <button
273
+ data-part="increment"
274
+ type="button"
275
+ tabindex="-1"
276
+ [attr.aria-controls]="control()?.controlId()"
277
+ [attr.aria-label]="t('increment')"
278
+ [disabled]="incrementDisabled()"
279
+ (pointerdown)="press(1, $event)"
280
+ (pointerup)="release()"
281
+ (pointerleave)="release()"
282
+ (pointercancel)="release()"
283
+ >
284
+ <span slIcon><svg slGlyph name="plus"></svg></span>
285
+ </button>
286
+ } @else if (resolvedStepper() === 'stacked') {
287
+ <span data-part="stepper">
288
+ <button
289
+ data-part="increment"
290
+ type="button"
291
+ tabindex="-1"
292
+ [attr.aria-controls]="control()?.controlId()"
293
+ [attr.aria-label]="t('increment')"
294
+ [disabled]="incrementDisabled()"
295
+ (pointerdown)="press(1, $event)"
296
+ (pointerup)="release()"
297
+ (pointerleave)="release()"
298
+ (pointercancel)="release()"
299
+ >
300
+ <!-- Both halves draw the down chevron; the stylesheet turns the
301
+ increment's half a turn. -->
302
+ <span slIcon><svg slGlyph name="chevron-down"></svg></span>
303
+ </button>
304
+ <button
305
+ data-part="decrement"
306
+ type="button"
307
+ tabindex="-1"
308
+ [attr.aria-controls]="control()?.controlId()"
309
+ [attr.aria-label]="t('decrement')"
310
+ [disabled]="decrementDisabled()"
311
+ (pointerdown)="press(-1, $event)"
312
+ (pointerup)="release()"
313
+ (pointerleave)="release()"
314
+ (pointercancel)="release()"
315
+ >
316
+ <span slIcon><svg slGlyph name="chevron-down"></svg></span>
317
+ </button>
318
+ </span>
319
+ }
320
+ @if (control()?.submissionName(); as submissionName) {
321
+ <input
322
+ type="hidden"
323
+ [attr.name]="submissionName"
324
+ [attr.form]="control()?.submissionForm()"
325
+ [value]="hiddenValue()"
326
+ />
327
+ }`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
328
+ 'data-ui': 'currency-field',
329
+ 'data-part': 'root',
330
+ '[attr.data-size]': 'resolvedSize()',
331
+ '[attr.data-variant]': 'resolvedVariant()',
332
+ '[attr.data-align]': 'resolvedAlign()',
333
+ '[attr.data-entry]': 'resolvedEntry()',
334
+ '[attr.data-stepper]': 'resolvedStepper()',
335
+ '[attr.data-disabled]': "control()?.resolvedDisabled() === true ? '' : null",
336
+ '[attr.data-invalid]': "control()?.resolvedInvalid() === true ? '' : null",
337
+ '[attr.data-readonly]': "control()?.resolvedReadOnly() === true ? '' : null",
338
+ '[attr.data-scrubbing]': "scrubbing() ? '' : null",
339
+ }, styles: ["@layer slotted.components{[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-md, 8px);--_icon-floor: var(--slotted-currency-field-icon-size-min, 14px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-md, 16px));--_inner-size: var(--slotted-control-inner-size-md, 24px);--_stepper-size: var( --slotted-currency-field-stepper-size, max( var(--slotted-target-min, 24px), min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)), var(--_inner-size)) ) );--_action-size: var( --slotted-currency-field-action-size, min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)), var(--_inner-size)) );--_inset: max( 0px, calc( (var(--_height) - 2 * var(--slotted-control-border-width, 1px) - var(--_action-size)) / 2 ) );--_action-radius: max( var(--slotted-radius-xs, 2px), calc(var(--slotted-currency-field-radius, var(--slotted-control-radius, 4px)) - var(--_inset)) );--_column-inset: var(--slotted-space-1, 2px);--_column-radius: max( var(--slotted-radius-xs, 2px), calc( var(--slotted-currency-field-radius, var(--slotted-control-radius, 4px)) - var(--_column-inset) ) );align-items:center;background-color:var( --slotted-currency-field-background, var(--slotted-control-surface, Field) );border:var(--slotted-control-border-width, 1px) solid var(--slotted-currency-field-border-color, var(--slotted-control-border-color, ButtonBorder));border-radius:var(--slotted-currency-field-radius, var(--slotted-control-radius, 4px));box-shadow:var(--slotted-currency-field-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;color:var(--slotted-currency-field-color, var(--slotted-text, CanvasText));display:flex;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);gap:var(--_gap);inline-size:100%;min-inline-size:0;min-block-size:var(--_height);padding-inline:var(--_padding-inline);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=currency-field]>[data-part=input]{background-color:transparent;align-self:stretch;margin-block:calc(var(--slotted-control-border-width, 1px) * -1);border:0;color:inherit;flex:1 1 auto;font:inherit;font-variant-numeric:tabular-nums;outline:none;padding:0;min-inline-size:0;text-overflow:ellipsis;unicode-bidi:plaintext}[data-ui=currency-field]>[data-part=input]::placeholder{color:var(--slotted-currency-field-placeholder-color, var(--slotted-text-muted, GrayText));text-overflow:ellipsis}[data-ui=currency-field][data-align=end]>[data-part=input]{text-align:right}[data-ui=currency-field][data-align=end]:dir(rtl)>[data-part=input]{text-align:left}[data-ui=currency-field][data-align=start]>[data-part=input]{text-align:left}[data-ui=currency-field][data-align=start]:dir(rtl)>[data-part=input]{text-align:right}[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-sm, 6px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-sm, 14px));--_inner-size: var(--slotted-control-inner-size-sm, 22px)}[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-md, 8px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-md, 16px));--_inner-size: var(--slotted-control-inner-size-md, 24px)}[data-ui=currency-field][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);--_gap: var(--slotted-control-gap-lg, 8px);--_icon-size: max(var(--_icon-floor), var(--slotted-control-icon-size-lg, 18px));--_inner-size: var(--slotted-control-inner-size-lg, 28px)}[data-ui=currency-field][data-part=root][data-variant=subtle]{background-color:var( --slotted-currency-field-subtle-background, var(--slotted-surface-sunken, Canvas) );border-color:var( --slotted-currency-field-subtle-border-color, var(--slotted-border-subtle, ButtonBorder) )}[data-ui=currency-field][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=currency-field][data-part=root][data-variant=plain]{border-color:ButtonBorder}}[data-ui=currency-field]>[data-part=start],[data-ui=currency-field]>[data-part=end]{align-items:center;color:var(--slotted-currency-field-adornment-color, var(--slotted-text-muted, GrayText));display:inline-flex;flex:0 0 auto;gap:var(--slotted-space-2, .25rem);line-height:1;unicode-bidi:plaintext;--slotted-icon-size: var(--_icon-size)}[data-ui=currency-field]>[data-part=start]>svg,[data-ui=currency-field]>[data-part=end]>svg{block-size:var(--_icon-size);inline-size:var(--_icon-size)}[data-ui=currency-field]>[data-part=start]:not(:has(svg,img,[data-ui=icon])),[data-ui=currency-field]>[data-part=end]:not(:has(svg,img,[data-ui=icon])){padding-inline:calc(var(--_icon-size) / 8)}[data-ui=currency-field]>:is([data-part=start],[data-part=end]):has(>[data-part=scrub]){align-self:stretch}[data-ui=currency-field] [data-part=scrub]{align-items:center;align-self:stretch;cursor:ew-resize;display:inline-flex;gap:var(--slotted-space-2, .25rem);touch-action:none;transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);unicode-bidi:plaintext;user-select:none;-webkit-user-select:none}[data-ui=currency-field]:not([data-disabled]):not([data-readonly]) [data-part=scrub]:is(:hover,[data-scrubbing]){color:var(--slotted-currency-field-scrub-active-color, var(--slotted-text, CanvasText))}[data-ui=currency-field]:is([data-disabled],[data-readonly]) [data-part=scrub]{cursor:default;touch-action:auto}[data-ui=currency-field]>[data-part=stepper]>button,[data-ui=currency-field]>[data-part=decrement],[data-ui=currency-field]>[data-part=increment]{align-items:center;appearance:none;background-color:transparent;border:0;color:var(--slotted-currency-field-stepper-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:0 0 auto;justify-content:center;padding:0;position:relative;touch-action:manipulation;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);-webkit-tap-highlight-color:transparent}[data-ui=currency-field] [data-part=decrement],[data-ui=currency-field] [data-part=increment]{--slotted-icon-size: var(--_icon-size)}[data-ui=currency-field][data-stepper=stacked] [data-part=increment]>[data-ui=icon]{rotate:.5turn}[data-ui=currency-field][data-part=root][data-stepper=stacked]{padding-inline-end:0}[data-ui=currency-field]>[data-part=stepper]{align-self:stretch;box-sizing:content-box;display:flex;flex:0 0 auto;flex-direction:column;inline-size:var(--_stepper-size);padding-block:var(--_column-inset);padding-inline-end:var(--_column-inset)}[data-ui=currency-field]>[data-part=stepper]>button{block-size:50%;border-radius:var(--_column-radius);inline-size:100%}[data-ui=currency-field]>[data-part=stepper]>:is([data-part=increment],[data-part=decrement]):after{content:\"\";inset-inline:0 calc(var(--_column-inset) * -1);position:absolute}[data-ui=currency-field]>[data-part=stepper]>[data-part=increment]:after{inset-block:calc(var(--_column-inset) * -1) 0}[data-ui=currency-field]>[data-part=stepper]>[data-part=decrement]:after{inset-block:0 calc(var(--_column-inset) * -1)}[data-ui=currency-field]>[data-part=stepper]>button>[data-ui=icon]{block-size:min(var(--_icon-size),100%);contain:size}[data-ui=currency-field][data-part=root][data-stepper=split]{gap:0;padding-inline:var(--_inset)}[data-ui=currency-field][data-stepper=split]>[data-part=decrement],[data-ui=currency-field][data-stepper=split]>[data-part=increment]{block-size:var(--_action-size);border-radius:var(--_action-radius);inline-size:var(--_action-size)}[data-ui=currency-field][data-stepper=split]>[data-part=start]{padding-inline-start:var(--_gap)}[data-ui=currency-field][data-stepper=split]>[data-part=end]{padding-inline-end:var(--_gap)}[data-ui=currency-field][data-stepper=split]>[data-part=input]{padding-inline:var(--_padding-inline)}[data-ui=currency-field][data-stepper=split]>[data-part=decrement]:after,[data-ui=currency-field][data-stepper=split]>[data-part=increment]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(pointer:coarse){[data-ui=currency-field][data-stepper=split]>:is([data-part=decrement],[data-part=increment]):after{inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2))}[data-ui=currency-field]>[data-part=stepper]>:is([data-part=increment],[data-part=decrement]):after{inset-inline:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2))}}[data-ui=currency-field] [data-part=decrement]:hover:not(:disabled),[data-ui=currency-field] [data-part=increment]:hover:not(:disabled){background-color:var( --slotted-currency-field-stepper-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=currency-field] [data-part=decrement]:active:not(:disabled),[data-ui=currency-field] [data-part=increment]:active:not(:disabled){background-color:var( --slotted-currency-field-stepper-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=currency-field] [data-part=decrement]:disabled,[data-ui=currency-field] [data-part=increment]:disabled{background-color:var( --slotted-currency-field-stepper-disabled-background, var(--slotted-disabled-background) );color:var(--slotted-currency-field-stepper-disabled-color, var(--slotted-disabled-foreground));cursor:not-allowed}[data-ui=currency-field] [data-part=decrement]:focus-visible,[data-ui=currency-field] [data-part=increment]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=currency-field][data-part=root]:hover:not([data-disabled]):not([data-readonly]):not([data-invalid]){border-color:var( --slotted-currency-field-hover-border-color, var(--slotted-tone-accent-border) )}[data-ui=currency-field][data-part=root][data-variant=subtle]:hover:not([data-disabled]):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-currency-field-subtle-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=currency-field][data-part=root][data-variant=plain]:hover:not([data-disabled]):not([data-readonly]):not([data-invalid]){background-color:var( --slotted-currency-field-plain-hover-background, var(--slotted-tone-secondary-subtle-hover) );border-color:transparent}[data-ui=currency-field][data-part=root]:has(>[data-part=input]: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=currency-field][data-part=root][data-variant=plain]:has(>[data-part=input]:focus-visible){box-shadow:none;outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=currency-field][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-currency-field-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );--_invalid-edge-width: var( --slotted-currency-field-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );--_invalid-edge-color: var( --slotted-currency-field-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-currency-field-invalid-border-color, var(--slotted-tone-danger-border) );box-shadow:var(--_invalid-edge)}[data-ui=currency-field][data-part=root][data-invalid]:has(>[data-part=input]: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=currency-field][data-part=root][data-variant=plain][data-invalid]:has(>[data-part=input]: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=currency-field][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=currency-field][data-part=root][data-invalid]:has(>[data-part=input]: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=currency-field][data-part=root][data-variant=plain][data-invalid]:has(>[data-part=input]: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=currency-field][data-part=root][data-readonly]{background-color:var( --slotted-currency-field-readonly-background, var(--slotted-tone-secondary-subtle-hover) );border-color:var( --slotted-currency-field-readonly-border-color, var(--slotted-border-subtle, ButtonBorder) );cursor:default}[data-ui=currency-field][data-part=root][data-disabled],[data-ui=currency-field][data-part=root]:has(>[data-part=input]:disabled){background-color:var( --slotted-currency-field-disabled-background, var(--slotted-disabled-background) );border-color:var( --slotted-currency-field-disabled-border-color, var(--slotted-disabled-border) );box-shadow:none;color:var(--slotted-currency-field-disabled-color, var(--slotted-disabled-foreground));cursor:not-allowed}[data-ui=currency-field][data-part=root][data-disabled]>[data-part=start],[data-ui=currency-field][data-part=root][data-disabled]>[data-part=end]{color:var(--slotted-disabled-foreground)}}\n"] }]
340
+ }], ctorParameters: () => [], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], stepper: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepper", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlCurrencyFieldControl), { ...{ descendants: true }, isSignal: true }] }] } });
341
+
342
+ /** `undefined` stays absent; anything else becomes a number. */
343
+ const optionalNumber = (value) => value === undefined || value === null || value === '' ? undefined : numberAttribute(value);
344
+ /** The two keys that set the sign under cents-first entry. */
345
+ const SIGN_KEYS = new Set(['-', '−', '+', '(']);
346
+ /**
347
+ * The control itself: the amount, the currency, the identifier, and everything
348
+ * the field around it says.
349
+ *
350
+ * **The element is `type="text"` and carries the APG's `spinbutton` role.**
351
+ * `type="number"` empties itself whenever the text is not a valid
352
+ * floating-point number, so no grouping separator and no currency symbol
353
+ * survives it.
354
+ *
355
+ * **Under `entry="cents"` the digits are the amount.** After every edit the
356
+ * directive reads the digits out of the text and divides by the currency's
357
+ * minor units, so `1234` is `R$ 12,34`. The text is generated rather than
358
+ * typed, which is why rewriting it on every keystroke is legal here and
359
+ * forbidden in `number-field`: there is no typed text to protect, and the caret
360
+ * has exactly one legal position.
361
+ *
362
+ * **Unset means ask the field.** `disabled`, `readOnly` and `invalid` default to
363
+ * `undefined` rather than `false`. A value the consumer wrote as a static
364
+ * attribute is read before the host binding computes.
365
+ */
366
+ class SlCurrencyFieldInput {
367
+ /**
368
+ * An ISO 4217 code. It decides the symbol, the minor units and therefore how
369
+ * far a digit shifts. Required here or on the token: a field that guessed two
370
+ * minor digits would write `¥12,34`.
371
+ */
372
+ currency = input(undefined, /* @ts-ignore */
373
+ ...(ngDevMode ? [{ debugName: "currency" }] : /* istanbul ignore next */ []));
374
+ /** How the currency is written beside the amount. Defaults to the token, then `symbol`. */
375
+ currencyDisplay = input(undefined, /* @ts-ignore */
376
+ ...(ngDevMode ? [{ debugName: "currencyDisplay" }] : /* istanbul ignore next */ []));
377
+ /** Overrides the currency's own minor units, for a unit price quoted finer. */
378
+ fractionDigits = input(undefined, { ...(ngDevMode ? { debugName: "fractionDigits" } : /* istanbul ignore next */ {}), transform: optionalNumber });
379
+ /**
380
+ * Present means the consumer owns the amount, for the life of the component.
381
+ * `null` is empty, and `undefined` is the absence that makes the control
382
+ * uncontrolled — the two are different answers.
383
+ */
384
+ value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: (raw) => (raw === undefined ? undefined : (optionalNumber(raw) ?? null)) });
385
+ /** The amount the control starts from when nobody else writes one. */
386
+ defaultValue = input(null, { ...(ngDevMode ? { debugName: "defaultValue" } : /* istanbul ignore next */ {}), transform: (raw) => (raw === undefined ? null : (optionalNumber(raw) ?? null)) });
387
+ /** How the reader types. Defaults to the token, then `cents`. */
388
+ entry = input(undefined, /* @ts-ignore */
389
+ ...(ngDevMode ? [{ debugName: "entry" }] : /* istanbul ignore next */ []));
390
+ /**
391
+ * When the text takes the locale's shape under `entry="natural"`. Defaults to
392
+ * the token, then `change`. Cents-first entry generates the text after every
393
+ * edit, so it decides nothing there.
394
+ */
395
+ formatOn = input(undefined, /* @ts-ignore */
396
+ ...(ngDevMode ? [{ debugName: "formatOn" }] : /* istanbul ignore next */ []));
397
+ min = input(undefined, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: optionalNumber });
398
+ max = input(undefined, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: optionalNumber });
399
+ /** What the arrows and the two buttons move by, in major units. */
400
+ step = input(1, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: (raw) => optionalNumber(raw) ?? 1 });
401
+ /** The amount `Shift` and the page keys move by. Defaults to `step * 10`. */
402
+ largeStep = input(undefined, { ...(ngDevMode ? { debugName: "largeStep" } : /* istanbul ignore next */ {}), transform: optionalNumber });
403
+ /** The amount `Alt` moves by. Defaults to `step / 10`. */
404
+ smallStep = input(undefined, { ...(ngDevMode ? { debugName: "smallStep" } : /* istanbul ignore next */ {}), transform: optionalNumber });
405
+ /** Where an empty control starts stepping from. Defaults to `min`, then nought. */
406
+ stepFrom = input(undefined, { ...(ngDevMode ? { debugName: "stepFrom" } : /* istanbul ignore next */ {}), transform: optionalNumber });
407
+ /** Where an amount outside the range goes, and when. Defaults to the token, then `blur`. */
408
+ clamp = input(undefined, /* @ts-ignore */
409
+ ...(ngDevMode ? [{ debugName: "clamp" }] : /* istanbul ignore next */ []));
410
+ /** Any other `Intl.NumberFormatOptions`. Every key here wins over the family's own. */
411
+ format = input(undefined, /* @ts-ignore */
412
+ ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
413
+ /**
414
+ * BCP 47. Decides the separators and the numbering system, never the symbol.
415
+ * Defaults to the language in force (`provideSlotted`).
416
+ */
417
+ locale = input(undefined, /* @ts-ignore */
418
+ ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
419
+ /**
420
+ * Lets the wheel move the amount while the control has focus. Off by default:
421
+ * a reader scrolling a form must not change a total by passing over it.
422
+ */
423
+ wheel = input(false, { ...(ngDevMode ? { debugName: "wheel" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
424
+ /**
425
+ * Whether an emptied control holds nothing, or nought.
426
+ *
427
+ * Off, because an amount is not an optional number: a total, a price and a
428
+ * balance are all nought when nothing is in them. Cleared, the control shows
429
+ * `0,00` and emits `0`. On, it can be left empty and emits `null`.
430
+ */
431
+ allowEmpty = input(false, { ...(ngDevMode ? { debugName: "allowEmpty" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
432
+ /** Unstated rather than `false`, so the control defers to the field. */
433
+ disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)) });
434
+ readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)) });
435
+ invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)) });
436
+ /**
437
+ * One output for one transition, carrying the amount, the amount it replaces,
438
+ * the currency, the exact integer of minor units, the reason, the originating
439
+ * event and `cancel()`. There is no `[(value)]`, because a two-way binding has
440
+ * one slot and can carry none of those.
441
+ */
442
+ valueChange = output();
443
+ element = inject(ElementRef).nativeElement;
444
+ /**
445
+ * The frame around the control. Injected without `optional`, so an `input`
446
+ * written without it fails at construction rather than silently losing its
447
+ * border and its ring.
448
+ */
449
+ currencyField = inject(SlCurrencyField);
450
+ field = inject(SlField, { optional: true });
451
+ defaults = injectCurrencyFieldDefaults();
452
+ appLocale = injectLocale();
453
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
454
+ writtenName = inject(new HostAttributeToken('name'), { optional: true });
455
+ writtenForm = inject(new HostAttributeToken('form'), { optional: true });
456
+ writtenInputMode = inject(new HostAttributeToken('inputmode'), {
457
+ optional: true,
458
+ });
459
+ writtenAutocomplete = inject(new HostAttributeToken('autocomplete'), {
460
+ optional: true,
461
+ });
462
+ writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {
463
+ optional: true,
464
+ });
465
+ writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {
466
+ optional: true,
467
+ });
468
+ writtenRequired = inject(new HostAttributeToken('aria-required'), {
469
+ optional: true,
470
+ });
471
+ writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });
472
+ /** What the family holds when nobody else owns it. */
473
+ own = signal(null, /* @ts-ignore */
474
+ ...(ngDevMode ? [{ debugName: "own" }] : /* istanbul ignore next */ []));
475
+ /** What the element is showing. Never a second copy of the amount. */
476
+ text = signal('', /* @ts-ignore */
477
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
478
+ formDisabled = signal(undefined, /* @ts-ignore */
479
+ ...(ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []));
480
+ /**
481
+ * The sign, while the field holds nothing to carry it. Typing `-` into an
482
+ * empty amount and then a digit produces a debit, which a sign derived from
483
+ * the text alone could not express.
484
+ */
485
+ pendingNegative = false;
486
+ onChangeFn = () => undefined;
487
+ onTouchedFn = () => undefined;
488
+ /**
489
+ * One formatter, rebuilt only when something it reads actually changes. The
490
+ * options object is read through a signal, so an inline object handed on
491
+ * every change detection does not rebuild the parser.
492
+ */
493
+ formatter = computed(() => {
494
+ const currency = this.currency() ?? this.defaults.currency;
495
+ if (currency === undefined) {
496
+ /* Loudly, and where it is written: a currency field cannot decide how
497
+ many digits a cent has, and one that guessed two would write ¥12,34. */
498
+ throw new Error('slCurrencyFieldInput needs a currency: set [currency], or provideCurrencyFieldDefaults({ currency }).');
499
+ }
500
+ const fractionDigits = this.fractionDigits();
501
+ const options = this.format();
502
+ return createCurrencyFormat({
503
+ currency,
504
+ currencyDisplay: this.currencyDisplay() ?? this.defaults.currencyDisplay,
505
+ locale: this.locale() ?? this.appLocale(),
506
+ ...(fractionDigits === undefined ? {} : { fractionDigits }),
507
+ ...(options === undefined ? {} : { options }),
508
+ });
509
+ }, /* @ts-ignore */
510
+ ...(ngDevMode ? [{ debugName: "formatter" }] : /* istanbul ignore next */ []));
511
+ /** Present means the consumer owns it; absent means the directive does. */
512
+ controlled = computed(() => this.value() !== undefined, /* @ts-ignore */
513
+ ...(ngDevMode ? [{ debugName: "controlled" }] : /* istanbul ignore next */ []));
514
+ numberValue = computed(() => {
515
+ const bound = this.value();
516
+ const held = bound === undefined ? this.own() : bound;
517
+ /* The amount the family settles on when nothing is left in the control.
518
+ It governs what is emitted, what `aria-valuenow` reports and what the
519
+ hidden input submits alike, so the three never disagree. */
520
+ return this.allowEmpty() ? held : (held ?? 0);
521
+ }, /* @ts-ignore */
522
+ ...(ngDevMode ? [{ debugName: "numberValue" }] : /* istanbul ignore next */ []));
523
+ valueText = computed(() => {
524
+ const shown = this.text();
525
+ return shown === '' ? null : shown;
526
+ }, /* @ts-ignore */
527
+ ...(ngDevMode ? [{ debugName: "valueText" }] : /* istanbul ignore next */ []));
528
+ resolvedEntry = computed(() => this.entry() ?? this.defaults.entry, /* @ts-ignore */
529
+ ...(ngDevMode ? [{ debugName: "resolvedEntry" }] : /* istanbul ignore next */ []));
530
+ resolvedFormatOn = computed(() => this.formatOn() ?? this.defaults.formatOn, /* @ts-ignore */
531
+ ...(ngDevMode ? [{ debugName: "resolvedFormatOn" }] : /* istanbul ignore next */ []));
532
+ resolvedClamp = computed(() => this.clamp() ?? this.defaults.clamp, /* @ts-ignore */
533
+ ...(ngDevMode ? [{ debugName: "resolvedClamp" }] : /* istanbul ignore next */ []));
534
+ resolvedDisabled = computed(() => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(), /* @ts-ignore */
535
+ ...(ngDevMode ? [{ debugName: "resolvedDisabled" }] : /* istanbul ignore next */ []));
536
+ resolvedReadOnly = computed(() => this.readOnly() ??
537
+ (this.writtenReadonly === null ? undefined : true) ??
538
+ this.field?.resolvedReadOnly(), /* @ts-ignore */
539
+ ...(ngDevMode ? [{ debugName: "resolvedReadOnly" }] : /* istanbul ignore next */ []));
540
+ resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid(), /* @ts-ignore */
541
+ ...(ngDevMode ? [{ debugName: "resolvedInvalid" }] : /* istanbul ignore next */ []));
542
+ controlId = computed(() => this.writtenId ?? this.field?.ids().control ?? null, /* @ts-ignore */
543
+ ...(ngDevMode ? [{ debugName: "controlId" }] : /* istanbul ignore next */ []));
544
+ submissionName = computed(() => this.writtenName, /* @ts-ignore */
545
+ ...(ngDevMode ? [{ debugName: "submissionName" }] : /* istanbul ignore next */ []));
546
+ submissionForm = computed(() => this.writtenForm, /* @ts-ignore */
547
+ ...(ngDevMode ? [{ debugName: "submissionForm" }] : /* istanbul ignore next */ []));
548
+ parsedText = computed(() => this.formatter().parse(this.text()), /* @ts-ignore */
549
+ ...(ngDevMode ? [{ debugName: "parsedText" }] : /* istanbul ignore next */ []));
550
+ atMax = computed(() => {
551
+ const max = this.max();
552
+ const current = this.parsedText();
553
+ return max !== undefined && current !== null && current >= max;
554
+ }, /* @ts-ignore */
555
+ ...(ngDevMode ? [{ debugName: "atMax" }] : /* istanbul ignore next */ []));
556
+ atMin = computed(() => {
557
+ const min = this.min();
558
+ const current = this.parsedText();
559
+ return min !== undefined && current !== null && current <= min;
560
+ }, /* @ts-ignore */
561
+ ...(ngDevMode ? [{ debugName: "atMin" }] : /* istanbul ignore next */ []));
562
+ /** Whether the range admits a debit at all. There is no `allowNegative`. */
563
+ allowNegative = computed(() => {
564
+ const min = this.min();
565
+ return min === undefined || min < 0;
566
+ }, /* @ts-ignore */
567
+ ...(ngDevMode ? [{ debugName: "allowNegative" }] : /* istanbul ignore next */ []));
568
+ /**
569
+ * The software keyboard, derived from the props rather than from the user
570
+ * agent. Cents-first entry types neither a separator nor a sign into the
571
+ * digits, so the numeric keypad is complete for the task.
572
+ */
573
+ resolvedInputMode = computed(() => {
574
+ if (this.writtenInputMode !== null)
575
+ return this.writtenInputMode;
576
+ if (this.resolvedEntry() === 'cents')
577
+ return 'numeric';
578
+ if (this.allowNegative())
579
+ return 'text';
580
+ return this.formatter().maximumFractionDigits > 0 ? 'decimal' : 'numeric';
581
+ }, /* @ts-ignore */
582
+ ...(ngDevMode ? [{ debugName: "resolvedInputMode" }] : /* istanbul ignore next */ []));
583
+ /**
584
+ * `transaction-amount` is the token a payment amount belongs to, and the
585
+ * default is `off`: most amounts in a back office are not payment amounts,
586
+ * and a browser filling an invoice total is worse than no help at all.
587
+ */
588
+ resolvedAutocomplete = computed(() => this.writtenAutocomplete ?? 'off', /* @ts-ignore */
589
+ ...(ngDevMode ? [{ debugName: "resolvedAutocomplete" }] : /* istanbul ignore next */ []));
590
+ describedBy = computed(() => {
591
+ const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);
592
+ return merged.length === 0 ? null : merged.join(' ');
593
+ }, /* @ts-ignore */
594
+ ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
595
+ ariaInvalid = computed(() => this.writtenInvalid ?? (this.resolvedInvalid() === true ? 'true' : null), /* @ts-ignore */
596
+ ...(ngDevMode ? [{ debugName: "ariaInvalid" }] : /* istanbul ignore next */ []));
597
+ ariaRequired = computed(() => this.writtenRequired ?? (this.field?.required() === true ? 'true' : null), /* @ts-ignore */
598
+ ...(ngDevMode ? [{ debugName: "ariaRequired" }] : /* istanbul ignore next */ []));
599
+ disabledAttribute = computed(() => this.resolvedDisabled() === true ? '' : null, /* @ts-ignore */
600
+ ...(ngDevMode ? [{ debugName: "disabledAttribute" }] : /* istanbul ignore next */ []));
601
+ readonlyAttribute = computed(() => this.resolvedReadOnly() === true ? '' : null, /* @ts-ignore */
602
+ ...(ngDevMode ? [{ debugName: "readonlyAttribute" }] : /* istanbul ignore next */ []));
603
+ constructor() {
604
+ /* The element shows what the family holds, and the text is only rewritten
605
+ when it no longer means the same amount. */
606
+ effect(() => {
607
+ const next = this.numberValue();
608
+ const formatter = this.formatter();
609
+ if (Object.is(next, formatter.parse(this.text())))
610
+ return;
611
+ this.write(formatter.format(next));
612
+ });
613
+ this.attachWheel();
614
+ }
615
+ /**
616
+ * Angular creates every directive in a template before it binds any input, so
617
+ * the starting amount is read here rather than in the constructor: read
618
+ * there, `defaultValue` is always its own default and the control starts
619
+ * empty.
620
+ */
621
+ ngOnInit() {
622
+ const bound = this.value();
623
+ const initial = bound === undefined ? this.defaultValue() : bound;
624
+ if (bound === undefined)
625
+ this.own.set(initial);
626
+ this.write(this.formatter().format(this.numberValue()));
627
+ }
628
+ /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */
629
+ get inputElement() {
630
+ return this.element;
631
+ }
632
+ /** Steps up by one step and reports `programmatic`. */
633
+ increment() {
634
+ this.move(1, this.step(), 'programmatic', undefined);
635
+ }
636
+ /** Steps down by one step and reports `programmatic`. */
637
+ decrement() {
638
+ this.move(-1, this.step(), 'programmatic', undefined);
639
+ }
640
+ /** What a `slCurrencyFieldScrub` drag calls, once per whole step travelled. */
641
+ scrubBy(steps, source) {
642
+ if (steps === 0)
643
+ return;
644
+ const step = this.step();
645
+ const amount = source.shiftKey
646
+ ? (this.largeStep() ?? step * 10)
647
+ : source.altKey
648
+ ? (this.smallStep() ?? step / 10)
649
+ : step;
650
+ this.move(steps > 0 ? 1 : -1, amount * Math.abs(steps), 'pointer', source);
651
+ }
652
+ /** What the frame's two buttons call. Focus returns to the amount. */
653
+ stepBy(direction, source) {
654
+ this.element.focus();
655
+ this.move(direction, this.step(), 'pointer', source);
656
+ }
657
+ writeValue(value) {
658
+ this.own.set(value ?? null);
659
+ this.write(this.formatter().format(this.settledAmount(value ?? null)));
660
+ }
661
+ registerOnChange(fn) {
662
+ this.onChangeFn = fn;
663
+ }
664
+ registerOnTouched(fn) {
665
+ this.onTouchedFn = fn;
666
+ }
667
+ setDisabledState(isDisabled) {
668
+ this.formDisabled.set(isDisabled);
669
+ }
670
+ onInput(event) {
671
+ const next = this.element.value;
672
+ const formatter = this.formatter();
673
+ if (this.resolvedEntry() !== 'cents') {
674
+ const native = event;
675
+ /* An IME commits a whole run, and a run reshaped half way through is a
676
+ run the engine can no longer finish. */
677
+ if (this.resolvedFormatOn() !== 'change' || native.isComposing) {
678
+ this.text.set(next);
679
+ this.request(this.settledAmount(formatter.parse(next)), 'keyboard', event);
680
+ return;
681
+ }
682
+ const caret = this.element.selectionStart ?? next.length;
683
+ const deletion = native.inputType?.startsWith('delete') === true;
684
+ const edited = deletion
685
+ ? formatter.deleteAcrossSeparator(this.text(), { text: next, caret }, native.inputType === 'deleteContentForward' ? 1 : -1)
686
+ : { text: next, caret };
687
+ const shaped = formatter.formatWhileTyping(edited);
688
+ this.write(shaped.text);
689
+ /* `write` puts the caret after the last digit under cents-first entry and
690
+ leaves it alone otherwise, so this is the only place it moves here. */
691
+ if (this.element.ownerDocument.activeElement === this.element) {
692
+ this.element.setSelectionRange(shaped.caret, shaped.caret);
693
+ }
694
+ this.request(this.settledAmount(formatter.parse(shaped.text)), 'keyboard', event);
695
+ return;
696
+ }
697
+ const inputType = event.inputType;
698
+ const edit = formatter.editFromText({
699
+ text: next,
700
+ /* What the element showed before this keystroke, which is what turns the
701
+ digits the reader added into digits at the right rather than digits
702
+ where the caret happened to be. */
703
+ previous: this.text(),
704
+ negative: this.negativeNow(),
705
+ allowNegative: this.allowNegative(),
706
+ allowEmpty: this.allowEmpty(),
707
+ ...(inputType === undefined ? {} : { inputType }),
708
+ });
709
+ this.pendingNegative = edit.value !== null && edit.value < 0;
710
+ this.settle(edit.value, this.request(edit.value, 'keyboard', event, edit.minorUnits));
711
+ }
712
+ /**
713
+ * The keystroke filter. `beforeinput` is where a keystroke, a paste and a
714
+ * drop all arrive before the element changes, and it is the only place a
715
+ * character that cannot be part of an amount can be refused without moving
716
+ * the caret.
717
+ */
718
+ onBeforeInput(event) {
719
+ if (event.defaultPrevented)
720
+ return;
721
+ /* An IME commits a whole run; refusing it character by character would
722
+ make a full-width `123` untypeable. */
723
+ if (event.isComposing)
724
+ return;
725
+ if (event.inputType.startsWith('delete'))
726
+ return;
727
+ /* A paste is parsed rather than filtered: it is the reader's own amount. */
728
+ if (event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop')
729
+ return;
730
+ const formatter = this.formatter();
731
+ const start = this.element.selectionStart ?? this.element.value.length;
732
+ const finish = this.element.selectionEnd ?? this.element.value.length;
733
+ const inserted = event.data ?? '';
734
+ const next = this.element.value.slice(0, start) + inserted + this.element.value.slice(finish);
735
+ const min = this.min();
736
+ const max = this.max();
737
+ if (this.resolvedEntry() !== 'cents') {
738
+ if (!formatter.isPartial(next)) {
739
+ event.preventDefault();
740
+ return;
741
+ }
742
+ if (this.resolvedClamp() !== 'strict')
743
+ return;
744
+ const parsed = formatter.parse(next);
745
+ if (parsed === null)
746
+ return;
747
+ if ((min !== undefined && parsed < min) || (max !== undefined && parsed > max)) {
748
+ event.preventDefault();
749
+ }
750
+ return;
751
+ }
752
+ /* The sign is a key rather than a digit, so `-` pressed twice does not
753
+ produce two signs and never enters the digit run. */
754
+ if (SIGN_KEYS.has(inserted)) {
755
+ event.preventDefault();
756
+ if (!this.allowNegative())
757
+ return;
758
+ const wanted = inserted !== '+';
759
+ this.pendingNegative = wanted;
760
+ const current = this.numberValue();
761
+ if (current === null || current === 0 || current < 0 === wanted)
762
+ return;
763
+ const flipped = -current;
764
+ this.settle(flipped, this.request(flipped, 'keyboard', event, formatter.toMinorUnits(flipped)));
765
+ return;
766
+ }
767
+ if (formatter.digitsOf(inserted).length !== [...inserted].length) {
768
+ event.preventDefault();
769
+ return;
770
+ }
771
+ /* Fifteen digits is where a double stops holding a cent, so the text stops
772
+ growing rather than rounding silently. */
773
+ if (formatter.digitsOf(next).length > MAX_AMOUNT_DIGITS) {
774
+ event.preventDefault();
775
+ return;
776
+ }
777
+ if (this.resolvedClamp() !== 'strict')
778
+ return;
779
+ const edit = formatter.editFromText({
780
+ text: next,
781
+ previous: this.element.value,
782
+ negative: this.negativeNow(),
783
+ allowNegative: this.allowNegative(),
784
+ allowEmpty: this.allowEmpty(),
785
+ });
786
+ if (edit.value === null)
787
+ return;
788
+ if ((min !== undefined && edit.value < min) || (max !== undefined && edit.value > max)) {
789
+ event.preventDefault();
790
+ }
791
+ }
792
+ onKeyDown(event) {
793
+ if (event.defaultPrevented)
794
+ return;
795
+ if (this.resolvedDisabled() === true || this.resolvedReadOnly() === true)
796
+ return;
797
+ const step = this.step();
798
+ const large = this.largeStep() ?? step * 10;
799
+ const small = this.smallStep() ?? step / 10;
800
+ const amount = event.shiftKey ? large : event.altKey ? small : step;
801
+ switch (event.key) {
802
+ case 'ArrowUp':
803
+ event.preventDefault();
804
+ this.move(1, amount, 'keyboard', event);
805
+ return;
806
+ case 'ArrowDown':
807
+ event.preventDefault();
808
+ this.move(-1, amount, 'keyboard', event);
809
+ return;
810
+ case 'PageUp':
811
+ event.preventDefault();
812
+ this.move(1, large, 'keyboard', event);
813
+ return;
814
+ case 'PageDown':
815
+ event.preventDefault();
816
+ this.move(-1, large, 'keyboard', event);
817
+ return;
818
+ case 'Home': {
819
+ const min = this.min();
820
+ if (min === undefined || event.ctrlKey || event.metaKey)
821
+ return;
822
+ event.preventDefault();
823
+ this.settle(min, this.request(min, 'keyboard', event));
824
+ return;
825
+ }
826
+ case 'End': {
827
+ const max = this.max();
828
+ if (max === undefined || event.ctrlKey || event.metaKey)
829
+ return;
830
+ event.preventDefault();
831
+ this.settle(max, this.request(max, 'keyboard', event));
832
+ return;
833
+ }
834
+ case 'Enter':
835
+ /* Committed and not intercepted: a single-line control submits its
836
+ form, which is the platform's behaviour. */
837
+ this.commit('keyboard', event);
838
+ return;
839
+ default:
840
+ }
841
+ }
842
+ onBlur(event) {
843
+ this.onTouchedFn();
844
+ this.commit('blur', event);
845
+ }
846
+ /**
847
+ * The wheel, when it is asked for, and never otherwise. It is a native
848
+ * listener rather than a host binding because the event has to be cancelled,
849
+ * and a host listener on `wheel` is passive in some browsers.
850
+ */
851
+ attachWheel() {
852
+ const onWheel = (event) => {
853
+ if (!this.wheel())
854
+ return;
855
+ if (this.resolvedDisabled() === true || this.resolvedReadOnly() === true)
856
+ return;
857
+ if (this.element.ownerDocument.activeElement !== this.element)
858
+ return;
859
+ if (event.deltaY === 0)
860
+ return;
861
+ event.preventDefault();
862
+ this.move(event.deltaY < 0 ? 1 : -1, this.step(), 'pointer', event);
863
+ };
864
+ this.element.addEventListener('wheel', onWheel, { passive: false });
865
+ inject(DestroyRef).onDestroy(() => this.element.removeEventListener('wheel', onWheel));
866
+ }
867
+ /** The sign at the moment of the edit, rather than at the last render. */
868
+ negativeNow() {
869
+ const current = this.numberValue();
870
+ /* Nought has no sign — `-0` and `0` are one amount — so a debit held
871
+ against an empty or nought amount can only come from the key. */
872
+ return current === null || current === 0 ? this.pendingNegative : current < 0;
873
+ }
874
+ /** Formats what the reader typed and puts the amount back in range. */
875
+ commit(reason, source) {
876
+ const formatter = this.formatter();
877
+ let next = formatter.parse(this.text());
878
+ /* The commit is where a half-typed amount stops being half typed, so it is
879
+ where an emptied one becomes the nought it means. */
880
+ if (next === null && !this.allowEmpty())
881
+ next = 0;
882
+ if (next !== null && this.resolvedClamp() !== 'none') {
883
+ next = clamp(next, this.min() ?? Number.NEGATIVE_INFINITY, this.max() ?? Number.POSITIVE_INFINITY);
884
+ }
885
+ this.settle(next, this.request(next, reason, source));
886
+ }
887
+ move(direction, amount, reason, source) {
888
+ const min = this.min();
889
+ const max = this.max();
890
+ const stepFrom = this.stepFrom();
891
+ const next = stepNumber({
892
+ value: this.formatter().parse(this.text()),
893
+ direction,
894
+ step: amount,
895
+ ...(min === undefined ? {} : { min }),
896
+ ...(max === undefined ? {} : { max }),
897
+ ...(stepFrom === undefined ? {} : { stepFrom }),
898
+ });
899
+ this.settle(next, this.request(next, reason, source));
900
+ }
901
+ /**
902
+ * Asks to move, and says whether anything did. A refused request answers
903
+ * `false`, and the caller uses that to decide what the element shows.
904
+ */
905
+ request(next, reason, source, minorUnits) {
906
+ const formatter = this.formatter();
907
+ const current = this.numberValue();
908
+ if (Object.is(next, current))
909
+ return false;
910
+ let cancelled = false;
911
+ const state = createControllable({
912
+ controlled: undefined,
913
+ initial: current,
914
+ onRequest: (pending) => {
915
+ this.valueChange.emit(withAmount(pending, formatter.currency, minorUnits ?? formatter.toMinorUnits(next)));
916
+ cancelled = pending.cancelled;
917
+ },
918
+ });
919
+ state.request(next, reason, source);
920
+ if (cancelled)
921
+ return false;
922
+ this.onChangeFn(next);
923
+ /* A controlled control never moves its own amount: it asks, and waits for
924
+ the consumer's next value. */
925
+ if (this.controlled())
926
+ return false;
927
+ this.own.set(next);
928
+ return true;
929
+ }
930
+ /** Nothing, or the nought it means. The one rule `allowEmpty` decides. */
931
+ settledAmount(amount) {
932
+ return this.allowEmpty() ? amount : (amount ?? 0);
933
+ }
934
+ settle(next, moved) {
935
+ const shown = moved ? next : this.numberValue();
936
+ this.write(this.formatter().format(shown));
937
+ }
938
+ /**
939
+ * One place the element's text is written, so the signal never drifts from
940
+ * it. Under cents-first entry the caret goes back after the last digit —
941
+ * before whatever affix the locale writes at the end — because that is the
942
+ * only position where the next keystroke means anything.
943
+ */
944
+ write(value) {
945
+ if (this.element.value !== value)
946
+ this.element.value = value;
947
+ this.text.set(value);
948
+ if (this.resolvedEntry() !== 'cents')
949
+ return;
950
+ if (this.element.ownerDocument.activeElement !== this.element)
951
+ return;
952
+ const formatter = this.formatter();
953
+ let position = value.length;
954
+ for (let index = value.length; index > 0; index -= 1) {
955
+ if (formatter.digitsOf(value[index - 1] ?? '') !== '') {
956
+ position = index;
957
+ break;
958
+ }
959
+ }
960
+ this.element.setSelectionRange(position, position);
961
+ }
962
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
963
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlCurrencyFieldInput, isStandalone: true, selector: "input[slCurrencyFieldInput]", inputs: { currency: { classPropertyName: "currency", publicName: "currency", isSignal: true, isRequired: false, transformFunction: null }, currencyDisplay: { classPropertyName: "currencyDisplay", publicName: "currencyDisplay", isSignal: true, isRequired: false, transformFunction: null }, fractionDigits: { classPropertyName: "fractionDigits", publicName: "fractionDigits", 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 }, entry: { classPropertyName: "entry", publicName: "entry", isSignal: true, isRequired: false, transformFunction: null }, formatOn: { classPropertyName: "formatOn", publicName: "formatOn", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, largeStep: { classPropertyName: "largeStep", publicName: "largeStep", isSignal: true, isRequired: false, transformFunction: null }, smallStep: { classPropertyName: "smallStep", publicName: "smallStep", isSignal: true, isRequired: false, transformFunction: null }, stepFrom: { classPropertyName: "stepFrom", publicName: "stepFrom", isSignal: true, isRequired: false, transformFunction: null }, clamp: { classPropertyName: "clamp", publicName: "clamp", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, wheel: { classPropertyName: "wheel", publicName: "wheel", isSignal: true, isRequired: false, transformFunction: null }, allowEmpty: { classPropertyName: "allowEmpty", publicName: "allowEmpty", 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 } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-part": "input", "autocorrect": "off", "spellcheck": "false" }, listeners: { "input": "onInput($event)", "beforeinput": "onBeforeInput($event)", "keydown": "onKeyDown($event)", "blur": "onBlur($event)" }, properties: { "attr.type": "'text'", "attr.role": "'spinbutton'", "attr.id": "controlId()", "attr.inputmode": "resolvedInputMode()", "attr.autocomplete": "resolvedAutocomplete()", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-required": "ariaRequired()", "attr.aria-valuenow": "numberValue()", "attr.aria-valuemin": "min() ?? null", "attr.aria-valuemax": "max() ?? null", "attr.aria-valuetext": "valueText()", "attr.name": "null", "attr.disabled": "disabledAttribute()", "attr.readonly": "readonlyAttribute()" } }, providers: [
964
+ { provide: SlCurrencyFieldControl, useExisting: forwardRef(() => SlCurrencyFieldInput) },
965
+ {
966
+ provide: NG_VALUE_ACCESSOR,
967
+ useExisting: forwardRef(() => SlCurrencyFieldInput),
968
+ multi: true,
969
+ },
970
+ ], exportAs: ["slCurrencyFieldInput"], ngImport: i0 });
971
+ }
972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldInput, decorators: [{
973
+ type: Directive,
974
+ args: [{
975
+ selector: 'input[slCurrencyFieldInput]',
976
+ standalone: true,
977
+ exportAs: 'slCurrencyFieldInput',
978
+ providers: [
979
+ { provide: SlCurrencyFieldControl, useExisting: forwardRef(() => SlCurrencyFieldInput) },
980
+ {
981
+ provide: NG_VALUE_ACCESSOR,
982
+ useExisting: forwardRef(() => SlCurrencyFieldInput),
983
+ multi: true,
984
+ },
985
+ ],
986
+ host: {
987
+ 'data-part': 'input',
988
+ autocorrect: 'off',
989
+ spellcheck: 'false',
990
+ /* Bound rather than static, so a consumer who wrote `type="number"` on a
991
+ currency field does not get the element that empties its own value. */
992
+ '[attr.type]': "'text'",
993
+ '[attr.role]': "'spinbutton'",
994
+ '[attr.id]': 'controlId()',
995
+ '[attr.inputmode]': 'resolvedInputMode()',
996
+ '[attr.autocomplete]': 'resolvedAutocomplete()',
997
+ '[attr.aria-describedby]': 'describedBy()',
998
+ '[attr.aria-invalid]': 'ariaInvalid()',
999
+ '[attr.aria-required]': 'ariaRequired()',
1000
+ '[attr.aria-valuenow]': 'numberValue()',
1001
+ '[attr.aria-valuemin]': 'min() ?? null',
1002
+ '[attr.aria-valuemax]': 'max() ?? null',
1003
+ '[attr.aria-valuetext]': 'valueText()',
1004
+ '[attr.name]': 'null',
1005
+ '[attr.disabled]': 'disabledAttribute()',
1006
+ '[attr.readonly]': 'readonlyAttribute()',
1007
+ '(input)': 'onInput($event)',
1008
+ '(beforeinput)': 'onBeforeInput($event)',
1009
+ '(keydown)': 'onKeyDown($event)',
1010
+ '(blur)': 'onBlur($event)',
1011
+ },
1012
+ }]
1013
+ }], ctorParameters: () => [], propDecorators: { currency: [{ type: i0.Input, args: [{ isSignal: true, alias: "currency", required: false }] }], currencyDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencyDisplay", required: false }] }], fractionDigits: [{ type: i0.Input, args: [{ isSignal: true, alias: "fractionDigits", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], entry: [{ type: i0.Input, args: [{ isSignal: true, alias: "entry", required: false }] }], formatOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatOn", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], largeStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "largeStep", required: false }] }], smallStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "smallStep", required: false }] }], stepFrom: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepFrom", required: false }] }], clamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "clamp", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], wheel: [{ type: i0.Input, args: [{ isSignal: true, alias: "wheel", required: false }] }], allowEmpty: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowEmpty", 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 }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
1014
+
1015
+ /**
1016
+ * An adornment before the amount in the reading direction: a currency mark, a
1017
+ * period, an icon. Named for the direction rather than for a side, so the same
1018
+ * markup puts the mark before the amount in both directions.
1019
+ *
1020
+ * It is a sibling of the number rather than part of it. A symbol that belongs
1021
+ * *inside* the amount is what `currency` and `currencyDisplay` write, and it is
1022
+ * selected, copied and parsed with the amount; this one is none of those
1023
+ * things.
1024
+ */
1025
+ class SlCurrencyFieldStart {
1026
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldStart, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1027
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCurrencyFieldStart, isStandalone: true, selector: "[slCurrencyFieldStart]", host: { attributes: { "data-part": "start" } }, exportAs: ["slCurrencyFieldStart"], ngImport: i0 });
1028
+ }
1029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldStart, decorators: [{
1030
+ type: Directive,
1031
+ args: [{
1032
+ selector: '[slCurrencyFieldStart]',
1033
+ standalone: true,
1034
+ exportAs: 'slCurrencyFieldStart',
1035
+ host: { 'data-part': 'start' },
1036
+ }]
1037
+ }] });
1038
+ /** An adornment after the amount in the reading direction. */
1039
+ class SlCurrencyFieldEnd {
1040
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldEnd, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1041
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCurrencyFieldEnd, isStandalone: true, selector: "[slCurrencyFieldEnd]", host: { attributes: { "data-part": "end" } }, exportAs: ["slCurrencyFieldEnd"], ngImport: i0 });
1042
+ }
1043
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldEnd, decorators: [{
1044
+ type: Directive,
1045
+ args: [{
1046
+ selector: '[slCurrencyFieldEnd]',
1047
+ standalone: true,
1048
+ exportAs: 'slCurrencyFieldEnd',
1049
+ host: { 'data-part': 'end' },
1050
+ }]
1051
+ }] });
1052
+ /**
1053
+ * A mark that moves the amount when it is dragged sideways — the design
1054
+ * tools' gesture, shared with `slNumberFieldScrub`. Placed inside
1055
+ * `slCurrencyFieldStart` or `slCurrencyFieldEnd`, where the frame it belongs
1056
+ * to is its ancestor; the currency symbol, with `currencyDisplay="none"` on
1057
+ * the control, is the natural mark:
1058
+ *
1059
+ * ```html
1060
+ * <span slCurrencyFieldStart><span slCurrencyFieldScrub>R$</span></span>
1061
+ * ```
1062
+ *
1063
+ * Each `sensitivity` pixels towards the inline end is one step up; `Shift`
1064
+ * moves by the large step and `Alt` by the small one, as on the keyboard. It
1065
+ * is hidden from assistive technology and takes no focus: the input's arrow
1066
+ * keys are the same movement.
1067
+ */
1068
+ class SlCurrencyFieldScrub {
1069
+ /** Pixels of horizontal travel per step. Defaults to 2. */
1070
+ sensitivity = input(SCRUB_SENSITIVITY, /* @ts-ignore */
1071
+ ...(ngDevMode ? [{ debugName: "sensitivity" }] : /* istanbul ignore next */ []));
1072
+ frame = inject(SlCurrencyField);
1073
+ active = signal(false, /* @ts-ignore */
1074
+ ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
1075
+ travel = null;
1076
+ begin(event) {
1077
+ const control = this.frame.control();
1078
+ if (event.button !== 0 || control === undefined || this.frame.inert())
1079
+ return;
1080
+ /* No text selection, and the caret stays in the amount the drag moves. */
1081
+ event.preventDefault();
1082
+ control.inputElement.focus();
1083
+ event.currentTarget?.setPointerCapture?.(event.pointerId);
1084
+ this.travel = createScrub({
1085
+ clientX: event.clientX,
1086
+ sensitivity: this.sensitivity(),
1087
+ rtl: getComputedStyle(control.inputElement).direction === 'rtl',
1088
+ });
1089
+ this.active.set(true);
1090
+ this.frame.scrubbing.set(true);
1091
+ }
1092
+ drag(event) {
1093
+ if (this.travel === null)
1094
+ return;
1095
+ this.frame.control()?.scrubBy(this.travel.steps(event.clientX), event);
1096
+ }
1097
+ end() {
1098
+ if (this.travel === null)
1099
+ return;
1100
+ this.travel = null;
1101
+ this.active.set(false);
1102
+ this.frame.scrubbing.set(false);
1103
+ }
1104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldScrub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1105
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlCurrencyFieldScrub, isStandalone: true, selector: "[slCurrencyFieldScrub]", inputs: { sensitivity: { classPropertyName: "sensitivity", publicName: "sensitivity", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "scrub", "aria-hidden": "true" }, listeners: { "pointerdown": "begin($event)", "pointermove": "drag($event)", "pointerup": "end()", "pointercancel": "end()", "lostpointercapture": "end()" }, properties: { "attr.data-scrubbing": "active() ? '' : null" } }, exportAs: ["slCurrencyFieldScrub"], ngImport: i0 });
1106
+ }
1107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCurrencyFieldScrub, decorators: [{
1108
+ type: Directive,
1109
+ args: [{
1110
+ selector: '[slCurrencyFieldScrub]',
1111
+ standalone: true,
1112
+ exportAs: 'slCurrencyFieldScrub',
1113
+ host: {
1114
+ 'data-part': 'scrub',
1115
+ 'aria-hidden': 'true',
1116
+ '[attr.data-scrubbing]': "active() ? '' : null",
1117
+ '(pointerdown)': 'begin($event)',
1118
+ '(pointermove)': 'drag($event)',
1119
+ '(pointerup)': 'end()',
1120
+ '(pointercancel)': 'end()',
1121
+ '(lostpointercapture)': 'end()',
1122
+ },
1123
+ }]
1124
+ }], propDecorators: { sensitivity: [{ type: i0.Input, args: [{ isSignal: true, alias: "sensitivity", required: false }] }] } });
1125
+
1126
+ /**
1127
+ * Generated bundle index. Do not edit.
1128
+ */
1129
+
1130
+ export { CURRENCY_FIELD_DEFAULTS, SlCurrencyField, SlCurrencyFieldControl, SlCurrencyFieldEnd, SlCurrencyFieldInput, SlCurrencyFieldScrub, SlCurrencyFieldStart, injectCurrencyFieldDefaults, provideCurrencyFieldDefaults };
1131
+ //# sourceMappingURL=slotted-angular-currency-field.mjs.map