scb-wc 0.1.2 → 0.1.4

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 (339) hide show
  1. package/README.md +194 -164
  2. package/all.js +91 -5
  3. package/blazor/CustomEvents.cs +83 -0
  4. package/blazor/ScbBlazorInteropBase.cs +4460 -1663
  5. package/blazor/scb-blazor-bridge.js +6827 -2517
  6. package/blazor/wrappers/ScbAccordion.razor +50 -0
  7. package/blazor/wrappers/ScbAppBar.razor +95 -0
  8. package/blazor/wrappers/ScbBreadcrumb.razor +59 -0
  9. package/blazor/wrappers/ScbCalendar.razor +100 -0
  10. package/blazor/wrappers/ScbCalendarCard.razor +189 -0
  11. package/blazor/wrappers/ScbCheckbox.razor +92 -0
  12. package/blazor/wrappers/ScbCollapse.razor +76 -0
  13. package/blazor/wrappers/ScbCookiesConsent.razor +106 -0
  14. package/blazor/wrappers/ScbDatepicker.razor +77 -0
  15. package/blazor/wrappers/ScbDialog.razor +72 -0
  16. package/blazor/wrappers/ScbDrawer.razor +64 -0
  17. package/blazor/wrappers/ScbDropZone.razor +168 -0
  18. package/blazor/wrappers/ScbDropdown.razor +76 -0
  19. package/blazor/wrappers/ScbHorizontalScroller.razor +137 -0
  20. package/blazor/wrappers/ScbList.razor +77 -0
  21. package/blazor/wrappers/ScbMenu.razor +71 -0
  22. package/blazor/wrappers/ScbNav.razor +92 -0
  23. package/blazor/wrappers/ScbNotificationCard.razor +122 -0
  24. package/blazor/wrappers/ScbOptionsMenu.razor +88 -0
  25. package/blazor/wrappers/ScbPagination.razor +80 -0
  26. package/blazor/wrappers/ScbRadioGroup.razor +94 -0
  27. package/blazor/wrappers/ScbSearch.razor +83 -0
  28. package/blazor/wrappers/ScbSegmentedButton.razor +85 -0
  29. package/blazor/wrappers/ScbSelect.razor +79 -0
  30. package/blazor/wrappers/ScbSlider.razor +96 -0
  31. package/blazor/wrappers/ScbSnackbar.razor +93 -0
  32. package/blazor/wrappers/ScbSwitch.razor +92 -0
  33. package/blazor/wrappers/ScbTable.razor +67 -0
  34. package/blazor/wrappers/ScbTableAdvanced.razor +78 -0
  35. package/blazor/wrappers/ScbTabs.razor +55 -0
  36. package/blazor/wrappers/ScbTextfield.razor +104 -0
  37. package/blazor/wrappers/ScbTooltip.razor +88 -0
  38. package/blazor/wrappers/ScbViz.razor +142 -0
  39. package/demo-data-preview.svg +12 -0
  40. package/dummy.png +0 -0
  41. package/fonts/inter/files/inter-latin-wght-italic.woff2 +0 -0
  42. package/fonts/inter/files/inter-latin-wght-normal.woff2 +0 -0
  43. package/fonts/material-symbols-outlined/files/material-symbols-outlined-latin-wght-normal.woff2 +0 -0
  44. package/index.js +91 -1
  45. package/mvc/components/all.js +90 -1
  46. package/mvc/components/scb-accordion/scb-accordion-item.js +211 -0
  47. package/mvc/components/scb-accordion/scb-accordion.js +44 -0
  48. package/mvc/components/scb-app-bar/scb-app-bar.js +166 -0
  49. package/mvc/components/scb-avatar/scb-avatar.js +111 -0
  50. package/mvc/components/scb-badge/scb-badge.js +80 -0
  51. package/mvc/components/scb-breadcrumb/scb-breadcrumb-item.js +14 -0
  52. package/mvc/components/scb-breadcrumb/scb-breadcrumb.js +96 -0
  53. package/mvc/components/scb-button/scb-button.js +268 -0
  54. package/mvc/components/scb-calendar/scb-calendar-event.js +6 -0
  55. package/mvc/components/scb-calendar/scb-calendar.js +168 -0
  56. package/mvc/components/scb-calendar-card/scb-calendar-card.js +346 -0
  57. package/mvc/components/scb-card/scb-card.js +761 -0
  58. package/mvc/components/scb-checkbox/scb-checkbox-group.js +33 -0
  59. package/mvc/components/scb-checkbox/scb-checkbox.js +140 -0
  60. package/mvc/components/scb-chevron/scb-chevron.js +121 -0
  61. package/mvc/components/scb-chip/scb-chip.js +66 -0
  62. package/mvc/components/scb-collapse/scb-collapse.js +89 -0
  63. package/mvc/components/scb-cookies-consent/scb-cookies-consent.js +78 -0
  64. package/mvc/components/scb-datepicker/scb-datepicker.js +296 -0
  65. package/mvc/components/scb-dialog/scb-dialog.js +265 -0
  66. package/mvc/components/scb-divider/scb-divider.js +69 -0
  67. package/mvc/components/scb-drawer/scb-drawer.js +128 -0
  68. package/mvc/components/scb-drop-zone/scb-drop-zone.js +555 -0
  69. package/mvc/components/scb-dropdown/scb-dropdown.js +306 -0
  70. package/mvc/components/scb-fab/scb-fab.js +108 -0
  71. package/mvc/components/scb-fact-card/scb-fact-card-content.js +46 -0
  72. package/mvc/components/scb-fact-card/scb-fact-card.js +226 -0
  73. package/mvc/components/scb-footer/scb-footer-section.js +3 -0
  74. package/mvc/components/scb-footer/scb-footer.js +210 -0
  75. package/mvc/components/scb-gallery-grid/scb-gallery-grid.js +131 -0
  76. package/mvc/components/scb-grid/scb-grid-item.js +11 -0
  77. package/mvc/components/scb-grid/scb-grid.js +98 -0
  78. package/mvc/components/scb-grid/scb-stack.js +33 -0
  79. package/mvc/components/scb-header/scb-header-menu-group.js +1 -0
  80. package/mvc/components/scb-header/scb-header-menu-item.js +5 -0
  81. package/mvc/components/scb-header/scb-header-tab.js +5 -0
  82. package/mvc/components/scb-header/scb-header-utility.js +1 -0
  83. package/mvc/components/scb-header/scb-header.js +681 -0
  84. package/mvc/components/scb-horizontal-scroller/scb-horizontal-scroller.js +196 -0
  85. package/mvc/components/scb-icon-button/scb-icon-button.js +171 -0
  86. package/mvc/components/scb-keyfigure-card/scb-keyfigure-card.js +212 -0
  87. package/mvc/components/scb-link/scb-link.js +61 -0
  88. package/mvc/components/scb-list/scb-list-item.js +153 -0
  89. package/mvc/components/scb-list/scb-list.js +26 -0
  90. package/mvc/components/scb-menu/scb-menu-item.js +205 -0
  91. package/mvc/components/scb-menu/scb-menu-section.js +42 -0
  92. package/mvc/components/scb-menu/scb-menu.js +81 -0
  93. package/mvc/components/scb-menu/scb-sub-menu.js +10 -0
  94. package/mvc/components/scb-nav/scb-nav-item.js +28 -0
  95. package/mvc/components/scb-nav/scb-nav.js +104 -0
  96. package/mvc/components/scb-notification-card/scb-notification-card.js +358 -0
  97. package/mvc/components/scb-options-menu/scb-options-menu-item.js +66 -0
  98. package/mvc/components/scb-options-menu/scb-options-menu.js +88 -0
  99. package/mvc/components/scb-options-menu/scb-options-sub-menu.js +34 -0
  100. package/mvc/components/scb-overlay/scb-overlay.js +49 -0
  101. package/mvc/components/scb-pagination/scb-pagination.js +312 -0
  102. package/mvc/components/scb-progress-indicator/scb-progress-indicator.js +87 -0
  103. package/mvc/components/scb-progress-stepper/scb-progress-step.js +147 -0
  104. package/mvc/components/scb-progress-stepper/scb-progress-stepper.js +62 -0
  105. package/mvc/components/scb-radio-button/scb-radio-button.js +132 -0
  106. package/mvc/components/scb-radio-button/scb-radio-group.js +43 -0
  107. package/mvc/components/scb-scrollspy/scb-scrollspy.js +79 -0
  108. package/mvc/components/scb-search/scb-search.js +292 -0
  109. package/mvc/components/scb-segmented-button/scb-segmented-button.js +32 -0
  110. package/mvc/components/scb-segmented-button/scb-segmented-item.js +74 -0
  111. package/mvc/components/scb-select/scb-select-option.js +61 -0
  112. package/mvc/components/scb-select/scb-select.js +284 -0
  113. package/mvc/components/scb-skeleton/scb-skeleton.js +38 -0
  114. package/mvc/components/scb-slider/scb-slider.js +27 -0
  115. package/mvc/components/scb-snackbar/scb-snackbar.js +128 -0
  116. package/mvc/components/scb-status-pill/scb-status-pill.js +45 -0
  117. package/mvc/components/scb-stepper/scb-step.js +239 -0
  118. package/mvc/components/scb-stepper/scb-stepper.js +139 -0
  119. package/mvc/components/scb-switch/scb-switch.js +59 -0
  120. package/mvc/components/scb-table/scb-table.js +51 -0
  121. package/mvc/components/scb-table-advanced/scb-table-advanced.js +76 -0
  122. package/mvc/components/scb-tabs/scb-primary-tab.js +6 -0
  123. package/mvc/components/scb-tabs/scb-secondary-tab.js +6 -0
  124. package/mvc/components/scb-tabs/scb-tabs.js +28 -0
  125. package/mvc/components/scb-textfield/scb-textfield.js +595 -0
  126. package/mvc/components/scb-toc/scb-toc-item.js +303 -0
  127. package/mvc/components/scb-toc/scb-toc.js +19 -0
  128. package/mvc/components/scb-tooltip/scb-tooltip.js +196 -0
  129. package/mvc/components/scb-vignette/scb-vignette.js +37 -0
  130. package/mvc/components/scb-viz/scb-viz-actions-runtime.js +2 -0
  131. package/mvc/components/scb-viz/scb-viz-print-runtime.js +98 -0
  132. package/mvc/components/scb-viz/scb-viz-series-differentiation-registry.js +1 -0
  133. package/mvc/components/scb-viz/scb-viz-series-differentiation-runtime.js +1 -0
  134. package/mvc/components/scb-viz/scb-viz-table-runtime.js +1 -0
  135. package/mvc/components/scb-viz/scb-viz.js +1140 -0
  136. package/mvc/fonts/inter/files/inter-latin-wght-italic.woff2 +0 -0
  137. package/mvc/fonts/inter/files/inter-latin-wght-normal.woff2 +0 -0
  138. package/mvc/fonts/material-symbols-outlined/files/material-symbols-outlined-latin-wght-normal.woff2 +0 -0
  139. package/mvc/scb-blazor-bridge.js +6827 -2517
  140. package/mvc/scb-logo.svg +20 -20
  141. package/mvc/scb-typography.css +1 -1
  142. package/mvc/scb-wc.css +3 -2
  143. package/mvc/scb.svg +13 -13
  144. package/mvc/vendor/assertClassBrand.js +1 -0
  145. package/mvc/vendor/classPrivateFieldGet2.js +1 -0
  146. package/mvc/vendor/decorate.js +1 -0
  147. package/mvc/vendor/preload-helper.js +1 -0
  148. package/mvc/vendor/vendor-lit.js +1 -0
  149. package/mvc/vendor/vendor-material.js +364 -0
  150. package/mvc/vendor/vendor.js +4 -0
  151. package/package.json +420 -77
  152. package/scb-accordion/scb-accordion-item.js +340 -0
  153. package/scb-accordion/scb-accordion.js +151 -0
  154. package/scb-app-bar/scb-app-bar.js +317 -0
  155. package/scb-avatar/scb-avatar.js +197 -0
  156. package/scb-badge/scb-badge.js +165 -0
  157. package/scb-breadcrumb/scb-breadcrumb-item.js +62 -0
  158. package/scb-breadcrumb/scb-breadcrumb.js +255 -0
  159. package/scb-button/scb-button.js +398 -0
  160. package/scb-calendar/scb-calendar-event.js +48 -0
  161. package/scb-calendar/scb-calendar.js +700 -0
  162. package/scb-calendar-card/scb-calendar-card.js +505 -0
  163. package/scb-card/scb-card.js +1231 -0
  164. package/scb-checkbox/scb-checkbox-group.js +104 -0
  165. package/scb-checkbox/scb-checkbox.js +316 -0
  166. package/scb-chevron/scb-chevron.js +144 -0
  167. package/scb-chip/scb-chip.js +234 -0
  168. package/scb-collapse/scb-collapse.js +231 -0
  169. package/scb-cookies-consent/scb-cookies-consent.js +164 -0
  170. package/scb-datepicker/scb-datepicker.js +470 -0
  171. package/scb-dialog/scb-dialog.js +574 -0
  172. package/scb-divider/scb-divider.js +119 -0
  173. package/scb-drawer/scb-drawer.js +297 -0
  174. package/scb-drop-zone/scb-drop-zone.js +965 -0
  175. package/scb-dropdown/scb-dropdown.js +598 -0
  176. package/scb-fab/scb-fab.js +190 -0
  177. package/scb-fact-card/scb-fact-card-content.js +82 -0
  178. package/scb-fact-card/scb-fact-card.js +376 -0
  179. package/scb-footer/scb-footer-section.js +23 -0
  180. package/scb-footer/scb-footer.js +343 -0
  181. package/scb-gallery-grid/scb-gallery-grid.js +242 -0
  182. package/scb-grid/scb-grid-item.js +81 -0
  183. package/scb-grid/scb-grid.js +200 -0
  184. package/scb-grid/scb-stack.js +120 -0
  185. package/scb-header/scb-header-menu-group.js +21 -0
  186. package/scb-header/scb-header-menu-item.js +22 -0
  187. package/scb-header/scb-header-tab.js +25 -0
  188. package/scb-header/scb-header-utility.js +27 -0
  189. package/scb-header/scb-header.js +1358 -0
  190. package/scb-horizontal-scroller/scb-horizontal-scroller.js +353 -0
  191. package/scb-icon-button/scb-icon-button.js +335 -0
  192. package/scb-keyfigure-card/scb-keyfigure-card.js +340 -0
  193. package/scb-link/scb-link.js +136 -0
  194. package/scb-list/scb-list-item.js +297 -0
  195. package/scb-list/scb-list.js +119 -0
  196. package/scb-menu/scb-menu-item.js +330 -0
  197. package/scb-menu/scb-menu-section.js +60 -0
  198. package/scb-menu/scb-menu.js +154 -0
  199. package/scb-menu/scb-sub-menu.js +36 -0
  200. package/scb-nav/scb-nav-item.js +96 -0
  201. package/scb-nav/scb-nav.js +263 -0
  202. package/scb-notification-card/scb-notification-card.js +479 -0
  203. package/scb-options-menu/scb-options-menu-item.js +218 -0
  204. package/scb-options-menu/scb-options-menu.js +237 -0
  205. package/scb-options-menu/scb-options-sub-menu.js +69 -0
  206. package/scb-overlay/scb-overlay.js +144 -0
  207. package/scb-pagination/scb-pagination.js +438 -0
  208. package/scb-progress-indicator/scb-progress-indicator.js +199 -0
  209. package/scb-progress-stepper/scb-progress-step.js +213 -0
  210. package/scb-progress-stepper/scb-progress-stepper.js +132 -0
  211. package/scb-radio-button/scb-radio-button.js +249 -0
  212. package/scb-radio-button/scb-radio-group.js +216 -0
  213. package/scb-scrollspy/scb-scrollspy.js +670 -0
  214. package/scb-search/scb-search.js +643 -0
  215. package/scb-segmented-button/scb-segmented-button.js +215 -0
  216. package/scb-segmented-button/scb-segmented-item.js +133 -0
  217. package/scb-select/scb-select-option.js +88 -0
  218. package/scb-select/scb-select.js +517 -0
  219. package/scb-skeleton/scb-skeleton.js +92 -0
  220. package/scb-slider/scb-slider.js +98 -0
  221. package/scb-snackbar/scb-snackbar.js +223 -0
  222. package/scb-status-pill/scb-status-pill.js +100 -0
  223. package/scb-stepper/scb-step.js +311 -0
  224. package/scb-stepper/scb-stepper.js +325 -0
  225. package/scb-switch/scb-switch.js +182 -0
  226. package/scb-table/scb-table.js +202 -0
  227. package/scb-table-advanced/scb-table-advanced.js +327 -0
  228. package/scb-tabs/scb-primary-tab.js +68 -0
  229. package/scb-tabs/scb-secondary-tab.js +68 -0
  230. package/scb-tabs/scb-tabs.js +100 -0
  231. package/scb-test-components/index.d.ts +90 -0
  232. package/scb-test-components/scb-accordion/scb-accordion-item.d.ts +39 -0
  233. package/scb-test-components/scb-accordion/scb-accordion.d.ts +27 -0
  234. package/scb-test-components/scb-app-bar/scb-app-bar.d.ts +25 -0
  235. package/scb-test-components/scb-avatar/scb-avatar.d.ts +37 -0
  236. package/scb-test-components/scb-badge/scb-badge.d.ts +28 -0
  237. package/scb-test-components/scb-breadcrumb/scb-breadcrumb-item.d.ts +15 -0
  238. package/scb-test-components/scb-breadcrumb/scb-breadcrumb.d.ts +27 -0
  239. package/scb-test-components/scb-button/scb-button.d.ts +40 -0
  240. package/scb-test-components/scb-calendar/scb-calendar-event.d.ts +15 -0
  241. package/scb-test-components/scb-calendar/scb-calendar.d.ts +77 -0
  242. package/scb-test-components/scb-calendar-card/scb-calendar-card.d.ts +45 -0
  243. package/scb-test-components/scb-card/scb-card.d.ts +101 -0
  244. package/scb-test-components/scb-checkbox/scb-checkbox-group.d.ts +23 -0
  245. package/scb-test-components/scb-checkbox/scb-checkbox.d.ts +52 -0
  246. package/scb-test-components/scb-chevron/scb-chevron.d.ts +13 -0
  247. package/scb-test-components/scb-chip/scb-chip.d.ts +61 -0
  248. package/scb-test-components/scb-collapse/scb-collapse.d.ts +29 -0
  249. package/scb-test-components/scb-cookies-consent/scb-cookies-consent.d.ts +23 -0
  250. package/scb-test-components/scb-datepicker/scb-datepicker.d.ts +39 -0
  251. package/scb-test-components/scb-dialog/scb-dialog.d.ts +72 -0
  252. package/scb-test-components/scb-divider/scb-divider.d.ts +34 -0
  253. package/scb-test-components/scb-drawer/scb-drawer.d.ts +72 -0
  254. package/scb-test-components/scb-drop-zone/scb-drop-zone.d.ts +143 -0
  255. package/scb-test-components/scb-dropdown/scb-dropdown.d.ts +70 -0
  256. package/scb-test-components/scb-fab/scb-fab.d.ts +42 -0
  257. package/scb-test-components/scb-fact-card/scb-fact-card-content.d.ts +15 -0
  258. package/scb-test-components/scb-fact-card/scb-fact-card.d.ts +49 -0
  259. package/scb-test-components/scb-footer/scb-footer-section.d.ts +20 -0
  260. package/scb-test-components/scb-footer/scb-footer.d.ts +31 -0
  261. package/scb-test-components/scb-gallery-grid/scb-gallery-grid.d.ts +20 -0
  262. package/scb-test-components/scb-grid/scb-grid-item.d.ts +32 -0
  263. package/scb-test-components/scb-grid/scb-grid.d.ts +36 -0
  264. package/scb-test-components/scb-grid/scb-stack.d.ts +32 -0
  265. package/scb-test-components/scb-header/scb-header-menu-group.d.ts +12 -0
  266. package/scb-test-components/scb-header/scb-header-menu-item.d.ts +13 -0
  267. package/scb-test-components/scb-header/scb-header-tab.d.ts +13 -0
  268. package/scb-test-components/scb-header/scb-header-utility.d.ts +14 -0
  269. package/scb-test-components/scb-header/scb-header.d.ts +132 -0
  270. package/scb-test-components/scb-horizontal-scroller/scb-horizontal-scroller.d.ts +47 -0
  271. package/scb-test-components/scb-icon-button/scb-icon-button.d.ts +76 -0
  272. package/scb-test-components/scb-keyfigure-card/scb-keyfigure-card.d.ts +46 -0
  273. package/scb-test-components/scb-link/scb-link.d.ts +25 -0
  274. package/scb-test-components/scb-list/scb-list-item.d.ts +38 -0
  275. package/scb-test-components/scb-list/scb-list.d.ts +26 -0
  276. package/scb-test-components/scb-menu/scb-menu-item.d.ts +52 -0
  277. package/scb-test-components/scb-menu/scb-menu-section.d.ts +11 -0
  278. package/scb-test-components/scb-menu/scb-menu.d.ts +25 -0
  279. package/scb-test-components/scb-menu/scb-sub-menu.d.ts +14 -0
  280. package/scb-test-components/scb-nav/scb-nav-item.d.ts +20 -0
  281. package/scb-test-components/scb-nav/scb-nav.d.ts +50 -0
  282. package/scb-test-components/scb-notification-card/scb-notification-card.d.ts +46 -0
  283. package/scb-test-components/scb-options-menu/scb-options-menu-item.d.ts +29 -0
  284. package/scb-test-components/scb-options-menu/scb-options-menu.d.ts +35 -0
  285. package/scb-test-components/scb-options-menu/scb-options-sub-menu.d.ts +11 -0
  286. package/scb-test-components/scb-overlay/scb-overlay.d.ts +24 -0
  287. package/scb-test-components/scb-pagination/scb-pagination.d.ts +36 -0
  288. package/scb-test-components/scb-progress-indicator/scb-progress-indicator.d.ts +28 -0
  289. package/scb-test-components/scb-progress-stepper/scb-progress-step.d.ts +21 -0
  290. package/scb-test-components/scb-progress-stepper/scb-progress-stepper.d.ts +22 -0
  291. package/scb-test-components/scb-radio-button/scb-radio-button.d.ts +26 -0
  292. package/scb-test-components/scb-radio-button/scb-radio-group.d.ts +49 -0
  293. package/scb-test-components/scb-scrollspy/scb-scrollspy.d.ts +217 -0
  294. package/scb-test-components/scb-search/scb-search.d.ts +96 -0
  295. package/scb-test-components/scb-segmented-button/scb-segmented-button.d.ts +80 -0
  296. package/scb-test-components/scb-segmented-button/scb-segmented-item.d.ts +21 -0
  297. package/scb-test-components/scb-select/scb-select-option.d.ts +16 -0
  298. package/scb-test-components/scb-select/scb-select.d.ts +62 -0
  299. package/scb-test-components/scb-skeleton/scb-skeleton.d.ts +25 -0
  300. package/scb-test-components/scb-slider/scb-slider.d.ts +28 -0
  301. package/scb-test-components/scb-snackbar/scb-snackbar.d.ts +24 -0
  302. package/scb-test-components/scb-status-pill/scb-status-pill.d.ts +22 -0
  303. package/scb-test-components/scb-stepper/scb-step.d.ts +22 -0
  304. package/scb-test-components/scb-stepper/scb-stepper.d.ts +47 -0
  305. package/scb-test-components/scb-switch/scb-switch.d.ts +52 -0
  306. package/scb-test-components/scb-table/scb-table.d.ts +24 -0
  307. package/scb-test-components/scb-table-advanced/scb-table-advanced.d.ts +39 -0
  308. package/scb-test-components/scb-tabs/scb-primary-tab.d.ts +15 -0
  309. package/scb-test-components/scb-tabs/scb-secondary-tab.d.ts +15 -0
  310. package/scb-test-components/scb-tabs/scb-tabs.d.ts +21 -0
  311. package/scb-test-components/scb-textfield/scb-textfield.d.ts +75 -0
  312. package/scb-test-components/scb-toc/scb-toc-item.d.ts +38 -0
  313. package/scb-test-components/scb-toc/scb-toc.d.ts +27 -0
  314. package/scb-test-components/scb-tooltip/scb-tooltip.d.ts +51 -0
  315. package/scb-test-components/scb-vignette/scb-vignette.d.ts +20 -0
  316. package/scb-test-components/scb-viz/scb-viz-actions-runtime.d.ts +26 -0
  317. package/scb-test-components/scb-viz/scb-viz-print-runtime.d.ts +27 -0
  318. package/scb-test-components/scb-viz/scb-viz-series-differentiation-registry.d.ts +21 -0
  319. package/scb-test-components/scb-viz/scb-viz-series-differentiation-runtime.d.ts +42 -0
  320. package/scb-test-components/scb-viz/scb-viz-table-runtime.d.ts +28 -0
  321. package/scb-test-components/scb-viz/scb-viz.d.ts +207 -0
  322. package/scb-textfield/scb-textfield.js +827 -0
  323. package/scb-toc/scb-toc-item.js +477 -0
  324. package/scb-toc/scb-toc.js +101 -0
  325. package/scb-tooltip/scb-tooltip.js +402 -0
  326. package/scb-typography.css +1 -1
  327. package/scb-vignette/scb-vignette.js +88 -0
  328. package/scb-viz/scb-viz-actions-runtime.js +143 -0
  329. package/scb-viz/scb-viz-print-runtime.js +121 -0
  330. package/scb-viz/scb-viz-series-differentiation-registry.js +117 -0
  331. package/scb-viz/scb-viz-series-differentiation-runtime.js +126 -0
  332. package/scb-viz/scb-viz-table-runtime.js +86 -0
  333. package/scb-viz/scb-viz.js +2195 -0
  334. package/scb-wc-selfhost.css +29 -0
  335. package/scb-wc.bundle.js +12893 -1099
  336. package/scb-wc.css +3 -2
  337. package/scb-wc.d.ts +180 -0
  338. package/index.d.ts +0 -0
  339. package/mvc/components/index.js +0 -1
