wcs-core 7.1.0 → 7.2.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 (570) hide show
  1. package/README.md +1 -11
  2. package/design-tokens/dist/sncf-groupe-root-scoped.css +590 -0
  3. package/design-tokens/dist/sncf-groupe.css +590 -0
  4. package/design-tokens/dist/sncf-groupe.json +10693 -0
  5. package/design-tokens/dist/sncf-holding-root-scoped.css +426 -425
  6. package/design-tokens/dist/sncf-holding.css +426 -425
  7. package/design-tokens/dist/sncf-holding.json +26 -3
  8. package/design-tokens/dist/sncf-reseau-root-scoped.css +465 -465
  9. package/design-tokens/dist/sncf-reseau.css +465 -465
  10. package/design-tokens/dist/sncf-voyageurs-root-scoped.css +383 -383
  11. package/design-tokens/dist/sncf-voyageurs.css +383 -383
  12. package/dist/cjs/{grid-pagination-e4f29c78.js → grid-pagination-4505d7b6.js} +25 -5
  13. package/dist/cjs/grid-pagination-4505d7b6.js.map +1 -0
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/wcs-accordion-panel.cjs.entry.js +1 -1
  16. package/dist/cjs/wcs-accordion-panel.cjs.entry.js.map +1 -1
  17. package/dist/cjs/wcs-action-bar.cjs.entry.js +1 -1
  18. package/dist/cjs/wcs-action-bar.cjs.entry.js.map +1 -1
  19. package/dist/cjs/wcs-alert-drawer.cjs.entry.js +99 -0
  20. package/dist/cjs/wcs-alert-drawer.cjs.entry.js.map +1 -0
  21. package/dist/cjs/wcs-alert.cjs.entry.js +121 -0
  22. package/dist/cjs/wcs-alert.cjs.entry.js.map +1 -0
  23. package/dist/cjs/wcs-app.cjs.entry.js +3 -3
  24. package/dist/cjs/wcs-badge.cjs.entry.js +2 -2
  25. package/dist/cjs/wcs-badge.cjs.entry.js.map +1 -1
  26. package/dist/cjs/wcs-breadcrumb-item.cjs.entry.js +1 -1
  27. package/dist/cjs/wcs-breadcrumb-item.cjs.entry.js.map +1 -1
  28. package/dist/cjs/wcs-breadcrumb.cjs.entry.js +1 -1
  29. package/dist/cjs/wcs-button_2.cjs.entry.js +3 -8
  30. package/dist/cjs/wcs-button_2.cjs.entry.js.map +1 -1
  31. package/dist/cjs/wcs-card-body.cjs.entry.js +9 -2
  32. package/dist/cjs/wcs-card-body.cjs.entry.js.map +1 -1
  33. package/dist/cjs/wcs-card-content.cjs.entry.js +22 -0
  34. package/dist/cjs/wcs-card-content.cjs.entry.js.map +1 -0
  35. package/dist/cjs/wcs-card-footer.cjs.entry.js +22 -0
  36. package/dist/cjs/wcs-card-footer.cjs.entry.js.map +1 -0
  37. package/dist/cjs/wcs-card-header.cjs.entry.js +22 -0
  38. package/dist/cjs/wcs-card-header.cjs.entry.js.map +1 -0
  39. package/dist/cjs/wcs-card-media.cjs.entry.js +29 -0
  40. package/dist/cjs/wcs-card-media.cjs.entry.js.map +1 -0
  41. package/dist/cjs/wcs-card.cjs.entry.js +30 -2
  42. package/dist/cjs/wcs-card.cjs.entry.js.map +1 -1
  43. package/dist/cjs/wcs-checkbox.cjs.entry.js +1 -1
  44. package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
  45. package/dist/cjs/wcs-com-nav-category.cjs.entry.js +2 -2
  46. package/dist/cjs/wcs-com-nav-item.cjs.entry.js +1 -1
  47. package/dist/cjs/wcs-com-nav-submenu.cjs.entry.js +2 -2
  48. package/dist/cjs/wcs-com-nav.cjs.entry.js +2 -2
  49. package/dist/cjs/wcs-counter.cjs.entry.js +2 -12
  50. package/dist/cjs/wcs-counter.cjs.entry.js.map +1 -1
  51. package/dist/cjs/wcs-divider.cjs.entry.js +1 -1
  52. package/dist/cjs/wcs-dropdown-divider.cjs.entry.js +1 -1
  53. package/dist/cjs/wcs-dropdown-header.cjs.entry.js +1 -1
  54. package/dist/cjs/wcs-dropdown-item.cjs.entry.js +1 -1
  55. package/dist/cjs/wcs-dropdown.cjs.entry.js +1 -6
  56. package/dist/cjs/wcs-dropdown.cjs.entry.js.map +1 -1
  57. package/dist/cjs/wcs-editable-field.cjs.entry.js +2 -2
  58. package/dist/cjs/wcs-editable-field.cjs.entry.js.map +1 -1
  59. package/dist/cjs/wcs-error_3.cjs.entry.js +3 -3
  60. package/dist/cjs/wcs-error_3.cjs.entry.js.map +1 -1
  61. package/dist/cjs/wcs-field-content.cjs.entry.js +1 -1
  62. package/dist/cjs/wcs-field-label.cjs.entry.js +1 -1
  63. package/dist/cjs/wcs-field.cjs.entry.js +1 -1
  64. package/dist/cjs/wcs-footer.cjs.entry.js +1 -1
  65. package/dist/cjs/wcs-galactic-menu.cjs.entry.js +2 -2
  66. package/dist/cjs/wcs-galactic.cjs.entry.js +1 -1
  67. package/dist/cjs/wcs-grid-column.cjs.entry.js +1 -1
  68. package/dist/cjs/wcs-grid-column.cjs.entry.js.map +1 -1
  69. package/dist/cjs/wcs-grid-custom-cell.cjs.entry.js +1 -1
  70. package/dist/cjs/wcs-grid-pagination.cjs.entry.js +1 -1
  71. package/dist/cjs/wcs-grid.cjs.entry.js +12 -4
  72. package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
  73. package/dist/cjs/wcs-header.cjs.entry.js +2 -2
  74. package/dist/cjs/wcs-header.cjs.entry.js.map +1 -1
  75. package/dist/cjs/wcs-hint.cjs.entry.js +1 -1
  76. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +1 -1
  77. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js.map +1 -1
  78. package/dist/cjs/wcs-icon.cjs.entry.js +1 -1
  79. package/dist/cjs/wcs-input.cjs.entry.js +2 -12
  80. package/dist/cjs/wcs-input.cjs.entry.js.map +1 -1
  81. package/dist/cjs/wcs-list-item-properties.cjs.entry.js +1 -1
  82. package/dist/cjs/wcs-list-item-property.cjs.entry.js +1 -1
  83. package/dist/cjs/wcs-list-item.cjs.entry.js +1 -1
  84. package/dist/cjs/wcs-mat-icon.cjs.entry.js +1 -1
  85. package/dist/cjs/wcs-mat-icon.cjs.entry.js.map +1 -1
  86. package/dist/cjs/wcs-modal.cjs.entry.js +2 -2
  87. package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
  88. package/dist/cjs/wcs-native-select.cjs.entry.js +2 -2
  89. package/dist/cjs/wcs-native-select.cjs.entry.js.map +1 -1
  90. package/dist/cjs/wcs-nav-item.cjs.entry.js +1 -1
  91. package/dist/cjs/wcs-nav.cjs.entry.js +2 -2
  92. package/dist/cjs/wcs-nav.cjs.entry.js.map +1 -1
  93. package/dist/cjs/wcs-progress-bar.cjs.entry.js +3 -3
  94. package/dist/cjs/wcs-progress-bar.cjs.entry.js.map +1 -1
  95. package/dist/cjs/wcs-progress-radial.cjs.entry.js +2 -2
  96. package/dist/cjs/wcs-progress-radial.cjs.entry.js.map +1 -1
  97. package/dist/cjs/wcs-radio-group.cjs.entry.js +1 -1
  98. package/dist/cjs/wcs-radio.cjs.entry.js +1 -1
  99. package/dist/cjs/wcs-radio.cjs.entry.js.map +1 -1
  100. package/dist/cjs/wcs-select_2.cjs.entry.js +18 -11
  101. package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
  102. package/dist/cjs/wcs-skeleton-circle.cjs.entry.js +1 -1
  103. package/dist/cjs/wcs-skeleton-rectangle.cjs.entry.js +1 -1
  104. package/dist/cjs/wcs-skeleton-text.cjs.entry.js +1 -1
  105. package/dist/cjs/wcs-switch.cjs.entry.js +1 -1
  106. package/dist/cjs/wcs-switch.cjs.entry.js.map +1 -1
  107. package/dist/cjs/wcs-tab.cjs.entry.js +1 -1
  108. package/dist/cjs/wcs-tabs.cjs.entry.js +149 -6
  109. package/dist/cjs/wcs-tabs.cjs.entry.js.map +1 -1
  110. package/dist/cjs/wcs-textarea.cjs.entry.js +1 -1
  111. package/dist/cjs/wcs-textarea.cjs.entry.js.map +1 -1
  112. package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
  113. package/dist/cjs/wcs-tooltip.cjs.entry.js.map +1 -1
  114. package/dist/cjs/wcs.cjs.js +1 -1
  115. package/dist/collection/collection-manifest.json +6 -0
  116. package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
  117. package/dist/collection/components/accordion-panel/accordion-panel.js.map +1 -1
  118. package/dist/collection/components/action-bar/action-bar.js +1 -1
  119. package/dist/collection/components/action-bar/action-bar.js.map +1 -1
  120. package/dist/collection/components/alert/alert-interface.js +2 -0
  121. package/dist/collection/components/alert/alert-interface.js.map +1 -0
  122. package/dist/collection/components/alert/alert.css +115 -0
  123. package/dist/collection/components/alert/alert.e2e.js +142 -0
  124. package/dist/collection/components/alert/alert.e2e.js.map +1 -0
  125. package/dist/collection/components/alert/alert.js +257 -0
  126. package/dist/collection/components/alert/alert.js.map +1 -0
  127. package/dist/collection/components/alert-drawer/alert-drawer-interface.js +2 -0
  128. package/dist/collection/components/alert-drawer/alert-drawer-interface.js.map +1 -0
  129. package/dist/collection/components/alert-drawer/alert-drawer.css +103 -0
  130. package/dist/collection/components/alert-drawer/alert-drawer.e2e.js +111 -0
  131. package/dist/collection/components/alert-drawer/alert-drawer.e2e.js.map +1 -0
  132. package/dist/collection/components/alert-drawer/alert-drawer.js +237 -0
  133. package/dist/collection/components/alert-drawer/alert-drawer.js.map +1 -0
  134. package/dist/collection/components/app/app.js +3 -3
  135. package/dist/collection/components/badge/badge.css +4 -1
  136. package/dist/collection/components/badge/badge.js +1 -1
  137. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
  138. package/dist/collection/components/breadcrumb-item/breadcrumb-item.js +1 -1
  139. package/dist/collection/components/breadcrumb-item/breadcrumb-item.js.map +1 -1
  140. package/dist/collection/components/button/button-interface.js +1 -5
  141. package/dist/collection/components/button/button-interface.js.map +1 -1
  142. package/dist/collection/components/button/button.css +2 -2
  143. package/dist/collection/components/button/button.js +1 -6
  144. package/dist/collection/components/button/button.js.map +1 -1
  145. package/dist/collection/components/card/card-interface.js.map +1 -1
  146. package/dist/collection/components/card/card.css +10 -0
  147. package/dist/collection/components/card/card.js +62 -1
  148. package/dist/collection/components/card/card.js.map +1 -1
  149. package/dist/collection/components/card-body/card-body.css +12 -1
  150. package/dist/collection/components/card-body/card-body.js +52 -2
  151. package/dist/collection/components/card-body/card-body.js.map +1 -1
  152. package/dist/collection/components/card-content/card-content.css +12 -0
  153. package/dist/collection/components/card-content/card-content.js +30 -0
  154. package/dist/collection/components/card-content/card-content.js.map +1 -0
  155. package/dist/collection/components/card-footer/card-footer.css +7 -0
  156. package/dist/collection/components/card-footer/card-footer.js +25 -0
  157. package/dist/collection/components/card-footer/card-footer.js.map +1 -0
  158. package/dist/collection/components/card-header/card-header.css +28 -0
  159. package/dist/collection/components/card-header/card-header.js +32 -0
  160. package/dist/collection/components/card-header/card-header.js.map +1 -0
  161. package/dist/collection/components/card-media/card-media.css +21 -0
  162. package/dist/collection/components/card-media/card-media.js +77 -0
  163. package/dist/collection/components/card-media/card-media.js.map +1 -0
  164. package/dist/collection/components/checkbox/checkbox.js +1 -1
  165. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  166. package/dist/collection/components/com-nav/com-nav.js +2 -2
  167. package/dist/collection/components/com-nav-category/com-nav-category.js +2 -2
  168. package/dist/collection/components/com-nav-item/com-nav-item.js +1 -1
  169. package/dist/collection/components/com-nav-submenu/com-nav-submenu.js +2 -2
  170. package/dist/collection/components/counter/counter-interface.js +1 -5
  171. package/dist/collection/components/counter/counter-interface.js.map +1 -1
  172. package/dist/collection/components/counter/counter.css +4 -1
  173. package/dist/collection/components/counter/counter.js +1 -6
  174. package/dist/collection/components/counter/counter.js.map +1 -1
  175. package/dist/collection/components/divider/divider.js +1 -1
  176. package/dist/collection/components/dropdown/dropdown.js +2 -7
  177. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  178. package/dist/collection/components/dropdown-divider/dropdown-divider.js +1 -1
  179. package/dist/collection/components/dropdown-header/dropdown-header.js +1 -1
  180. package/dist/collection/components/dropdown-item/dropdown-item.js +1 -1
  181. package/dist/collection/components/editable-field/editable-field.css +3 -0
  182. package/dist/collection/components/editable-field/editable-field.js +1 -1
  183. package/dist/collection/components/error/error.js +1 -1
  184. package/dist/collection/components/error/error.js.map +1 -1
  185. package/dist/collection/components/field/field.js +1 -1
  186. package/dist/collection/components/field-content/field-content.js +1 -1
  187. package/dist/collection/components/field-label/field-label.js +1 -1
  188. package/dist/collection/components/footer/footer.js +1 -1
  189. package/dist/collection/components/form-field/form-field.js +1 -1
  190. package/dist/collection/components/form-field/form-field.js.map +1 -1
  191. package/dist/collection/components/galactic/galactic.js +1 -1
  192. package/dist/collection/components/galactic-menu/galactic-menu.js +2 -2
  193. package/dist/collection/components/grid/grid.js +30 -5
  194. package/dist/collection/components/grid/grid.js.map +1 -1
  195. package/dist/collection/components/grid-column/grid-column.js +3 -3
  196. package/dist/collection/components/grid-column/grid-column.js.map +1 -1
  197. package/dist/collection/components/grid-custom-cell/grid-custom-cell.js +1 -1
  198. package/dist/collection/components/grid-pagination/grid-pagination-arrow.js +2 -2
  199. package/dist/collection/components/grid-pagination/grid-pagination-arrow.js.map +1 -1
  200. package/dist/collection/components/grid-pagination/grid-pagination.js +22 -2
  201. package/dist/collection/components/grid-pagination/grid-pagination.js.map +1 -1
  202. package/dist/collection/components/header/header.css +9 -1
  203. package/dist/collection/components/header/header.js +2 -1
  204. package/dist/collection/components/header/header.js.map +1 -1
  205. package/dist/collection/components/hint/hint.js +1 -1
  206. package/dist/collection/components/horizontal-stepper/horizontal-stepper.js +2 -2
  207. package/dist/collection/components/horizontal-stepper/horizontal-stepper.js.map +1 -1
  208. package/dist/collection/components/icon/icon.js +1 -1
  209. package/dist/collection/components/input/input-interface.js +1 -5
  210. package/dist/collection/components/input/input-interface.js.map +1 -1
  211. package/dist/collection/components/input/input.css +4 -0
  212. package/dist/collection/components/input/input.js +3 -8
  213. package/dist/collection/components/input/input.js.map +1 -1
  214. package/dist/collection/components/label/label.js +1 -1
  215. package/dist/collection/components/label/label.js.map +1 -1
  216. package/dist/collection/components/list-item/list-item.js +1 -1
  217. package/dist/collection/components/list-item-properties/list-item-properties.js +1 -1
  218. package/dist/collection/components/list-item-property/list-item-property.js +1 -1
  219. package/dist/collection/components/mat-icon/mat-icon.js +2 -2
  220. package/dist/collection/components/mat-icon/mat-icon.js.map +1 -1
  221. package/dist/collection/components/modal/modal-interface.js.map +1 -1
  222. package/dist/collection/components/modal/modal.css +1 -0
  223. package/dist/collection/components/modal/modal.js +2 -2
  224. package/dist/collection/components/modal/modal.js.map +1 -1
  225. package/dist/collection/components/native-select/native-select.css +2 -2
  226. package/dist/collection/components/native-select/native-select.js +2 -2
  227. package/dist/collection/components/native-select/native-select.js.map +1 -1
  228. package/dist/collection/components/nav/nav.css +2 -0
  229. package/dist/collection/components/nav/nav.js +1 -1
  230. package/dist/collection/components/nav-item/nav-item.js +1 -1
  231. package/dist/collection/components/progress-bar/progress-bar.css +2 -2
  232. package/dist/collection/components/progress-bar/progress-bar.js +3 -3
  233. package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
  234. package/dist/collection/components/progress-radial/progress-radial.js +3 -3
  235. package/dist/collection/components/progress-radial/progress-radial.js.map +1 -1
  236. package/dist/collection/components/radio/radio.js +1 -1
  237. package/dist/collection/components/radio/radio.js.map +1 -1
  238. package/dist/collection/components/radio-group/radio-group.js +1 -1
  239. package/dist/collection/components/select/select.css +1 -1
  240. package/dist/collection/components/select/select.js +16 -9
  241. package/dist/collection/components/select/select.js.map +1 -1
  242. package/dist/collection/components/select-option/select-option.js +2 -2
  243. package/dist/collection/components/select-option/select-option.js.map +1 -1
  244. package/dist/collection/components/skeleton-circle/skeleton-circle.js +1 -1
  245. package/dist/collection/components/skeleton-rectangle/skeleton-rectangle.js +1 -1
  246. package/dist/collection/components/skeleton-text/skeleton-text.js +1 -1
  247. package/dist/collection/components/spinner/spinner.js +1 -1
  248. package/dist/collection/components/switch/switch.js +1 -1
  249. package/dist/collection/components/switch/switch.js.map +1 -1
  250. package/dist/collection/components/tab/tab.js +1 -1
  251. package/dist/collection/components/tabs/tabs.css +104 -1
  252. package/dist/collection/components/tabs/tabs.js +180 -5
  253. package/dist/collection/components/tabs/tabs.js.map +1 -1
  254. package/dist/collection/components/textarea/textarea.js +3 -3
  255. package/dist/collection/components/textarea/textarea.js.map +1 -1
  256. package/dist/collection/components/tooltip/tooltip.js +2 -2
  257. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  258. package/dist/esm/{grid-pagination-976a86e9.js → grid-pagination-731726a6.js} +25 -5
  259. package/dist/esm/grid-pagination-731726a6.js.map +1 -0
  260. package/dist/esm/loader.js +1 -1
  261. package/dist/esm/wcs-accordion-panel.entry.js +1 -1
  262. package/dist/esm/wcs-accordion-panel.entry.js.map +1 -1
  263. package/dist/esm/wcs-action-bar.entry.js +1 -1
  264. package/dist/esm/wcs-action-bar.entry.js.map +1 -1
  265. package/dist/esm/wcs-alert-drawer.entry.js +95 -0
  266. package/dist/esm/wcs-alert-drawer.entry.js.map +1 -0
  267. package/dist/esm/wcs-alert.entry.js +117 -0
  268. package/dist/esm/wcs-alert.entry.js.map +1 -0
  269. package/dist/esm/wcs-app.entry.js +3 -3
  270. package/dist/esm/wcs-badge.entry.js +2 -2
  271. package/dist/esm/wcs-badge.entry.js.map +1 -1
  272. package/dist/esm/wcs-breadcrumb-item.entry.js +1 -1
  273. package/dist/esm/wcs-breadcrumb-item.entry.js.map +1 -1
  274. package/dist/esm/wcs-breadcrumb.entry.js +1 -1
  275. package/dist/esm/wcs-button_2.entry.js +3 -8
  276. package/dist/esm/wcs-button_2.entry.js.map +1 -1
  277. package/dist/esm/wcs-card-body.entry.js +10 -3
  278. package/dist/esm/wcs-card-body.entry.js.map +1 -1
  279. package/dist/esm/wcs-card-content.entry.js +18 -0
  280. package/dist/esm/wcs-card-content.entry.js.map +1 -0
  281. package/dist/esm/wcs-card-footer.entry.js +18 -0
  282. package/dist/esm/wcs-card-footer.entry.js.map +1 -0
  283. package/dist/esm/wcs-card-header.entry.js +18 -0
  284. package/dist/esm/wcs-card-header.entry.js.map +1 -0
  285. package/dist/esm/wcs-card-media.entry.js +25 -0
  286. package/dist/esm/wcs-card-media.entry.js.map +1 -0
  287. package/dist/esm/wcs-card.entry.js +31 -3
  288. package/dist/esm/wcs-card.entry.js.map +1 -1
  289. package/dist/esm/wcs-checkbox.entry.js +1 -1
  290. package/dist/esm/wcs-checkbox.entry.js.map +1 -1
  291. package/dist/esm/wcs-com-nav-category.entry.js +2 -2
  292. package/dist/esm/wcs-com-nav-item.entry.js +1 -1
  293. package/dist/esm/wcs-com-nav-submenu.entry.js +2 -2
  294. package/dist/esm/wcs-com-nav.entry.js +2 -2
  295. package/dist/esm/wcs-counter.entry.js +2 -12
  296. package/dist/esm/wcs-counter.entry.js.map +1 -1
  297. package/dist/esm/wcs-divider.entry.js +1 -1
  298. package/dist/esm/wcs-dropdown-divider.entry.js +1 -1
  299. package/dist/esm/wcs-dropdown-header.entry.js +1 -1
  300. package/dist/esm/wcs-dropdown-item.entry.js +1 -1
  301. package/dist/esm/wcs-dropdown.entry.js +1 -6
  302. package/dist/esm/wcs-dropdown.entry.js.map +1 -1
  303. package/dist/esm/wcs-editable-field.entry.js +2 -2
  304. package/dist/esm/wcs-editable-field.entry.js.map +1 -1
  305. package/dist/esm/wcs-error_3.entry.js +3 -3
  306. package/dist/esm/wcs-error_3.entry.js.map +1 -1
  307. package/dist/esm/wcs-field-content.entry.js +1 -1
  308. package/dist/esm/wcs-field-label.entry.js +1 -1
  309. package/dist/esm/wcs-field.entry.js +1 -1
  310. package/dist/esm/wcs-footer.entry.js +1 -1
  311. package/dist/esm/wcs-galactic-menu.entry.js +2 -2
  312. package/dist/esm/wcs-galactic.entry.js +1 -1
  313. package/dist/esm/wcs-grid-column.entry.js +1 -1
  314. package/dist/esm/wcs-grid-column.entry.js.map +1 -1
  315. package/dist/esm/wcs-grid-custom-cell.entry.js +1 -1
  316. package/dist/esm/wcs-grid-pagination.entry.js +1 -1
  317. package/dist/esm/wcs-grid.entry.js +12 -4
  318. package/dist/esm/wcs-grid.entry.js.map +1 -1
  319. package/dist/esm/wcs-header.entry.js +2 -2
  320. package/dist/esm/wcs-header.entry.js.map +1 -1
  321. package/dist/esm/wcs-hint.entry.js +1 -1
  322. package/dist/esm/wcs-horizontal-stepper.entry.js +1 -1
  323. package/dist/esm/wcs-horizontal-stepper.entry.js.map +1 -1
  324. package/dist/esm/wcs-icon.entry.js +1 -1
  325. package/dist/esm/wcs-input.entry.js +2 -12
  326. package/dist/esm/wcs-input.entry.js.map +1 -1
  327. package/dist/esm/wcs-list-item-properties.entry.js +1 -1
  328. package/dist/esm/wcs-list-item-property.entry.js +1 -1
  329. package/dist/esm/wcs-list-item.entry.js +1 -1
  330. package/dist/esm/wcs-mat-icon.entry.js +1 -1
  331. package/dist/esm/wcs-mat-icon.entry.js.map +1 -1
  332. package/dist/esm/wcs-modal.entry.js +2 -2
  333. package/dist/esm/wcs-modal.entry.js.map +1 -1
  334. package/dist/esm/wcs-native-select.entry.js +2 -2
  335. package/dist/esm/wcs-native-select.entry.js.map +1 -1
  336. package/dist/esm/wcs-nav-item.entry.js +1 -1
  337. package/dist/esm/wcs-nav.entry.js +2 -2
  338. package/dist/esm/wcs-nav.entry.js.map +1 -1
  339. package/dist/esm/wcs-progress-bar.entry.js +3 -3
  340. package/dist/esm/wcs-progress-bar.entry.js.map +1 -1
  341. package/dist/esm/wcs-progress-radial.entry.js +2 -2
  342. package/dist/esm/wcs-progress-radial.entry.js.map +1 -1
  343. package/dist/esm/wcs-radio-group.entry.js +1 -1
  344. package/dist/esm/wcs-radio.entry.js +1 -1
  345. package/dist/esm/wcs-radio.entry.js.map +1 -1
  346. package/dist/esm/wcs-select_2.entry.js +18 -11
  347. package/dist/esm/wcs-select_2.entry.js.map +1 -1
  348. package/dist/esm/wcs-skeleton-circle.entry.js +1 -1
  349. package/dist/esm/wcs-skeleton-rectangle.entry.js +1 -1
  350. package/dist/esm/wcs-skeleton-text.entry.js +1 -1
  351. package/dist/esm/wcs-switch.entry.js +1 -1
  352. package/dist/esm/wcs-switch.entry.js.map +1 -1
  353. package/dist/esm/wcs-tab.entry.js +1 -1
  354. package/dist/esm/wcs-tabs.entry.js +149 -6
  355. package/dist/esm/wcs-tabs.entry.js.map +1 -1
  356. package/dist/esm/wcs-textarea.entry.js +1 -1
  357. package/dist/esm/wcs-textarea.entry.js.map +1 -1
  358. package/dist/esm/wcs-tooltip.entry.js +1 -1
  359. package/dist/esm/wcs-tooltip.entry.js.map +1 -1
  360. package/dist/esm/wcs.js +1 -1
  361. package/dist/types/components/alert/alert-interface.d.ts +11 -0
  362. package/dist/types/components/alert/alert.d.ts +79 -0
  363. package/dist/types/components/alert-drawer/alert-drawer-interface.d.ts +1 -0
  364. package/dist/types/components/alert-drawer/alert-drawer.d.ts +83 -0
  365. package/dist/types/components/button/button-interface.d.ts +1 -3
  366. package/dist/types/components/card/card-interface.d.ts +1 -0
  367. package/dist/types/components/card/card.d.ts +18 -1
  368. package/dist/types/components/card-body/card-body.d.ts +9 -0
  369. package/dist/types/components/card-content/card-content.d.ts +14 -0
  370. package/dist/types/components/card-footer/card-footer.d.ts +9 -0
  371. package/dist/types/components/card-header/card-header.d.ts +16 -0
  372. package/dist/types/components/card-media/card-media.d.ts +20 -0
  373. package/dist/types/components/counter/counter-interface.d.ts +1 -3
  374. package/dist/types/components/grid/grid.d.ts +4 -0
  375. package/dist/types/components/grid-pagination/grid-pagination.d.ts +6 -1
  376. package/dist/types/components/header/header.d.ts +1 -0
  377. package/dist/types/components/input/input-interface.d.ts +1 -3
  378. package/dist/types/components/mat-icon/mat-icon.d.ts +1 -1
  379. package/dist/types/components/modal/modal-interface.d.ts +2 -1
  380. package/dist/types/components/select/select.d.ts +7 -1
  381. package/dist/types/components/tabs/tabs.d.ts +55 -0
  382. package/dist/types/components.d.ts +571 -6
  383. package/dist/wcs/{p-9c012aae.entry.js → p-0424e545.entry.js} +2 -2
  384. package/dist/wcs/{p-50523b53.entry.js → p-0758d22e.entry.js} +2 -2
  385. package/dist/wcs/p-0b8157e7.entry.js +2 -0
  386. package/dist/wcs/p-0dd07842.entry.js +2 -0
  387. package/dist/wcs/p-0dd07842.entry.js.map +1 -0
  388. package/dist/wcs/{p-9554196c.entry.js → p-1244daa0.entry.js} +2 -2
  389. package/dist/wcs/{p-96bff8fe.entry.js → p-18fa39f4.entry.js} +2 -2
  390. package/dist/wcs/{p-96bff8fe.entry.js.map → p-18fa39f4.entry.js.map} +1 -1
  391. package/dist/wcs/p-1ba616c2.entry.js +2 -0
  392. package/dist/wcs/p-1ba616c2.entry.js.map +1 -0
  393. package/dist/wcs/p-1e7ea63c.entry.js +2 -0
  394. package/dist/wcs/p-1e7ea63c.entry.js.map +1 -0
  395. package/dist/wcs/p-1f593d06.entry.js +2 -0
  396. package/dist/wcs/p-1f593d06.entry.js.map +1 -0
  397. package/dist/wcs/{p-4dc52a25.entry.js → p-1fbe0328.entry.js} +2 -2
  398. package/dist/wcs/p-1fbe0328.entry.js.map +1 -0
  399. package/dist/wcs/{p-c2d35aa6.entry.js → p-204f2722.entry.js} +9 -9
  400. package/dist/wcs/p-204f2722.entry.js.map +1 -0
  401. package/dist/wcs/{p-37800935.entry.js → p-27b438c0.entry.js} +2 -2
  402. package/dist/wcs/{p-0ffdfc10.entry.js → p-352e1f99.entry.js} +2 -2
  403. package/dist/wcs/{p-3cfa1c4b.entry.js → p-367946fe.entry.js} +2 -2
  404. package/dist/wcs/p-3823f54e.entry.js +2 -0
  405. package/dist/wcs/{p-a7891233.entry.js → p-3a18535f.entry.js} +2 -2
  406. package/dist/wcs/p-41b946b2.entry.js +2 -0
  407. package/dist/wcs/p-41b946b2.entry.js.map +1 -0
  408. package/dist/wcs/{p-4661290b.entry.js → p-496115a5.entry.js} +2 -2
  409. package/dist/wcs/{p-4661290b.entry.js.map → p-496115a5.entry.js.map} +1 -1
  410. package/dist/wcs/p-4fb2d985.entry.js +2 -0
  411. package/dist/wcs/{p-9243a323.entry.js.map → p-4fb2d985.entry.js.map} +1 -1
  412. package/dist/wcs/{p-d895ffb4.entry.js → p-5202b323.entry.js} +2 -2
  413. package/dist/wcs/{p-ca8f3677.entry.js → p-53a395a9.entry.js} +2 -2
  414. package/dist/wcs/{p-ca8f3677.entry.js.map → p-53a395a9.entry.js.map} +1 -1
  415. package/dist/wcs/p-5607246c.entry.js +2 -0
  416. package/dist/wcs/p-5607246c.entry.js.map +1 -0
  417. package/dist/wcs/p-580b3142.entry.js +2 -0
  418. package/dist/wcs/p-5da0534f.entry.js +2 -0
  419. package/dist/wcs/p-5da0534f.entry.js.map +1 -0
  420. package/dist/wcs/p-5e8fff73.entry.js +2 -0
  421. package/dist/wcs/p-5e8fff73.entry.js.map +1 -0
  422. package/dist/wcs/{p-dddcd685.entry.js → p-622f7403.entry.js} +2 -2
  423. package/dist/wcs/p-637ec45a.entry.js +2 -0
  424. package/dist/wcs/p-637ec45a.entry.js.map +1 -0
  425. package/dist/wcs/p-6aededc6.entry.js +2 -0
  426. package/dist/wcs/p-6aededc6.entry.js.map +1 -0
  427. package/dist/wcs/p-6c6079ee.entry.js +2 -0
  428. package/dist/wcs/{p-76c92e22.entry.js.map → p-6c6079ee.entry.js.map} +1 -1
  429. package/dist/wcs/{p-e5c057c4.entry.js → p-781a956e.entry.js} +2 -2
  430. package/dist/wcs/p-7de847e0.entry.js +2 -0
  431. package/dist/wcs/p-8152d360.entry.js +2 -0
  432. package/dist/wcs/p-8152d360.entry.js.map +1 -0
  433. package/dist/wcs/{p-294732f7.entry.js → p-850fa9c9.entry.js} +2 -2
  434. package/dist/wcs/{p-796e690d.entry.js → p-86ec9ead.entry.js} +2 -2
  435. package/dist/wcs/{p-796e690d.entry.js.map → p-86ec9ead.entry.js.map} +1 -1
  436. package/dist/wcs/p-8c2605fd.entry.js +2 -0
  437. package/dist/wcs/p-8c2605fd.entry.js.map +1 -0
  438. package/dist/wcs/{p-16dd21cf.entry.js → p-8e9bd0f1.entry.js} +2 -2
  439. package/dist/wcs/p-98a8b806.entry.js +2 -0
  440. package/dist/wcs/p-98a8b806.entry.js.map +1 -0
  441. package/dist/wcs/p-9c73744c.entry.js +2 -0
  442. package/dist/wcs/p-9c73744c.entry.js.map +1 -0
  443. package/dist/wcs/p-9fd3366c.entry.js +2 -0
  444. package/dist/wcs/p-9fd3366c.entry.js.map +1 -0
  445. package/dist/wcs/p-a0f6ef30.entry.js +2 -0
  446. package/dist/wcs/p-a0f6ef30.entry.js.map +1 -0
  447. package/dist/wcs/{p-5bf73e05.entry.js → p-a94e685c.entry.js} +2 -2
  448. package/dist/wcs/{p-5bf73e05.entry.js.map → p-a94e685c.entry.js.map} +1 -1
  449. package/dist/wcs/{p-7d665a7e.entry.js → p-a956dc84.entry.js} +2 -2
  450. package/dist/wcs/p-a956dc84.entry.js.map +1 -0
  451. package/dist/wcs/{p-5d5f50ed.entry.js → p-aadf37e7.entry.js} +2 -2
  452. package/dist/wcs/{p-6b06d2e7.entry.js → p-ad286030.entry.js} +2 -2
  453. package/dist/wcs/p-ad5192cd.entry.js +2 -0
  454. package/dist/wcs/{p-dd60a6db.entry.js → p-b0a6eec6.entry.js} +2 -2
  455. package/dist/wcs/{p-dd60a6db.entry.js.map → p-b0a6eec6.entry.js.map} +1 -1
  456. package/dist/wcs/{p-9ad23e83.entry.js → p-b28b2fba.entry.js} +2 -2
  457. package/dist/wcs/p-b28b2fba.entry.js.map +1 -0
  458. package/dist/wcs/{p-29f5b974.entry.js → p-bc009574.entry.js} +2 -2
  459. package/dist/wcs/{p-29f5b974.entry.js.map → p-bc009574.entry.js.map} +1 -1
  460. package/dist/wcs/p-c211a5d1.entry.js +2 -0
  461. package/dist/wcs/{p-206c01d5.entry.js → p-c261eaf9.entry.js} +2 -2
  462. package/dist/wcs/p-c261eaf9.entry.js.map +1 -0
  463. package/dist/wcs/p-c5bad0b8.js +2 -0
  464. package/dist/wcs/p-c5bad0b8.js.map +1 -0
  465. package/dist/wcs/p-c7812760.entry.js +2 -0
  466. package/dist/wcs/{p-694724a2.entry.js → p-c84ae00d.entry.js} +2 -2
  467. package/dist/wcs/p-cad10435.entry.js +2 -0
  468. package/dist/wcs/{p-13e50077.entry.js.map → p-cad10435.entry.js.map} +1 -1
  469. package/dist/wcs/p-cbbca016.entry.js +2 -0
  470. package/dist/wcs/p-cbbca016.entry.js.map +1 -0
  471. package/dist/wcs/{p-619e1110.entry.js → p-cbda74f6.entry.js} +2 -2
  472. package/dist/wcs/{p-21b964cd.entry.js → p-d27d4a53.entry.js} +2 -2
  473. package/dist/wcs/p-d27d4a53.entry.js.map +1 -0
  474. package/dist/wcs/p-dfb52a1c.entry.js +2 -0
  475. package/dist/wcs/p-dfb52a1c.entry.js.map +1 -0
  476. package/dist/wcs/{p-6f5d570a.entry.js → p-dff8641e.entry.js} +2 -2
  477. package/dist/wcs/p-e26c19e5.entry.js +2 -0
  478. package/dist/wcs/{p-d9525519.entry.js → p-e56b9ce2.entry.js} +2 -2
  479. package/dist/wcs/p-ec383729.entry.js +2 -0
  480. package/dist/wcs/p-ec383729.entry.js.map +1 -0
  481. package/dist/wcs/p-f929b66f.entry.js +2 -0
  482. package/dist/wcs/p-f929b66f.entry.js.map +1 -0
  483. package/dist/wcs/{p-da4636fa.entry.js → p-fd187bce.entry.js} +2 -2
  484. package/dist/wcs/{p-b96f4921.entry.js → p-fdeae83e.entry.js} +2 -2
  485. package/dist/wcs/wcs.esm.js +1 -1
  486. package/dist/wcs/wcs.esm.js.map +1 -1
  487. package/package.json +5 -2
  488. package/dist/cjs/button-interface-629f3563.js +0 -12
  489. package/dist/cjs/button-interface-629f3563.js.map +0 -1
  490. package/dist/cjs/grid-pagination-e4f29c78.js.map +0 -1
  491. package/dist/esm/button-interface-dc5ddd51.js +0 -9
  492. package/dist/esm/button-interface-dc5ddd51.js.map +0 -1
  493. package/dist/esm/grid-pagination-976a86e9.js.map +0 -1
  494. package/dist/wcs/p-13090618.entry.js +0 -2
  495. package/dist/wcs/p-13090618.entry.js.map +0 -1
  496. package/dist/wcs/p-13e50077.entry.js +0 -2
  497. package/dist/wcs/p-1438530e.entry.js +0 -2
  498. package/dist/wcs/p-1438530e.entry.js.map +0 -1
  499. package/dist/wcs/p-206c01d5.entry.js.map +0 -1
  500. package/dist/wcs/p-21b964cd.entry.js.map +0 -1
  501. package/dist/wcs/p-21d2f06f.entry.js +0 -2
  502. package/dist/wcs/p-21d2f06f.entry.js.map +0 -1
  503. package/dist/wcs/p-258855a1.entry.js +0 -2
  504. package/dist/wcs/p-258855a1.entry.js.map +0 -1
  505. package/dist/wcs/p-2adf00be.entry.js +0 -2
  506. package/dist/wcs/p-2adf00be.entry.js.map +0 -1
  507. package/dist/wcs/p-388e6d75.entry.js +0 -2
  508. package/dist/wcs/p-388e6d75.entry.js.map +0 -1
  509. package/dist/wcs/p-43d70995.entry.js +0 -2
  510. package/dist/wcs/p-43d70995.entry.js.map +0 -1
  511. package/dist/wcs/p-4dc52a25.entry.js.map +0 -1
  512. package/dist/wcs/p-550012c2.entry.js +0 -2
  513. package/dist/wcs/p-5974be61.entry.js +0 -2
  514. package/dist/wcs/p-5974be61.entry.js.map +0 -1
  515. package/dist/wcs/p-5de993d7.entry.js +0 -2
  516. package/dist/wcs/p-5de993d7.entry.js.map +0 -1
  517. package/dist/wcs/p-71db0ed5.entry.js +0 -2
  518. package/dist/wcs/p-76c92e22.entry.js +0 -2
  519. package/dist/wcs/p-7d665a7e.entry.js.map +0 -1
  520. package/dist/wcs/p-8fcceaf1.js +0 -2
  521. package/dist/wcs/p-8fcceaf1.js.map +0 -1
  522. package/dist/wcs/p-9243a323.entry.js +0 -2
  523. package/dist/wcs/p-94aa269f.entry.js +0 -2
  524. package/dist/wcs/p-94aa269f.entry.js.map +0 -1
  525. package/dist/wcs/p-96195d9a.entry.js +0 -2
  526. package/dist/wcs/p-96195d9a.entry.js.map +0 -1
  527. package/dist/wcs/p-9ad23e83.entry.js.map +0 -1
  528. package/dist/wcs/p-9dc3f9a5.entry.js +0 -2
  529. package/dist/wcs/p-9dc3f9a5.entry.js.map +0 -1
  530. package/dist/wcs/p-9eb66fa9.entry.js +0 -2
  531. package/dist/wcs/p-ab49926d.entry.js +0 -2
  532. package/dist/wcs/p-ab49926d.entry.js.map +0 -1
  533. package/dist/wcs/p-b2080509.entry.js +0 -2
  534. package/dist/wcs/p-c2d35aa6.entry.js.map +0 -1
  535. package/dist/wcs/p-c6a28b79.js +0 -2
  536. package/dist/wcs/p-c6a28b79.js.map +0 -1
  537. package/dist/wcs/p-c752b85a.entry.js +0 -2
  538. package/dist/wcs/p-d443d419.entry.js +0 -2
  539. package/dist/wcs/p-e36b2ad1.entry.js +0 -2
  540. package/dist/wcs/p-f87636f6.entry.js +0 -2
  541. package/dist/wcs/p-f87636f6.entry.js.map +0 -1
  542. package/dist/wcs/p-fc115de4.entry.js +0 -2
  543. /package/dist/wcs/{p-9c012aae.entry.js.map → p-0424e545.entry.js.map} +0 -0
  544. /package/dist/wcs/{p-50523b53.entry.js.map → p-0758d22e.entry.js.map} +0 -0
  545. /package/dist/wcs/{p-e36b2ad1.entry.js.map → p-0b8157e7.entry.js.map} +0 -0
  546. /package/dist/wcs/{p-9554196c.entry.js.map → p-1244daa0.entry.js.map} +0 -0
  547. /package/dist/wcs/{p-37800935.entry.js.map → p-27b438c0.entry.js.map} +0 -0
  548. /package/dist/wcs/{p-0ffdfc10.entry.js.map → p-352e1f99.entry.js.map} +0 -0
  549. /package/dist/wcs/{p-3cfa1c4b.entry.js.map → p-367946fe.entry.js.map} +0 -0
  550. /package/dist/wcs/{p-c752b85a.entry.js.map → p-3823f54e.entry.js.map} +0 -0
  551. /package/dist/wcs/{p-a7891233.entry.js.map → p-3a18535f.entry.js.map} +0 -0
  552. /package/dist/wcs/{p-d895ffb4.entry.js.map → p-5202b323.entry.js.map} +0 -0
  553. /package/dist/wcs/{p-b2080509.entry.js.map → p-580b3142.entry.js.map} +0 -0
  554. /package/dist/wcs/{p-dddcd685.entry.js.map → p-622f7403.entry.js.map} +0 -0
  555. /package/dist/wcs/{p-e5c057c4.entry.js.map → p-781a956e.entry.js.map} +0 -0
  556. /package/dist/wcs/{p-550012c2.entry.js.map → p-7de847e0.entry.js.map} +0 -0
  557. /package/dist/wcs/{p-294732f7.entry.js.map → p-850fa9c9.entry.js.map} +0 -0
  558. /package/dist/wcs/{p-16dd21cf.entry.js.map → p-8e9bd0f1.entry.js.map} +0 -0
  559. /package/dist/wcs/{p-5d5f50ed.entry.js.map → p-aadf37e7.entry.js.map} +0 -0
  560. /package/dist/wcs/{p-6b06d2e7.entry.js.map → p-ad286030.entry.js.map} +0 -0
  561. /package/dist/wcs/{p-fc115de4.entry.js.map → p-ad5192cd.entry.js.map} +0 -0
  562. /package/dist/wcs/{p-9eb66fa9.entry.js.map → p-c211a5d1.entry.js.map} +0 -0
  563. /package/dist/wcs/{p-d443d419.entry.js.map → p-c7812760.entry.js.map} +0 -0
  564. /package/dist/wcs/{p-694724a2.entry.js.map → p-c84ae00d.entry.js.map} +0 -0
  565. /package/dist/wcs/{p-619e1110.entry.js.map → p-cbda74f6.entry.js.map} +0 -0
  566. /package/dist/wcs/{p-6f5d570a.entry.js.map → p-dff8641e.entry.js.map} +0 -0
  567. /package/dist/wcs/{p-71db0ed5.entry.js.map → p-e26c19e5.entry.js.map} +0 -0
  568. /package/dist/wcs/{p-d9525519.entry.js.map → p-e56b9ce2.entry.js.map} +0 -0
  569. /package/dist/wcs/{p-da4636fa.entry.js.map → p-fd187bce.entry.js.map} +0 -0
  570. /package/dist/wcs/{p-b96f4921.entry.js.map → p-fdeae83e.entry.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, h, H as Host, g as getElement } from './index-d9de61ce.js';
2
2
  import { S as SelectArrow } from './select-arrow-e62de386.js';
3
3
 
4
- const nativeSelectCss = ":host{--wcs-native-select-line-height:var(--wcs-semantic-font-line-height-large);--wcs-native-select-size-m:var(--wcs-semantic-size-m);--wcs-native-select-font-size-m:var(--wcs-semantic-font-size-m);--wcs-native-select-size-l:var(--wcs-semantic-size-l);--wcs-native-select-font-size-l:var(--wcs-semantic-font-size-l);--wcs-native-select-border-radius:var(--wcs-semantic-border-radius-base);--wcs-native-select-background-color:var(--wcs-semantic-color-background-control-default);--wcs-native-select-border-color-default:var(--wcs-semantic-color-border-primary);--wcs-native-select-border-color-disabled:var(--wcs-semantic-color-border-disabled);--wcs-native-select-border-color-focus:var(--wcs-semantic-color-border-control-focus);--wcs-native-select-border-color-error:var(--wcs-semantic-color-border-critical);--wcs-native-select-border-style-default:solid;--wcs-native-select-border-style-focus:var(--wcs-semantic-border-style-focus-control);--wcs-native-select-border-width:var(--wcs-semantic-border-width-default);--wcs-native-select-border-width-focus:var(--wcs-semantic-border-width-large);--wcs-native-select-value-color:var(--wcs-semantic-color-text-primary);--wcs-native-select-value-font-weight:var(--wcs-semantic-font-weight-medium);--wcs-native-select-value-font-style:normal;--wcs-native-select-internal-padding-horizontal:var(--wcs-native-select-padding-horizontal-m);--wcs-native-select-padding-horizontal-m:var(--wcs-semantic-spacing-large);--wcs-native-select-padding-horizontal-l:var(--wcs-semantic-spacing-large);--wcs-native-select-arrow-color:var(--wcs-semantic-color-foreground-brand);--wcs-native-select-arrow-color-disabled:var(--wcs-semantic-color-foreground-disabled);--wcs-native-select-text-color-disabled:var(--wcs-semantic-color-text-disabled);--wcs-native-select-placeholder-color:var(--wcs-semantic-color-text-tertiary);--wcs-native-select-placeholder-font-weight:var(--wcs-semantic-font-weight-roman);--wcs-native-select-placeholder-font-style:var(--wcs-semantic-font-style-control-placeholder);--wcs-native-select-option-color:var(--wcs-semantic-color-text-primary);--wcs-native-select-option-font-style:normal;--wcs-native-select-option-selected-color:var(--wcs-semantic-color-text-primary)}::slotted(select){box-sizing:border-box;-moz-appearance:none !important;-webkit-appearance:none !important;appearance:none !important;background-color:var(--wcs-native-select-background-color);color:var(--wcs-native-select-value-color);border-radius:var(--wcs-native-select-border-radius);border:none;outline:var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-default);outline-offset:calc(var(--wcs-native-select-border-width) * -1);user-select:none;cursor:pointer;line-height:var(--wcs-native-select-line-height);font-size:inherit;opacity:1;max-width:100%;flex-grow:1;padding-right:calc(var(--wcs-native-select-internal-padding-horizontal) + 24px);padding-left:var(--wcs-native-select-internal-padding-horizontal)}::slotted(select:disabled){cursor:not-allowed;color:var(--wcs-native-select-text-color-disabled);outline:var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-disabled);--wcs-native-select-background-color:var(--wcs-semantic-color-background-control-disabled);--wcs-native-select-value-color:var(--wcs-native-select-text-color-disabled)}::slotted(select[aria-invalid=true]){outline-style:var(--wcs-native-select-border-style-default);outline-color:var(--wcs-native-select-border-color-error) !important;outline-offset:calc(var(--wcs-native-select-border-width) * -1)}:host([data-disabled]) .select-wrapper .arrow-container .arrow{fill:var(--wcs-native-select-arrow-color-disabled)}:host([data-size=m]){font-size:var(--wcs-native-select-font-size-m);--wcs-native-select-internal-padding-horizontal:var(--wcs-native-select-padding-horizontal-m)}:host([data-size=m]) ::slotted(select){height:var(--wcs-native-select-size-m)}:host([data-size=l]){font-size:var(--wcs-native-select-font-size-l);--wcs-native-select-internal-padding-horizontal:var(--wcs-native-select-padding-horizontal-l)}:host([data-size=l]) ::slotted(select){height:var(--wcs-native-select-size-l)}::slotted(select:focus-visible){outline:var(--wcs-native-select-border-style-focus) var(--wcs-native-select-border-width-focus) var(--wcs-native-select-border-color-focus);outline-offset:calc(var(--wcs-native-select-border-width-focus) * -1)}.select-wrapper{position:relative;display:flex;flex-wrap:nowrap}svg{flex-shrink:0}.arrow{fill:var(--wcs-native-select-arrow-color)}.arrow-container{pointer-events:none;display:flex;align-items:center;vertical-align:center;position:absolute;top:0;bottom:0;right:calc(var(--wcs-native-select-internal-padding-horizontal) - 4px);margin:auto 0}";
4
+ const nativeSelectCss = ":host{--wcs-native-select-line-height:var(--wcs-semantic-font-line-height-large);--wcs-native-select-size-m:var(--wcs-semantic-size-m);--wcs-native-select-font-size-m:var(--wcs-semantic-font-size-m);--wcs-native-select-size-l:var(--wcs-semantic-size-l);--wcs-native-select-font-size-l:var(--wcs-semantic-font-size-l);--wcs-native-select-border-radius:var(--wcs-semantic-border-radius-base);--wcs-native-select-background-color:var(--wcs-semantic-color-background-control-default);--wcs-native-select-border-color-default:var(--wcs-semantic-color-border-primary);--wcs-native-select-border-color-disabled:var(--wcs-semantic-color-border-disabled);--wcs-native-select-border-color-focus:var(--wcs-semantic-color-border-control-focus);--wcs-native-select-border-color-error:var(--wcs-semantic-color-border-critical);--wcs-native-select-border-style-default:solid;--wcs-native-select-border-style-focus:var(--wcs-semantic-border-style-focus-control);--wcs-native-select-border-width:var(--wcs-semantic-border-width-default);--wcs-native-select-border-width-focus:var(--wcs-semantic-border-width-large);--wcs-native-select-value-color:var(--wcs-semantic-color-text-primary);--wcs-native-select-value-font-weight:var(--wcs-semantic-font-weight-medium);--wcs-native-select-value-font-style:normal;--wcs-native-select-internal-padding-horizontal:var(--wcs-native-select-padding-horizontal-m);--wcs-native-select-padding-horizontal-m:var(--wcs-semantic-spacing-large);--wcs-native-select-padding-horizontal-l:var(--wcs-semantic-spacing-large);--wcs-native-select-arrow-color:var(--wcs-semantic-color-foreground-brand);--wcs-native-select-arrow-color-disabled:var(--wcs-semantic-color-foreground-disabled);--wcs-native-select-text-color-disabled:var(--wcs-semantic-color-text-disabled);--wcs-native-select-placeholder-color:var(--wcs-semantic-color-text-tertiary);--wcs-native-select-placeholder-font-weight:var(--wcs-semantic-font-weight-roman);--wcs-native-select-placeholder-font-style:var(--wcs-semantic-font-style-control-placeholder);--wcs-native-select-option-color:var(--wcs-semantic-color-text-primary);--wcs-native-select-option-font-style:normal;--wcs-native-select-option-selected-color:var(--wcs-semantic-color-text-primary)}::slotted(select){box-sizing:border-box;-moz-appearance:none !important;-webkit-appearance:none !important;appearance:none !important;background-color:var(--wcs-native-select-background-color);color:var(--wcs-native-select-value-color);border-radius:var(--wcs-native-select-border-radius);border:none;outline:var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-default);outline-offset:calc(var(--wcs-native-select-border-width) * -1);user-select:none;cursor:pointer;line-height:var(--wcs-native-select-line-height);font-size:inherit;opacity:1;max-width:100%;flex-grow:1;padding-right:calc(var(--wcs-native-select-internal-padding-horizontal) + 24px);padding-left:var(--wcs-native-select-internal-padding-horizontal)}::slotted(select:disabled){cursor:not-allowed;color:var(--wcs-native-select-text-color-disabled);outline:var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-disabled);--wcs-native-select-background-color:var(--wcs-semantic-color-background-control-disabled);--wcs-native-select-value-color:var(--wcs-native-select-text-color-disabled)}::slotted(select[aria-invalid=true]){outline-style:var(--wcs-native-select-border-style-default);outline-color:var(--wcs-native-select-border-color-error) !important;outline-offset:calc(var(--wcs-native-select-border-width) * -1)}:host([data-disabled]) .select-wrapper .arrow-container .arrow{fill:var(--wcs-native-select-arrow-color-disabled)}:host,:host([data-size=m]){font-size:var(--wcs-native-select-font-size-m);--wcs-native-select-internal-padding-horizontal:var(--wcs-native-select-padding-horizontal-m)}:host ::slotted(select),:host([data-size=m]) ::slotted(select){height:var(--wcs-native-select-size-m)}:host([data-size=l]){font-size:var(--wcs-native-select-font-size-l);--wcs-native-select-internal-padding-horizontal:var(--wcs-native-select-padding-horizontal-l)}:host([data-size=l]) ::slotted(select){height:var(--wcs-native-select-size-l)}::slotted(select:focus-visible){outline:var(--wcs-native-select-border-style-focus) var(--wcs-native-select-border-width-focus) var(--wcs-native-select-border-color-focus);outline-offset:calc(var(--wcs-native-select-border-width-focus) * -1)}.select-wrapper{position:relative;display:flex;flex-wrap:nowrap}svg{flex-shrink:0}.arrow{fill:var(--wcs-native-select-arrow-color)}.arrow-container{pointer-events:none;display:flex;align-items:center;vertical-align:center;position:absolute;top:0;bottom:0;right:calc(var(--wcs-native-select-internal-padding-horizontal) - 4px);margin:auto 0}";
5
5
  const WcsNativeSelectStyle0 = nativeSelectCss;