@@ -0,0 +1,827 @@
1
+ import { __decorate as e } from "../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
2
+ import "../scb-icon-button/scb-icon-button.js";
3
+ import "../scb-datepicker/scb-datepicker.js";
4
+ import { LitElement as t, css as n, html as r } from "lit";
5
+ import { customElement as i, property as a, state as o } from "lit/decorators.js";
6
+ import "@material/web/focus/md-focus-ring.js";
7
+ import "@material/web/icon/icon.js";
8
+ import "@material/web/ripple/ripple.js";
9
+ //#region src/scb-test-components/scb-textfield/scb-textfield.ts
10
+ var s = class extends t {
11
+ static {
12
+ this.formAssociated = !0;
13
+ }
14
+ constructor() {
15
+ super(), this._internals = null, this._inputFocused = !1, this._kbShouldShowRing = !1, this._onGlobalKeydown = (e) => {
16
+ e.key === "Tab" && (this._kbShouldShowRing = !0, this._inputFocused && this.#o());
17
+ }, this._onGlobalPointerDown = () => {
18
+ this._kbShouldShowRing = !1, this._inputFocused && this.#o();
19
+ }, this._hasRenderedOnce = !1, this._boundField = null, this._onFieldInput = () => {
20
+ let e = this._boundField;
21
+ if (!e) return;
22
+ let t = e;
23
+ if (this.value = t.value, this._internals) {
24
+ let e = this.disabled ? null : this.value;
25
+ this._internals.setFormValue(e);
26
+ }
27
+ this.#n(), this.dispatchEvent(new Event("input", {
28
+ bubbles: !0,
29
+ composed: !0
30
+ })), this.dispatchEvent(new CustomEvent("onValueChanged", {
31
+ detail: { value: this.value },
32
+ bubbles: !0,
33
+ composed: !0
34
+ }));
35
+ }, this._onFieldChange = () => {
36
+ this.dispatchEvent(new Event("change", {
37
+ bubbles: !0,
38
+ composed: !0
39
+ }));
40
+ }, this._onFieldSelect = () => {
41
+ this.dispatchEvent(new Event("select", {
42
+ bubbles: !0,
43
+ composed: !0
44
+ }));
45
+ }, this._onFieldFocus = () => {
46
+ this._inputFocused = !0, this.#o();
47
+ }, this._onFieldBlur = () => {
48
+ this._inputFocused = !1, this.#o();
49
+ }, this.type = "text", this.label = "", this.supportingText = "", this.errorText = "", this.leadingIcon = "", this.name = "", this.pattern = "", this.value = "", this.underLabel = "", this.error = !1, this.disabled = !1, this.required = !1, this.size = "large", this.spacing = void 0, this.spacingTop = void 0, this.spacingBottom = void 0, this.spacingLeft = void 0, this.spacingRight = void 0, this._form = null, this._formSubmitHandler = null, this._formResetHandler = null, this._initialValue = "", this._inputId = "", this._showDatepicker = !1, this._toggleDatepicker = () => {
50
+ this._showDatepicker = !this._showDatepicker;
51
+ }, this._onDateSelected = (e) => {
52
+ if (this.value = e.detail.value, this._showDatepicker = !1, this._internals) {
53
+ let e = this.disabled ? null : this.value;
54
+ this._internals.setFormValue(e);
55
+ }
56
+ this.#n(), this.dispatchEvent(new Event("input", {
57
+ bubbles: !0,
58
+ composed: !0
59
+ })), this.dispatchEvent(new CustomEvent("onValueChanged", {
60
+ detail: { value: this.value },
61
+ bubbles: !0,
62
+ composed: !0
63
+ }));
64
+ }, "attachInternals" in this && (this._internals = this.attachInternals());
65
+ }
66
+ static {
67
+ this.styles = [n`
68
+ :host {
69
+ --scb-textfield-number-max-width: 280px;
70
+ --scb-textfield-text-max-width: 400px;
71
+ --scb-textfield-search-max-width: 600px;
72
+ --scb-textfield-email-max-width: 400px;
73
+ --scb-textfield-password-max-width: 400px;
74
+ --scb-textfield-tel-max-width: 400px;
75
+ --scb-textfield-url-max-width: 400px;
76
+ --scb-textfield-textarea-max-width: 600px;
77
+ font-family: var(--brand-font);
78
+ color: var(--md-sys-color-on-surface);
79
+
80
+ /* Avstånd till omgivande innehåll styrs av spacing-attributen via CSS-variabler */
81
+ margin-block-start: var(--scb-textfield-spacing-block-start, 0);
82
+ margin-block-end: var(--scb-textfield-spacing-block-end, 0);
83
+
84
+ margin-inline-start: var(--scb-textfield-spacing-inline-start, 0);
85
+ margin-inline-end: var(--scb-textfield-spacing-inline-end, 0);
86
+ -webkit-tap-highlight-color: transparent;
87
+
88
+ --scb-textfield-padding-x: var(--spacing-5);
89
+ --scb-textfield-padding-y: var(--spacing-2);
90
+ --scb-textfield-min-height: 56px;
91
+
92
+ --scb-textfield-font-size: var(--md-sys-typescale-body-large-size);
93
+ --scb-textfield-line-height: var(--md-sys-typescale-body-large-line-height);
94
+
95
+ --scb-textfield-label-font-size: var(--md-sys-typescale-label-medium-size);
96
+ --scb-textfield-label-line-height: var(--md-sys-typescale-label-medium-line-height);
97
+ --scb-textfield-label-letter-spacing: var(--md-sys-typescale-label-medium-tracking);
98
+
99
+ --scb-textfield-supporting-font-size: var(--md-sys-typescale-body-medium-size);
100
+ --scb-textfield-supporting-line-height: var(--md-sys-typescale-body-medium-line-height);
101
+ --scb-textfield-supporting-letter-spacing: var(--md-sys-typescale-body-medium-tracking);
102
+ --scb-textfield-label-gap: var(--spacing-3);
103
+
104
+ --scb-textfield-leading-inset: var(--spacing-4);
105
+ --scb-textfield-leading-icon-size: var(--icon-size-medium, 24px);
106
+ --scb-textfield-leading-gap: var(--spacing-4);
107
+ --scb-textfield-leading-padding: calc(
108
+ var(--scb-textfield-leading-inset) +
109
+ var(--scb-textfield-leading-icon-size) +
110
+ var(--scb-textfield-leading-gap)
111
+ );
112
+
113
+ --scb-textfield-trailing-inset: var(--spacing-4);
114
+ --scb-textfield-trailing-icon-size: var(--icon-size-medium, 24px);
115
+ --scb-textfield-trailing-gap: var(--spacing-3);
116
+ --scb-textfield-trailing-action-size: var(--scale-11, 48px);
117
+ --scb-textfield-trailing-reserved: calc(
118
+ var(--scb-textfield-trailing-inset) +
119
+ var(--scb-textfield-trailing-action-size) +
120
+ var(--spacing-2)
121
+ );
122
+ }
123
+
124
+ :host([size='medium']) {
125
+ --scb-textfield-padding-x: var(--spacing-4);
126
+ --scb-textfield-padding-y: var(--spacing-3);
127
+ --scb-textfield-min-height: 48px;
128
+
129
+ --scb-textfield-font-size: var(--md-sys-typescale-body-medium-size);
130
+ --scb-textfield-line-height: var(--md-sys-typescale-body-medium-line-height);
131
+
132
+ --scb-textfield-label-font-size: var(--md-sys-typescale-label-small-size);
133
+ --scb-textfield-label-line-height: var(--md-sys-typescale-label-small-line-height);
134
+ --scb-textfield-label-letter-spacing: var(--md-sys-typescale-label-small-tracking);
135
+
136
+ --scb-textfield-supporting-font-size: var(--md-sys-typescale-body-small-size);
137
+ --scb-textfield-supporting-line-height: var(--md-sys-typescale-body-small-line-height);
138
+ --scb-textfield-supporting-letter-spacing: var(--md-sys-typescale-body-small-tracking);
139
+
140
+ --scb-textfield-leading-inset: var(--spacing-3);
141
+ --scb-textfield-leading-icon-size: var(--icon-size-small, 20px);
142
+ --scb-textfield-leading-gap: var(--spacing-5);
143
+
144
+ --scb-textfield-trailing-inset: var(--spacing-3);
145
+ --scb-textfield-trailing-icon-size: var(--icon-size-small, 20px);
146
+ --scb-textfield-trailing-gap: var(--spacing-3);
147
+ --scb-textfield-trailing-action-size: var(--scale-10, 40px);
148
+ }
149
+
150
+ :host([size='small']) {
151
+ --scb-textfield-padding-x: var(--spacing-4);
152
+ --scb-textfield-padding-y: var(--spacing-3);
153
+ --scb-textfield-min-height: 40px;
154
+
155
+ --scb-textfield-font-size: var(--md-sys-typescale-body-small-size);
156
+ --scb-textfield-line-height: var(--md-sys-typescale-body-small-line-height);
157
+
158
+ --scb-textfield-label-font-size: var(--md-sys-typescale-label-small-size);
159
+ --scb-textfield-label-line-height: var(--md-sys-typescale-label-small-line-height);
160
+ --scb-textfield-label-letter-spacing: var(--md-sys-typescale-label-small-tracking);
161
+
162
+ --scb-textfield-supporting-font-size: var(--md-sys-typescale-body-small-size);
163
+ --scb-textfield-supporting-line-height: var(--md-sys-typescale-body-small-line-height);
164
+ --scb-textfield-supporting-letter-spacing: var(--md-sys-typescale-body-small-tracking);
165
+
166
+ --scb-textfield-leading-inset: var(--spacing-3);
167
+ --scb-textfield-leading-icon-size: var(--icon-size-small, 20px);
168
+ --scb-textfield-leading-gap: var(--spacing-5);
169
+
170
+ --scb-textfield-trailing-inset: var(--spacing-3);
171
+ --scb-textfield-trailing-icon-size: var(--icon-size-small, 20px);
172
+ --scb-textfield-trailing-gap: var(--spacing-3);
173
+ --scb-textfield-trailing-action-size: var(--scale-09, 36px);
174
+ }
175
+
176
+ :host([size='extra-small']) {
177
+ --scb-textfield-padding-x: var(--spacing-3);
178
+ --scb-textfield-padding-y: var(--spacing-2);
179
+ --scb-textfield-min-height: 32px;
180
+
181
+ --scb-textfield-font-size: var(--md-sys-typescale-body-small-size);
182
+ --scb-textfield-line-height: var(--md-sys-typescale-body-small-line-height);
183
+
184
+ --scb-textfield-label-font-size: var(--md-sys-typescale-label-small-size);
185
+ --scb-textfield-label-line-height: var(--md-sys-typescale-label-small-line-height);
186
+ --scb-textfield-label-letter-spacing: var(--md-sys-typescale-label-small-tracking);
187
+
188
+ --scb-textfield-supporting-font-size: var(--md-sys-typescale-body-small-size);
189
+ --scb-textfield-supporting-line-height: var(--md-sys-typescale-body-small-line-height);
190
+ --scb-textfield-supporting-letter-spacing: var(--md-sys-typescale-body-small-tracking);
191
+
192
+ --scb-textfield-leading-inset: var(--spacing-3);
193
+ --scb-textfield-leading-icon-size: var(--icon-size-extra-small, 16px);
194
+ --scb-textfield-leading-gap: var(--spacing-4);
195
+
196
+ --scb-textfield-trailing-inset: var(--spacing-3);
197
+ --scb-textfield-trailing-icon-size: var(--icon-size-extra-small, 16px);
198
+ --scb-textfield-trailing-gap: var(--spacing-2);
199
+ --scb-textfield-trailing-action-size: var(--scale-08, 32px);
200
+ }
201
+
202
+ :host([type='number']) {
203
+ --scb-textfield-max-width: var(--scb-textfield-number-max-width);
204
+ }
205
+ :host([type='text']) {
206
+ --scb-textfield-max-width: var(--scb-textfield-text-max-width);
207
+ }
208
+ :host([type='date']) {
209
+ --scb-textfield-max-width: var(--scb-textfield-text-max-width);
210
+ }
211
+ :host([type='datetime-local']) {
212
+ --scb-textfield-max-width: var(--scb-textfield-text-max-width);
213
+ }
214
+ :host([type='search']) {
215
+ --scb-textfield-max-width: var(--scb-textfield-search-max-width);
216
+ }
217
+ :host([type='email']) {
218
+ --scb-textfield-max-width: var(--scb-textfield-email-max-width);
219
+ }
220
+ :host([type='password']) {
221
+ --scb-textfield-max-width: var(--scb-textfield-password-max-width);
222
+ }
223
+ :host([type='tel']) {
224
+ --scb-textfield-max-width: var(--scb-textfield-tel-max-width);
225
+ }
226
+ :host([type='url']) {
227
+ --scb-textfield-max-width: var(--scb-textfield-url-max-width);
228
+ }
229
+ :host([type='textarea']) {
230
+ --scb-textfield-max-width: var(--scb-textfield-textarea-max-width);
231
+ }
232
+ :host([type='date']) {
233
+ --scb-textfield-max-width: var(--scb-textfield-text-max-width);
234
+ }
235
+ :host([type='time']) {
236
+ --scb-textfield-max-width: var(--scb-textfield-text-max-width);
237
+ }
238
+ input[type='time']::-webkit-calendar-picker-indicator {
239
+ display: none;
240
+ background: none;
241
+ }
242
+
243
+ :host {
244
+ display: flex;
245
+ flex-direction: column;
246
+ max-width: var(--scb-textfield-max-width);
247
+ }
248
+
249
+ :host([error]) .scb-textfield-supporting-text {
250
+ color: var(--md-sys-color-error);
251
+ }
252
+ :host([error]) .scb-textfield {
253
+ border-color: var(--md-sys-color-error);
254
+ }
255
+ :host([error]) .scb-textfield:focus-visible {
256
+ border-color: var(--md-sys-color-error);
257
+ box-shadow: inset 0 0 0 2px var(--md-sys-color-error);
258
+ }
259
+
260
+ :host([disabled]) {
261
+ opacity: 0.38;
262
+ cursor: default;
263
+ }
264
+
265
+ .scb-textfield-label {
266
+ display: block;
267
+ font-size: var(--scb-textfield-label-font-size);
268
+ font-weight: var(--weight-semibold);
269
+ line-height: var(--scb-textfield-label-line-height);
270
+ letter-spacing: var(--scb-textfield-label-letter-spacing);
271
+ }
272
+
273
+ .scb-textfield-label--without-supporting {
274
+ margin-bottom: var(--scb-textfield-label-gap);
275
+ }
276
+
277
+ .scb-textfield-supporting-text {
278
+ display: block;
279
+ font-size: var(--scb-textfield-supporting-font-size);
280
+ line-height: var(--scb-textfield-supporting-line-height);
281
+ letter-spacing: var(--scb-textfield-supporting-letter-spacing);
282
+ margin-bottom: var(--scb-textfield-label-gap);
283
+ color: var(--md-sys-color-on-surface-variant);
284
+ }
285
+
286
+ .scb-textfield {
287
+ padding: var(--scb-textfield-padding-y) var(--scb-textfield-padding-x);
288
+ min-height: var(--scb-textfield-min-height);
289
+ border: 1px solid var(--md-sys-color-outline);
290
+ border-radius: var(--md-sys-shape-corner-small);
291
+ font-size: var(--scb-textfield-font-size);
292
+ font-family: var(--brand-font);
293
+ line-height: var(--scb-textfield-line-height);
294
+ width: 100%;
295
+ box-sizing: border-box;
296
+ background-color: transparent;
297
+ color: var(--md-sys-color-on-surface);
298
+ position: relative;
299
+ z-index: 1;
300
+ }
301
+
302
+ :host([type='search']) .scb-textfield {
303
+ padding-right: var(--scb-textfield-trailing-reserved);
304
+ }
305
+
306
+ :host([type='date']) .scb-textfield {
307
+ padding-right: var(--scb-textfield-trailing-reserved);
308
+ }
309
+
310
+ md-icon + .ripple-wrapper > .scb-textfield {
311
+ padding-left: var(--scb-textfield-leading-padding);
312
+ }
313
+
314
+ .scb-textfield-icon {
315
+ position: absolute;
316
+ left: var(--scb-textfield-leading-inset);
317
+ top: 50%;
318
+ transform: translateY(-50%);
319
+ pointer-events: none;
320
+ font-size: var(--scb-textfield-leading-icon-size);
321
+ z-index: 2;
322
+ }
323
+
324
+ .scb-textfield:focus-visible {
325
+ outline: none;
326
+ border-color: var(--md-sys-color-primary);
327
+ box-shadow: inset 0 0 0 2px var(--md-sys-color-primary);
328
+ border: 1px solid var(--md-sys-color-primary);
329
+ }
330
+
331
+ .scb-textfield-wrapper {
332
+ position: relative;
333
+ width: 100%;
334
+ }
335
+
336
+ /* Wrapper som bär ripple och md-focus-ring */
337
+ .ripple-wrapper {
338
+ position: relative;
339
+ width: 100%;
340
+ }
341
+
342
+ md-focus-ring.input-ring {
343
+ position: absolute;
344
+ inset: 0;
345
+ pointer-events: none;
346
+ display: none;
347
+ border-radius: var(--md-sys-shape-corner-small);
348
+ z-index: 3;
349
+ }
350
+
351
+ .ripple-wrapper[data-kb-focus='true'] md-focus-ring.input-ring {
352
+ display: block;
353
+ }
354
+
355
+ md-ripple {
356
+ border-radius: var(--md-sys-shape-corner-small);
357
+ position: absolute;
358
+ inset: 0;
359
+ z-index: 0;
360
+ pointer-events: none;
361
+ --md-ripple-hover-color: transparent;
362
+ --md-ripple-hover-opacity: 0;
363
+ }
364
+
365
+ input[type='search']::-webkit-search-cancel-button {
366
+ appearance: none;
367
+ display: none;
368
+ }
369
+
370
+ .scb-textfield-error-icon {
371
+ position: absolute;
372
+ right: var(--scb-textfield-trailing-inset);
373
+ top: 50%;
374
+ transform: translateY(-50%);
375
+ pointer-events: none;
376
+ font-size: var(--scb-textfield-trailing-icon-size);
377
+ color: var(--md-sys-color-error);
378
+ z-index: 2;
379
+ }
380
+
381
+ .scb-textfield.has-error-icon {
382
+ padding-right: calc(
383
+ var(--scb-textfield-trailing-inset) +
384
+ var(--scb-textfield-trailing-icon-size) +
385
+ var(--scb-textfield-trailing-gap)
386
+ );
387
+ }
388
+
389
+ /* Clear-knappen: samma box-storlek som error-ikon (var(--scale-06)).
390
+ Ligger längst till höger när det inte är fel.
391
+ När error=true flyttas den åt vänster så att error-ikon hamnar till höger. */
392
+ .scb-textfield-clear {
393
+ position: absolute;
394
+ right: var(--scb-textfield-trailing-inset);
395
+ top: 50%;
396
+ transform: translateY(-50%);
397
+ width: var(--scb-textfield-trailing-icon-size);
398
+ height: var(--scb-textfield-trailing-icon-size);
399
+ padding: 0;
400
+ margin: 0;
401
+ border: none;
402
+ background: none;
403
+ display: inline-flex;
404
+ align-items: center;
405
+ justify-content: center;
406
+ cursor: pointer;
407
+ color: var(--md-sys-color-on-surface);
408
+ z-index: 2;
409
+ }
410
+
411
+ :host([error]) .scb-textfield-clear {
412
+ right: calc(
413
+ var(--scb-textfield-trailing-inset) +
414
+ var(--scb-textfield-trailing-icon-size) +
415
+ var(--spacing-2)
416
+ );
417
+ }
418
+
419
+ .scb-textfield-clear:focus-visible {
420
+ outline: 2px solid var(--md-sys-color-primary);
421
+ outline-offset: 2px;
422
+ }
423
+
424
+ .scb-textfield-clear svg {
425
+ width: 100%;
426
+ height: 100%;
427
+ display: block;
428
+ }
429
+
430
+ /* Datumknappen ovanför input/ripple */
431
+ .scb-textfield-datepicker-button {
432
+ position: absolute;
433
+ right: var(--scb-textfield-trailing-inset);
434
+ top: 50%;
435
+ transform: translateY(-50%);
436
+ z-index: 4;
437
+ }
438
+ `];
439
+ }
440
+ _syncDensityForSize() {
441
+ this.size === "extra-small" ? this.setAttribute("data-density", "-5") : this.size === "small" ? this.setAttribute("data-density", "-4") : this.size === "medium" ? this.setAttribute("data-density", "-2") : this.removeAttribute("data-density");
442
+ }
443
+ render() {
444
+ let e = this.leadingIcon ? r`<md-icon class="scb-textfield-icon">${this.leadingIcon}</md-icon>` : null, t = this.error ? r`<md-icon class="scb-textfield-error-icon" aria-hidden="true">error</md-icon>` : null;
445
+ this.underLabel = this.error ? this.errorText || "Ogiltig inmatning." : this.supportingText, this.value = this.value || "";
446
+ let n = this.underLabel ? `${this._inputId}-supporting-text` : void 0, i = this.type === "search" && this.value ? r`
447
+ <button
448
+ type="button"
449
+ class="scb-textfield-clear"
450
+ @click=${this._onClearClick}
451
+ aria-label="Rensa fält"
452
+ >
453
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
454
+ <circle
455
+ cx="12"
456
+ cy="12"
457
+ r="10"
458
+ fill="none"
459
+ stroke="currentColor"
460
+ stroke-width="2"
461
+ ></circle>
462
+ <line
463
+ x1="8"
464
+ y1="8"
465
+ x2="16"
466
+ y2="16"
467
+ stroke="currentColor"
468
+ stroke-width="2"
469
+ ></line>
470
+ <line
471
+ x1="16"
472
+ y1="8"
473
+ x2="8"
474
+ y2="16"
475
+ stroke="currentColor"
476
+ stroke-width="2"
477
+ ></line>
478
+ </svg>
479
+ </button>
480
+ ` : null;
481
+ return this.type === "textarea" ? r`
482
+ <label
483
+ class="scb-textfield-label ${this.underLabel ? "" : "scb-textfield-label--without-supporting"}"
484
+ for="${this._inputId}"
485
+ >
486
+ ${this.label}
487
+ </label>
488
+ ${this.underLabel ? r`
489
+ <span class="scb-textfield-supporting-text" id="${this._inputId}-supporting-text">
490
+ ${this.underLabel}
491
+ </span>
492
+ ` : null}
493
+ <div class="scb-textfield-wrapper">
494
+ <div class="ripple-wrapper">
495
+ <textarea
496
+ class="scb-textfield"
497
+ .value=${this.value}
498
+ ?disabled=${this.disabled}
499
+ name="${this.name}"
500
+ id="${this._inputId}"
501
+ ?required=${this.required}
502
+ aria-invalid=${this.error ? "true" : "false"}
503
+ aria-describedby=${n}
504
+ ></textarea>
505
+ <md-ripple></md-ripple>
506
+ <md-focus-ring class="input-ring"></md-focus-ring>
507
+ </div>
508
+ </div>
509
+ ` : this.type === "date" ? r`
510
+ <label
511
+ class="scb-textfield-label ${this.underLabel ? "" : "scb-textfield-label--without-supporting"}"
512
+ for="${this._inputId}"
513
+ >
514
+ ${this.label}
515
+ </label>
516
+ ${this.underLabel ? r`
517
+ <span class="scb-textfield-supporting-text" id="${this._inputId}-supporting-text">
518
+ ${this.underLabel}
519
+ </span>
520
+ ` : null}
521
+ <div class="scb-textfield-wrapper">
522
+ ${e}
523
+ <div class="ripple-wrapper">
524
+ <input
525
+ class="scb-textfield${this.error ? " has-error-icon" : ""}"
526
+ .value=${this.value}
527
+ type="text"
528
+ name="${this.name}"
529
+ id="${this._inputId}"
530
+ ?disabled=${this.disabled}
531
+ ?required=${this.required}
532
+ aria-invalid=${this.error ? "true" : "false"}
533
+ aria-describedby=${n}
534
+ readonly
535
+ @focus=${this._toggleDatepicker}
536
+ @click=${this._toggleDatepicker}
537
+ />
538
+ <md-ripple></md-ripple>
539
+ <md-focus-ring class="input-ring"></md-focus-ring>
540
+ </div>
541
+ ${this.error ? t : r`
542
+ <scb-icon-button
543
+ class="scb-textfield-datepicker-button"
544
+ icon="calendar_today"
545
+ size=${this.size}
546
+ @click=${this._toggleDatepicker}
547
+ aria-label="Välj datum"
548
+ ></scb-icon-button>
549
+ `}
550
+ <scb-datepicker
551
+ .selectedValue=${this.value}
552
+ .open=${this._showDatepicker}
553
+ @date-selected=${this._onDateSelected}
554
+ ></scb-datepicker>
555
+ </div>
556
+ ` : this.type === "datetime-local" ? r`
557
+ <label
558
+ class="scb-textfield-label ${this.underLabel ? "" : "scb-textfield-label--without-supporting"}"
559
+ for="${this._inputId}"
560
+ >
561
+ ${this.label}
562
+ </label>
563
+ ${this.underLabel ? r`
564
+ <span class="scb-textfield-supporting-text" id="${this._inputId}-supporting-text">
565
+ ${this.underLabel}
566
+ </span>
567
+ ` : null}
568
+ <div class="scb-textfield-wrapper" style="position:relative;">
569
+ ${e}
570
+ <div class="ripple-wrapper">
571
+ <input
572
+ class="scb-textfield${this.error ? " has-error-icon" : ""}"
573
+ .value=${this.value}
574
+ type="text"
575
+ name="${this.name}"
576
+ id="${this._inputId}"
577
+ ?disabled=${this.disabled}
578
+ ?required=${this.required}
579
+ aria-invalid=${this.error ? "true" : "false"}
580
+ aria-describedby=${n}
581
+ readonly
582
+ @focus=${this._toggleDatepicker}
583
+ @click=${this._toggleDatepicker}
584
+ />
585
+
586
+ <md-ripple></md-ripple>
587
+ <md-focus-ring class="input-ring"></md-focus-ring>
588
+ </div>
589
+
590
+ ${this.error ? t : r`
591
+ <scb-icon-button
592
+ class="scb-textfield-datepicker-button"
593
+ icon="calendar_today"
594
+ size=${this.size}
595
+ @click=${this._toggleDatepicker}
596
+ aria-label="Välj datum"
597
+ ></scb-icon-button>
598
+ `}
599
+ <scb-datepicker
600
+ variant="datetime-local"
601
+ .selectedValue=${this.value}
602
+ .open=${this._showDatepicker}
603
+ @date-selected=${this._onDateSelected}
604
+ ></scb-datepicker>
605
+ </div>
606
+ ` : this.type === "time" ? r`
607
+ <label
608
+ class="scb-textfield-label ${this.underLabel ? "" : "scb-textfield-label--without-supporting"}"
609
+ for="${this._inputId}"
610
+ >
611
+ ${this.label}
612
+ </label>
613
+ ${this.underLabel ? r`
614
+ <span class="scb-textfield-supporting-text" id="${this._inputId}-supporting-text">
615
+ ${this.underLabel}
616
+ </span>
617
+ ` : null}
618
+ <div class="scb-textfield-wrapper">
619
+ ${e}
620
+ <div class="ripple-wrapper">
621
+ <input
622
+ class="scb-textfield${this.error ? " has-error-icon" : ""}"
623
+ .value=${this.value}
624
+ type="time"
625
+ name="${this.name}"
626
+ id="${this._inputId}"
627
+ ?disabled=${this.disabled}
628
+ ?required=${this.required}
629
+ aria-invalid=${this.error ? "true" : "false"}
630
+ aria-describedby=${n}
631
+ @input=${(e) => {
632
+ let t = e.target;
633
+ if (this.value = t.value, this._internals) {
634
+ let e = this.disabled ? null : this.value;
635
+ this._internals.setFormValue(e);
636
+ }
637
+ this.#n(), this.dispatchEvent(new Event("input", {
638
+ bubbles: !0,
639
+ composed: !0
640
+ })), this.dispatchEvent(new CustomEvent("onValueChanged", {
641
+ detail: { value: this.value },
642
+ bubbles: !0,
643
+ composed: !0
644
+ }));
645
+ }}
646
+ />
647
+ ${t}
648
+ <md-ripple></md-ripple>
649
+ <md-focus-ring class="input-ring"></md-focus-ring>
650
+ </div>
651
+ </div>
652
+ ` : r`
653
+ <label
654
+ class="scb-textfield-label ${this.underLabel ? "" : "scb-textfield-label--without-supporting"}"
655
+ for="${this._inputId}"
656
+ >
657
+ ${this.label}
658
+ </label>
659
+ ${this.underLabel ? r`
660
+ <span class="scb-textfield-supporting-text" id="${this._inputId}-supporting-text">
661
+ ${this.underLabel}
662
+ </span>
663
+ ` : null}
664
+ <div class="scb-textfield-wrapper">
665
+ ${e}
666
+ <div class="ripple-wrapper">
667
+ <input
668
+ class="scb-textfield${this.error ? " has-error-icon" : ""}"
669
+ .value=${this.value}
670
+ type="${this.type}"
671
+ name="${this.name}"
672
+ id="${this._inputId}"
673
+ ?disabled=${this.disabled}
674
+ ?required=${this.required}
675
+ aria-invalid=${this.error ? "true" : "false"}
676
+ aria-describedby=${n}
677
+ />
678
+ ${i}
679
+ ${t}
680
+ <md-ripple></md-ripple>
681
+ <md-focus-ring class="input-ring"></md-focus-ring>
682
+ </div>
683
+ </div>
684
+ `;
685
+ }
686
+ firstUpdated(e) {
687
+ super.firstUpdated(e), this._initialValue = this.value, this._internals && this.value && this._internals.setFormValue(this.value), this.#r(), this.#e();
688
+ }
689
+ updated(e) {
690
+ if (super.updated(e), this.toggleAttribute("aria-disabled", this.disabled), e.has("size") && this._syncDensityForSize(), this._internals && (e.has("value") || e.has("disabled"))) {
691
+ let e = this.disabled ? null : this.value;
692
+ this._internals.setFormValue(e);
693
+ }
694
+ e.has("type") && (this.#r(), this._hasRenderedOnce && this.#a()), (e.has("spacing") || e.has("spacingTop") || e.has("spacingBottom") || e.has("spacingLeft") || e.has("spacingRight")) && this.#e(), this._hasRenderedOnce = !0;
695
+ }
696
+ formDisabledCallback(e) {
697
+ this.disabled = e;
698
+ }
699
+ connectedCallback() {
700
+ super.connectedCallback(), this._syncDensityForSize(), this._inputId = this.id || `scb-textfield-${Math.random().toString(36).substr(2, 9)}`, this._formSubmitHandler = (e) => {
701
+ this.reportValidity() || (e.preventDefault(), e.stopPropagation());
702
+ }, this._form = this.closest("form"), this._form && (this._form.addEventListener("submit", this._formSubmitHandler, !0), this._formResetHandler = () => {
703
+ this.value = this._initialValue;
704
+ let e = this.shadowRoot?.querySelector(".scb-textfield");
705
+ e && (e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement) && (e.value = this._initialValue), this.error = !1;
706
+ }, this._form.addEventListener("reset", this._formResetHandler, !0)), window.addEventListener("keydown", this._onGlobalKeydown, !0), window.addEventListener("pointerdown", this._onGlobalPointerDown, !0);
707
+ }
708
+ disconnectedCallback() {
709
+ super.disconnectedCallback(), this._form && this._formSubmitHandler && (this._form.removeEventListener("submit", this._formSubmitHandler, !0), this._formResetHandler && this._form.removeEventListener("reset", this._formResetHandler, !0)), this.#i(), window.removeEventListener("keydown", this._onGlobalKeydown, !0), window.removeEventListener("pointerdown", this._onGlobalPointerDown, !0);
710
+ }
711
+ reportValidity() {
712
+ return this.#n(!0);
713
+ }
714
+ _onClearClick() {
715
+ let e = this.shadowRoot?.querySelector(".scb-textfield");
716
+ if (e && (e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement)) {
717
+ if (e.value = "", this.value = "", this._internals) {
718
+ let e = this.disabled ? null : this.value;
719
+ this._internals.setFormValue(e), this._internals.setValidity({});
720
+ }
721
+ this.error = !1, e.setCustomValidity(""), this.dispatchEvent(new Event("input", {
722
+ bubbles: !0,
723
+ composed: !0
724
+ })), this.dispatchEvent(new CustomEvent("onValueChanged", {
725
+ detail: { value: this.value },
726
+ bubbles: !0,
727
+ composed: !0
728
+ })), e.focus();
729
+ }
730
+ }
731
+ #e() {
732
+ let e = this.#t(this.spacing), t = this.#t(this.spacingTop) ?? e, n = this.#t(this.spacingBottom) ?? e, r = this.#t(this.spacingLeft), i = this.#t(this.spacingRight);
733
+ t ? this.style.setProperty("--scb-textfield-spacing-block-start", t) : this.style.removeProperty("--scb-textfield-spacing-block-start"), n ? this.style.setProperty("--scb-textfield-spacing-block-end", n) : this.style.removeProperty("--scb-textfield-spacing-block-end"), r ? this.style.setProperty("--scb-textfield-spacing-inline-start", r) : this.style.removeProperty("--scb-textfield-spacing-inline-start"), i ? this.style.setProperty("--scb-textfield-spacing-inline-end", i) : this.style.removeProperty("--scb-textfield-spacing-inline-end");
734
+ }
735
+ #t(e) {
736
+ if (!e) return;
737
+ let t = String(e).trim();
738
+ if (t) return /^\d+$/.test(t) ? `var(--spacing-${Math.max(0, Math.min(14, parseInt(t, 10)))})` : t;
739
+ }
740
+ #n(e = !1) {
741
+ let t = this.shadowRoot?.querySelector(".scb-textfield");
742
+ if (!(t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement)) return !0;
743
+ let n = this.errorText || "Ogiltig inmatning.", r = "";
744
+ if (t.setCustomValidity(""), this.required && !t.value) r = n, t.setCustomValidity(r);
745
+ else if (this.pattern && t.value) try {
746
+ new RegExp(this.pattern).test(t.value) || (r = n, t.setCustomValidity(r));
747
+ } catch {
748
+ t.setCustomValidity("");
749
+ }
750
+ let i = e ? t.reportValidity() : t.checkValidity();
751
+ if (this.error = !i, this._internals) if (i) this._internals.setValidity({});
752
+ else {
753
+ let e = r || t.validationMessage || n;
754
+ this._internals.setValidity({ customError: !0 }, e, t);
755
+ }
756
+ return i;
757
+ }
758
+ #r() {
759
+ let e = this.shadowRoot?.querySelector(".scb-textfield");
760
+ e && (e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement) && this._boundField !== e && (this.#i(), this._boundField = e, this.type !== "time" && e.addEventListener("input", this._onFieldInput), e.addEventListener("change", this._onFieldChange), e.addEventListener("select", this._onFieldSelect), e.addEventListener("focus", this._onFieldFocus), e.addEventListener("blur", this._onFieldBlur));
761
+ }
762
+ #i() {
763
+ let e = this._boundField;
764
+ e && (e.removeEventListener("input", this._onFieldInput), e.removeEventListener("change", this._onFieldChange), e.removeEventListener("select", this._onFieldSelect), e.removeEventListener("focus", this._onFieldFocus), e.removeEventListener("blur", this._onFieldBlur), this._boundField = null);
765
+ }
766
+ #a() {
767
+ this._showDatepicker = !1;
768
+ let e = this.shadowRoot?.querySelector(".scb-textfield");
769
+ if (e && (e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement) && (e.value = "", e.setCustomValidity("")), this.value = "", this.error = !1, this._internals) {
770
+ let e = this.disabled ? null : "";
771
+ this._internals.setFormValue(e), this._internals.setValidity({});
772
+ }
773
+ }
774
+ #o() {
775
+ let e = this.renderRoot?.querySelector(".ripple-wrapper");
776
+ e && (this._inputFocused && this._kbShouldShowRing ? e.setAttribute("data-kb-focus", "true") : e.removeAttribute("data-kb-focus"));
777
+ }
778
+ };
779
+ e([a({
780
+ type: String,
781
+ reflect: !0
782
+ })], s.prototype, "type", void 0), e([a({ type: String })], s.prototype, "label", void 0), e([a({
783
+ type: String,
784
+ attribute: "supporting-text"
785
+ })], s.prototype, "supportingText", void 0), e([a({
786
+ type: String,
787
+ attribute: "error-text"
788
+ })], s.prototype, "errorText", void 0), e([a({
789
+ type: String,
790
+ attribute: "leading-icon"
791
+ })], s.prototype, "leadingIcon", void 0), e([a({ type: String })], s.prototype, "name", void 0), e([a({ type: String })], s.prototype, "pattern", void 0), e([a({
792
+ type: String,
793
+ attribute: "value"
794
+ })], s.prototype, "value", void 0), e([a({ type: String })], s.prototype, "underLabel", void 0), e([a({
795
+ type: Boolean,
796
+ reflect: !0
797
+ })], s.prototype, "error", void 0), e([a({
798
+ type: Boolean,
799
+ reflect: !0
800
+ })], s.prototype, "disabled", void 0), e([a({
801
+ type: Boolean,
802
+ reflect: !0
803
+ })], s.prototype, "required", void 0), e([a({
804
+ type: String,
805
+ reflect: !0
806
+ })], s.prototype, "size", void 0), e([a({
807
+ type: String,
808
+ reflect: !0
809
+ })], s.prototype, "spacing", void 0), e([a({
810
+ type: String,
811
+ attribute: "spacing-top",
812
+ reflect: !0
813
+ })], s.prototype, "spacingTop", void 0), e([a({
814
+ type: String,
815
+ attribute: "spacing-bottom",
816
+ reflect: !0
817
+ })], s.prototype, "spacingBottom", void 0), e([a({
818
+ type: String,
819
+ attribute: "spacing-left",
820
+ reflect: !0
821
+ })], s.prototype, "spacingLeft", void 0), e([a({
822
+ type: String,
823
+ attribute: "spacing-right",
824
+ reflect: !0
825
+ })], s.prototype, "spacingRight", void 0), e([o()], s.prototype, "_showDatepicker", void 0), s = e([i("scb-textfield")], s);
826
+ //#endregion
827
+ export { s as ScbTextField };