6
6
 
7
7
  const NativeSelect = class {
@@ -120,7 +120,7 @@ const NativeSelect = class {
120
120
  this._updateStyles();
121
121
  }
122
122
  render() {
123
- return (h(Host, { key: '73d21d77f3b725f2867f447f9b891a16a26c842f', class: `${this.expanded ? 'expanded' : ''}`, "data-disabled": this.disabled, "data-size": this.size }, h("div", { key: '1d138a4f201b3772dd2f985e01941d2ad60536ee', class: "select-wrapper" }, h("slot", { key: '3b420677784de42d79acd852af58d577de12834e' }), h("div", { key: 'e4562159d84b7d94d942be2f7e5b716ed3e4f23f', class: "arrow-container" }, h(SelectArrow, { key: '7cf362081f043af30f8f62ba8615e821ac3c6511', up: this.expanded })))));
123
+ return (h(Host, { key: 'dedd08d93118cc5323b6d2062577275504972b12', class: `${this.expanded ? 'expanded' : ''}`, "data-disabled": this.disabled, "data-size": this.size }, h("div", { key: 'bd211e20d0ab314767729ab54611c3d28fb8cca7', class: "select-wrapper" }, h("slot", { key: 'b0e58a954d0212c19a05395065ad5ed76efa9f39' }), h("div", { key: '5f70166ee1756180982a43151b9762e1cfec51d4', class: "arrow-container" }, h(SelectArrow, { key: 'ed256e18a87ab7cf17af6b5226ee6f10779d5bb1', up: this.expanded })))));
124
124
  }
125
125
  get el() { return getElement(this); }
126
126
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"wcs-native-select.entry.js","mappings":"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","names":[],"sources":["src/components/native-select/native-select.scss?tag=wcs-native-select&encapsulation=shadow","src/components/native-select/native-select.tsx"],"sourcesContent":[":host {\n --wcs-native-select-line-height: var(--wcs-semantic-font-line-height-large);\n\n --wcs-native-select-size-m: var(--wcs-semantic-size-m);\n --wcs-native-select-font-size-m: var(--wcs-semantic-font-size-m);\n --wcs-native-select-size-l: var(--wcs-semantic-size-l);\n --wcs-native-select-font-size-l: var(--wcs-semantic-font-size-l);\n\n --wcs-native-select-border-radius: var(--wcs-semantic-border-radius-base);\n --wcs-native-select-background-color: var(--wcs-semantic-color-background-control-default);\n\n --wcs-native-select-border-color-default: var(--wcs-semantic-color-border-primary);\n --wcs-native-select-border-color-disabled: var(--wcs-semantic-color-border-disabled);\n --wcs-native-select-border-color-focus: var(--wcs-semantic-color-border-control-focus);\n --wcs-native-select-border-color-error: var(--wcs-semantic-color-border-critical);\n\n --wcs-native-select-border-style-default: solid;\n --wcs-native-select-border-style-focus: var(--wcs-semantic-border-style-focus-control);\n\n --wcs-native-select-border-width: var(--wcs-semantic-border-width-default);\n --wcs-native-select-border-width-focus: var(--wcs-semantic-border-width-large);\n\n --wcs-native-select-value-color: var(--wcs-semantic-color-text-primary);\n --wcs-native-select-value-font-weight: var(--wcs-semantic-font-weight-medium);\n --wcs-native-select-value-font-style: normal; // ⚠️ UPDATE IN JS, IF REFACTOR THE NAME REFACTOR IN THE JS CODE\n\n --wcs-native-select-internal-padding-horizontal: var(--wcs-native-select-padding-horizontal-m);\n --wcs-native-select-padding-horizontal-m: var(--wcs-semantic-spacing-large);\n --wcs-native-select-padding-horizontal-l: var(--wcs-semantic-spacing-large);\n\n --wcs-native-select-arrow-color: var(--wcs-semantic-color-foreground-brand);\n --wcs-native-select-arrow-color-disabled: var(--wcs-semantic-color-foreground-disabled);\n\n --wcs-native-select-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n\n --wcs-native-select-placeholder-color: var(--wcs-semantic-color-text-tertiary);\n --wcs-native-select-placeholder-font-weight: var(--wcs-semantic-font-weight-roman);\n --wcs-native-select-placeholder-font-style: var(--wcs-semantic-font-style-control-placeholder);\n\n --wcs-native-select-option-color: var(--wcs-semantic-color-text-primary);\n --wcs-native-select-option-font-style: normal;\n\n --wcs-native-select-option-selected-color: var(--wcs-semantic-color-text-primary);\n}\n\n::slotted(select) {\n box-sizing: border-box;\n -moz-appearance:none !important;\n -webkit-appearance: none !important;\n appearance: none !important;\n\n background-color: var(--wcs-native-select-background-color);\n\n color: var(--wcs-native-select-value-color);\n\n border-radius: var(--wcs-native-select-border-radius);\n border: none;\n\n outline: var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-default);\n outline-offset: calc(var(--wcs-native-select-border-width) * -1);\n user-select: none;\n cursor: pointer;\n line-height: var(--wcs-native-select-line-height);\n font-size: inherit;\n opacity: 1; // user agent set 0.7 opacity on select by default when disabled (https://github.com/tailwindlabs/tailwindcss/discussions/11792#discussioncomment-6696015)\n\n max-width: 100%;\n flex-grow: 1;\n padding-right: calc(var(--wcs-native-select-internal-padding-horizontal) + 24px); // To not let text overflow on arrow icon, we add 24px of padding\n padding-left: var(--wcs-native-select-internal-padding-horizontal);\n}\n\n::slotted(select:disabled) {\n cursor: not-allowed;\n color: var(--wcs-native-select-text-color-disabled);\n outline: var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-disabled);\n --wcs-native-select-background-color: var(--wcs-semantic-color-background-control-disabled);\n --wcs-native-select-value-color: var(--wcs-native-select-text-color-disabled);\n}\n\n::slotted(select[aria-invalid=true]) {\n outline-style: var(--wcs-native-select-border-style-default);\n outline-color: var(--wcs-native-select-border-color-error) !important;\n outline-offset: calc(var(--wcs-native-select-border-width) * -1);\n}\n\n:host([data-disabled]) {\n .select-wrapper {\n .arrow-container {\n .arrow {\n fill: var(--wcs-native-select-arrow-color-disabled);\n }\n }\n }\n}\n\n:host([data-size=m]) {\n font-size: var(--wcs-native-select-font-size-m);\n --wcs-native-select-internal-padding-horizontal: var(--wcs-native-select-padding-horizontal-m);\n\n ::slotted(select) {\n height: var(--wcs-native-select-size-m);\n }\n}\n\n:host([data-size=l]) {\n font-size: var(--wcs-native-select-font-size-l);\n --wcs-native-select-internal-padding-horizontal: var(--wcs-native-select-padding-horizontal-l);\n\n ::slotted(select) {\n height: var(--wcs-native-select-size-l);\n }\n}\n\n::slotted(select:focus-visible) {\n outline: var(--wcs-native-select-border-style-focus) var(--wcs-native-select-border-width-focus) var(--wcs-native-select-border-color-focus);\n outline-offset: calc(var(--wcs-native-select-border-width-focus) * -1);\n}\n\n.select-wrapper {\n position: relative;\n\n display: flex;\n flex-wrap: nowrap;\n}\n\n// So the arrow on the right doesn't shrink when text overflows.\nsvg {\n flex-shrink: 0;\n}\n\n.arrow {\n fill: var(--wcs-native-select-arrow-color);\n}\n\n.arrow-container {\n pointer-events: none;\n display: flex;\n align-items: center;\n vertical-align: center;\n\n position: absolute;\n top: 0;\n bottom: 0;\n right: calc(var(--wcs-native-select-internal-padding-horizontal) - 4px); // 4px is the blank space inside the arrow svg on the right\n margin: auto 0;\n}\n","import { Component, h, ComponentInterface, State, Prop, Host, Element, Method, Watch } from '@stencil/core';\n\nimport { SelectArrow } from '../select/select-arrow';\nimport { WcsNativeSelectSize } from './native-select-interface';\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\n/**\n * The `wcs-native-select` component is designed to accept a native `<select>` element as a slotted child. This choice\n * allows developers to bind the `<select>` element using the framework of their choice, without the need to re-expose all the\n * properties of the `<select>` and `<option>` elements in this component.\n *\n * The component wraps the native `<select>` element and provides custom styles and behavior, while preserving the native\n * functionality and accessibility.\n *\n * ### ✅ Guidance\n *\n * - To have a placeholder, you must have an option as child which has `selected` attribute and `disabled`\n * attribute. You can add the `hidden` attribute to don't show the placeholder option in the options overlay.\n *\n * ### Example usage\n *\n * ```html\n * <wcs-native-select>\n * <select>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * <option value=\"option3\">Option 3</option>\n * </select>\n * </wcs-native-select>\n * ```\n *\n * ### Note\n * - We did not find a way to detect when the select is reset, if you want to apply the placeholder style when the\n * select is reset, you have to call the `updateStyles()` method manually.\n * - It is strongly recommended to use native-select when you don't have to support the multi-selection feature\n * - Use a native-select instead of a wcs-select if your application is mainly on mobile / tablet. The native behavior of the device will be used.\n *\n * @cssprop --wcs-native-select-line-height - Line height of the select\n * \n * @cssprop --wcs-native-select-size-m - Height of the select when size is 'm'\n * @cssprop --wcs-native-select-font-size-m - Font size of the select when size is 'm'\n * @cssprop --wcs-native-select-size-l - Height of the select when size is 'l'\n * @cssprop --wcs-native-select-font-size-l - Font size of the select when size is 'l'\n * \n * @cssprop --wcs-native-select-border-radius - Border radius of the select\n * \n * @cssprop --wcs-native-select-background-color - Background color of the select\n * \n * @cssprop --wcs-native-select-border-color-default - Border color of the select when not focused\n * @cssprop --wcs-native-select-border-color-disabled - Border color of the select when disabled\n * @cssprop --wcs-native-select-border-color-focus - Border color of the select when focused\n * @cssprop --wcs-native-select-border-color-error - Border color of the select when in error state\n * \n * @cssprop --wcs-native-select-border-style-default - Border style of the select when not focused\n * @cssprop --wcs-native-select-border-style-focus - Border style of the select when focused\n * \n * @cssprop --wcs-native-select-border-width - Border width of the select when not focused\n * @cssprop --wcs-native-select-border-width-focus - Border width of the select when focused\n * \n * @cssprop --wcs-native-select-value-color - Color of the selected value\n * @cssprop --wcs-native-select-value-font-weight - Font weight of the selected value\n * @cssprop --wcs-native-select-value-font-style - Font style of the selected value\n * \n * @cssprop --wcs-native-select-padding-horizontal-m - Padding horizontal of the select when size is 'm'\n * @cssprop --wcs-native-select-padding-horizontal-l - Padding horizontal of the select when size is 'l'\n * \n * @cssprop --wcs-native-select-arrow-color - Color of the select arrow\n * @cssprop --wcs-native-select-arrow-color-disabled - Color of the select arrow when the select is disabled\n * \n * @cssprop --wcs-native-select-text-color-disabled - Color of the text when the select is disabled\n *\n * @cssprop --wcs-native-select-placeholder-color - Color of the placeholder\n * @cssprop --wcs-native-select-placeholder-font-weight - Font weight of the placeholder\n * @cssprop --wcs-native-select-placeholder-font-style - Font style of the placeholder\n *\n * @cssprop --wcs-native-select-option-color - Text color of the options\n * @cssprop --wcs-native-select-option-font-style - Font style of the options\n * @cssprop --wcs-native-select-option-selected-color - Text color of the selected option\n *\n * \n */\n@Component({\n tag: 'wcs-native-select',\n styleUrl: 'native-select.scss',\n shadow: true\n})\nexport class NativeSelect implements ComponentInterface, MutableAriaAttribute {\n /**\n * The `size` property controls the size of the slotted `select` element by adjusting its padding.\n * There are two possible size options:\n * - 'm': medium size\n * - 'l': large size\n *\n * The default value is 'm'.\n */\n @Prop({reflect: true}) size: WcsNativeSelectSize = 'm';\n /**\n * If `true`, the user must fill in a value before submitting a form.\n * It is propagated to the slotted select element\n */\n @Prop() required = false;\n \n @Element() private el!: HTMLWcsNativeSelectElement;\n\n @State() private expanded: boolean = false;\n\n @State() private disabled: boolean;\n private selectElement: HTMLSelectElement;\n\n private observer: MutationObserver;\n private readonly SLOTTED_SELECT_TRACKED_ATTRIBUTES_LIST = ['disabled'];\n\n @Watch('required')\n requiredChanged(newValue: boolean, oldValue: boolean) {\n if(newValue !== oldValue) {\n if(!this.selectElement) return;\n this.selectElement.required = this.required;\n }\n }\n \n componentWillLoad() {\n this.selectElement = this.el.querySelector('select');\n if (!this.selectElement) throw new Error(\"wcs-native-select must be used with a native slotted select, please refer to the documentation.\");\n\n this.onSelectedOptionChange();\n\n /**\n * We use an event listener to apply the default style to the select when user chose an active option\n */\n this.selectElement.addEventListener('change', () => {\n this.onSelectedOptionChange();\n });\n\n this.observer = new MutationObserver(mutations => {\n const hasSpiedAttrMutation = mutations.filter(m => this.SLOTTED_SELECT_TRACKED_ATTRIBUTES_LIST.includes(m.attributeName)).length > 0;\n if (hasSpiedAttrMutation) {\n this.updateHostAttributeWithSlottedSelect();\n }\n\n // A workaround to detect when the select is reset by using a class change on the select element. For example\n // angular add/remove ng-pristine and ng-dirty classes on the form controls when the form is reset.\n // Not the best solution but it works since we cannot detect the reset event on the native select element.\n if (mutations.filter(m => m.attributeName === 'class').length > 0) {\n this._updateStyles();\n }\n });\n this.updateHostAttributeWithSlottedSelect();\n this.observer.observe(this.selectElement, {attributes: true});\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n if(!this.selectElement) return;\n this.selectElement.setAttribute(attr, value);\n }\n\n private onSelectedOptionChange(): void {\n this._updateStyles();\n }\n\n private _updateStyles() {\n if (this.isPlaceholderOptionSelected()) {\n this.applyPlaceholderStylesOnNativeSlottedSelectElement();\n } else {\n this.applySelectedOptionStylesOnNativeSlottedSelectElement();\n }\n }\n\n private isPlaceholderOptionSelected() {\n return Array.from(this.selectElement.options).filter(o => o.selected)[0]?.disabled == true;\n }\n\n /**\n * This method should always unset all styles modified by the `applyPlaceholderStylesOnNativeSlottedSelectElement()`\n * @private\n */\n private applySelectedOptionStylesOnNativeSlottedSelectElement() {\n this.selectElement.style.color = \"var(--wcs-native-select-value-color)\";\n this.selectElement.style.fontStyle = \"var(--wcs-native-select-value-font-style)\";\n this.selectElement.style.fontWeight = \"var(--wcs-native-select-value-font-weight)\";\n Array.from(this.selectElement.options).forEach(option => {\n option.style.fontStyle = \"var(--wcs-native-select-option-font-style)\";\n if (!option.disabled) {\n option.style.color = \"var(--wcs-native-select-option-color)\";\n }\n });\n }\n\n /**\n * This method apply styles when the placeholder is shown.\n *\n * We use javascript because we cannot achieve that behaviour in pure css when the native select is not required\n * @private\n */\n private applyPlaceholderStylesOnNativeSlottedSelectElement() {\n this.selectElement.style.color = \"var(--wcs-native-select-placeholder-color)\";\n this.selectElement.style.fontWeight = \"var(--wcs-native-select-placeholder-font-weight)\";\n this.selectElement.style.fontStyle = \"var(--wcs-native-select-placeholder-font-style)\";\n Array.from(this.selectElement.options).forEach(option => {\n option.style.fontStyle = \"var(--wcs-native-select-option-font-style)\";\n if (!option.disabled) {\n option.style.color = \"var(--wcs-native-select-option-color)\";\n }\n });\n }\n\n private updateHostAttributeWithSlottedSelect() {\n this.disabled = this.selectElement?.hasAttribute('disabled');\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n this.selectElement?.removeEventListener(\"change\", () => {\n this.onSelectedOptionChange();\n });\n }\n\n /**\n * Use this method to force the component to update its styles. It can be useful when the select is reset (with a placeholder).\n */\n @Method()\n async updateStyles() {\n // Note : we try to automatically detect if the select is reset with the onreset event and with a mutation\n // observer on the select element. But it seems that the onreset event is not fired when the select is reset.\n // and the mutation observer is not fired when the select is reset with the reset() method on the form.\n // So we have to let the user call this method manually when he reset the select.\n this._updateStyles();\n }\n\n render() {\n return (\n <Host class={`${this.expanded ? 'expanded' : ''}`} data-disabled={this.disabled} data-size={this.size}>\n <div class=\"select-wrapper\">\n <slot></slot>\n <div class=\"arrow-container\">\n <SelectArrow up={this.expanded}></SelectArrow>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"wcs-native-select.entry.js","mappings":"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","names":[],"sources":["src/components/native-select/native-select.scss?tag=wcs-native-select&encapsulation=shadow","src/components/native-select/native-select.tsx"],"sourcesContent":[":host {\n --wcs-native-select-line-height: var(--wcs-semantic-font-line-height-large);\n\n --wcs-native-select-size-m: var(--wcs-semantic-size-m);\n --wcs-native-select-font-size-m: var(--wcs-semantic-font-size-m);\n --wcs-native-select-size-l: var(--wcs-semantic-size-l);\n --wcs-native-select-font-size-l: var(--wcs-semantic-font-size-l);\n\n --wcs-native-select-border-radius: var(--wcs-semantic-border-radius-base);\n --wcs-native-select-background-color: var(--wcs-semantic-color-background-control-default);\n\n --wcs-native-select-border-color-default: var(--wcs-semantic-color-border-primary);\n --wcs-native-select-border-color-disabled: var(--wcs-semantic-color-border-disabled);\n --wcs-native-select-border-color-focus: var(--wcs-semantic-color-border-control-focus);\n --wcs-native-select-border-color-error: var(--wcs-semantic-color-border-critical);\n\n --wcs-native-select-border-style-default: solid;\n --wcs-native-select-border-style-focus: var(--wcs-semantic-border-style-focus-control);\n\n --wcs-native-select-border-width: var(--wcs-semantic-border-width-default);\n --wcs-native-select-border-width-focus: var(--wcs-semantic-border-width-large);\n\n --wcs-native-select-value-color: var(--wcs-semantic-color-text-primary);\n --wcs-native-select-value-font-weight: var(--wcs-semantic-font-weight-medium);\n --wcs-native-select-value-font-style: normal; // ⚠️ UPDATE IN JS, IF REFACTOR THE NAME REFACTOR IN THE JS CODE\n\n --wcs-native-select-internal-padding-horizontal: var(--wcs-native-select-padding-horizontal-m);\n --wcs-native-select-padding-horizontal-m: var(--wcs-semantic-spacing-large);\n --wcs-native-select-padding-horizontal-l: var(--wcs-semantic-spacing-large);\n\n --wcs-native-select-arrow-color: var(--wcs-semantic-color-foreground-brand);\n --wcs-native-select-arrow-color-disabled: var(--wcs-semantic-color-foreground-disabled);\n\n --wcs-native-select-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n\n --wcs-native-select-placeholder-color: var(--wcs-semantic-color-text-tertiary);\n --wcs-native-select-placeholder-font-weight: var(--wcs-semantic-font-weight-roman);\n --wcs-native-select-placeholder-font-style: var(--wcs-semantic-font-style-control-placeholder);\n\n --wcs-native-select-option-color: var(--wcs-semantic-color-text-primary);\n --wcs-native-select-option-font-style: normal;\n\n --wcs-native-select-option-selected-color: var(--wcs-semantic-color-text-primary);\n}\n\n::slotted(select) {\n box-sizing: border-box;\n -moz-appearance:none !important;\n -webkit-appearance: none !important;\n appearance: none !important;\n\n background-color: var(--wcs-native-select-background-color);\n\n color: var(--wcs-native-select-value-color);\n\n border-radius: var(--wcs-native-select-border-radius);\n border: none;\n\n outline: var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-default);\n outline-offset: calc(var(--wcs-native-select-border-width) * -1);\n user-select: none;\n cursor: pointer;\n line-height: var(--wcs-native-select-line-height);\n font-size: inherit;\n opacity: 1; // user agent set 0.7 opacity on select by default when disabled (https://github.com/tailwindlabs/tailwindcss/discussions/11792#discussioncomment-6696015)\n\n max-width: 100%;\n flex-grow: 1;\n padding-right: calc(var(--wcs-native-select-internal-padding-horizontal) + 24px); // To not let text overflow on arrow icon, we add 24px of padding\n padding-left: var(--wcs-native-select-internal-padding-horizontal);\n}\n\n::slotted(select:disabled) {\n cursor: not-allowed;\n color: var(--wcs-native-select-text-color-disabled);\n outline: var(--wcs-native-select-border-style-default) var(--wcs-native-select-border-width) var(--wcs-native-select-border-color-disabled);\n --wcs-native-select-background-color: var(--wcs-semantic-color-background-control-disabled);\n --wcs-native-select-value-color: var(--wcs-native-select-text-color-disabled);\n}\n\n::slotted(select[aria-invalid=true]) {\n outline-style: var(--wcs-native-select-border-style-default);\n outline-color: var(--wcs-native-select-border-color-error) !important;\n outline-offset: calc(var(--wcs-native-select-border-width) * -1);\n}\n\n:host([data-disabled]) {\n .select-wrapper {\n .arrow-container {\n .arrow {\n fill: var(--wcs-native-select-arrow-color-disabled);\n }\n }\n }\n}\n\n:host, :host([data-size=m]) { // Default\n font-size: var(--wcs-native-select-font-size-m);\n --wcs-native-select-internal-padding-horizontal: var(--wcs-native-select-padding-horizontal-m);\n\n ::slotted(select) {\n height: var(--wcs-native-select-size-m);\n }\n}\n\n:host([data-size=l]) {\n font-size: var(--wcs-native-select-font-size-l);\n --wcs-native-select-internal-padding-horizontal: var(--wcs-native-select-padding-horizontal-l);\n\n ::slotted(select) {\n height: var(--wcs-native-select-size-l);\n }\n}\n\n::slotted(select:focus-visible) {\n outline: var(--wcs-native-select-border-style-focus) var(--wcs-native-select-border-width-focus) var(--wcs-native-select-border-color-focus);\n outline-offset: calc(var(--wcs-native-select-border-width-focus) * -1);\n}\n\n.select-wrapper {\n position: relative;\n\n display: flex;\n flex-wrap: nowrap;\n}\n\n// So the arrow on the right doesn't shrink when text overflows.\nsvg {\n flex-shrink: 0;\n}\n\n.arrow {\n fill: var(--wcs-native-select-arrow-color);\n}\n\n.arrow-container {\n pointer-events: none;\n display: flex;\n align-items: center;\n vertical-align: center;\n\n position: absolute;\n top: 0;\n bottom: 0;\n right: calc(var(--wcs-native-select-internal-padding-horizontal) - 4px); // 4px is the blank space inside the arrow svg on the right\n margin: auto 0;\n}\n","import { Component, h, ComponentInterface, State, Prop, Host, Element, Method, Watch } from '@stencil/core';\n\nimport { SelectArrow } from '../select/select-arrow';\nimport { WcsNativeSelectSize } from './native-select-interface';\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\n/**\n * The `wcs-native-select` component is designed to accept a native `<select>` element as a slotted child. This choice\n * allows developers to bind the `<select>` element using the framework of their choice, without the need to re-expose all the\n * properties of the `<select>` and `<option>` elements in this component.\n *\n * The component wraps the native `<select>` element and provides custom styles and behavior, while preserving the native\n * functionality and accessibility.\n *\n * ### ✅ Guidance\n *\n * - To have a placeholder, you must have an option as child which has `selected` attribute and `disabled`\n * attribute. You can add the `hidden` attribute to don't show the placeholder option in the options overlay.\n *\n * ### Example usage\n *\n * ```html\n * <wcs-native-select>\n * <select>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * <option value=\"option3\">Option 3</option>\n * </select>\n * </wcs-native-select>\n * ```\n *\n * ### Note\n * - We did not find a way to detect when the select is reset, if you want to apply the placeholder style when the\n * select is reset, you have to call the `updateStyles()` method manually.\n * - It is strongly recommended to use native-select when you don't have to support the multi-selection feature\n * - Use a native-select instead of a wcs-select if your application is mainly on mobile / tablet. The native behavior of the device will be used.\n *\n * @cssprop --wcs-native-select-line-height - Line height of the select\n * \n * @cssprop --wcs-native-select-size-m - Height of the select when size is 'm'\n * @cssprop --wcs-native-select-font-size-m - Font size of the select when size is 'm'\n * @cssprop --wcs-native-select-size-l - Height of the select when size is 'l'\n * @cssprop --wcs-native-select-font-size-l - Font size of the select when size is 'l'\n * \n * @cssprop --wcs-native-select-border-radius - Border radius of the select\n * \n * @cssprop --wcs-native-select-background-color - Background color of the select\n * \n * @cssprop --wcs-native-select-border-color-default - Border color of the select when not focused\n * @cssprop --wcs-native-select-border-color-disabled - Border color of the select when disabled\n * @cssprop --wcs-native-select-border-color-focus - Border color of the select when focused\n * @cssprop --wcs-native-select-border-color-error - Border color of the select when in error state\n * \n * @cssprop --wcs-native-select-border-style-default - Border style of the select when not focused\n * @cssprop --wcs-native-select-border-style-focus - Border style of the select when focused\n * \n * @cssprop --wcs-native-select-border-width - Border width of the select when not focused\n * @cssprop --wcs-native-select-border-width-focus - Border width of the select when focused\n * \n * @cssprop --wcs-native-select-value-color - Color of the selected value\n * @cssprop --wcs-native-select-value-font-weight - Font weight of the selected value\n * @cssprop --wcs-native-select-value-font-style - Font style of the selected value\n * \n * @cssprop --wcs-native-select-padding-horizontal-m - Padding horizontal of the select when size is 'm'\n * @cssprop --wcs-native-select-padding-horizontal-l - Padding horizontal of the select when size is 'l'\n * \n * @cssprop --wcs-native-select-arrow-color - Color of the select arrow\n * @cssprop --wcs-native-select-arrow-color-disabled - Color of the select arrow when the select is disabled\n * \n * @cssprop --wcs-native-select-text-color-disabled - Color of the text when the select is disabled\n *\n * @cssprop --wcs-native-select-placeholder-color - Color of the placeholder\n * @cssprop --wcs-native-select-placeholder-font-weight - Font weight of the placeholder\n * @cssprop --wcs-native-select-placeholder-font-style - Font style of the placeholder\n *\n * @cssprop --wcs-native-select-option-color - Text color of the options\n * @cssprop --wcs-native-select-option-font-style - Font style of the options\n * @cssprop --wcs-native-select-option-selected-color - Text color of the selected option\n *\n * \n */\n@Component({\n tag: 'wcs-native-select',\n styleUrl: 'native-select.scss',\n shadow: true\n})\nexport class NativeSelect implements ComponentInterface, MutableAriaAttribute {\n /**\n * The `size` property controls the size of the slotted `select` element by adjusting its padding.\n * There are two possible size options:\n * - 'm': medium size\n * - 'l': large size\n *\n * The default value is 'm'.\n */\n @Prop({reflect: true}) size: WcsNativeSelectSize = 'm';\n /**\n * If `true`, the user must fill in a value before submitting a form.\n * It is propagated to the slotted select element\n */\n @Prop({ reflect: true }) required: boolean = false;\n \n @Element() private el!: HTMLWcsNativeSelectElement;\n\n @State() private expanded: boolean = false;\n\n @State() private disabled: boolean;\n private selectElement: HTMLSelectElement;\n\n private observer: MutationObserver;\n private readonly SLOTTED_SELECT_TRACKED_ATTRIBUTES_LIST = ['disabled'];\n\n @Watch('required')\n requiredChanged(newValue: boolean, oldValue: boolean) {\n if(newValue !== oldValue) {\n if(!this.selectElement) return;\n this.selectElement.required = this.required;\n }\n }\n \n componentWillLoad() {\n this.selectElement = this.el.querySelector('select');\n if (!this.selectElement) throw new Error(\"wcs-native-select must be used with a native slotted select, please refer to the documentation.\");\n\n this.onSelectedOptionChange();\n\n /**\n * We use an event listener to apply the default style to the select when user chose an active option\n */\n this.selectElement.addEventListener('change', () => {\n this.onSelectedOptionChange();\n });\n\n this.observer = new MutationObserver(mutations => {\n const hasSpiedAttrMutation = mutations.filter(m => this.SLOTTED_SELECT_TRACKED_ATTRIBUTES_LIST.includes(m.attributeName)).length > 0;\n if (hasSpiedAttrMutation) {\n this.updateHostAttributeWithSlottedSelect();\n }\n\n // A workaround to detect when the select is reset by using a class change on the select element. For example\n // angular add/remove ng-pristine and ng-dirty classes on the form controls when the form is reset.\n // Not the best solution but it works since we cannot detect the reset event on the native select element.\n if (mutations.filter(m => m.attributeName === 'class').length > 0) {\n this._updateStyles();\n }\n });\n this.updateHostAttributeWithSlottedSelect();\n this.observer.observe(this.selectElement, {attributes: true});\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n if(!this.selectElement) return;\n this.selectElement.setAttribute(attr, value);\n }\n\n private onSelectedOptionChange(): void {\n this._updateStyles();\n }\n\n private _updateStyles() {\n if (this.isPlaceholderOptionSelected()) {\n this.applyPlaceholderStylesOnNativeSlottedSelectElement();\n } else {\n this.applySelectedOptionStylesOnNativeSlottedSelectElement();\n }\n }\n\n private isPlaceholderOptionSelected() {\n return Array.from(this.selectElement.options).filter(o => o.selected)[0]?.disabled == true;\n }\n\n /**\n * This method should always unset all styles modified by the `applyPlaceholderStylesOnNativeSlottedSelectElement()`\n * @private\n */\n private applySelectedOptionStylesOnNativeSlottedSelectElement() {\n this.selectElement.style.color = \"var(--wcs-native-select-value-color)\";\n this.selectElement.style.fontStyle = \"var(--wcs-native-select-value-font-style)\";\n this.selectElement.style.fontWeight = \"var(--wcs-native-select-value-font-weight)\";\n Array.from(this.selectElement.options).forEach(option => {\n option.style.fontStyle = \"var(--wcs-native-select-option-font-style)\";\n if (!option.disabled) {\n option.style.color = \"var(--wcs-native-select-option-color)\";\n }\n });\n }\n\n /**\n * This method apply styles when the placeholder is shown.\n *\n * We use javascript because we cannot achieve that behaviour in pure css when the native select is not required\n * @private\n */\n private applyPlaceholderStylesOnNativeSlottedSelectElement() {\n this.selectElement.style.color = \"var(--wcs-native-select-placeholder-color)\";\n this.selectElement.style.fontWeight = \"var(--wcs-native-select-placeholder-font-weight)\";\n this.selectElement.style.fontStyle = \"var(--wcs-native-select-placeholder-font-style)\";\n Array.from(this.selectElement.options).forEach(option => {\n option.style.fontStyle = \"var(--wcs-native-select-option-font-style)\";\n if (!option.disabled) {\n option.style.color = \"var(--wcs-native-select-option-color)\";\n }\n });\n }\n\n private updateHostAttributeWithSlottedSelect() {\n this.disabled = this.selectElement?.hasAttribute('disabled');\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n this.selectElement?.removeEventListener(\"change\", () => {\n this.onSelectedOptionChange();\n });\n }\n\n /**\n * Use this method to force the component to update its styles. It can be useful when the select is reset (with a placeholder).\n */\n @Method()\n async updateStyles() {\n // Note : we try to automatically detect if the select is reset with the onreset event and with a mutation\n // observer on the select element. But it seems that the onreset event is not fired when the select is reset.\n // and the mutation observer is not fired when the select is reset with the reset() method on the form.\n // So we have to let the user call this method manually when he reset the select.\n this._updateStyles();\n }\n\n render() {\n return (\n <Host class={`${this.expanded ? 'expanded' : ''}`} data-disabled={this.disabled} data-size={this.size}>\n <div class=\"select-wrapper\">\n <slot></slot>\n <div class=\"arrow-container\">\n <SelectArrow up={this.expanded}></SelectArrow>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -14,7 +14,7 @@ const NavItem = class {
14
14
  }
15
15
  }
16
16
  render() {
17
- return (h(Host, { key: '8a21ba03aacff1aa94ae552a0f76f0e551df6e67', role: "listitem" }, h("slot", { key: '75d250a220a1eaba9cb8dd68adbe267379afb915' })));
17
+ return (h(Host, { key: '79abea50c0964fd39358ecf7ed23030f9096b1fd', role: "listitem" }, h("slot", { key: 'dad7099b9fb08309052b2c35f2bc3a97c40b3ecb' })));
18
18
  }
19
19
  get el() { return getElement(this); }
20
20
  };
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, h, g as getElement } from './index-d9de61ce.js';
2
2
  import { i as inheritAriaAttributes, a as inheritAttributes, s as setOrRemoveAttribute } from './helpers-ece6a2d3.js';
3
3
 
4
- const navCss = ":host{--wcs-nav-background-color:var(--wcs-semantic-color-background-surface-brand);--wcs-nav-width-desktop:calc(12 * var(--wcs-semantic-size-base));--wcs-nav-height-mobile:calc(6 * var(--wcs-semantic-size-base))}nav{background-color:var(--wcs-nav-background-color);display:flex;z-index:1055;flex-direction:column;width:var(--wcs-nav-width-desktop);height:100%}nav div[role=list]{list-style-type:none;display:flex;flex-direction:column;flex-grow:1}@media (max-width: 1199px){nav div[role=list]{flex-direction:row}}@media (max-width: 1199px){nav{flex-direction:row;width:100%;height:var(--wcs-nav-height-mobile)}}@media (max-width: 1199px){::slotted(wcs-nav-item){flex:1}}@media (min-width: 1200px){slot[name=bottom],wcs-nav-item:not([slot=bottom])+wcs-nav-item[slot=bottom]{display:block;margin-top:auto}}";
4
+ const navCss = ":host{--wcs-nav-background-color:var(--wcs-semantic-color-background-surface-brand);--wcs-nav-width-desktop:calc(12 * var(--wcs-semantic-size-base));--wcs-nav-height-mobile:calc(6 * var(--wcs-semantic-size-base))}nav{background-color:var(--wcs-nav-background-color);display:flex;z-index:1055;flex-direction:column;width:var(--wcs-nav-width-desktop);height:100%;overflow:auto;scrollbar-width:thin}nav div[role=list]{list-style-type:none;display:flex;flex-direction:column;flex-grow:1}@media (max-width: 1199px){nav div[role=list]{flex-direction:row}}@media (max-width: 1199px){nav{flex-direction:row;width:100%;height:var(--wcs-nav-height-mobile)}}@media (max-width: 1199px){::slotted(wcs-nav-item){flex:1}}@media (min-width: 1200px){slot[name=bottom],wcs-nav-item:not([slot=bottom])+wcs-nav-item[slot=bottom]{display:block;margin-top:auto}}";
5
5
  const WcsNavStyle0 = navCss;
6
6
 
7
7
  const NAV_ARIA_INHERITED_ATTRS = ['title'];
@@ -17,7 +17,7 @@ const Nav = class {
17
17
  setOrRemoveAttribute(this.nativeNav, attr, value);
18
18
  }
19
19
  render() {
20
- return (h("nav", Object.assign({ key: '010b8847c02ed7e6c9f3112f486279709f75fbb0', role: "navigation", class: "wcs-nav-container", ref: (el) => (this.nativeNav = el) }, this.inheritedAttributes), h("div", { key: '35117f4736ebeedc66db2c883eeb6a9b570fcc25', role: "list" }, h("slot", { key: 'a08aa2b168519ce86b6bfbabe501f38bfc55c62b' }), h("slot", { key: '0f2f00d3bf339128d64cb2b61eb7029d3a0ce035', name: "bottom" }))));
20
+ return (h("nav", Object.assign({ key: '3461a64de9b036b1a970e58a26a70f70772491c8', role: "navigation", class: "wcs-nav-container", ref: (el) => (this.nativeNav = el) }, this.inheritedAttributes), h("div", { key: 'aa68166f70a54e44e78c0fe8a61c224bed4bcb3e', role: "list" }, h("slot", { key: '9e6315dafb2038e8577b2402dae1a646587dbb5f' }), h("slot", { key: '8dcddd80f189c8ade3ceb24cd5e36b8d03083a80', name: "bottom" }))));
21
21
  }
22
22
  get el() { return getElement(this); }
23
23
  };
@@ -1 +1 @@
1
- {"file":"wcs-nav.entry.js","mappings":";;;AAAA,MAAM,MAAM,GAAG,uyBAAuyB,CAAC;AACvzB,qBAAe,MAAM;;ACGrB,MAAM,wBAAwB,GAAG,CAAC,OAAO,CAAC,CAAC;MAgB9B,GAAG;IALhB;;QAQY,wBAAmB,GAAyB,EAAE,CAAC;KA2B1D;IAzBG,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAC1D,CAAC;KACL;IAGD,MAAM,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KACrD;IAED,MAAM;QACF,QACI,0EAAK,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,mBAAmB,EACzB,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,IAC9B,IAAI,CAAC,mBAAmB,GAC7B,4DAAK,IAAI,EAAC,MAAM,IACZ,8DAAO,EACP,6DAAM,IAAI,EAAC,QAAQ,GAAE,CACnB,CACJ,EACR;KACL;;;;;;;","names":[],"sources":["src/components/nav/nav.scss?tag=wcs-nav&encapsulation=shadow","src/components/nav/nav.tsx"],"sourcesContent":["@import '../../style/breakpoints';\n\n:host {\n --wcs-nav-background-color: var(--wcs-semantic-color-background-surface-brand);\n --wcs-nav-width-desktop: calc(12 * var(--wcs-semantic-size-base));\n --wcs-nav-height-mobile: calc(6 * var(--wcs-semantic-size-base));\n}\n\nnav {\n background-color: var(--wcs-nav-background-color);\n display: flex;\n z-index: 1055;\n flex-direction: column;\n width: var(--wcs-nav-width-desktop);\n height: 100%;\n\n div[role=\"list\"] {\n list-style-type: none;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n\n @include for-tablet-landscape-down {\n flex-direction: row;\n }\n }\n\n @include for-tablet-landscape-down {\n flex-direction: row;\n width: 100%;\n height: var(--wcs-nav-height-mobile);\n }\n}\n\n::slotted(wcs-nav-item) {\n @include for-tablet-landscape-down {\n flex: 1;\n }\n}\n\n// Place bottom items at the bottom\nslot[name=bottom],\n// Same for ff < 63\nwcs-nav-item:not([slot=bottom]) + wcs-nav-item[slot=bottom] {\n @include for-desktop-up {\n display: block;\n margin-top: auto;\n }\n}\n","import { Component, ComponentInterface, Element, h, Method } from '@stencil/core';\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\nconst NAV_ARIA_INHERITED_ATTRS = ['title'];\n\n/**\n * The nav component is a container for navigation links to other pages of the website.\n * \n * @slot bottom Bottom part of the nav to put to nav-items at the end\n * \n * @cssprop --wcs-nav-background-color - Background color of the nav\n * @cssprop --wcs-nav-width-desktop - Width of the nav on desktop\n * @cssprop --wcs-nav-height-mobile - Height of the nav on mobile\n */\n@Component({\n tag: 'wcs-nav',\n styleUrl: 'nav.scss',\n shadow: true\n})\nexport class Nav implements ComponentInterface, MutableAriaAttribute {\n @Element() private el!: HTMLWcsProgressBarElement;\n private nativeNav!: HTMLElement;\n private inheritedAttributes: { [k: string]: any } = {};\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, NAV_ARIA_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeNav, attr, value);\n }\n \n render() {\n return (\n <nav role=\"navigation\"\n class=\"wcs-nav-container\"\n ref={(el) => (this.nativeNav = el)}\n {...this.inheritedAttributes}>\n <div role=\"list\">\n <slot/>\n <slot name=\"bottom\"/>\n </div>\n </nav>\n );\n }\n}\n"],"version":3}
1
+ {"file":"wcs-nav.entry.js","mappings":";;;AAAA,MAAM,MAAM,GAAG,00BAA00B,CAAC;AAC11B,qBAAe,MAAM;;ACGrB,MAAM,wBAAwB,GAAG,CAAC,OAAO,CAAC,CAAC;MAgB9B,GAAG;IALhB;;QAQY,wBAAmB,GAAyB,EAAE,CAAC;KA2B1D;IAzBG,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAC1D,CAAC;KACL;IAGD,MAAM,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KACrD;IAED,MAAM;QACF,QACI,0EAAK,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,mBAAmB,EACzB,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,IAC9B,IAAI,CAAC,mBAAmB,GAC7B,4DAAK,IAAI,EAAC,MAAM,IACZ,8DAAO,EACP,6DAAM,IAAI,EAAC,QAAQ,GAAE,CACnB,CACJ,EACR;KACL;;;;;;;","names":[],"sources":["src/components/nav/nav.scss?tag=wcs-nav&encapsulation=shadow","src/components/nav/nav.tsx"],"sourcesContent":["@import '../../style/breakpoints';\n\n:host {\n --wcs-nav-background-color: var(--wcs-semantic-color-background-surface-brand);\n --wcs-nav-width-desktop: calc(12 * var(--wcs-semantic-size-base));\n --wcs-nav-height-mobile: calc(6 * var(--wcs-semantic-size-base));\n}\n\nnav {\n background-color: var(--wcs-nav-background-color);\n display: flex;\n z-index: 1055;\n flex-direction: column;\n width: var(--wcs-nav-width-desktop);\n height: 100%;\n overflow: auto;\n scrollbar-width: thin;\n\n div[role=\"list\"] {\n list-style-type: none;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n\n @include for-tablet-landscape-down {\n flex-direction: row;\n }\n }\n\n @include for-tablet-landscape-down {\n flex-direction: row;\n width: 100%;\n height: var(--wcs-nav-height-mobile);\n }\n}\n\n::slotted(wcs-nav-item) {\n @include for-tablet-landscape-down {\n flex: 1;\n }\n}\n\n// Place bottom items at the bottom\nslot[name=bottom],\n// Same for ff < 63\nwcs-nav-item:not([slot=bottom]) + wcs-nav-item[slot=bottom] {\n @include for-desktop-up {\n display: block;\n margin-top: auto;\n }\n}\n","import { Component, ComponentInterface, Element, h, Method } from '@stencil/core';\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\nconst NAV_ARIA_INHERITED_ATTRS = ['title'];\n\n/**\n * The nav component is a container for navigation links to other pages of the website.\n * \n * @slot bottom Bottom part of the nav to put to nav-items at the end\n * \n * @cssprop --wcs-nav-background-color - Background color of the nav\n * @cssprop --wcs-nav-width-desktop - Width of the nav on desktop\n * @cssprop --wcs-nav-height-mobile - Height of the nav on mobile\n */\n@Component({\n tag: 'wcs-nav',\n styleUrl: 'nav.scss',\n shadow: true\n})\nexport class Nav implements ComponentInterface, MutableAriaAttribute {\n @Element() private el!: HTMLWcsProgressBarElement;\n private nativeNav!: HTMLElement;\n private inheritedAttributes: { [k: string]: any } = {};\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, NAV_ARIA_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeNav, attr, value);\n }\n \n render() {\n return (\n <nav role=\"navigation\"\n class=\"wcs-nav-container\"\n ref={(el) => (this.nativeNav = el)}\n {...this.inheritedAttributes}>\n <div role=\"list\">\n <slot/>\n <slot name=\"bottom\"/>\n </div>\n </nav>\n );\n }\n}\n"],"version":3}
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, h, g as getElement } from './index-d9de61ce.js';
2
2
  import { i as inheritAriaAttributes, a as inheritAttributes, s as setOrRemoveAttribute } from './helpers-ece6a2d3.js';
3
3
 
4
- const progressBarCss = ":host{--wcs-progress-bar-border-radius:var(--wcs-semantic-border-radius-full);--wcs-progress-bar-border-radius-small:var(--wcs-semantic-border-radius-small);--wcs-progress-bar-animation-duration:var(--wcs-semantic-motion-duration-feedback-slower);--wcs-progress-bar-height-m:calc(var(--wcs-semantic-size-m) / 4);--wcs-progress-bar-height-s:calc(var(--wcs-semantic-size-s) / 6);--wcs-progress-bar-background-color:transparent;--wcs-progress-bar-rail-color:var(--wcs-semantic-color-background-surface-tertiary);--wcs-progress-bar-rail-spacing:var(--wcs-semantic-spacing-small);--wcs-progress-bar-gap-s:var(--wcs-semantic-spacing-small);--wcs-progress-bar-gap-m:var(--wcs-semantic-spacing-base);--wcs-progress-bar-indicator-color:var(--wcs-semantic-color-background-surface-brand);--wcs-progress-bar-label-color:var(--wcs-semantic-color-text-primary);--wcs-progress-bar-label-font-size-s:var(--wcs-semantic-font-size-s);--wcs-progress-bar-label-font-size-m:calc(1.5 * var(--wcs-semantic-font-size-m));--wcs-progress-bar-label-font-weight:var(--wcs-semantic-font-weight-medium);--wcs-progress-bar-label-percentage-font-size-s:calc(var(--wcs-semantic-font-size-s) * 0.7);--wcs-progress-bar-label-percentage-font-size-m:calc(var(--wcs-semantic-font-size-m) * 0.7);--wcs-progress-bar-label-top-space:var(--wcs-semantic-spacing-large)}:host([size=s]) .progress{height:var(--wcs-progress-bar-height-s);background-color:var(--wcs-progress-bar-background-color);background-image:none;background-size:auto;border-radius:var(--wcs-progress-bar-border-radius-small)}:host([size=s]) .progress .progress-label{font-size:var(--wcs-progress-bar-label-font-size-s);bottom:calc(100% + var(--wcs-progress-bar-gap-s))}:host([size=s]) .progress .progress-label sup{font-size:var(--wcs-progress-bar-label-percentage-font-size-s)}.progress{display:flex;height:var(--wcs-progress-bar-height-m);color:var(--wcs-progress-bar-label-color);background-color:var(--wcs-progress-bar-background-color);background-image:linear-gradient(90deg, var(--wcs-progress-bar-rail-color), 50%, transparent 50%);background-size:var(--wcs-progress-bar-rail-spacing) var(--wcs-progress-bar-height-m);border-radius:var(--wcs-progress-bar-border-radius)}.progress.has-label{margin-top:var(--wcs-progress-bar-label-top-space)}.progress.value-zero>.progress-bar>.progress-label{right:unset}.progress-bar{position:relative;display:flex;flex-direction:column;justify-content:center;color:var(--wcs-progress-bar-label-color);text-align:center;background-color:var(--wcs-progress-bar-indicator-color);border-radius:var(--wcs-progress-bar-border-radius);transition:width var(--wcs-progress-bar-animation-duration) ease-out}.progress-label{line-height:1;position:absolute;right:0;bottom:calc(100% + var(--wcs-progress-bar-gap-m));display:flex;flex-direction:row;align-items:flex-start;font-size:var(--wcs-progress-bar-label-font-size-m);font-weight:var(--wcs-progress-bar-label-font-weight)}.progress-label sup{font-size:var(--wcs-progress-bar-label-percentage-font-size-m)}";
4
+ const progressBarCss = ":host{--wcs-progress-bar-border-radius:var(--wcs-semantic-border-radius-full);--wcs-progress-bar-border-radius-small:var(--wcs-semantic-border-radius-small);--wcs-internal-progress-bar-animation-duration:var(--wcs-progress-bar-animation-duration, var(--wcs-semantic-motion-duration-feedback-slower));--wcs-progress-bar-height-m:calc(var(--wcs-semantic-size-m) / 4);--wcs-progress-bar-height-s:calc(var(--wcs-semantic-size-s) / 6);--wcs-progress-bar-background-color:transparent;--wcs-progress-bar-rail-color:var(--wcs-semantic-color-background-surface-tertiary);--wcs-progress-bar-rail-spacing:var(--wcs-semantic-spacing-small);--wcs-progress-bar-gap-s:var(--wcs-semantic-spacing-small);--wcs-progress-bar-gap-m:var(--wcs-semantic-spacing-base);--wcs-progress-bar-indicator-color:var(--wcs-semantic-color-background-surface-brand);--wcs-progress-bar-label-color:var(--wcs-semantic-color-text-primary);--wcs-progress-bar-label-font-size-s:var(--wcs-semantic-font-size-s);--wcs-progress-bar-label-font-size-m:calc(1.5 * var(--wcs-semantic-font-size-m));--wcs-progress-bar-label-font-weight:var(--wcs-semantic-font-weight-medium);--wcs-progress-bar-label-percentage-font-size-s:calc(var(--wcs-semantic-font-size-s) * 0.7);--wcs-progress-bar-label-percentage-font-size-m:calc(var(--wcs-semantic-font-size-m) * 0.7);--wcs-progress-bar-label-top-space:var(--wcs-semantic-spacing-large)}:host([size=s]) .progress{height:var(--wcs-progress-bar-height-s);background-color:var(--wcs-progress-bar-background-color);background-image:none;background-size:auto;border-radius:var(--wcs-progress-bar-border-radius-small)}:host([size=s]) .progress .progress-label{font-size:var(--wcs-progress-bar-label-font-size-s);bottom:calc(100% + var(--wcs-progress-bar-gap-s))}:host([size=s]) .progress .progress-label sup{font-size:var(--wcs-progress-bar-label-percentage-font-size-s)}.progress{display:flex;height:var(--wcs-progress-bar-height-m);color:var(--wcs-progress-bar-label-color);background-color:var(--wcs-progress-bar-background-color);background-image:linear-gradient(90deg, var(--wcs-progress-bar-rail-color), 50%, transparent 50%);background-size:var(--wcs-progress-bar-rail-spacing) var(--wcs-progress-bar-height-m);border-radius:var(--wcs-progress-bar-border-radius)}.progress.has-label{margin-top:var(--wcs-progress-bar-label-top-space)}.progress.value-zero>.progress-bar>.progress-label{right:unset}.progress-bar{position:relative;display:flex;flex-direction:column;justify-content:center;color:var(--wcs-progress-bar-label-color);text-align:center;background-color:var(--wcs-progress-bar-indicator-color);border-radius:var(--wcs-progress-bar-border-radius);transition:width var(--wcs-internal-progress-bar-animation-duration) ease-out}.progress-label{line-height:1;position:absolute;right:0;bottom:calc(100% + var(--wcs-progress-bar-gap-m));display:flex;flex-direction:row;align-items:flex-start;font-size:var(--wcs-progress-bar-label-font-size-m);font-weight:var(--wcs-progress-bar-label-font-weight)}.progress-label sup{font-size:var(--wcs-progress-bar-label-percentage-font-size-m)}";
5
5
  const WcsProgressBarStyle0 = progressBarCss;
6
6
 
7
7
  const PROGRESS_BAR_ARIA_INHERITED_ATTRS = ['title'];
@@ -23,8 +23,8 @@ const ProgressBar = class {
23
23
  const style = {
24
24
  width: this.value + '%'
25
25
  };
26
- return (h("div", Object.assign({ key: '9339cb3c4ef89618cb45119495d3601ce2110d3d', class: this.rootClasses(), role: "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "aria-valuenow": this.value, "aria-valuetext": this.value + '%', ref: (el) => (this.nativeProgress = el) }, this.inheritedAttributes), h("div", { key: '8b54ef388bcd4e2bff826a18374c4732f7d0e384', class: "progress-bar", style: style }, this.showLabel &&
27
- h("span", { key: 'f50f5879441f22db9552f6bbaaca3ede6f23a678', class: "progress-label" }, this.value, h("sup", { key: 'b10471901b5d3efc0ae95d3a1de822ead1720b87' }, "%")))));
26
+ return (h("div", Object.assign({ key: '5fe4671aeaaf799d336e38c4bd49f021b4fbb27b', class: this.rootClasses(), role: "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "aria-valuenow": this.value, "aria-valuetext": this.value + '%', ref: (el) => (this.nativeProgress = el) }, this.inheritedAttributes), h("div", { key: '9278d7110c3fed850ddcf1a06ff29a60fb4ebbd8', class: "progress-bar", style: style }, this.showLabel &&
27
+ h("span", { key: 'ac5758b7b685fc08ecf4592b7194666d751c4b87', class: "progress-label" }, this.value, h("sup", { key: '313cec9fb8df686b3affb9a9002e1c6055249f0b' }, "%")))));
28
28
  }
29
29
  rootClasses() {
30
30
  let classes = 'progress';
@@ -1 +1 @@
1
- {"file":"wcs-progress-bar.entry.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,08FAA08F,CAAC;AACl+F,6BAAe,cAAc;;ACK7B,MAAM,iCAAiC,GAAG,CAAC,OAAO,CAAC,CAAC;MA2CvC,WAAW;;;QAIZ,wBAAmB,GAAyB,EAAE,CAAC;oBAOX,GAAG;yBAKlB,KAAK;qBAMV,CAAC;;IAEzB,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,iCAAiC,CAAC,CACnE,CAAC;KACL;IAGD,MAAM,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D;IAED,MAAM;QACF,MAAM,KAAK,GAAG;YACV,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG;SAC1B,CAAC;QAEF,QACI,0EAAK,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,EACzB,IAAI,EAAC,aAAa,mBACJ,GAAG,mBACH,KAAK,mBACJ,IAAI,CAAC,KAAK,oBACT,IAAI,CAAC,KAAK,GAAG,GAAG,EAChC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,IACnC,IAAI,CAAC,mBAAmB,GAC7B,4DAAK,KAAK,EAAC,cAAc,EAAC,KAAK,EAAE,KAAK,IACjC,IAAI,CAAC,SAAS;YACX,6DAAM,KAAK,EAAC,gBAAgB,IACrC,IAAI,CAAC,KAAK,EAAC,kEAAY,CACnB,CAEG,CACJ,EACR;KACL;IAED,WAAW;QACP,IAAI,OAAO,GAAG,UAAU,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,YAAY,CAAC;;QAE5C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,aAAa,CAAC;QAC/C,OAAO,OAAO,CAAC;KAClB;;;;;;;","names":[],"sources":["src/components/progress-bar/progress-bar.scss?tag=wcs-progress-bar&encapsulation=shadow","src/components/progress-bar/progress-bar.tsx"],"sourcesContent":[":host {\n --wcs-progress-bar-border-radius: var(--wcs-semantic-border-radius-full);\n --wcs-progress-bar-border-radius-small: var(--wcs-semantic-border-radius-small);\n --wcs-progress-bar-animation-duration: var(--wcs-semantic-motion-duration-feedback-slower);\n\n --wcs-progress-bar-height-m: calc(var(--wcs-semantic-size-m) / 4);\n --wcs-progress-bar-height-s: calc(var(--wcs-semantic-size-s) / 6);\n --wcs-progress-bar-background-color: transparent;\n\n --wcs-progress-bar-rail-color: var(--wcs-semantic-color-background-surface-tertiary);\n --wcs-progress-bar-rail-spacing: var(--wcs-semantic-spacing-small);\n\n --wcs-progress-bar-gap-s: var(--wcs-semantic-spacing-small);\n --wcs-progress-bar-gap-m: var(--wcs-semantic-spacing-base);\n\n --wcs-progress-bar-indicator-color: var(--wcs-semantic-color-background-surface-brand);\n --wcs-progress-bar-label-color: var(--wcs-semantic-color-text-primary);\n --wcs-progress-bar-label-font-size-s: var(--wcs-semantic-font-size-s);\n --wcs-progress-bar-label-font-size-m: calc(1.5 * var(--wcs-semantic-font-size-m));\n --wcs-progress-bar-label-font-weight: var(--wcs-semantic-font-weight-medium);\n --wcs-progress-bar-label-percentage-font-size-s: calc(var(--wcs-semantic-font-size-s) * 0.7);\n --wcs-progress-bar-label-percentage-font-size-m: calc(var(--wcs-semantic-font-size-m) * 0.7);\n --wcs-progress-bar-label-top-space: var(--wcs-semantic-spacing-large);\n}\n\n:host([size=s]) {\n .progress {\n height: var(--wcs-progress-bar-height-s);\n background-color: var(--wcs-progress-bar-background-color);\n background-image: none;\n background-size: auto;\n border-radius: var(--wcs-progress-bar-border-radius-small);\n\n .progress-label {\n font-size: var(--wcs-progress-bar-label-font-size-s);\n bottom: calc(100% + var(--wcs-progress-bar-gap-s));\n\n sup {\n font-size: var(--wcs-progress-bar-label-percentage-font-size-s);\n }\n }\n }\n}\n\n.progress {\n display: flex;\n height: var(--wcs-progress-bar-height-m);\n color: var(--wcs-progress-bar-label-color);\n background-color: var(--wcs-progress-bar-background-color);\n background-image: linear-gradient(90deg, var(--wcs-progress-bar-rail-color), 50%, transparent 50%);\n background-size: var(--wcs-progress-bar-rail-spacing) var(--wcs-progress-bar-height-m);\n border-radius: var(--wcs-progress-bar-border-radius);\n\n &.has-label {\n margin-top: var(--wcs-progress-bar-label-top-space);\n }\n\n // FIXME: Temporary fix so the label doesn't appear before the bar\n &.value-zero > .progress-bar > .progress-label {\n right: unset;\n }\n}\n\n.progress-bar {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: var(--wcs-progress-bar-label-color);\n text-align: center;\n background-color: var(--wcs-progress-bar-indicator-color);\n border-radius: var(--wcs-progress-bar-border-radius);\n transition: width var(--wcs-progress-bar-animation-duration) ease-out;\n}\n\n.progress-label {\n line-height: 1; // to remove extra-space (https://www.reddit.com/r/css/comments/z5zazq/mysterious_spacing_around_all_text_not_padding_or/\n position: absolute;\n right: 0;\n bottom: calc(100% + var(--wcs-progress-bar-gap-m));\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n font-size: var(--wcs-progress-bar-label-font-size-m);\n font-weight: var(--wcs-progress-bar-label-font-weight);\n\n sup {\n font-size: var(--wcs-progress-bar-label-percentage-font-size-m);\n }\n}\n","import { Component, ComponentInterface, Element, h, Method, Prop } from '@stencil/core';\nimport { WcsSize } from \"../../shared-types\";\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\n\nconst PROGRESS_BAR_ARIA_INHERITED_ATTRS = ['title'];\n\n/**\n * The progress-bar component is a horizontal bar that indicates the current completion of a task.\n *\n * ## Accessibility guidelines 💡\n * > Aria attributes and how to display the progress-bar depend on the use case in your application :\n * >\n * > - **Case 1 : decorative**\n * > If the progress-bar is used as a decoration _(if removed, the user doesn't lose any relevant information)_ or in the\n * > context of another component _(such as progress-bar in a card, stepper, ...)_ => **you don't need to show the label nor add an aria-label**.\n * >\n * > - **Case 2 : informative**\n * > If the progress-bar is used to convey important information _(e.g., form completion status, dashboard KPI)_, you need to :\n * > - **Provide a visible label** that describes the purpose of the progress-bar.\n * > - **Set the `showLabel` property to `true`** to show the percentage above the progress-bar.\n * > - Optionally, use aria-label to provide an accessible name if a visible label is not present.\n *\n * @cssprop --wcs-progress-bar-border-radius - Border radius\n * @cssprop --wcs-progress-bar-border-radius-small - Border radius for size small\n * @cssprop --wcs-progress-bar-animation-duration - Animation duration\n * \n * @cssprop --wcs-progress-bar-height-m - Height for size medium\n * @cssprop --wcs-progress-bar-height-s - Height for size small\n * @cssprop --wcs-progress-bar-background-color - Background color of the progress bar\n * @cssprop --wcs-progress-bar-rail-color - Rail color (dashed line)\n * @cssprop --wcs-progress-bar-rail-spacing - Space between the rail dashes\n * @cssprop --wcs-progress-bar-gap-s - Gap between the progress bar and the label for size small\n * @cssprop --wcs-progress-bar-gap-m - Gap between the progress bar and the label for size medium\n * @cssprop --wcs-progress-bar-indicator-color - Color of the progress bar indicator (bar on top of the rail)\n * @cssprop --wcs-progress-bar-label-color - Color of the label\n * @cssprop --wcs-progress-bar-label-font-size-s - Font size of the label for size small\n * @cssprop --wcs-progress-bar-label-font-size-m - Font size of the label for size medium\n * @cssprop --wcs-progress-bar-label-font-weight - Font weight of the label\n * @cssprop --wcs-progress-bar-label-percentage-font-size-s - Font size of the percentage for size small\n * @cssprop --wcs-progress-bar-label-percentage-font-size-m - Font size of the percentage for size medium\n * @cssprop --wcs-progress-bar-label-top-space - Space on top of the progress bar when label is displayed\n */\n@Component({\n tag: 'wcs-progress-bar',\n styleUrl: 'progress-bar.scss',\n shadow: true\n})\nexport class ProgressBar implements ComponentInterface, MutableAriaAttribute {\n\n @Element() private el!: HTMLWcsProgressBarElement;\n private nativeProgress!: HTMLDivElement;\n private inheritedAttributes: { [k: string]: any } = {};\n\n\n /**\n * Specify the size of the progress bar.\n * m = default, s = smaller\n */\n @Prop() size: Extract<WcsSize, 'm' | 's'> = 'm';\n\n /**\n * Whether it displays a label indicating the percentage of progress above the bar.\n */\n @Prop() showLabel: boolean = false;\n\n /**\n * The actual value of the progress.\n * Ranging from 0 to 100.\n */\n @Prop() value: number = 0;\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, PROGRESS_BAR_ARIA_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeProgress, attr, value);\n }\n\n render() {\n const style = {\n width: this.value + '%'\n };\n\n return (\n <div class={this.rootClasses()}\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={this.value}\n aria-valuetext={this.value + '%'}\n ref={(el) => (this.nativeProgress = el)}\n {...this.inheritedAttributes}>\n <div class=\"progress-bar\" style={style}>\n {this.showLabel &&\n <span class=\"progress-label\">\n {this.value}<sup>%</sup>\n </span>\n }\n </div>\n </div>\n );\n }\n\n rootClasses(): string {\n let classes = 'progress';\n if (this.showLabel) classes += ' has-label';\n // FIXME: Temporary fix so the label doesn't appear before the bar.\n if (this.value === 0) classes += ' value-zero';\n return classes;\n }\n}\n"],"version":3}
1
+ {"file":"wcs-progress-bar.entry.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,wgGAAwgG,CAAC;AAChiG,6BAAe,cAAc;;ACK7B,MAAM,iCAAiC,GAAG,CAAC,OAAO,CAAC,CAAC;MA2CvC,WAAW;;;QAIZ,wBAAmB,GAAyB,EAAE,CAAC;oBAOX,GAAG;yBAKD,KAAK;qBAM3B,CAAC;;IAEzB,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,iCAAiC,CAAC,CACnE,CAAC;KACL;IAGD,MAAM,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D;IAED,MAAM;QACF,MAAM,KAAK,GAAG;YACV,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG;SAC1B,CAAC;QAEF,QACI,0EAAK,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,EACzB,IAAI,EAAC,aAAa,mBACJ,GAAG,mBACH,KAAK,mBACJ,IAAI,CAAC,KAAK,oBACT,IAAI,CAAC,KAAK,GAAG,GAAG,EAChC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,IACnC,IAAI,CAAC,mBAAmB,GAC7B,4DAAK,KAAK,EAAC,cAAc,EAAC,KAAK,EAAE,KAAK,IACjC,IAAI,CAAC,SAAS;YACX,6DAAM,KAAK,EAAC,gBAAgB,IACrC,IAAI,CAAC,KAAK,EAAC,kEAAY,CACnB,CAEG,CACJ,EACR;KACL;IAED,WAAW;QACP,IAAI,OAAO,GAAG,UAAU,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,YAAY,CAAC;;QAE5C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,aAAa,CAAC;QAC/C,OAAO,OAAO,CAAC;KAClB;;;;;;;","names":[],"sources":["src/components/progress-bar/progress-bar.scss?tag=wcs-progress-bar&encapsulation=shadow","src/components/progress-bar/progress-bar.tsx"],"sourcesContent":[":host {\n --wcs-progress-bar-border-radius: var(--wcs-semantic-border-radius-full);\n --wcs-progress-bar-border-radius-small: var(--wcs-semantic-border-radius-small);\n --wcs-internal-progress-bar-animation-duration: var(--wcs-progress-bar-animation-duration, var(--wcs-semantic-motion-duration-feedback-slower)); /* internal used by horizontal-stepper */\n\n --wcs-progress-bar-height-m: calc(var(--wcs-semantic-size-m) / 4);\n --wcs-progress-bar-height-s: calc(var(--wcs-semantic-size-s) / 6);\n --wcs-progress-bar-background-color: transparent;\n\n --wcs-progress-bar-rail-color: var(--wcs-semantic-color-background-surface-tertiary);\n --wcs-progress-bar-rail-spacing: var(--wcs-semantic-spacing-small);\n\n --wcs-progress-bar-gap-s: var(--wcs-semantic-spacing-small);\n --wcs-progress-bar-gap-m: var(--wcs-semantic-spacing-base);\n\n --wcs-progress-bar-indicator-color: var(--wcs-semantic-color-background-surface-brand);\n --wcs-progress-bar-label-color: var(--wcs-semantic-color-text-primary);\n --wcs-progress-bar-label-font-size-s: var(--wcs-semantic-font-size-s);\n --wcs-progress-bar-label-font-size-m: calc(1.5 * var(--wcs-semantic-font-size-m));\n --wcs-progress-bar-label-font-weight: var(--wcs-semantic-font-weight-medium);\n --wcs-progress-bar-label-percentage-font-size-s: calc(var(--wcs-semantic-font-size-s) * 0.7);\n --wcs-progress-bar-label-percentage-font-size-m: calc(var(--wcs-semantic-font-size-m) * 0.7);\n --wcs-progress-bar-label-top-space: var(--wcs-semantic-spacing-large);\n}\n\n:host([size=s]) {\n .progress {\n height: var(--wcs-progress-bar-height-s);\n background-color: var(--wcs-progress-bar-background-color);\n background-image: none;\n background-size: auto;\n border-radius: var(--wcs-progress-bar-border-radius-small);\n\n .progress-label {\n font-size: var(--wcs-progress-bar-label-font-size-s);\n bottom: calc(100% + var(--wcs-progress-bar-gap-s));\n\n sup {\n font-size: var(--wcs-progress-bar-label-percentage-font-size-s);\n }\n }\n }\n}\n\n.progress {\n display: flex;\n height: var(--wcs-progress-bar-height-m);\n color: var(--wcs-progress-bar-label-color);\n background-color: var(--wcs-progress-bar-background-color);\n background-image: linear-gradient(90deg, var(--wcs-progress-bar-rail-color), 50%, transparent 50%);\n background-size: var(--wcs-progress-bar-rail-spacing) var(--wcs-progress-bar-height-m);\n border-radius: var(--wcs-progress-bar-border-radius);\n\n &.has-label {\n margin-top: var(--wcs-progress-bar-label-top-space);\n }\n\n // FIXME: Temporary fix so the label doesn't appear before the bar\n &.value-zero > .progress-bar > .progress-label {\n right: unset;\n }\n}\n\n.progress-bar {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: var(--wcs-progress-bar-label-color);\n text-align: center;\n background-color: var(--wcs-progress-bar-indicator-color);\n border-radius: var(--wcs-progress-bar-border-radius);\n transition: width var(--wcs-internal-progress-bar-animation-duration) ease-out;\n}\n\n.progress-label {\n line-height: 1; // to remove extra-space (https://www.reddit.com/r/css/comments/z5zazq/mysterious_spacing_around_all_text_not_padding_or/\n position: absolute;\n right: 0;\n bottom: calc(100% + var(--wcs-progress-bar-gap-m));\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n font-size: var(--wcs-progress-bar-label-font-size-m);\n font-weight: var(--wcs-progress-bar-label-font-weight);\n\n sup {\n font-size: var(--wcs-progress-bar-label-percentage-font-size-m);\n }\n}\n","import { Component, ComponentInterface, Element, h, Method, Prop } from '@stencil/core';\nimport { WcsSize } from \"../../shared-types\";\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\n\nconst PROGRESS_BAR_ARIA_INHERITED_ATTRS = ['title'];\n\n/**\n * The progress-bar component is a horizontal bar that indicates the current completion of a task.\n *\n * ## Accessibility guidelines 💡\n * > Aria attributes and how to display the progress-bar depend on the use case in your application :\n * >\n * > - **Case 1 : decorative**\n * > If the progress-bar is used as a decoration _(if removed, the user doesn't lose any relevant information)_ or in the\n * > context of another component _(such as progress-bar in a card, stepper, ...)_ => **you don't need to show the label nor add an aria-label**.\n * >\n * > - **Case 2 : informative**\n * > If the progress-bar is used to convey important information _(e.g., form completion status, dashboard KPI)_, you need to :\n * > - **Provide a visible label** that describes the purpose of the progress-bar.\n * > - **Set the `showLabel` property to `true`** to show the percentage above the progress-bar.\n * > - Optionally, use aria-label to provide an accessible name if a visible label is not present.\n *\n * @cssprop --wcs-progress-bar-border-radius - Border radius\n * @cssprop --wcs-progress-bar-border-radius-small - Border radius for size small\n * @cssprop --wcs-progress-bar-animation-duration - Animation duration\n * \n * @cssprop --wcs-progress-bar-height-m - Height for size medium\n * @cssprop --wcs-progress-bar-height-s - Height for size small\n * @cssprop --wcs-progress-bar-background-color - Background color of the progress bar\n * @cssprop --wcs-progress-bar-rail-color - Rail color (dashed line)\n * @cssprop --wcs-progress-bar-rail-spacing - Space between the rail dashes\n * @cssprop --wcs-progress-bar-gap-s - Gap between the progress bar and the label for size small\n * @cssprop --wcs-progress-bar-gap-m - Gap between the progress bar and the label for size medium\n * @cssprop --wcs-progress-bar-indicator-color - Color of the progress bar indicator (bar on top of the rail)\n * @cssprop --wcs-progress-bar-label-color - Color of the label\n * @cssprop --wcs-progress-bar-label-font-size-s - Font size of the label for size small\n * @cssprop --wcs-progress-bar-label-font-size-m - Font size of the label for size medium\n * @cssprop --wcs-progress-bar-label-font-weight - Font weight of the label\n * @cssprop --wcs-progress-bar-label-percentage-font-size-s - Font size of the percentage for size small\n * @cssprop --wcs-progress-bar-label-percentage-font-size-m - Font size of the percentage for size medium\n * @cssprop --wcs-progress-bar-label-top-space - Space on top of the progress bar when label is displayed\n */\n@Component({\n tag: 'wcs-progress-bar',\n styleUrl: 'progress-bar.scss',\n shadow: true\n})\nexport class ProgressBar implements ComponentInterface, MutableAriaAttribute {\n\n @Element() private el!: HTMLWcsProgressBarElement;\n private nativeProgress!: HTMLDivElement;\n private inheritedAttributes: { [k: string]: any } = {};\n\n\n /**\n * Specify the size of the progress bar.\n * m = default, s = smaller\n */\n @Prop() size: Extract<WcsSize, 'm' | 's'> = 'm';\n\n /**\n * Whether it displays a label indicating the percentage of progress above the bar.\n */\n @Prop({ reflect: true }) showLabel: boolean = false;\n\n /**\n * The actual value of the progress.\n * Ranging from 0 to 100.\n */\n @Prop() value: number = 0;\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, PROGRESS_BAR_ARIA_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeProgress, attr, value);\n }\n\n render() {\n const style = {\n width: this.value + '%'\n };\n\n return (\n <div class={this.rootClasses()}\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={this.value}\n aria-valuetext={this.value + '%'}\n ref={(el) => (this.nativeProgress = el)}\n {...this.inheritedAttributes}>\n <div class=\"progress-bar\" style={style}>\n {this.showLabel &&\n <span class=\"progress-label\">\n {this.value}<sup>%</sup>\n </span>\n }\n </div>\n </div>\n );\n }\n\n rootClasses(): string {\n let classes = 'progress';\n if (this.showLabel) classes += ' has-label';\n // FIXME: Temporary fix so the label doesn't appear before the bar.\n if (this.value === 0) classes += ' value-zero';\n return classes;\n }\n}\n"],"version":3}
@@ -23,8 +23,8 @@ const ProgressRadial = class {
23
23
  }
24
24
  render() {
25
25
  const { backgroundImageSize, halfSize } = { backgroundImageSize: this.backgroundImageSize, halfSize: this.backgroundImageSize / 2 };
26
- return (h("div", Object.assign({ key: 'c98910d8a132eacbf780f3d9e5a23553c14297a6', class: "progress-circle", "data-component": "radial-progress", style: this.getSize(), role: "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "aria-valuenow": this.value, "aria-valuetext": this.value + '%', ref: (el) => (this.nativeProgress = el) }, this.inheritedAttributes), h("svg", { key: 'd8f0282d2b7332c29ed10936ca2cfc5c00c03e3d', "data-role": "figure", class: "circle-rail", viewBox: `0 0 ${backgroundImageSize} ${backgroundImageSize}` }, h("circle", { key: '4534f4ac6749d59a8a1bd4189f3f998bc0aae416', cx: halfSize, cy: halfSize, r: 54, "stroke-width": 12 })), h("svg", { key: 'daf5358b0148443292ce3ac84d55d849e48033bc', class: "progress-circle-figure", "data-role": "figure", viewBox: `0 0 ${backgroundImageSize} ${backgroundImageSize}`, style: this.getSvgStyle() }, h("circle", { key: '3df0779e14354a9084b5f9132660ac2e1d446028', class: "progress-circle-value", cx: halfSize, cy: halfSize, r: "54", "stroke-width": "12" })), this.showLabel &&
27
- h("div", { key: '28212403f92e2a2f1b7515847e8e7cab95851413', class: "progress-circle-label", "data-role": "label" }, h("span", { key: '93b4d94b47b8289f113d717392824d3bca9f9ec9' }, h("span", { key: 'e7093e3a2d3accdbc81ced41d8a02afa167483f6', "data-role": "labelvalue" }, this.value), h("sup", { key: 'f9e66ca420de366cab09cc835d39e849030c4c8b' }, "%")))));
26
+ return (h("div", Object.assign({ key: '7da6ed9d04399e5ff473d112d6a111696c9b14bc', class: "progress-circle", "data-component": "radial-progress", style: this.getSize(), role: "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "aria-valuenow": this.value, "aria-valuetext": this.value + '%', ref: (el) => (this.nativeProgress = el) }, this.inheritedAttributes), h("svg", { key: '226ed7d14005563adc1e55e7ba28c3bb49ed1d95', "data-role": "figure", class: "circle-rail", viewBox: `0 0 ${backgroundImageSize} ${backgroundImageSize}` }, h("circle", { key: 'a50b905a8c36416ce3ede895affbda05a30b1c1b', cx: halfSize, cy: halfSize, r: 54, "stroke-width": 12 })), h("svg", { key: '7d58cf8a614acdff769c769ecca919b86792cd0d', class: "progress-circle-figure", "data-role": "figure", viewBox: `0 0 ${backgroundImageSize} ${backgroundImageSize}`, style: this.getSvgStyle() }, h("circle", { key: '11f22fd6a506b226a0e8a450163ac5c3a0fcbe44', class: "progress-circle-value", cx: halfSize, cy: halfSize, r: "54", "stroke-width": "12" })), this.showLabel &&
27
+ h("div", { key: 'a87680ab5a59f4e34072dde8a2f7d15ef4b671e9', class: "progress-circle-label", "data-role": "label" }, h("span", { key: 'fe65c818b10f58562d65f7f330a21a794f8b876f' }, h("span", { key: '337459684703272ec7817fe64226e2df10341e9c', "data-role": "labelvalue" }, this.value), h("sup", { key: '45f173f53dcfa8e85ea0986f28e8848f75d24434' }, "%")))));
28
28
  }
29
29
  getSvgStyle() {
30
30
  return {
@@ -1 +1 @@
1
- {"file":"wcs-progress-radial.entry.js","mappings":";;;AAAA,MAAM,iBAAiB,GAAG,wvDAAwvD,CAAC;AACnxD,gCAAe,iBAAiB;;ACGhC,MAAM,oCAAoC,GAAG,CAAC,OAAO,CAAC,CAAC;MAkC1C,cAAc;;;QAIf,wBAAmB,GAAyB,EAAE,CAAC;;QAG/C,wBAAmB,GAAW,GAAG,CAAC;oBAGnB,GAAG;yBAEG,KAAK;qBAEV,CAAC;;IAEzB,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,oCAAoC,CAAC,CACtE,CAAC;KACL;IAGD,MAAM,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D;IAED,MAAM;QACF,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;QACpI,QACI,0EAAK,KAAK,EAAC,iBAAiB,oBACR,iBAAiB,EAChC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EACrB,IAAI,EAAC,aAAa,mBACJ,GAAG,mBACH,KAAK,mBACJ,IAAI,CAAC,KAAK,oBACT,IAAI,CAAC,KAAK,GAAG,GAAG,EAChC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,IACnC,IAAI,CAAC,mBAAmB,GAC7B,yEAAe,QAAQ,EAAC,KAAK,EAAC,aAAa,EACtC,OAAO,EAAE,OAAO,mBAAmB,IAAI,mBAAmB,EAAE,IAC7D,+DAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,kBAAgB,EAAE,GAAG,CAC5D,EACN,4DAAK,KAAK,EAAC,wBAAwB,eACrB,QAAQ,EAClB,OAAO,EAAE,OAAO,mBAAmB,IAAI,mBAAmB,EAAE,EAC5D,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IACrB,+DAAQ,KAAK,EAAC,uBAAuB,EAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAC,IAAI,kBAAc,IAAI,GAAG,CAC/F,EACL,IAAI,CAAC,SAAS;YACX,4DAAK,KAAK,EAAC,uBAAuB,eAAW,OAAO,IAChD,+DACI,0EAAgB,YAAY,IAAE,IAAI,CAAC,KAAK,CAAQ,EAAA,kEAAY,CACzD,CACL,CAER,EACR;KACL;IAED,WAAW;QACP,OAAO;YACH,kBAAkB,EAAE,SAAS;YAC7B,mBAAmB,EAAE,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,OAAO,EAAE;SACnE,CAAC;KACL;IAED,OAAO;QACH,OAAO;YACH,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK;YAC3B,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK;SAC/B,CAAC;KACL;;;;;;;","names":[],"sources":["src/components/progress-radial/progress-radial.scss?tag=wcs-progress-radial&encapsulation=shadow","src/components/progress-radial/progress-radial.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n\n --wcs-progress-radial-rail-width: calc(var(--wcs-semantic-spacing-base) / 4);\n --wcs-progress-radial-rail-spacing: calc(var(--wcs-semantic-spacing-base) / 4);\n --wcs-progress-radial-rail-color: var(--wcs-semantic-color-background-surface-tertiary);\n\n --wcs-progress-radial-value-background-color: var(--wcs-semantic-color-background-surface-brand);\n\n --wcs-progress-radial-label-color: var(--wcs-semantic-color-text-primary);\n --wcs-progress-radial-label-font-size: calc(1.5 * var(--wcs-semantic-font-size-m));\n --wcs-progress-radial-label-font-weight: var(--wcs-semantic-font-weight-medium);\n\n --wcs-progress-radial-label-percentage-font-size: calc(var(--wcs-semantic-font-size-m) * 0.7);\n --wcs-progress-radial-animation-duration: var(--wcs-semantic-motion-duration-feedback-slower);\n}\n\n.progress-circle {\n position: relative;\n display: inline-block;\n}\n\n.circle-rail {\n position: absolute;\n z-index: 0;\n stroke: var(--wcs-progress-radial-rail-color);\n stroke-dasharray: var(--wcs-progress-radial-rail-width) var(--wcs-progress-radial-rail-spacing);\n fill: none;\n}\n\n.progress-circle-figure {\n position: absolute;\n top: 0;\n z-index: 1;\n transform: rotate(-90deg);\n transition: stroke-dashoffset var(--wcs-progress-radial-animation-duration) ease-out;\n}\n\n.progress-circle-label {\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n font-size: var(--wcs-progress-radial-label-font-size);\n font-weight: var(--wcs-progress-radial-label-font-weight);\n\n color: var(--wcs-progress-radial-label-color);\n\n sup {\n font-size: var(--wcs-progress-radial-label-percentage-font-size);\n top: -.85em;\n position: relative;\n line-height: 0;\n vertical-align: baseline;\n }\n}\n\n.progress-circle-value {\n stroke: var(--wcs-progress-radial-value-background-color);\n stroke-linecap: round;\n}\n\n.progress-circle-value,\n.progress-circle-meter {\n fill: none;\n}\n","import { Component, Prop, ComponentInterface, h, Element, Method } from '@stencil/core';\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\nconst PROGRESS_RADIAL_ARIA_INHERITED_ATTRS = ['title'];\n\n/**\n * The progress-radial component is a circular progress bar that indicates the current completion of a task. \n *\n * ## Accessibility guidelines 💡\n * > Aria attributes and how to display the progress-radial depend on the use case in your application :\n * >\n * > - **Case 1 : decorative**\n * > If the progress-radial is used as a decoration _(if removed, the user doesn't lose any relevant information)_ or in the\n * > context of another component _(such as progress-radial in a card)_ => **you don't need to show the label nor add an aria-label**.\n * >\n * > - **Case 2 : informative**\n * > If the progress-radial is used to convey important information _(e.g., form completion status, dashboard KPI)_, you need to :\n * > - **Provide a visible label** that describes the purpose of the progress-radial.\n * > - **Set the `showLabel` property to `true`** to show the percentage inside the progress-radial.\n * > - Optionally, use aria-label to provide an accessible name if a visible label is not present.\n *\n * \n * @cssprop --wcs-progress-radial-rail-width - The width of the line that represents the rail of the progress radial\n * @cssprop --wcs-progress-radial-rail-spacing - The space between each rail of the progress radial\n * @cssprop --wcs-progress-radial-rail-color - The color of the rail of the progress radial\n * @cssprop --wcs-progress-radial-value-background-color - The background color of the bar on top of the rail \n * @cssprop --wcs-progress-radial-label-color - The color of the label inside the progress radial\n * @cssprop --wcs-progress-radial-label-font-size - The font size of the label inside the progress radial\n * @cssprop --wcs-progress-radial-label-font-weight - The font weight of the label inside the progress radial\n * @cssprop --wcs-progress-radial-label-percentage-font-size - The font size of the percentage inside the progress radial\n * @cssprop --wcs-progress-radial-animation-duration - The duration of the animation of the progress radial\n */\n@Component({\n tag: 'wcs-progress-radial',\n styleUrl: 'progress-radial.scss',\n shadow: true\n})\nexport class ProgressRadial implements ComponentInterface, MutableAriaAttribute {\n \n @Element() private el!: HTMLWcsProgressRadialElement;\n private nativeProgress!: HTMLDivElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n /** The initial background image size (120x120) as specified in the background-image css property of .progress-circle */\n private backgroundImageSize: number = 120;\n \n /** The size of the progress radial (in px) */\n @Prop() size: number = 120;\n /** Whether the component should display the % label inside */\n @Prop() showLabel: boolean = false;\n /** The value of the progress radial. Prefer values between 0 and 100. */\n @Prop() value: number = 0;\n \n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, PROGRESS_RADIAL_ARIA_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeProgress, attr, value);\n }\n\n render() {\n const { backgroundImageSize, halfSize } = { backgroundImageSize: this.backgroundImageSize, halfSize: this.backgroundImageSize / 2 };\n return (\n <div class=\"progress-circle\"\n data-component=\"radial-progress\"\n style={this.getSize()}\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={this.value}\n aria-valuetext={this.value + '%'}\n ref={(el) => (this.nativeProgress = el)}\n {...this.inheritedAttributes}>\n <svg data-role=\"figure\" class=\"circle-rail\"\n viewBox={`0 0 ${backgroundImageSize} ${backgroundImageSize}`}>\n <circle cx={halfSize} cy={halfSize} r={54} stroke-width={12}/>\n </svg>\n <svg class=\"progress-circle-figure\"\n data-role=\"figure\"\n viewBox={`0 0 ${backgroundImageSize} ${backgroundImageSize}`}\n style={this.getSvgStyle()}>\n <circle class=\"progress-circle-value\" cx={halfSize} cy={halfSize} r=\"54\" stroke-width=\"12\" />\n </svg>\n {this.showLabel &&\n <div class=\"progress-circle-label\" data-role=\"label\">\n <span>\n <span data-role=\"labelvalue\">{this.value}</span><sup>%</sup>\n </span>\n </div>\n }\n </div>\n );\n }\n\n getSvgStyle() {\n return {\n 'stroke-dasharray': '339.292',\n 'stroke-dashoffset': `${339.292 - (this.value / 100) * 339.292}`,\n };\n }\n \n getSize() {\n return {\n 'width': `${(this.size)}px`,\n 'height': `${(this.size)}px`,\n };\n }\n}\n"],"version":3}
1
+ {"file":"wcs-progress-radial.entry.js","mappings":";;;AAAA,MAAM,iBAAiB,GAAG,wvDAAwvD,CAAC;AACnxD,gCAAe,iBAAiB;;ACGhC,MAAM,oCAAoC,GAAG,CAAC,OAAO,CAAC,CAAC;MAkC1C,cAAc;;;QAIf,wBAAmB,GAAyB,EAAE,CAAC;;QAG/C,wBAAmB,GAAW,GAAG,CAAC;oBAGnB,GAAG;yBAEoB,KAAK;qBAE3B,CAAC;;IAEzB,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,oCAAoC,CAAC,CACtE,CAAC;KACL;IAGD,MAAM,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D;IAED,MAAM;QACF,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;QACpI,QACI,0EAAK,KAAK,EAAC,iBAAiB,oBACR,iBAAiB,EAChC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EACrB,IAAI,EAAC,aAAa,mBACJ,GAAG,mBACH,KAAK,mBACJ,IAAI,CAAC,KAAK,oBACT,IAAI,CAAC,KAAK,GAAG,GAAG,EAChC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,IACnC,IAAI,CAAC,mBAAmB,GAC7B,yEAAe,QAAQ,EAAC,KAAK,EAAC,aAAa,EACtC,OAAO,EAAE,OAAO,mBAAmB,IAAI,mBAAmB,EAAE,IAC7D,+DAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,kBAAgB,EAAE,GAAG,CAC5D,EACN,4DAAK,KAAK,EAAC,wBAAwB,eACrB,QAAQ,EAClB,OAAO,EAAE,OAAO,mBAAmB,IAAI,mBAAmB,EAAE,EAC5D,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IACrB,+DAAQ,KAAK,EAAC,uBAAuB,EAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAC,IAAI,kBAAc,IAAI,GAAG,CAC/F,EACL,IAAI,CAAC,SAAS;YACX,4DAAK,KAAK,EAAC,uBAAuB,eAAW,OAAO,IAChD,+DACI,0EAAgB,YAAY,IAAE,IAAI,CAAC,KAAK,CAAQ,EAAA,kEAAY,CACzD,CACL,CAER,EACR;KACL;IAED,WAAW;QACP,OAAO;YACH,kBAAkB,EAAE,SAAS;YAC7B,mBAAmB,EAAE,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,OAAO,EAAE;SACnE,CAAC;KACL;IAED,OAAO;QACH,OAAO;YACH,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK;YAC3B,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK;SAC/B,CAAC;KACL;;;;;;;","names":[],"sources":["src/components/progress-radial/progress-radial.scss?tag=wcs-progress-radial&encapsulation=shadow","src/components/progress-radial/progress-radial.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n\n --wcs-progress-radial-rail-width: calc(var(--wcs-semantic-spacing-base) / 4);\n --wcs-progress-radial-rail-spacing: calc(var(--wcs-semantic-spacing-base) / 4);\n --wcs-progress-radial-rail-color: var(--wcs-semantic-color-background-surface-tertiary);\n\n --wcs-progress-radial-value-background-color: var(--wcs-semantic-color-background-surface-brand);\n\n --wcs-progress-radial-label-color: var(--wcs-semantic-color-text-primary);\n --wcs-progress-radial-label-font-size: calc(1.5 * var(--wcs-semantic-font-size-m));\n --wcs-progress-radial-label-font-weight: var(--wcs-semantic-font-weight-medium);\n\n --wcs-progress-radial-label-percentage-font-size: calc(var(--wcs-semantic-font-size-m) * 0.7);\n --wcs-progress-radial-animation-duration: var(--wcs-semantic-motion-duration-feedback-slower);\n}\n\n.progress-circle {\n position: relative;\n display: inline-block;\n}\n\n.circle-rail {\n position: absolute;\n z-index: 0;\n stroke: var(--wcs-progress-radial-rail-color);\n stroke-dasharray: var(--wcs-progress-radial-rail-width) var(--wcs-progress-radial-rail-spacing);\n fill: none;\n}\n\n.progress-circle-figure {\n position: absolute;\n top: 0;\n z-index: 1;\n transform: rotate(-90deg);\n transition: stroke-dashoffset var(--wcs-progress-radial-animation-duration) ease-out;\n}\n\n.progress-circle-label {\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n font-size: var(--wcs-progress-radial-label-font-size);\n font-weight: var(--wcs-progress-radial-label-font-weight);\n\n color: var(--wcs-progress-radial-label-color);\n\n sup {\n font-size: var(--wcs-progress-radial-label-percentage-font-size);\n top: -.85em;\n position: relative;\n line-height: 0;\n vertical-align: baseline;\n }\n}\n\n.progress-circle-value {\n stroke: var(--wcs-progress-radial-value-background-color);\n stroke-linecap: round;\n}\n\n.progress-circle-value,\n.progress-circle-meter {\n fill: none;\n}\n","import { Component, Prop, ComponentInterface, h, Element, Method } from '@stencil/core';\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\nconst PROGRESS_RADIAL_ARIA_INHERITED_ATTRS = ['title'];\n\n/**\n * The progress-radial component is a circular progress bar that indicates the current completion of a task. \n *\n * ## Accessibility guidelines 💡\n * > Aria attributes and how to display the progress-radial depend on the use case in your application :\n * >\n * > - **Case 1 : decorative**\n * > If the progress-radial is used as a decoration _(if removed, the user doesn't lose any relevant information)_ or in the\n * > context of another component _(such as progress-radial in a card)_ => **you don't need to show the label nor add an aria-label**.\n * >\n * > - **Case 2 : informative**\n * > If the progress-radial is used to convey important information _(e.g., form completion status, dashboard KPI)_, you need to :\n * > - **Provide a visible label** that describes the purpose of the progress-radial.\n * > - **Set the `showLabel` property to `true`** to show the percentage inside the progress-radial.\n * > - Optionally, use aria-label to provide an accessible name if a visible label is not present.\n *\n * \n * @cssprop --wcs-progress-radial-rail-width - The width of the line that represents the rail of the progress radial\n * @cssprop --wcs-progress-radial-rail-spacing - The space between each rail of the progress radial\n * @cssprop --wcs-progress-radial-rail-color - The color of the rail of the progress radial\n * @cssprop --wcs-progress-radial-value-background-color - The background color of the bar on top of the rail \n * @cssprop --wcs-progress-radial-label-color - The color of the label inside the progress radial\n * @cssprop --wcs-progress-radial-label-font-size - The font size of the label inside the progress radial\n * @cssprop --wcs-progress-radial-label-font-weight - The font weight of the label inside the progress radial\n * @cssprop --wcs-progress-radial-label-percentage-font-size - The font size of the percentage inside the progress radial\n * @cssprop --wcs-progress-radial-animation-duration - The duration of the animation of the progress radial\n */\n@Component({\n tag: 'wcs-progress-radial',\n styleUrl: 'progress-radial.scss',\n shadow: true\n})\nexport class ProgressRadial implements ComponentInterface, MutableAriaAttribute {\n \n @Element() private el!: HTMLWcsProgressRadialElement;\n private nativeProgress!: HTMLDivElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n /** The initial background image size (120x120) as specified in the background-image css property of .progress-circle */\n private backgroundImageSize: number = 120;\n \n /** The size of the progress radial (in px) */\n @Prop() size: number = 120;\n /** Whether the component should display the % label inside */\n @Prop({ reflect: true }) showLabel: boolean = false;\n /** The value of the progress radial. Prefer values between 0 and 100. */\n @Prop() value: number = 0;\n \n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, PROGRESS_RADIAL_ARIA_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeProgress, attr, value);\n }\n\n render() {\n const { backgroundImageSize, halfSize } = { backgroundImageSize: this.backgroundImageSize, halfSize: this.backgroundImageSize / 2 };\n return (\n <div class=\"progress-circle\"\n data-component=\"radial-progress\"\n style={this.getSize()}\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={this.value}\n aria-valuetext={this.value + '%'}\n ref={(el) => (this.nativeProgress = el)}\n {...this.inheritedAttributes}>\n <svg data-role=\"figure\" class=\"circle-rail\"\n viewBox={`0 0 ${backgroundImageSize} ${backgroundImageSize}`}>\n <circle cx={halfSize} cy={halfSize} r={54} stroke-width={12}/>\n </svg>\n <svg class=\"progress-circle-figure\"\n data-role=\"figure\"\n viewBox={`0 0 ${backgroundImageSize} ${backgroundImageSize}`}\n style={this.getSvgStyle()}>\n <circle class=\"progress-circle-value\" cx={halfSize} cy={halfSize} r=\"54\" stroke-width=\"12\" />\n </svg>\n {this.showLabel &&\n <div class=\"progress-circle-label\" data-role=\"label\">\n <span>\n <span data-role=\"labelvalue\">{this.value}</span><sup>%</sup>\n </span>\n </div>\n }\n </div>\n );\n }\n\n getSvgStyle() {\n return {\n 'stroke-dasharray': '339.292',\n 'stroke-dashoffset': `${339.292 - (this.value / 100) * 339.292}`,\n };\n }\n \n getSize() {\n return {\n 'width': `${(this.size)}px`,\n 'height': `${(this.size)}px`,\n };\n }\n}\n"],"version":3}
@@ -97,7 +97,7 @@ const RadioGroup = class {
97
97
  }
98
98
  }
99
99
  render() {
100
- return (h(Host, { key: '7e9a6c9412d6ababef068d5766d79a790c3e531f', role: "radiogroup" }, h("slot", { key: '6163831fbd131047a6f3556c76b1628f41453b6b', name: "option", onSlotchange: this.onSlotChange.bind(this) })));
100
+ return (h(Host, { key: '3179704d2f1ed56f940941c1777b90a49ecd0ffa', role: "radiogroup" }, h("slot", { key: 'f01213b0c89bc04622601447005e24df07fea376', name: "option", onSlotchange: this.onSlotChange.bind(this) })));
101
101
  }
102
102
  get el() { return getElement(this); }
103
103
  static get watchers() { return {
@@ -73,7 +73,7 @@ const Radio = class {
73
73
  });
74
74
  }
75
75
  render() {
76
- return (h(Host, { key: '07ab36a8de3f5503b21792d29fd384a9412f9c35', slot: "option", tabIndex: this.disabled ? -1 : this.radioTabIndex, class: this.checked ? 'checked' : '' }, h("input", Object.assign({ key: 'a977994ac12b09f5dac114b923cbeea2de437757', id: this.inputId, type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, onChange: this.onChange.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this), "aria-disabled": this.disabled ? 'true' : null, "aria-checked": `${this.checked}`, ref: (el) => (this.nativeRadio = el) }, this.inheritedAttributes)), h("label", { key: '709e74930fd42435b6ad2ad12e1ab0b3653572d4', htmlFor: `${this.inputId}` }, this.label)));
76
+ return (h(Host, { key: 'b753f4673fccbd2f0d7e1636be135da90e1850ef', slot: "option", tabIndex: this.disabled ? -1 : this.radioTabIndex, class: this.checked ? 'checked' : '' }, h("input", Object.assign({ key: '25ac2afe93bdde452db9226feb11587f76a4fd69', id: this.inputId, type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, onChange: this.onChange.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this), "aria-disabled": this.disabled ? 'true' : null, "aria-checked": `${this.checked}`, ref: (el) => (this.nativeRadio = el) }, this.inheritedAttributes)), h("label", { key: '13b771ac257bcf81734cee12a85ffdf143e3c329', htmlFor: `${this.inputId}` }, this.label)));
77
77
  }
78
78
  static get delegatesFocus() { return true; }
79
79
  get el() { return getElement(this); }
@@ -1 +1 @@
1
- {"file":"wcs-radio.entry.js","mappings":"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","names":[],"sources":["src/components/radio/radio.scss?tag=wcs-radio&encapsulation=shadow","src/components/radio/radio.tsx"],"sourcesContent":["@import '../../style/focus-outline.scss';\n\n:host {\n width: fit-content;\n\n --wcs-radio-transition-duration: var(--wcs-semantic-motion-duration-feedback-base);\n\n // region mode Radio\n --wcs-radio-text-color-default: var(--wcs-semantic-color-text-secondary);\n --wcs-radio-text-font-weight-default: var(--wcs-semantic-font-weight-medium);\n\n --wcs-radio-text-color-selected: var(--wcs-semantic-color-text-primary);\n --wcs-radio-text-font-weight-selected: var(--wcs-semantic-font-weight-medium);\n\n --wcs-radio-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n --wcs-radio-text-color-hover: var(--wcs-semantic-color-text-primary);\n\n --wcs-radio-checkmark-size: 1rem; // for now, we let raw value to let adjust the size based on base font size\n\n --wcs-radio-gap: var(--wcs-semantic-spacing-base);\n\n --wcs-radio-outline-color-focus: var(--wcs-semantic-color-border-focus-base); // outline color for focus ring\n\n --wcs-radio-checkmark-border-width: var(--wcs-semantic-border-width-large);\n --wcs-radio-checkmark-border-color-default: var(--wcs-semantic-color-border-control-indicator-default);\n --wcs-radio-checkmark-border-color-selected: var(--wcs-semantic-color-border-control-indicator-selected);\n --wcs-radio-checkmark-border-color-hover: var(--wcs-semantic-color-border-control-indicator-hover);\n --wcs-radio-checkmark-border-color-disabled: var(--wcs-semantic-color-border-control-indicator-disabled);\n\n --wcs-radio-checkmark-background-color-default: transparent;\n --wcs-radio-checkmark-background-color-selected: var(--wcs-semantic-color-background-control-indicator-selected);\n --wcs-radio-checkmark-background-color-selected-disabled: var(--wcs-semantic-color-background-control-indicator-disabled);\n --wcs-radio-checkmark-background-color-selected-hover: var(--wcs-semantic-color-background-control-indicator-hover);\n\n --wcs-radio-checkmark-outline-distance-with-checkmark-circle: var(--wcs-semantic-spacing-small);\n --wcs-radio-checkmark-outline-width: var(--wcs-semantic-border-width-large);\n --wcs-radio-checkmark-outline-color: var(--wcs-semantic-color-foreground-control-indicator-selected);\n --wcs-radio-checkmark-border-radius: var(--wcs-semantic-border-radius-full);\n\n --wcs-radio-border-radius: var(--wcs-semantic-border-radius-base);\n // endregion\n\n // region mode Option\n --wcs-radio-option-background-color-default: var(--wcs-semantic-color-background-action-secondary-default);\n --wcs-radio-option-background-color-hover: var(--wcs-semantic-color-background-action-secondary-default);\n --wcs-radio-option-background-color-press: var(--wcs-semantic-color-background-action-secondary-default);\n --wcs-radio-option-background-color-disabled: var(--wcs-semantic-color-background-action-secondary-default);\n\n --wcs-radio-option-background-color-selected-default: var(--wcs-semantic-color-background-action-primary-default);\n --wcs-radio-option-background-color-selected-hover: var(--wcs-semantic-color-background-action-primary-hover);\n --wcs-radio-option-background-color-selected-press: var(--wcs-semantic-color-background-action-primary-press);\n --wcs-radio-option-background-color-selected-disabled: var(--wcs-semantic-color-background-action-primary-disabled);\n\n --wcs-radio-option-text-color-default: var(--wcs-semantic-color-foreground-action-secondary-default);\n --wcs-radio-option-text-color-hover: var(--wcs-semantic-color-foreground-action-secondary-default);\n --wcs-radio-option-text-color-press: var(--wcs-semantic-color-foreground-action-secondary-press);\n\n --wcs-radio-option-text-color-selected-default: var(--wcs-semantic-color-foreground-action-primary-default);\n --wcs-radio-option-text-color-selected-hover: var(--wcs-semantic-color-foreground-action-primary-hover);\n --wcs-radio-option-text-color-selected-press: var(--wcs-semantic-color-foreground-action-primary-press);\n --wcs-radio-option-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n\n --wcs-radio-option-text-font-weight-default: var(--wcs-semantic-font-weight-roman);\n --wcs-radio-option-text-font-weight-selected: var(--wcs-semantic-font-weight-roman);\n\n --wcs-radio-option-border-radius: var(--wcs-semantic-border-radius-base);\n\n --wcs-radio-option-border-width: var(--wcs-semantic-border-width-default);\n\n --wcs-radio-option-border-color-hover: var(--wcs-semantic-color-border-action-secondary-hover);\n --wcs-radio-option-border-color-press: var(--wcs-semantic-color-border-action-secondary-press);\n\n --wcs-radio-option-padding-top: var(--wcs-semantic-spacing-base);\n --wcs-radio-option-padding-right: var(--wcs-semantic-spacing-large);\n --wcs-radio-option-padding-bottom: var(--wcs-semantic-spacing-base);\n --wcs-radio-option-padding-left: var(--wcs-semantic-spacing-large);\n // endregion\n}\n\n:host([mode=radio]),\n:host([mode=horizontal]) {\n input {\n position: absolute;\n opacity: 0;\n height: 1px;\n width: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n }\n\n label {\n margin-bottom: 0;\n color: var(--wcs-radio-text-color-default);\n font-weight: var(--wcs-radio-text-font-weight-default) !important;\n display: inline-block;\n\n &:before {\n border-radius: var(--wcs-radio-checkmark-border-radius);\n border: var(--wcs-radio-checkmark-border-width) solid var(--wcs-radio-checkmark-border-color-default);\n position: relative;\n width: var(--wcs-radio-checkmark-size);\n height: var(--wcs-radio-checkmark-size);\n pointer-events: none;\n content: \"\";\n background-color: var(--wcs-radio-checkmark-background-color-default);\n }\n }\n\n input:focus-visible + label {\n transition: none;\n @include focus-outline($outline-color: var(--wcs-radio-outline-color-focus), $border-radius: var(--wcs-radio-border-radius));\n }\n}\n\n:host([disabled]) {\n label {\n color: var(--wcs-radio-text-color-disabled);\n cursor: not-allowed;\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-disabled);\n }\n }\n}\n\n:host(:not([disabled])) {\n label {\n cursor: pointer;\n }\n}\n\n:host([mode=radio].checked),\n:host([mode=horizontal].checked) {\n label {\n color: var(--wcs-radio-text-color-selected);\n font-weight: var(--wcs-radio-text-font-weight-selected) !important;\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-selected);\n background-color: var(--wcs-radio-checkmark-background-color-selected);\n outline: solid var(--wcs-radio-checkmark-outline-width) var(--wcs-radio-checkmark-outline-color);\n outline-offset: calc(-1 * var(--wcs-radio-checkmark-outline-distance-with-checkmark-circle));\n }\n }\n}\n\n:host([mode=radio][disabled].checked),\n:host([mode=horizontal][disabled].checked) {\n label {\n color: var(--wcs-radio-text-color-disabled);\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-disabled);\n background-color: var(--wcs-radio-checkmark-background-color-selected-disabled);\n }\n }\n}\n\n:host([mode=radio]:hover:not([disabled])),\n:host([mode=horizontal]:hover:not([disabled])) {\n label {\n color: var(--wcs-radio-text-color-hover);\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-hover);\n background-color: var(--wcs-radio-checkmark-background-color-selected-hover);\n }\n }\n}\n\n:host([mode=radio]:hover:not([disabled]):not(.checked)),\n:host([mode=horizontal]:hover:not([disabled]):not(.checked)) {\n label:before {\n background-color: var(--wcs-radio-checkmark-background-color-default);\n }\n}\n\n:host([mode=radio]) {\n label {\n border: none;\n\n &:before {\n transition: background-color var(--wcs-radio-transition-duration) ease-in-out;\n margin-right: var(--wcs-radio-gap);\n display: inline-block;\n top: 3px;\n box-sizing: border-box;\n }\n\n &:empty::before {\n margin-right: 0;\n }\n }\n}\n\n:host([mode=horizontal]) {\n height: fit-content;\n\n label {\n &:before {\n transition: background-color var(--wcs-radio-transition-duration) ease-in-out;\n margin: auto auto var(--wcs-radio-gap);\n display: block;\n }\n\n &:empty::before {\n margin-bottom: 0;\n }\n }\n}\n\n:host([mode=option]) {\n font-weight: var(--wcs-radio-option-text-font-weight-default) !important;\n\n input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n box-sizing: border-box;\n padding: 0;\n }\n\n label {\n padding: var(--wcs-radio-option-padding-top) var(--wcs-radio-option-padding-right) var(--wcs-radio-option-padding-bottom) var(--wcs-radio-option-padding-left);\n margin-bottom: 0;\n color: var(--wcs-radio-option-text-color-default);\n white-space: nowrap;\n border-radius: var(--wcs-radio-option-border-radius);\n transition: background-color var(--wcs-radio-transition-duration) ease-in-out;\n background-color: var(--wcs-radio-option-background-color-default);\n }\n\n input:focus-visible + label {\n @include focus-outline($outline-color: var(--wcs-radio-outline-color-focus), $border-radius: var(--wcs-radio-border-radius), $outline-offset: 0);\n }\n}\n\n:host([mode=option][disabled]) {\n label {\n color: var(--wcs-radio-option-text-color-disabled);\n background-color: var(--wcs-radio-option-background-color-disabled);\n }\n}\n\n:host([mode=option][disabled].checked) {\n label {\n color: var(--wcs-radio-option-text-color-disabled);\n background-color: var(--wcs-radio-option-background-color-selected-disabled);\n }\n}\n\n:host([mode=option].checked) {\n label {\n font-weight: var(--wcs-radio-option-text-font-weight-selected) !important;\n color: var(--wcs-radio-option-text-color-selected-default);\n background-color: var(--wcs-radio-option-background-color-selected-default);\n }\n}\n\n:host([mode=option]:hover.checked:not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-selected-hover);\n background-color: var(--wcs-radio-option-background-color-selected-hover);\n }\n}\n\n:host([mode=option]:active.checked:not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-selected-press);\n background-color: var(--wcs-radio-option-background-color-selected-press);\n }\n}\n\n:host([mode=option]:hover:not(.checked):not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-hover);\n background-color: var(--wcs-radio-option-background-color-hover);\n outline: var(--wcs-radio-option-border-width) solid var(--wcs-radio-option-border-color-hover);\n }\n}\n\n:host([mode=option]:active:not(.checked):not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-press);\n background-color: var(--wcs-radio-option-background-color-press);\n outline: var(--wcs-radio-option-border-width) solid var(--wcs-radio-option-border-color-press);\n\n\n\n }\n}\n","import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State\n} from '@stencil/core';\nimport { RadioChosedEvent } from './radio-interface';\nimport { RadioGroupMode } from '../radio-group/radio-group-interface';\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\nconst RADIO_INHERITED_ATTRS = ['title'];\n\n/**\n * The radio component should always be wrapped in a `wcs-radio-group`.\n * \n * @cssprop --wcs-radio-transition-duration - Duration of the transition\n * \n * @cssprop --wcs-radio-text-color-default - Color of the text when the radio is not selected\n * @cssprop --wcs-radio-text-font-weight-default - Default font weight of the text\n * @cssprop --wcs-radio-text-color-selected - Color of the text when the radio is selected\n * @cssprop --wcs-radio-text-font-weight-selected - Font weight of the text when the radio is selected\n * @cssprop --wcs-radio-text-color-disabled - Color of the text when the radio is disabled\n * @cssprop --wcs-radio-text-color-hover - Color of the text when the radio is hovered\n * \n * @cssprop --wcs-radio-outline-color-focus - Color of the outline when the radio is focused\n * \n * @cssprop --wcs-radio-checkmark-size - Size of the checkmark circle\n * @cssprop --wcs-radio-checkmark-border-width - Width of the border of the checkmark circle\n * @cssprop --wcs-radio-checkmark-border-color-default - Color of the border of the checkmark circle when the radio's is not selected\n * @cssprop --wcs-radio-checkmark-border-color-selected - Color of the border of the checkmark circle when the radio is selected\n * @cssprop --wcs-radio-checkmark-border-color-hover - Color of the border of the checkmark circle when the radio is hovered\n * @cssprop --wcs-radio-checkmark-border-color-disabled - Color of the border of the checkmark circle when the radio is disabled\n * @cssprop --wcs-radio-checkmark-background-color-default - Background color of the checkmark circle when the radio's is not selected\n * @cssprop --wcs-radio-checkmark-background-color-selected - Background color of the checkmark circle when the radio's is selected\n * @cssprop --wcs-radio-checkmark-background-color-selected-disabled - Background color of the checkmark circle when the radio is selected and disabled\n * @cssprop --wcs-radio-checkmark-background-color-selected-hover - Background color of the checkmark circle when the radio is selected and hovered\n *\n * @cssprop --wcs-radio-checkmark-outline-distance-with-checkmark-circle - Distance between the checkmark circle and the outline (inside the background)\n * @cssprop --wcs-radio-checkmark-outline-width - Width of the outline of the checkmark circle (inside the background)\n * @cssprop --wcs-radio-checkmark-outline-color - Color of the outline of the checkmark circle (inside the background)\n * @cssprop --wcs-radio-checkmark-border-radius - Border radius of the checkmark circle\n * \n * @cssprop --wcs-radio-gap - Gap between the radio checkmark circle and the label\n * \n * @cssprop --wcs-radio-border-radius - Border radius of the radio (default mode)\n *\n * @cssprop --wcs-radio-option-background-color-default - Background color of the radio option when not selected\n * @cssprop --wcs-radio-option-background-color-hover - Background color of the radio option not selected when hovered\n * @cssprop --wcs-radio-option-background-color-press - Background color of the radio option when pressed\n * @cssprop --wcs-radio-option-background-color-disabled - Background color of the radio option when disabled\n * \n * @cssprop --wcs-radio-option-background-color-selected-default - Background color of the radio option when selected\n * @cssprop --wcs-radio-option-background-color-selected-hover - Background color of the radio option when selected and hovered\n * @cssprop --wcs-radio-option-background-color-selected-press - Background color of the radio option when selected and pressed\n * @cssprop --wcs-radio-option-background-color-selected-disabled - Background color of the radio option when selected and disabled\n * \n * @cssprop --wcs-radio-option-text-color-default - Color of the text when the radio option is not selected\n * @cssprop --wcs-radio-option-text-color-hover - Color of the text when the radio option not selected is hovered\n * @cssprop --wcs-radio-option-text-color-press - Color of the text when the radio option is pressed\n * \n * @cssprop --wcs-radio-option-text-color-selected-default - Color of the text when the radio option is selected\n * @cssprop --wcs-radio-option-text-color-selected-hover - Color of the text when the radio option is selected and hovered\n * @cssprop --wcs-radio-option-text-color-selected-press - Color of the text when the radio option is selected and pressed\n * @cssprop --wcs-radio-option-text-color-disabled - Color of the text when the radio option's is disabled\n * \n * @cssprop --wcs-radio-option-text-font-weight-default - Default font weight of the text\n * @cssprop --wcs-radio-option-text-font-weight-selected - Font weight of the text when the radio option is selected\n *\n * @cssprop --wcs-radio-option-border-radius - Border radius of the radio option\n * @cssprop --wcs-radio-option-border-width - Width of the border of the radio option\n * @cssprop --wcs-radio-option-border-color-hover - Color of the border of the radio option when not selected and hovered\n * @cssprop --wcs-radio-option-border-color-press - Color of the border of the radio option when not selected and pressed\n * \n * @cssprop --wcs-radio-option-padding-top - Padding top of the radio option\n * @cssprop --wcs-radio-option-padding-right - Padding right of the radio option\n * @cssprop --wcs-radio-option-padding-bottom - Padding bottom of the radio option\n * @cssprop --wcs-radio-option-padding-left - Padding left of the radio option\n */\n@Component({\n tag: 'wcs-radio',\n styleUrl: 'radio.scss',\n shadow: {\n delegatesFocus: true\n }\n})\nexport class Radio implements ComponentInterface, MutableAriaAttribute {\n private inputId = `wcs-rb-${radioButtonIds++}`;\n @Element() private el!: HTMLWcsRadioElement;\n private nativeRadio!: HTMLInputElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n /**\n * If `true`, the radio is selected. \n * @private\n */\n @State() private checked = false;\n\n /**\n * The tabindex of the radio button\n * @private\n */\n @State() private radioTabIndex = -1;\n\n /**\n * Sets a unique value for each radio, used to identify which radio button in a group is selected\n */\n @Prop({ mutable: true, reflect: true }) value: any | any[] | undefined | null;\n\n /**\n * The label text displayed for the user\n */\n @Prop({ mutable: true, reflect: true }) label: string;\n \n /**\n * If `true`, the user cannot interact with the radio.\n */\n @Prop({ mutable: true, reflect: true }) disabled = false;\n\n /**\n * Emitted when the radio is clicked or Space/Enter is pressed above an unchecked radio\n */\n @Event({ eventName: 'wcsRadioClick' }) wcsRadioClick: EventEmitter<RadioChosedEvent>\n\n /**\n * Emitted when the radio loses focus.\n */\n @Event() wcsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio has focus.\n */\n @Event() wcsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * The name of the control, automatically set by the radio group. \n * (You shouldn't set this prop by yourself)\n * @internal\n */\n @Prop({ mutable: true }) name: string;\n\n\n /**\n * The display mode of the control, automatically set by the radio group. \n * (You shouldn't set this prop by yourself)\n * @internal\n */\n @Prop({ reflect: true, mutable: false }) mode: RadioGroupMode = 'radio';\n\n /**\n * @internal\n * Checks of unchecks the radio according to it's radio-group value\n */\n @Method()\n async updateState() {\n const radioGroup = this.getClosestRadioGroup();\n if (radioGroup) {\n this.checked = radioGroup.name === this.name && radioGroup.value === this.value\n }\n }\n\n /** @internal */\n @Method()\n async setTabIndex(value: number) {\n this.radioTabIndex = value;\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeRadio, attr, value);\n }\n\n onFocus(ev: FocusEvent) {\n this.wcsFocus.emit(ev);\n }\n\n onBlur(ev: FocusEvent) {\n this.wcsBlur.emit(ev);\n }\n \n private getClosestRadioGroup(): HTMLWcsRadioGroupElement | null {\n return this.el.closest('wcs-radio-group');\n }\n\n componentWillLoad(): Promise<void> | void {\n if (this.value === undefined) {\n // If no value was given we use the text content instead.\n this.value = this.el.innerText || '';\n }\n \n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, RADIO_INHERITED_ATTRS),\n };\n }\n \n private onChange(_: Event) {\n if (this.disabled) return;\n\n // If the radio is unchecked, then the change represents its transition to the check state.\n // Only emit the change event when going from unchecked to checked, like the native behavior.\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event\n if (!this.checked) {\n this.checked = true;\n this.emitRadioChangeEvent();\n }\n }\n\n emitRadioChangeEvent() {\n this.wcsRadioClick.emit({\n label: this.label,\n source: this.el,\n value: this.value\n });\n }\n\n render() {\n \n return (\n <Host slot=\"option\"\n tabIndex={this.disabled ? -1 : this.radioTabIndex}\n class={this.checked ? 'checked' : ''}>\n <input\n id={this.inputId}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked} // Initial checked state of native input\n disabled={this.disabled}\n onChange={this.onChange.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n aria-disabled={this.disabled ? 'true' : null}\n aria-checked={`${this.checked}`}\n ref={(el) => (this.nativeRadio = el)}\n {...this.inheritedAttributes}\n />\n <label htmlFor={`${this.inputId}`}>{this.label}</label>\n </Host>\n );\n }\n}\n\nlet radioButtonIds = 0;\n"],"version":3}
1
+ {"file":"wcs-radio.entry.js","mappings":"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","names":[],"sources":["src/components/radio/radio.scss?tag=wcs-radio&encapsulation=shadow","src/components/radio/radio.tsx"],"sourcesContent":["@import '../../style/focus-outline.scss';\n\n:host {\n width: fit-content;\n\n --wcs-radio-transition-duration: var(--wcs-semantic-motion-duration-feedback-base);\n\n // region mode Radio\n --wcs-radio-text-color-default: var(--wcs-semantic-color-text-secondary);\n --wcs-radio-text-font-weight-default: var(--wcs-semantic-font-weight-medium);\n\n --wcs-radio-text-color-selected: var(--wcs-semantic-color-text-primary);\n --wcs-radio-text-font-weight-selected: var(--wcs-semantic-font-weight-medium);\n\n --wcs-radio-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n --wcs-radio-text-color-hover: var(--wcs-semantic-color-text-primary);\n\n --wcs-radio-checkmark-size: 1rem; // for now, we let raw value to let adjust the size based on base font size\n\n --wcs-radio-gap: var(--wcs-semantic-spacing-base);\n\n --wcs-radio-outline-color-focus: var(--wcs-semantic-color-border-focus-base); // outline color for focus ring\n\n --wcs-radio-checkmark-border-width: var(--wcs-semantic-border-width-large);\n --wcs-radio-checkmark-border-color-default: var(--wcs-semantic-color-border-control-indicator-default);\n --wcs-radio-checkmark-border-color-selected: var(--wcs-semantic-color-border-control-indicator-selected);\n --wcs-radio-checkmark-border-color-hover: var(--wcs-semantic-color-border-control-indicator-hover);\n --wcs-radio-checkmark-border-color-disabled: var(--wcs-semantic-color-border-control-indicator-disabled);\n\n --wcs-radio-checkmark-background-color-default: transparent;\n --wcs-radio-checkmark-background-color-selected: var(--wcs-semantic-color-background-control-indicator-selected);\n --wcs-radio-checkmark-background-color-selected-disabled: var(--wcs-semantic-color-background-control-indicator-disabled);\n --wcs-radio-checkmark-background-color-selected-hover: var(--wcs-semantic-color-background-control-indicator-hover);\n\n --wcs-radio-checkmark-outline-distance-with-checkmark-circle: var(--wcs-semantic-spacing-small);\n --wcs-radio-checkmark-outline-width: var(--wcs-semantic-border-width-large);\n --wcs-radio-checkmark-outline-color: var(--wcs-semantic-color-foreground-control-indicator-selected);\n --wcs-radio-checkmark-border-radius: var(--wcs-semantic-border-radius-full);\n\n --wcs-radio-border-radius: var(--wcs-semantic-border-radius-base);\n // endregion\n\n // region mode Option\n --wcs-radio-option-background-color-default: var(--wcs-semantic-color-background-action-secondary-default);\n --wcs-radio-option-background-color-hover: var(--wcs-semantic-color-background-action-secondary-default);\n --wcs-radio-option-background-color-press: var(--wcs-semantic-color-background-action-secondary-default);\n --wcs-radio-option-background-color-disabled: var(--wcs-semantic-color-background-action-secondary-default);\n\n --wcs-radio-option-background-color-selected-default: var(--wcs-semantic-color-background-action-primary-default);\n --wcs-radio-option-background-color-selected-hover: var(--wcs-semantic-color-background-action-primary-hover);\n --wcs-radio-option-background-color-selected-press: var(--wcs-semantic-color-background-action-primary-press);\n --wcs-radio-option-background-color-selected-disabled: var(--wcs-semantic-color-background-action-primary-disabled);\n\n --wcs-radio-option-text-color-default: var(--wcs-semantic-color-foreground-action-secondary-default);\n --wcs-radio-option-text-color-hover: var(--wcs-semantic-color-foreground-action-secondary-default);\n --wcs-radio-option-text-color-press: var(--wcs-semantic-color-foreground-action-secondary-press);\n\n --wcs-radio-option-text-color-selected-default: var(--wcs-semantic-color-foreground-action-primary-default);\n --wcs-radio-option-text-color-selected-hover: var(--wcs-semantic-color-foreground-action-primary-hover);\n --wcs-radio-option-text-color-selected-press: var(--wcs-semantic-color-foreground-action-primary-press);\n --wcs-radio-option-text-color-disabled: var(--wcs-semantic-color-text-disabled);\n\n --wcs-radio-option-text-font-weight-default: var(--wcs-semantic-font-weight-roman);\n --wcs-radio-option-text-font-weight-selected: var(--wcs-semantic-font-weight-roman);\n\n --wcs-radio-option-border-radius: var(--wcs-semantic-border-radius-base);\n\n --wcs-radio-option-border-width: var(--wcs-semantic-border-width-default);\n\n --wcs-radio-option-border-color-hover: var(--wcs-semantic-color-border-action-secondary-hover);\n --wcs-radio-option-border-color-press: var(--wcs-semantic-color-border-action-secondary-press);\n\n --wcs-radio-option-padding-top: var(--wcs-semantic-spacing-base);\n --wcs-radio-option-padding-right: var(--wcs-semantic-spacing-large);\n --wcs-radio-option-padding-bottom: var(--wcs-semantic-spacing-base);\n --wcs-radio-option-padding-left: var(--wcs-semantic-spacing-large);\n // endregion\n}\n\n:host([mode=radio]),\n:host([mode=horizontal]) {\n input {\n position: absolute;\n opacity: 0;\n height: 1px;\n width: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n }\n\n label {\n margin-bottom: 0;\n color: var(--wcs-radio-text-color-default);\n font-weight: var(--wcs-radio-text-font-weight-default) !important;\n display: inline-block;\n\n &:before {\n border-radius: var(--wcs-radio-checkmark-border-radius);\n border: var(--wcs-radio-checkmark-border-width) solid var(--wcs-radio-checkmark-border-color-default);\n position: relative;\n width: var(--wcs-radio-checkmark-size);\n height: var(--wcs-radio-checkmark-size);\n pointer-events: none;\n content: \"\";\n background-color: var(--wcs-radio-checkmark-background-color-default);\n }\n }\n\n input:focus-visible + label {\n transition: none;\n @include focus-outline($outline-color: var(--wcs-radio-outline-color-focus), $border-radius: var(--wcs-radio-border-radius));\n }\n}\n\n:host([disabled]) {\n label {\n color: var(--wcs-radio-text-color-disabled);\n cursor: not-allowed;\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-disabled);\n }\n }\n}\n\n:host(:not([disabled])) {\n label {\n cursor: pointer;\n }\n}\n\n:host([mode=radio].checked),\n:host([mode=horizontal].checked) {\n label {\n color: var(--wcs-radio-text-color-selected);\n font-weight: var(--wcs-radio-text-font-weight-selected) !important;\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-selected);\n background-color: var(--wcs-radio-checkmark-background-color-selected);\n outline: solid var(--wcs-radio-checkmark-outline-width) var(--wcs-radio-checkmark-outline-color);\n outline-offset: calc(-1 * var(--wcs-radio-checkmark-outline-distance-with-checkmark-circle));\n }\n }\n}\n\n:host([mode=radio][disabled].checked),\n:host([mode=horizontal][disabled].checked) {\n label {\n color: var(--wcs-radio-text-color-disabled);\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-disabled);\n background-color: var(--wcs-radio-checkmark-background-color-selected-disabled);\n }\n }\n}\n\n:host([mode=radio]:hover:not([disabled])),\n:host([mode=horizontal]:hover:not([disabled])) {\n label {\n color: var(--wcs-radio-text-color-hover);\n\n &:before {\n border-color: var(--wcs-radio-checkmark-border-color-hover);\n background-color: var(--wcs-radio-checkmark-background-color-selected-hover);\n }\n }\n}\n\n:host([mode=radio]:hover:not([disabled]):not(.checked)),\n:host([mode=horizontal]:hover:not([disabled]):not(.checked)) {\n label:before {\n background-color: var(--wcs-radio-checkmark-background-color-default);\n }\n}\n\n:host([mode=radio]) {\n label {\n border: none;\n\n &:before {\n transition: background-color var(--wcs-radio-transition-duration) ease-in-out;\n margin-right: var(--wcs-radio-gap);\n display: inline-block;\n top: 3px;\n box-sizing: border-box;\n }\n\n &:empty::before {\n margin-right: 0;\n }\n }\n}\n\n:host([mode=horizontal]) {\n height: fit-content;\n\n label {\n &:before {\n transition: background-color var(--wcs-radio-transition-duration) ease-in-out;\n margin: auto auto var(--wcs-radio-gap);\n display: block;\n }\n\n &:empty::before {\n margin-bottom: 0;\n }\n }\n}\n\n:host([mode=option]) {\n font-weight: var(--wcs-radio-option-text-font-weight-default) !important;\n\n input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n box-sizing: border-box;\n padding: 0;\n }\n\n label {\n padding: var(--wcs-radio-option-padding-top) var(--wcs-radio-option-padding-right) var(--wcs-radio-option-padding-bottom) var(--wcs-radio-option-padding-left);\n margin-bottom: 0;\n color: var(--wcs-radio-option-text-color-default);\n white-space: nowrap;\n border-radius: var(--wcs-radio-option-border-radius);\n transition: background-color var(--wcs-radio-transition-duration) ease-in-out;\n background-color: var(--wcs-radio-option-background-color-default);\n }\n\n input:focus-visible + label {\n @include focus-outline($outline-color: var(--wcs-radio-outline-color-focus), $border-radius: var(--wcs-radio-border-radius), $outline-offset: 0);\n }\n}\n\n:host([mode=option][disabled]) {\n label {\n color: var(--wcs-radio-option-text-color-disabled);\n background-color: var(--wcs-radio-option-background-color-disabled);\n }\n}\n\n:host([mode=option][disabled].checked) {\n label {\n color: var(--wcs-radio-option-text-color-disabled);\n background-color: var(--wcs-radio-option-background-color-selected-disabled);\n }\n}\n\n:host([mode=option].checked) {\n label {\n font-weight: var(--wcs-radio-option-text-font-weight-selected) !important;\n color: var(--wcs-radio-option-text-color-selected-default);\n background-color: var(--wcs-radio-option-background-color-selected-default);\n }\n}\n\n:host([mode=option]:hover.checked:not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-selected-hover);\n background-color: var(--wcs-radio-option-background-color-selected-hover);\n }\n}\n\n:host([mode=option]:active.checked:not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-selected-press);\n background-color: var(--wcs-radio-option-background-color-selected-press);\n }\n}\n\n:host([mode=option]:hover:not(.checked):not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-hover);\n background-color: var(--wcs-radio-option-background-color-hover);\n outline: var(--wcs-radio-option-border-width) solid var(--wcs-radio-option-border-color-hover);\n }\n}\n\n:host([mode=option]:active:not(.checked):not([disabled])) {\n label {\n color: var(--wcs-radio-option-text-color-press);\n background-color: var(--wcs-radio-option-background-color-press);\n outline: var(--wcs-radio-option-border-width) solid var(--wcs-radio-option-border-color-press);\n\n\n\n }\n}\n","import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State\n} from '@stencil/core';\nimport { RadioChosedEvent } from './radio-interface';\nimport { RadioGroupMode } from '../radio-group/radio-group-interface';\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\nconst RADIO_INHERITED_ATTRS = ['title'];\n\n/**\n * The radio component should always be wrapped in a `wcs-radio-group`.\n * \n * @cssprop --wcs-radio-transition-duration - Duration of the transition\n * \n * @cssprop --wcs-radio-text-color-default - Color of the text when the radio is not selected\n * @cssprop --wcs-radio-text-font-weight-default - Default font weight of the text\n * @cssprop --wcs-radio-text-color-selected - Color of the text when the radio is selected\n * @cssprop --wcs-radio-text-font-weight-selected - Font weight of the text when the radio is selected\n * @cssprop --wcs-radio-text-color-disabled - Color of the text when the radio is disabled\n * @cssprop --wcs-radio-text-color-hover - Color of the text when the radio is hovered\n * \n * @cssprop --wcs-radio-outline-color-focus - Color of the outline when the radio is focused\n * \n * @cssprop --wcs-radio-checkmark-size - Size of the checkmark circle\n * @cssprop --wcs-radio-checkmark-border-width - Width of the border of the checkmark circle\n * @cssprop --wcs-radio-checkmark-border-color-default - Color of the border of the checkmark circle when the radio's is not selected\n * @cssprop --wcs-radio-checkmark-border-color-selected - Color of the border of the checkmark circle when the radio is selected\n * @cssprop --wcs-radio-checkmark-border-color-hover - Color of the border of the checkmark circle when the radio is hovered\n * @cssprop --wcs-radio-checkmark-border-color-disabled - Color of the border of the checkmark circle when the radio is disabled\n * @cssprop --wcs-radio-checkmark-background-color-default - Background color of the checkmark circle when the radio's is not selected\n * @cssprop --wcs-radio-checkmark-background-color-selected - Background color of the checkmark circle when the radio's is selected\n * @cssprop --wcs-radio-checkmark-background-color-selected-disabled - Background color of the checkmark circle when the radio is selected and disabled\n * @cssprop --wcs-radio-checkmark-background-color-selected-hover - Background color of the checkmark circle when the radio is selected and hovered\n *\n * @cssprop --wcs-radio-checkmark-outline-distance-with-checkmark-circle - Distance between the checkmark circle and the outline (inside the background)\n * @cssprop --wcs-radio-checkmark-outline-width - Width of the outline of the checkmark circle (inside the background)\n * @cssprop --wcs-radio-checkmark-outline-color - Color of the outline of the checkmark circle (inside the background)\n * @cssprop --wcs-radio-checkmark-border-radius - Border radius of the checkmark circle\n * \n * @cssprop --wcs-radio-gap - Gap between the radio checkmark circle and the label\n * \n * @cssprop --wcs-radio-border-radius - Border radius of the radio (default mode)\n *\n * @cssprop --wcs-radio-option-background-color-default - Background color of the radio option when not selected\n * @cssprop --wcs-radio-option-background-color-hover - Background color of the radio option not selected when hovered\n * @cssprop --wcs-radio-option-background-color-press - Background color of the radio option when pressed\n * @cssprop --wcs-radio-option-background-color-disabled - Background color of the radio option when disabled\n * \n * @cssprop --wcs-radio-option-background-color-selected-default - Background color of the radio option when selected\n * @cssprop --wcs-radio-option-background-color-selected-hover - Background color of the radio option when selected and hovered\n * @cssprop --wcs-radio-option-background-color-selected-press - Background color of the radio option when selected and pressed\n * @cssprop --wcs-radio-option-background-color-selected-disabled - Background color of the radio option when selected and disabled\n * \n * @cssprop --wcs-radio-option-text-color-default - Color of the text when the radio option is not selected\n * @cssprop --wcs-radio-option-text-color-hover - Color of the text when the radio option not selected is hovered\n * @cssprop --wcs-radio-option-text-color-press - Color of the text when the radio option is pressed\n * \n * @cssprop --wcs-radio-option-text-color-selected-default - Color of the text when the radio option is selected\n * @cssprop --wcs-radio-option-text-color-selected-hover - Color of the text when the radio option is selected and hovered\n * @cssprop --wcs-radio-option-text-color-selected-press - Color of the text when the radio option is selected and pressed\n * @cssprop --wcs-radio-option-text-color-disabled - Color of the text when the radio option's is disabled\n * \n * @cssprop --wcs-radio-option-text-font-weight-default - Default font weight of the text\n * @cssprop --wcs-radio-option-text-font-weight-selected - Font weight of the text when the radio option is selected\n *\n * @cssprop --wcs-radio-option-border-radius - Border radius of the radio option\n * @cssprop --wcs-radio-option-border-width - Width of the border of the radio option\n * @cssprop --wcs-radio-option-border-color-hover - Color of the border of the radio option when not selected and hovered\n * @cssprop --wcs-radio-option-border-color-press - Color of the border of the radio option when not selected and pressed\n * \n * @cssprop --wcs-radio-option-padding-top - Padding top of the radio option\n * @cssprop --wcs-radio-option-padding-right - Padding right of the radio option\n * @cssprop --wcs-radio-option-padding-bottom - Padding bottom of the radio option\n * @cssprop --wcs-radio-option-padding-left - Padding left of the radio option\n */\n@Component({\n tag: 'wcs-radio',\n styleUrl: 'radio.scss',\n shadow: {\n delegatesFocus: true\n }\n})\nexport class Radio implements ComponentInterface, MutableAriaAttribute {\n private inputId = `wcs-rb-${radioButtonIds++}`;\n @Element() private el!: HTMLWcsRadioElement;\n private nativeRadio!: HTMLInputElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n /**\n * If `true`, the radio is selected. \n * @private\n */\n @State() private checked: boolean = false;\n\n /**\n * The tabindex of the radio button\n * @private\n */\n @State() private radioTabIndex = -1;\n\n /**\n * Sets a unique value for each radio, used to identify which radio button in a group is selected\n */\n @Prop({ mutable: true, reflect: true }) value: any | any[] | undefined | null;\n\n /**\n * The label text displayed for the user\n */\n @Prop({ mutable: true, reflect: true }) label: string;\n \n /**\n * If `true`, the user cannot interact with the radio.\n */\n @Prop({ reflect: true, mutable: true }) disabled: boolean = false;\n\n /**\n * Emitted when the radio is clicked or Space/Enter is pressed above an unchecked radio\n */\n @Event({ eventName: 'wcsRadioClick' }) wcsRadioClick: EventEmitter<RadioChosedEvent>\n\n /**\n * Emitted when the radio loses focus.\n */\n @Event() wcsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio has focus.\n */\n @Event() wcsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * The name of the control, automatically set by the radio group. \n * (You shouldn't set this prop by yourself)\n * @internal\n */\n @Prop({ mutable: true }) name: string;\n\n\n /**\n * The display mode of the control, automatically set by the radio group. \n * (You shouldn't set this prop by yourself)\n * @internal\n */\n @Prop({ reflect: true, mutable: false }) mode: RadioGroupMode = 'radio';\n\n /**\n * @internal\n * Checks of unchecks the radio according to it's radio-group value\n */\n @Method()\n async updateState() {\n const radioGroup = this.getClosestRadioGroup();\n if (radioGroup) {\n this.checked = radioGroup.name === this.name && radioGroup.value === this.value\n }\n }\n\n /** @internal */\n @Method()\n async setTabIndex(value: number) {\n this.radioTabIndex = value;\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeRadio, attr, value);\n }\n\n onFocus(ev: FocusEvent) {\n this.wcsFocus.emit(ev);\n }\n\n onBlur(ev: FocusEvent) {\n this.wcsBlur.emit(ev);\n }\n \n private getClosestRadioGroup(): HTMLWcsRadioGroupElement | null {\n return this.el.closest('wcs-radio-group');\n }\n\n componentWillLoad(): Promise<void> | void {\n if (this.value === undefined) {\n // If no value was given we use the text content instead.\n this.value = this.el.innerText || '';\n }\n \n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, RADIO_INHERITED_ATTRS),\n };\n }\n \n private onChange(_: Event) {\n if (this.disabled) return;\n\n // If the radio is unchecked, then the change represents its transition to the check state.\n // Only emit the change event when going from unchecked to checked, like the native behavior.\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event\n if (!this.checked) {\n this.checked = true;\n this.emitRadioChangeEvent();\n }\n }\n\n emitRadioChangeEvent() {\n this.wcsRadioClick.emit({\n label: this.label,\n source: this.el,\n value: this.value\n });\n }\n\n render() {\n \n return (\n <Host slot=\"option\"\n tabIndex={this.disabled ? -1 : this.radioTabIndex}\n class={this.checked ? 'checked' : ''}>\n <input\n id={this.inputId}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked} // Initial checked state of native input\n disabled={this.disabled}\n onChange={this.onChange.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n aria-disabled={this.disabled ? 'true' : null}\n aria-checked={`${this.checked}`}\n ref={(el) => (this.nativeRadio = el)}\n {...this.inheritedAttributes}\n />\n <label htmlFor={`${this.inputId}`}>{this.label}</label>\n </Host>\n );\n }\n}\n\nlet radioButtonIds = 0;\n"],"version":3}