wcs-core 7.2.2 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/README.md +11 -9
  2. package/design-tokens/dist/sncf-groupe-root-scoped.css +227 -227
  3. package/design-tokens/dist/sncf-groupe.css +227 -227
  4. package/design-tokens/dist/sncf-holding-root-scoped.css +227 -227
  5. package/design-tokens/dist/sncf-holding.css +227 -227
  6. package/design-tokens/dist/sncf-reseau-root-scoped.css +227 -227
  7. package/design-tokens/dist/sncf-reseau.css +227 -227
  8. package/design-tokens/dist/sncf-voyageurs-root-scoped.css +242 -242
  9. package/design-tokens/dist/sncf-voyageurs.css +242 -242
  10. package/dist/cjs/accessibility-5f681a74.js.map +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/{popper-8d6e7fca.js → popper-1b61df21.js} +10 -17
  13. package/dist/cjs/popper-1b61df21.js.map +1 -0
  14. package/dist/cjs/wcs-accordion-panel.cjs.entry.js +1 -1
  15. package/dist/cjs/wcs-accordion-panel.cjs.entry.js.map +1 -1
  16. package/dist/cjs/wcs-accordion.cjs.entry.js +2 -1
  17. package/dist/cjs/wcs-accordion.cjs.entry.js.map +1 -1
  18. package/dist/cjs/wcs-breadcrumb.cjs.entry.js +1 -1
  19. package/dist/cjs/wcs-breadcrumb.cjs.entry.js.map +1 -1
  20. package/dist/cjs/wcs-checkbox.cjs.entry.js +3 -2
  21. package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
  22. package/dist/cjs/wcs-chip.cjs.entry.js +102 -0
  23. package/dist/cjs/wcs-chip.cjs.entry.js.map +1 -0
  24. package/dist/cjs/wcs-com-nav-item.cjs.entry.js +1 -1
  25. package/dist/cjs/wcs-com-nav-item.cjs.entry.js.map +1 -1
  26. package/dist/cjs/wcs-com-nav.cjs.entry.js +3 -3
  27. package/dist/cjs/wcs-com-nav.cjs.entry.js.map +1 -1
  28. package/dist/cjs/wcs-dropdown.cjs.entry.js +1 -1
  29. package/dist/cjs/wcs-error_3.cjs.entry.js +1 -1
  30. package/dist/cjs/wcs-error_3.cjs.entry.js.map +1 -1
  31. package/dist/cjs/wcs-galactic-menu.cjs.entry.js +1 -1
  32. package/dist/cjs/wcs-grid.cjs.entry.js +5 -4
  33. package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
  34. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +3 -2
  35. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js.map +1 -1
  36. package/dist/cjs/wcs-modal.cjs.entry.js +2 -2
  37. package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
  38. package/dist/cjs/wcs-select_2.cjs.entry.js +59 -24
  39. package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
  40. package/dist/cjs/wcs-tabs.cjs.entry.js +1 -1
  41. package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
  42. package/dist/cjs/wcs.cjs.js +1 -1
  43. package/dist/collection/collection-manifest.json +1 -0
  44. package/dist/collection/components/accordion/accordion.e2e.playwright.js +183 -0
  45. package/dist/collection/components/accordion/accordion.e2e.playwright.js.map +1 -0
  46. package/dist/collection/components/accordion/accordion.js +2 -1
  47. package/dist/collection/components/accordion/accordion.js.map +1 -1
  48. package/dist/collection/components/accordion-panel/accordion-panel.js +3 -3
  49. package/dist/collection/components/accordion-panel/accordion-panel.js.map +1 -1
  50. package/dist/collection/components/alert/alert.e2e.playwright.js +125 -0
  51. package/dist/collection/components/alert/alert.e2e.playwright.js.map +1 -0
  52. package/dist/collection/components/alert-drawer/alert-drawer.e2e.playwright.js +107 -0
  53. package/dist/collection/components/alert-drawer/alert-drawer.e2e.playwright.js.map +1 -0
  54. package/dist/collection/components/breadcrumb/breadcrumb.e2e.playwright.js +188 -0
  55. package/dist/collection/components/breadcrumb/breadcrumb.e2e.playwright.js.map +1 -0
  56. package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
  57. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  58. package/dist/collection/components/button/button.e2e.playwright.js +26 -0
  59. package/dist/collection/components/button/button.e2e.playwright.js.map +1 -0
  60. package/dist/collection/components/button/button.js +1 -1
  61. package/dist/collection/components/checkbox/checkbox.css +3 -0
  62. package/dist/collection/components/checkbox/checkbox.e2e.playwright.js +39 -0
  63. package/dist/collection/components/checkbox/checkbox.e2e.playwright.js.map +1 -0
  64. package/dist/collection/components/checkbox/checkbox.js +21 -2
  65. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  66. package/dist/collection/components/chip/chip-interface.js +2 -0
  67. package/dist/collection/components/chip/chip-interface.js.map +1 -0
  68. package/dist/collection/components/chip/chip.css +220 -0
  69. package/dist/collection/components/chip/chip.e2e.playwright.js +190 -0
  70. package/dist/collection/components/chip/chip.e2e.playwright.js.map +1 -0
  71. package/dist/collection/components/chip/chip.js +341 -0
  72. package/dist/collection/components/chip/chip.js.map +1 -0
  73. package/dist/collection/components/com-nav/com-nav.css +15 -0
  74. package/dist/collection/components/com-nav/{com-nav.e2e.js → com-nav.e2e.playwright.js} +60 -44
  75. package/dist/collection/components/com-nav/com-nav.e2e.playwright.js.map +1 -0
  76. package/dist/collection/components/com-nav/com-nav.js +3 -3
  77. package/dist/collection/components/com-nav/com-nav.js.map +1 -1
  78. package/dist/collection/components/com-nav-category/com-nav-category.js +1 -1
  79. package/dist/collection/components/com-nav-item/com-nav-item.css +2 -2
  80. package/dist/collection/components/com-nav-submenu/com-nav-submenu.js +1 -1
  81. package/dist/collection/components/counter/counter.e2e.playwright.js +187 -0
  82. package/dist/collection/components/counter/counter.e2e.playwright.js.map +1 -0
  83. package/dist/collection/components/counter/counter.js +1 -1
  84. package/dist/collection/components/dropdown/dropdown.e2e.playwright.js +320 -0
  85. package/dist/collection/components/dropdown/dropdown.e2e.playwright.js.map +1 -0
  86. package/dist/collection/components/dropdown/dropdown.js +1 -1
  87. package/dist/collection/components/editable-field/editable-field.e2e.playwright.js +156 -0
  88. package/dist/collection/components/editable-field/editable-field.e2e.playwright.js.map +1 -0
  89. package/dist/collection/components/form-field/form-field.e2e.playwright.js +104 -0
  90. package/dist/collection/components/form-field/form-field.e2e.playwright.js.map +1 -0
  91. package/dist/collection/components/galactic-menu/galactic-menu.js +1 -1
  92. package/dist/collection/components/grid/grid.e2e.playwright.js +153 -0
  93. package/dist/collection/components/grid/grid.e2e.playwright.js.map +1 -0
  94. package/dist/collection/components/grid/grid.js +6 -5
  95. package/dist/collection/components/grid/grid.js.map +1 -1
  96. package/dist/collection/components/grid-column/grid-column.js +1 -1
  97. package/dist/collection/components/grid-pagination/grid-pagination.js +1 -1
  98. package/dist/collection/components/header/header.js +1 -1
  99. package/dist/collection/components/horizontal-stepper/horizontal-step.js +2 -1
  100. package/dist/collection/components/horizontal-stepper/horizontal-step.js.map +1 -1
  101. package/dist/collection/components/horizontal-stepper/horizontal-stepper-interface.js.map +1 -1
  102. package/dist/collection/components/horizontal-stepper/horizontal-stepper.js +5 -1
  103. package/dist/collection/components/horizontal-stepper/horizontal-stepper.js.map +1 -1
  104. package/dist/collection/components/icon/icon.js +1 -1
  105. package/dist/collection/components/input/input.e2e.playwright.js +157 -0
  106. package/dist/collection/components/input/input.e2e.playwright.js.map +1 -0
  107. package/dist/collection/components/input/input.js +2 -2
  108. package/dist/collection/components/label/label.css +4 -6
  109. package/dist/collection/components/label/label.js +1 -1
  110. package/dist/collection/components/mat-icon/mat-icon.js +1 -1
  111. package/dist/collection/components/modal/modal.css +4 -0
  112. package/dist/collection/components/modal/modal.e2e.playwright.js +35 -0
  113. package/dist/collection/components/modal/modal.e2e.playwright.js.map +1 -0
  114. package/dist/collection/components/modal/modal.js +2 -2
  115. package/dist/collection/components/modal/modal.js.map +1 -1
  116. package/dist/collection/components/native-select/native-select.js +1 -1
  117. package/dist/collection/components/nav/nav.js +1 -1
  118. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  119. package/dist/collection/components/progress-radial/progress-radial.js +1 -1
  120. package/dist/collection/components/radio/radio.js +1 -1
  121. package/dist/collection/components/radio-group/radio-group.e2e.playwright.js +231 -0
  122. package/dist/collection/components/radio-group/radio-group.e2e.playwright.js.map +1 -0
  123. package/dist/collection/components/radio-group/radio-group.js +1 -1
  124. package/dist/collection/components/select/select.e2e.playwright.js +1702 -0
  125. package/dist/collection/components/select/select.e2e.playwright.js.map +1 -0
  126. package/dist/collection/components/select/select.js +49 -20
  127. package/dist/collection/components/select/select.js.map +1 -1
  128. package/dist/collection/components/select-option/select-option.js +3 -3
  129. package/dist/collection/components/select-option/select-option.js.map +1 -1
  130. package/dist/collection/components/switch/switch.e2e.playwright.js +40 -0
  131. package/dist/collection/components/switch/switch.e2e.playwright.js.map +1 -0
  132. package/dist/collection/components/switch/switch.js +1 -1
  133. package/dist/collection/components/tabs/tabs.e2e.playwright.js +205 -0
  134. package/dist/collection/components/tabs/tabs.e2e.playwright.js.map +1 -0
  135. package/dist/collection/components/tabs/tabs.js +1 -1
  136. package/dist/collection/components/textarea/textarea.e2e.playwright.js +133 -0
  137. package/dist/collection/components/textarea/textarea.e2e.playwright.js.map +1 -0
  138. package/dist/collection/components/textarea/textarea.js +1 -1
  139. package/dist/collection/utils/accessibility.js +16 -0
  140. package/dist/collection/utils/accessibility.js.map +1 -1
  141. package/dist/collection/utils/playwright/test-expect.js +2 -0
  142. package/dist/collection/utils/playwright/test-expect.js.map +1 -0
  143. package/dist/collection/utils/playwright/test.js +16 -0
  144. package/dist/collection/utils/playwright/test.js.map +1 -0
  145. package/dist/esm/accessibility-069640cf.js.map +1 -1
  146. package/dist/esm/loader.js +1 -1
  147. package/dist/esm/{popper-e491c314.js → popper-ac238961.js} +10 -17
  148. package/dist/esm/popper-ac238961.js.map +1 -0
  149. package/dist/esm/wcs-accordion-panel.entry.js +1 -1
  150. package/dist/esm/wcs-accordion-panel.entry.js.map +1 -1
  151. package/dist/esm/wcs-accordion.entry.js +2 -1
  152. package/dist/esm/wcs-accordion.entry.js.map +1 -1
  153. package/dist/esm/wcs-breadcrumb.entry.js +1 -1
  154. package/dist/esm/wcs-breadcrumb.entry.js.map +1 -1
  155. package/dist/esm/wcs-checkbox.entry.js +3 -2
  156. package/dist/esm/wcs-checkbox.entry.js.map +1 -1
  157. package/dist/esm/wcs-chip.entry.js +98 -0
  158. package/dist/esm/wcs-chip.entry.js.map +1 -0
  159. package/dist/esm/wcs-com-nav-item.entry.js +1 -1
  160. package/dist/esm/wcs-com-nav-item.entry.js.map +1 -1
  161. package/dist/esm/wcs-com-nav.entry.js +3 -3
  162. package/dist/esm/wcs-com-nav.entry.js.map +1 -1
  163. package/dist/esm/wcs-dropdown.entry.js +1 -1
  164. package/dist/esm/wcs-error_3.entry.js +1 -1
  165. package/dist/esm/wcs-error_3.entry.js.map +1 -1
  166. package/dist/esm/wcs-galactic-menu.entry.js +1 -1
  167. package/dist/esm/wcs-grid.entry.js +5 -4
  168. package/dist/esm/wcs-grid.entry.js.map +1 -1
  169. package/dist/esm/wcs-horizontal-stepper.entry.js +3 -2
  170. package/dist/esm/wcs-horizontal-stepper.entry.js.map +1 -1
  171. package/dist/esm/wcs-modal.entry.js +2 -2
  172. package/dist/esm/wcs-modal.entry.js.map +1 -1
  173. package/dist/esm/wcs-select_2.entry.js +59 -24
  174. package/dist/esm/wcs-select_2.entry.js.map +1 -1
  175. package/dist/esm/wcs-tabs.entry.js +1 -1
  176. package/dist/esm/wcs-tooltip.entry.js +1 -1
  177. package/dist/esm/wcs.js +1 -1
  178. package/dist/types/components/accordion/accordion.e2e.playwright.d.ts +1 -0
  179. package/dist/types/components/accordion-panel/accordion-panel.d.ts +5 -0
  180. package/dist/types/components/alert/alert.e2e.playwright.d.ts +1 -0
  181. package/dist/types/components/alert-drawer/alert-drawer.e2e.playwright.d.ts +1 -0
  182. package/dist/types/components/breadcrumb/breadcrumb.e2e.playwright.d.ts +1 -0
  183. package/dist/types/components/button/button.e2e.playwright.d.ts +1 -0
  184. package/dist/types/components/checkbox/checkbox.d.ts +4 -0
  185. package/dist/types/components/checkbox/checkbox.e2e.playwright.d.ts +1 -0
  186. package/dist/types/components/chip/chip-interface.d.ts +4 -0
  187. package/dist/types/components/chip/chip.d.ts +132 -0
  188. package/dist/types/components/chip/chip.e2e.playwright.d.ts +1 -0
  189. package/dist/types/components/com-nav/com-nav.e2e.playwright.d.ts +1 -0
  190. package/dist/types/components/counter/counter.e2e.playwright.d.ts +1 -0
  191. package/dist/types/components/dropdown/dropdown.e2e.playwright.d.ts +1 -0
  192. package/dist/types/components/editable-field/editable-field.e2e.playwright.d.ts +1 -0
  193. package/dist/types/components/form-field/form-field.e2e.playwright.d.ts +1 -0
  194. package/dist/types/components/grid/grid.e2e.playwright.d.ts +1 -0
  195. package/dist/types/components/horizontal-stepper/horizontal-stepper-interface.d.ts +2 -0
  196. package/dist/types/components/horizontal-stepper/horizontal-stepper.d.ts +4 -0
  197. package/dist/types/components/input/input.e2e.playwright.d.ts +1 -0
  198. package/dist/types/components/modal/modal.e2e.playwright.d.ts +1 -0
  199. package/dist/types/components/radio-group/radio-group.e2e.playwright.d.ts +1 -0
  200. package/dist/types/components/select/select.d.ts +7 -1
  201. package/dist/types/components/select/select.e2e.playwright.d.ts +1 -0
  202. package/dist/types/components/switch/switch.e2e.playwright.d.ts +1 -0
  203. package/dist/types/components/tabs/tabs.e2e.playwright.d.ts +1 -0
  204. package/dist/types/components/textarea/textarea.e2e.playwright.d.ts +1 -0
  205. package/dist/types/components.d.ts +354 -0
  206. package/dist/types/utils/accessibility.d.ts +7 -0
  207. package/dist/types/utils/playwright/test-expect.d.ts +33 -0
  208. package/dist/types/utils/playwright/test.d.ts +7 -0
  209. package/dist/wcs/{p-8e9bd0f1.entry.js → p-0326f834.entry.js} +2 -2
  210. package/dist/wcs/{p-8e9bd0f1.entry.js.map → p-0326f834.entry.js.map} +1 -1
  211. package/dist/wcs/p-2221bf0c.entry.js +16 -0
  212. package/dist/wcs/p-2221bf0c.entry.js.map +1 -0
  213. package/dist/wcs/p-4ae08567.entry.js +2 -0
  214. package/dist/wcs/p-4ae08567.entry.js.map +1 -0
  215. package/dist/wcs/p-4e2d6227.entry.js +2 -0
  216. package/dist/wcs/p-4e2d6227.entry.js.map +1 -0
  217. package/dist/wcs/p-828b45b4.entry.js +2 -0
  218. package/dist/wcs/p-828b45b4.entry.js.map +1 -0
  219. package/dist/wcs/p-8332a7e3.entry.js +2 -0
  220. package/dist/wcs/p-8332a7e3.entry.js.map +1 -0
  221. package/dist/wcs/p-990698a7.entry.js +2 -0
  222. package/dist/wcs/p-990698a7.entry.js.map +1 -0
  223. package/dist/wcs/{p-ec383729.entry.js → p-9b76b8e6.entry.js} +2 -2
  224. package/dist/wcs/{p-ec383729.entry.js.map → p-9b76b8e6.entry.js.map} +1 -1
  225. package/dist/wcs/{p-1f593d06.entry.js → p-abd8d5a0.entry.js} +2 -2
  226. package/dist/wcs/{p-622f7403.entry.js → p-c6f8c45c.entry.js} +2 -2
  227. package/dist/wcs/{p-a94e685c.entry.js → p-db7ba599.entry.js} +2 -2
  228. package/dist/wcs/p-e1fb3625.js +2 -0
  229. package/dist/wcs/p-e1fb3625.js.map +1 -0
  230. package/dist/wcs/p-ed3b0709.entry.js +2 -0
  231. package/dist/wcs/p-ed3b0709.entry.js.map +1 -0
  232. package/dist/wcs/{p-6c6079ee.entry.js → p-f2eeb249.entry.js} +2 -2
  233. package/dist/wcs/{p-6c6079ee.entry.js.map → p-f2eeb249.entry.js.map} +1 -1
  234. package/dist/wcs/{p-a956dc84.entry.js → p-f2f7595e.entry.js} +2 -2
  235. package/dist/wcs/{p-a956dc84.entry.js.map → p-f2f7595e.entry.js.map} +1 -1
  236. package/dist/wcs/p-fb2751c2.js.map +1 -1
  237. package/dist/wcs/p-fbd68522.entry.js +2 -0
  238. package/dist/wcs/p-fbd68522.entry.js.map +1 -0
  239. package/dist/wcs/{p-8c2605fd.entry.js → p-fe303f58.entry.js} +2 -2
  240. package/dist/wcs/wcs.esm.js +1 -1
  241. package/dist/wcs/wcs.esm.js.map +1 -1
  242. package/package.json +18 -24
  243. package/dist/cjs/popper-8d6e7fca.js.map +0 -1
  244. package/dist/collection/components/alert/alert.e2e.js +0 -142
  245. package/dist/collection/components/alert/alert.e2e.js.map +0 -1
  246. package/dist/collection/components/alert-drawer/alert-drawer.e2e.js +0 -111
  247. package/dist/collection/components/alert-drawer/alert-drawer.e2e.js.map +0 -1
  248. package/dist/collection/components/breadcrumb/breadcrumb.e2e.js +0 -223
  249. package/dist/collection/components/breadcrumb/breadcrumb.e2e.js.map +0 -1
  250. package/dist/collection/components/button/button.e2e.js +0 -25
  251. package/dist/collection/components/button/button.e2e.js.map +0 -1
  252. package/dist/collection/components/checkbox/checkbox.e2e.js +0 -45
  253. package/dist/collection/components/checkbox/checkbox.e2e.js.map +0 -1
  254. package/dist/collection/components/com-nav/com-nav.e2e.js.map +0 -1
  255. package/dist/collection/components/counter/counter.e2e.js +0 -206
  256. package/dist/collection/components/counter/counter.e2e.js.map +0 -1
  257. package/dist/collection/components/dropdown/dropdown.e2e.js +0 -156
  258. package/dist/collection/components/dropdown/dropdown.e2e.js.map +0 -1
  259. package/dist/collection/components/editable-field/editable-field.e2e.js +0 -176
  260. package/dist/collection/components/editable-field/editable-field.e2e.js.map +0 -1
  261. package/dist/collection/components/form-field/form-field.e2e.js +0 -122
  262. package/dist/collection/components/form-field/form-field.e2e.js.map +0 -1
  263. package/dist/collection/components/grid/grid.e2e.js +0 -147
  264. package/dist/collection/components/grid/grid.e2e.js.map +0 -1
  265. package/dist/collection/components/input/input.e2e.js +0 -152
  266. package/dist/collection/components/input/input.e2e.js.map +0 -1
  267. package/dist/collection/components/modal/modal.e2e.js +0 -36
  268. package/dist/collection/components/modal/modal.e2e.js.map +0 -1
  269. package/dist/collection/components/radio-group/radio-group.e2e.js +0 -239
  270. package/dist/collection/components/radio-group/radio-group.e2e.js.map +0 -1
  271. package/dist/collection/components/select/select.e2e.js +0 -1081
  272. package/dist/collection/components/select/select.e2e.js.map +0 -1
  273. package/dist/collection/components/switch/switch.e2e.js +0 -45
  274. package/dist/collection/components/switch/switch.e2e.js.map +0 -1
  275. package/dist/collection/components/tabs/tabs.e2e.js +0 -207
  276. package/dist/collection/components/tabs/tabs.e2e.js.map +0 -1
  277. package/dist/collection/components/textarea/textarea.e2e.js +0 -132
  278. package/dist/collection/components/textarea/textarea.e2e.js.map +0 -1
  279. package/dist/collection/utils/tests.js +0 -23
  280. package/dist/collection/utils/tests.js.map +0 -1
  281. package/dist/esm/popper-e491c314.js.map +0 -1
  282. package/dist/types/utils/tests.d.ts +0 -4
  283. package/dist/wcs/p-02f31010.entry.js +0 -2
  284. package/dist/wcs/p-02f31010.entry.js.map +0 -1
  285. package/dist/wcs/p-0dd07842.entry.js +0 -2
  286. package/dist/wcs/p-0dd07842.entry.js.map +0 -1
  287. package/dist/wcs/p-0f864e86.js +0 -2
  288. package/dist/wcs/p-0f864e86.js.map +0 -1
  289. package/dist/wcs/p-1244daa0.entry.js +0 -2
  290. package/dist/wcs/p-1244daa0.entry.js.map +0 -1
  291. package/dist/wcs/p-1fbe0328.entry.js +0 -2
  292. package/dist/wcs/p-1fbe0328.entry.js.map +0 -1
  293. package/dist/wcs/p-4fb2d985.entry.js +0 -2
  294. package/dist/wcs/p-4fb2d985.entry.js.map +0 -1
  295. package/dist/wcs/p-b94a09b6.entry.js +0 -16
  296. package/dist/wcs/p-b94a09b6.entry.js.map +0 -1
  297. package/dist/wcs/p-fd187bce.entry.js +0 -2
  298. package/dist/wcs/p-fd187bce.entry.js.map +0 -1
  299. /package/dist/wcs/{p-1f593d06.entry.js.map → p-abd8d5a0.entry.js.map} +0 -0
  300. /package/dist/wcs/{p-622f7403.entry.js.map → p-c6f8c45c.entry.js.map} +0 -0
  301. /package/dist/wcs/{p-a94e685c.entry.js.map → p-db7ba599.entry.js.map} +0 -0
  302. /package/dist/wcs/{p-8c2605fd.entry.js.map → p-fe303f58.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.e2e.playwright.js","sourceRoot":"","sources":["../../../src/components/alert/alert.e2e.playwright.ts"],"names":[],"mappings":"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","sourcesContent":["import { setWcsContent } from '../../utils/playwright/test';\nimport { test, E2EPage } from \"@stencil/playwright\";\nimport { expect } from \"@playwright/test\";\nconst WAITING_DELAY_BEFORE_ASSERTIONS = 4_000;\n\ntest.describe('alert', () => {\n test('should display title and subtitle content', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert>\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n // Then\n const title = page.locator('wcs-alert > [slot=\"title\"]');\n const subtitle = page.locator('wcs-alert > [slot=\"subtitle\"]');\n await expect(title).toHaveText('Test Title');\n await expect(subtitle).toHaveText('Test Subtitle');\n });\n\n test('should emit wcsAlertDismiss event when close button is clicked', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert>\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n const alertDismissSpy = await page.spyOnEvent('wcsAlertDismiss');\n\n const alert = page.locator('wcs-alert');\n const closeButton = alert.locator('.close-button');\n\n // When\n await closeButton.click();\n await page.waitForChanges();\n\n // Then\n expect(alertDismissSpy).toHaveReceivedEventTimes(1);\n await expect(alert).toHaveJSProperty('show', false);\n });\n\n test('should auto-dismiss after timeout', async ({ page }: { page: E2EPage }) => {\n // Given\n const timeout = 500;\n await setWcsContent(page, `\n <wcs-alert timeout=\"${timeout}\">\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n const alertDismissSpy = await page.spyOnEvent('wcsAlertDismiss');\n\n const alert = page.locator('wcs-alert');\n\n // Wait longer than the specified timeout to account for processing time\n await page.waitForTimeout(timeout + WAITING_DELAY_BEFORE_ASSERTIONS);\n await page.waitForChanges();\n\n // Then\n expect(alertDismissSpy).toHaveReceivedEventTimes(1);\n await expect(alert).toHaveJSProperty('show', false);\n });\n\n test('should not auto-dismiss if timeout is 0', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert timeout=\"0\">\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n const alertDismissSpy = await page.spyOnEvent('wcsAlertDismiss');\n\n const alert = page.locator('wcs-alert');\n\n // Wait for some time to ensure the alert doesn't auto-dismiss\n await page.waitForTimeout(WAITING_DELAY_BEFORE_ASSERTIONS);\n await page.waitForChanges();\n\n // Then\n expect(alertDismissSpy).toHaveReceivedEventTimes(0);\n await expect(alert).toHaveJSProperty('show', true);\n });\n\n test('should display progress bar when showProgressBar is true', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert show-progress-bar>\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n // Then\n const progressBar = page.locator('wcs-alert').locator('.progress-bar:not(.hidden)');\n await expect(progressBar).toBeVisible();\n });\n\n test('should not display progress bar when showProgressBar is false', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert>\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n // Then\n const progressBar = page.locator('wcs-alert').locator('.progress-bar.hidden');\n await expect(progressBar).toHaveCount(1);\n });\n\n test('should not auto-dismiss when mouse is hovering', async ({ page }: { page: E2EPage }) => {\n // Given\n const timeout = 500;\n await setWcsContent(page, `\n <wcs-alert timeout=\"${timeout}\">\n <span slot=\"title\">Test Title</span>\n <span slot=\"subtitle\">Test Subtitle</span>\n </wcs-alert>\n `);\n\n const alertDismissHover = await page.spyOnEvent('wcsAlertDismiss');\n\n const alert = page.locator('wcs-alert');\n\n await expect(alert).toHaveJSProperty('show', true);\n\n // Simulate mouse hover\n await alert.dispatchEvent('mouseover');\n\n // Wait longer than the component timeout\n await page.waitForTimeout(timeout + 500);\n await page.waitForChanges();\n\n // Then - The alert should still be visible while mouse is hovering\n expect(alertDismissHover).toHaveReceivedEventTimes(0);\n await expect(alert).toHaveJSProperty('show', true);\n\n // When - Mouse leaves using dispatchEvent\n await alert.dispatchEvent('mouseout');\n await page.waitForChanges();\n\n // Then - The alert should dismiss\n expect(alertDismissHover).toHaveReceivedEventTimes(1);\n await expect(alert).toHaveJSProperty('show', false);\n });\n});\n"]}
@@ -0,0 +1,107 @@
1
+ import { setWcsContent } from "../../utils/playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { expect } from "@playwright/test";
4
+ const WAITING_DELAY_BEFORE_ASSERTIONS = 1000;
5
+ test.describe('alert-drawer', () => {
6
+ test('should show an alert when using show() method', async ({ page }) => {
7
+ // Given
8
+ await setWcsContent(page, `
9
+ <wcs-alert-drawer position="bottom-right"></wcs-alert-drawer>
10
+ `);
11
+ const alertDrawer = page.locator('wcs-alert-drawer');
12
+ // When
13
+ await alertDrawer.evaluate((el) => el.show({
14
+ title: 'Test Title',
15
+ subtitle: 'Test Subtitle',
16
+ intent: 'success',
17
+ showProgressBar: false,
18
+ timeout: 0
19
+ }));
20
+ await page.waitForChanges();
21
+ // Then
22
+ const alert = alertDrawer.locator('wcs-alert');
23
+ await expect(alert).toHaveCount(1);
24
+ const title = alertDrawer.locator('wcs-alert > [slot="title"]');
25
+ const subtitle = alertDrawer.locator('wcs-alert > [slot="subtitle"]');
26
+ await expect(title).toHaveText('Test Title');
27
+ await expect(subtitle).toHaveText('Test Subtitle');
28
+ });
29
+ test('should close the alert after timeout', async ({ page }) => {
30
+ // Given
31
+ await setWcsContent(page, `
32
+ <wcs-alert-drawer></wcs-alert-drawer>
33
+ `);
34
+ const alertDrawer = page.locator('wcs-alert-drawer');
35
+ // When
36
+ await alertDrawer.evaluate((el) => el.show({
37
+ title: 'Test Title',
38
+ subtitle: 'Test Subtitle',
39
+ intent: 'success',
40
+ showProgressBar: false,
41
+ timeout: 100 // Short timeout for testing
42
+ }));
43
+ // Wait for the alert to be removed
44
+ await page.waitForTimeout(WAITING_DELAY_BEFORE_ASSERTIONS); // Wait a bit longer than the timeout
45
+ await page.waitForChanges();
46
+ // Then
47
+ const alert = alertDrawer.locator('wcs-alert');
48
+ await expect(alert).toHaveCount(0);
49
+ });
50
+ test('should show progress bar when showProgressBar is true', async ({ page }) => {
51
+ // Given
52
+ await setWcsContent(page, `
53
+ <wcs-alert-drawer></wcs-alert-drawer>
54
+ `);
55
+ const alertDrawer = page.locator('wcs-alert-drawer');
56
+ // When
57
+ await alertDrawer.evaluate((el) => el.show({
58
+ title: 'Test Title',
59
+ subtitle: 'Test Subtitle',
60
+ intent: 'success',
61
+ showProgressBar: true,
62
+ timeout: 5000
63
+ }));
64
+ await page.waitForChanges();
65
+ // Then
66
+ const progressBar = alertDrawer.locator('wcs-alert').locator('.progress-bar');
67
+ await expect(progressBar).toBeVisible();
68
+ });
69
+ test('should have correct ARIA attributes for accessibility', async ({ page }) => {
70
+ // Given
71
+ await setWcsContent(page, `
72
+ <wcs-alert-drawer></wcs-alert-drawer>
73
+ `);
74
+ const alertDrawer = page.locator('wcs-alert-drawer');
75
+ // Then
76
+ await expect(alertDrawer).toHaveAttribute('role', 'region');
77
+ await expect(alertDrawer).toHaveAttribute('aria-live', 'polite');
78
+ await expect(alertDrawer).toHaveAttribute('aria-atomic', 'true');
79
+ });
80
+ test('should handle multiple alerts', async ({ page }) => {
81
+ // Given
82
+ await setWcsContent(page, `
83
+ <wcs-alert-drawer></wcs-alert-drawer>
84
+ `);
85
+ const alertDrawer = page.locator('wcs-alert-drawer');
86
+ // When
87
+ await alertDrawer.evaluate((el) => el.show({
88
+ title: 'First Alert',
89
+ subtitle: 'First Subtitle',
90
+ intent: 'success',
91
+ showProgressBar: false,
92
+ timeout: 0
93
+ }));
94
+ await alertDrawer.evaluate((el) => el.show({
95
+ title: 'Second Alert',
96
+ subtitle: 'Second Subtitle',
97
+ intent: 'warning',
98
+ showProgressBar: false,
99
+ timeout: 0
100
+ }));
101
+ await page.waitForChanges();
102
+ // Then
103
+ const alerts = alertDrawer.locator('wcs-alert');
104
+ await expect(alerts).toHaveCount(2);
105
+ });
106
+ });
107
+ //# sourceMappingURL=alert-drawer.e2e.playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-drawer.e2e.playwright.js","sourceRoot":"","sources":["../../../src/components/alert-drawer/alert-drawer.e2e.playwright.ts"],"names":[],"mappings":"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","sourcesContent":["import { setWcsContent } from '../../utils/playwright/test';\nimport { test, E2EPage } from \"@stencil/playwright\";\nimport { expect } from \"@playwright/test\";\nconst WAITING_DELAY_BEFORE_ASSERTIONS = 1_000;\n\ntest.describe('alert-drawer', () => {\n test('should show an alert when using show() method', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert-drawer position=\"bottom-right\"></wcs-alert-drawer>\n `);\n\n const alertDrawer = page.locator('wcs-alert-drawer');\n\n // When\n await alertDrawer.evaluate((el: any) => el.show({\n title: 'Test Title',\n subtitle: 'Test Subtitle',\n intent: 'success',\n showProgressBar: false,\n timeout: 0\n }));\n await page.waitForChanges();\n\n // Then\n const alert = alertDrawer.locator('wcs-alert');\n await expect(alert).toHaveCount(1);\n\n const title = alertDrawer.locator('wcs-alert > [slot=\"title\"]');\n const subtitle = alertDrawer.locator('wcs-alert > [slot=\"subtitle\"]');\n await expect(title).toHaveText('Test Title');\n await expect(subtitle).toHaveText('Test Subtitle');\n });\n\n test('should close the alert after timeout', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert-drawer></wcs-alert-drawer>\n `);\n\n const alertDrawer = page.locator('wcs-alert-drawer');\n\n // When\n await alertDrawer.evaluate((el: any) => el.show({\n title: 'Test Title',\n subtitle: 'Test Subtitle',\n intent: 'success',\n showProgressBar: false,\n timeout: 100 // Short timeout for testing\n }));\n\n // Wait for the alert to be removed\n await page.waitForTimeout(WAITING_DELAY_BEFORE_ASSERTIONS); // Wait a bit longer than the timeout\n await page.waitForChanges();\n\n // Then\n const alert = alertDrawer.locator('wcs-alert');\n await expect(alert).toHaveCount(0);\n });\n\n test('should show progress bar when showProgressBar is true', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert-drawer></wcs-alert-drawer>\n `);\n\n const alertDrawer = page.locator('wcs-alert-drawer');\n\n // When\n await alertDrawer.evaluate((el: any) => el.show({\n title: 'Test Title',\n subtitle: 'Test Subtitle',\n intent: 'success',\n showProgressBar: true,\n timeout: 5000\n }));\n await page.waitForChanges();\n\n // Then\n const progressBar = alertDrawer.locator('wcs-alert').locator('.progress-bar');\n await expect(progressBar).toBeVisible();\n });\n\n test('should have correct ARIA attributes for accessibility', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert-drawer></wcs-alert-drawer>\n `);\n\n const alertDrawer = page.locator('wcs-alert-drawer');\n\n // Then\n await expect(alertDrawer).toHaveAttribute('role', 'region');\n await expect(alertDrawer).toHaveAttribute('aria-live', 'polite');\n await expect(alertDrawer).toHaveAttribute('aria-atomic', 'true');\n });\n\n test('should handle multiple alerts', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-alert-drawer></wcs-alert-drawer>\n `);\n\n const alertDrawer = page.locator('wcs-alert-drawer');\n\n // When\n await alertDrawer.evaluate((el: any) => el.show({\n title: 'First Alert',\n subtitle: 'First Subtitle',\n intent: 'success',\n showProgressBar: false,\n timeout: 0\n }));\n await alertDrawer.evaluate((el: any) => el.show({\n title: 'Second Alert',\n subtitle: 'Second Subtitle',\n intent: 'warning',\n showProgressBar: false,\n timeout: 0\n }));\n await page.waitForChanges();\n\n // Then\n const alerts = alertDrawer.locator('wcs-alert');\n await expect(alerts).toHaveCount(2);\n });\n});\n"]}
@@ -0,0 +1,188 @@
1
+ import { setWcsContent } from "../../utils/playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { expect } from "@playwright/test";
4
+ test.describe('breadcrumb collapse', () => {
5
+ test('should hide breadcrumb item and respect default values for itemsBeforeCollapse and itemsAfterCollapse props', async ({ page }) => {
6
+ // Given
7
+ await setWcsContent(page, `
8
+ <wcs-breadcrumb max-items="3">
9
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
10
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
11
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
12
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
13
+ </wcs-breadcrumb>
14
+ `);
15
+ const homeItem = page.locator('.home-item');
16
+ const trainItem = page.locator('.train-item');
17
+ const ticketItem = page.locator('.ticket-item');
18
+ const detail = page.locator('.detail-item');
19
+ await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');
20
+ await expect(trainItem).toHaveAttribute('slot', 'hidden-items');
21
+ await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');
22
+ await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');
23
+ });
24
+ test('should hide breadcrumb item and respect user values for itemsBeforeCollapse and itemsAfterCollapse props', async ({ page }) => {
25
+ // Given
26
+ await setWcsContent(page, `
27
+ <wcs-breadcrumb max-items="3" items-before-collapse="2" items-after-collapse="1">
28
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
29
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
30
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
31
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
32
+ </wcs-breadcrumb>
33
+ `);
34
+ const homeItem = page.locator('.home-item');
35
+ const trainItem = page.locator('.train-item');
36
+ const ticketItem = page.locator('.ticket-item');
37
+ const detail = page.locator('.detail-item');
38
+ await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');
39
+ await expect(trainItem).toHaveAttribute('slot', 'items-before-expand-btn');
40
+ await expect(ticketItem).toHaveAttribute('slot', 'hidden-items');
41
+ await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');
42
+ });
43
+ test('shouldn\'t hide breadcrumb item if max item attribute is not defined', async ({ page }) => {
44
+ // Given
45
+ await setWcsContent(page, `
46
+ <wcs-breadcrumb>
47
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
48
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
49
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
50
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
51
+ </wcs-breadcrumb>
52
+ `);
53
+ const homeItem = page.locator('.home-item');
54
+ const trainItem = page.locator('.train-item');
55
+ const ticketItem = page.locator('.ticket-item');
56
+ const detail = page.locator('.detail-item');
57
+ await expect(homeItem).toHaveAttribute('slot', 'non-collapsed');
58
+ await expect(trainItem).toHaveAttribute('slot', 'non-collapsed');
59
+ await expect(ticketItem).toHaveAttribute('slot', 'non-collapsed');
60
+ await expect(detail).toHaveAttribute('slot', 'non-collapsed');
61
+ });
62
+ test('sould hide appended breadcrumb item', async ({ page }) => {
63
+ // Given
64
+ await setWcsContent(page, `
65
+ <wcs-breadcrumb max-items="3">
66
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
67
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
68
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
69
+ </wcs-breadcrumb>
70
+ `);
71
+ await page.evaluate(() => {
72
+ const breadcrumbItem = document.createElement('wcs-breadcrumb-item');
73
+ breadcrumbItem.classList.add('detail-item');
74
+ breadcrumbItem.textContent = 'Details';
75
+ const breadcrumb = document.querySelector('wcs-breadcrumb');
76
+ breadcrumb.appendChild(breadcrumbItem);
77
+ });
78
+ const homeItem = page.locator('.home-item');
79
+ const trainItem = page.locator('.train-item');
80
+ const ticketItem = page.locator('.ticket-item');
81
+ const detail = page.locator('.detail-item');
82
+ await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');
83
+ await expect(trainItem).toHaveAttribute('slot', 'hidden-items');
84
+ await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');
85
+ await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');
86
+ });
87
+ test('should display all breadcrumb items when the max-items prop is mutated in js', async ({ page }) => {
88
+ // Given
89
+ await setWcsContent(page, `
90
+ <wcs-breadcrumb max-items="3">
91
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
92
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
93
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
94
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
95
+ </wcs-breadcrumb>
96
+ `);
97
+ const homeItem = page.locator('.home-item');
98
+ const trainItem = page.locator('.train-item');
99
+ const ticketItem = page.locator('.ticket-item');
100
+ const detail = page.locator('.detail-item');
101
+ await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');
102
+ await expect(trainItem).toHaveAttribute('slot', 'hidden-items');
103
+ await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');
104
+ await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');
105
+ const breadcrumb = page.locator('wcs-breadcrumb');
106
+ await breadcrumb.evaluate((el) => el.maxItems = undefined);
107
+ await expect(homeItem).toHaveAttribute('slot', 'non-collapsed');
108
+ await expect(trainItem).toHaveAttribute('slot', 'non-collapsed');
109
+ await expect(ticketItem).toHaveAttribute('slot', 'non-collapsed');
110
+ await expect(detail).toHaveAttribute('slot', 'non-collapsed');
111
+ });
112
+ test('should collapse all breadcrumb items when the max-items prop is mutated in js', async ({ page }) => {
113
+ // Given
114
+ await setWcsContent(page, `
115
+ <wcs-breadcrumb>
116
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
117
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
118
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
119
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
120
+ </wcs-breadcrumb>
121
+ `);
122
+ const homeItem = page.locator('.home-item');
123
+ const trainItem = page.locator('.train-item');
124
+ const ticketItem = page.locator('.ticket-item');
125
+ const detail = page.locator('.detail-item');
126
+ await expect(homeItem).toHaveAttribute('slot', 'non-collapsed');
127
+ await expect(trainItem).toHaveAttribute('slot', 'non-collapsed');
128
+ await expect(ticketItem).toHaveAttribute('slot', 'non-collapsed');
129
+ await expect(detail).toHaveAttribute('slot', 'non-collapsed');
130
+ const breadcrumb = page.locator('wcs-breadcrumb');
131
+ await breadcrumb.evaluate((el) => el.maxItems = 3);
132
+ await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');
133
+ await expect(trainItem).toHaveAttribute('slot', 'hidden-items');
134
+ await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');
135
+ await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');
136
+ });
137
+ test('should expand collapsed items when user click on expand button', async ({ page }) => {
138
+ // Given
139
+ await setWcsContent(page, `
140
+ <wcs-breadcrumb max-items="3">
141
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
142
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
143
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
144
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
145
+ </wcs-breadcrumb>
146
+ `);
147
+ const nav = page.locator('wcs-breadcrumb nav');
148
+ const expandBtn = page.locator(`wcs-breadcrumb wcs-button`);
149
+ await expandBtn.click();
150
+ await page.waitForChanges();
151
+ await expect(nav).toHaveClass(/show-hidden-items/);
152
+ });
153
+ test('should update aria-label attribute after the first render', async ({ page }) => {
154
+ // Given
155
+ await setWcsContent(page, `
156
+ <wcs-breadcrumb>
157
+ <wcs-breadcrumb-item>Home</wcs-breadcrumb-item>
158
+ <wcs-breadcrumb-item>Train</wcs-breadcrumb-item>
159
+ <wcs-breadcrumb-item>Tickets</wcs-breadcrumb-item>
160
+ </wcs-breadcrumb>
161
+ `);
162
+ const wcsBreadcrumb = page.locator('wcs-breadcrumb');
163
+ // When
164
+ await wcsBreadcrumb.evaluate((el) => el.setAriaAttribute('aria-label', 'new label'));
165
+ // Then
166
+ const navEl = page.locator('wcs-breadcrumb nav');
167
+ await expect(navEl).toHaveAttribute('aria-label', 'new label');
168
+ });
169
+ test('should update expand button aria-label attribute', async ({ page }) => {
170
+ // Given
171
+ await setWcsContent(page, `
172
+ <wcs-breadcrumb max-items="3">
173
+ <wcs-breadcrumb-item class="home-item">Home</wcs-breadcrumb-item>
174
+ <wcs-breadcrumb-item class="train-item">Train</wcs-breadcrumb-item>
175
+ <wcs-breadcrumb-item class="ticket-item">Tickets</wcs-breadcrumb-item>
176
+ <wcs-breadcrumb-item class="detail-item">Details</wcs-breadcrumb-item>
177
+ </wcs-breadcrumb>
178
+ `);
179
+ const wcsBreadcrumb = page.locator('wcs-breadcrumb');
180
+ // When
181
+ const newAriaLabelValue = 'New label';
182
+ await wcsBreadcrumb.evaluate((el, value) => el.ariaLabelExpandButton = value, newAriaLabelValue);
183
+ // Then
184
+ const expandBtn = page.locator('wcs-breadcrumb button.wcs-inner-button');
185
+ await expect(expandBtn).toHaveAttribute('aria-label', newAriaLabelValue);
186
+ });
187
+ });
188
+ //# sourceMappingURL=breadcrumb.e2e.playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb.e2e.playwright.js","sourceRoot":"","sources":["../../../src/components/breadcrumb/breadcrumb.e2e.playwright.ts"],"names":[],"mappings":"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","sourcesContent":["import { setWcsContent } from '../../utils/playwright/test';\nimport { test, E2EPage } from \"@stencil/playwright\";\n\nimport { expect } from \"@playwright/test\";\n\ntest.describe('breadcrumb collapse', () => {\n test('should hide breadcrumb item and respect default values for itemsBeforeCollapse and itemsAfterCollapse props', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb max-items=\"3\">\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const homeItem = page.locator('.home-item');\n const trainItem = page.locator('.train-item');\n const ticketItem = page.locator('.ticket-item');\n const detail = page.locator('.detail-item');\n\n await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');\n await expect(trainItem).toHaveAttribute('slot', 'hidden-items');\n await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');\n await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');\n });\n\n test('should hide breadcrumb item and respect user values for itemsBeforeCollapse and itemsAfterCollapse props', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb max-items=\"3\" items-before-collapse=\"2\" items-after-collapse=\"1\">\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const homeItem = page.locator('.home-item');\n const trainItem = page.locator('.train-item');\n const ticketItem = page.locator('.ticket-item');\n const detail = page.locator('.detail-item');\n\n await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');\n await expect(trainItem).toHaveAttribute('slot', 'items-before-expand-btn');\n await expect(ticketItem).toHaveAttribute('slot', 'hidden-items');\n await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');\n });\n\n test('shouldn\\'t hide breadcrumb item if max item attribute is not defined', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb>\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const homeItem = page.locator('.home-item');\n const trainItem = page.locator('.train-item');\n const ticketItem = page.locator('.ticket-item');\n const detail = page.locator('.detail-item');\n\n await expect(homeItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(trainItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(ticketItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(detail).toHaveAttribute('slot', 'non-collapsed');\n });\n\n test('sould hide appended breadcrumb item', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb max-items=\"3\">\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n await page.evaluate(() => {\n const breadcrumbItem = document.createElement('wcs-breadcrumb-item');\n breadcrumbItem.classList.add('detail-item');\n breadcrumbItem.textContent = 'Details';\n const breadcrumb = document.querySelector('wcs-breadcrumb');\n breadcrumb!.appendChild(breadcrumbItem);\n });\n\n const homeItem = page.locator('.home-item');\n const trainItem = page.locator('.train-item');\n const ticketItem = page.locator('.ticket-item');\n const detail = page.locator('.detail-item');\n\n await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');\n await expect(trainItem).toHaveAttribute('slot', 'hidden-items');\n await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');\n await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');\n });\n\n test('should display all breadcrumb items when the max-items prop is mutated in js', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb max-items=\"3\">\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const homeItem = page.locator('.home-item');\n const trainItem = page.locator('.train-item');\n const ticketItem = page.locator('.ticket-item');\n const detail = page.locator('.detail-item');\n\n await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');\n await expect(trainItem).toHaveAttribute('slot', 'hidden-items');\n await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');\n await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');\n\n const breadcrumb = page.locator('wcs-breadcrumb');\n await breadcrumb.evaluate((el: any) => el.maxItems = undefined);\n\n await expect(homeItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(trainItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(ticketItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(detail).toHaveAttribute('slot', 'non-collapsed');\n });\n\n test('should collapse all breadcrumb items when the max-items prop is mutated in js', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb>\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const homeItem = page.locator('.home-item');\n const trainItem = page.locator('.train-item');\n const ticketItem = page.locator('.ticket-item');\n const detail = page.locator('.detail-item');\n\n await expect(homeItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(trainItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(ticketItem).toHaveAttribute('slot', 'non-collapsed');\n await expect(detail).toHaveAttribute('slot', 'non-collapsed');\n\n const breadcrumb = page.locator('wcs-breadcrumb');\n await breadcrumb.evaluate((el: any) => el.maxItems = 3);\n\n await expect(homeItem).toHaveAttribute('slot', 'items-before-expand-btn');\n await expect(trainItem).toHaveAttribute('slot', 'hidden-items');\n await expect(ticketItem).toHaveAttribute('slot', 'items-after-expand-btn');\n await expect(detail).toHaveAttribute('slot', 'items-after-expand-btn');\n });\n\n test('should expand collapsed items when user click on expand button', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb max-items=\"3\">\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const nav = page.locator('wcs-breadcrumb nav');\n const expandBtn = page.locator(`wcs-breadcrumb wcs-button`);\n await expandBtn.click();\n await page.waitForChanges();\n\n await expect(nav).toHaveClass(/show-hidden-items/);\n });\n\n test('should update aria-label attribute after the first render', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb>\n <wcs-breadcrumb-item>Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item>Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item>Tickets</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const wcsBreadcrumb = page.locator('wcs-breadcrumb');\n\n // When\n await wcsBreadcrumb.evaluate((el: any) => el.setAriaAttribute('aria-label', 'new label'));\n\n // Then\n const navEl = page.locator('wcs-breadcrumb nav');\n await expect(navEl).toHaveAttribute('aria-label', 'new label');\n });\n\n test('should update expand button aria-label attribute', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-breadcrumb max-items=\"3\">\n <wcs-breadcrumb-item class=\"home-item\">Home</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"train-item\">Train</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"ticket-item\">Tickets</wcs-breadcrumb-item>\n <wcs-breadcrumb-item class=\"detail-item\">Details</wcs-breadcrumb-item>\n </wcs-breadcrumb>\n `);\n\n const wcsBreadcrumb = page.locator('wcs-breadcrumb');\n\n // When\n const newAriaLabelValue = 'New label';\n await wcsBreadcrumb.evaluate((el: any, value: string) => el.ariaLabelExpandButton = value, newAriaLabelValue);\n\n // Then\n const expandBtn = page.locator('wcs-breadcrumb button.wcs-inner-button');\n await expect(expandBtn).toHaveAttribute('aria-label', newAriaLabelValue);\n });\n});\n"]}
@@ -131,7 +131,7 @@ export class Breadcrumb {
131
131
  }
132
132
  render() {
133
133
  const showExpandBtn = this.shouldCollapseItems() && !this.showHiddenItems;
134
- return (h(Host, { key: 'f1c0ed14b8806df5c1ba717f6354d2e4c201dcd1' }, h("nav", Object.assign({ key: 'ae39ce6d5af6868105c1cb349d70d04da9931274', class: `wcs-breadcrumb-container${this.showHiddenItems ? ' show-hidden-items' : ''}`, "aria-label": NAV_ARIA_LABEL_DEFAULT }, this.inheritedAttributes, { ref: (el) => this.navEl = el }), h("div", { key: '82f4a76da057076e5d7299df7972bb918220b6ac', role: "list" }, h("slot", { key: 'e3180e059e1467c9821e5d10b0694f39194ce4f4', onSlotchange: this.handleSlotChange.bind(this) }), h("slot", { key: 'e865695a1082a503321d519193f47c54f2d86ba5', name: "non-collapsed" }), h("slot", { key: '53a846e67fe320236a8f0b80216c72fa676304bb', name: "items-before-expand-btn" }), h("slot", { key: 'a6f9243e94d5f4e05e6e3ca89a574ac37128689a', name: "hidden-items" }), showExpandBtn && this.renderExpandAllButton(), h("slot", { key: '0ca62fc184565b82a12d1314bdfb51161934775b', name: "items-after-expand-btn" })))));
134
+ return (h(Host, { key: '1707e6c3ee0cc621c75f85f927b543dea1af4342' }, h("nav", Object.assign({ key: 'b326c58b86feed5092f8a6c5d46c3cf2dd06a783', class: `wcs-breadcrumb-container${this.showHiddenItems ? ' show-hidden-items' : ''}`, "aria-label": NAV_ARIA_LABEL_DEFAULT }, this.inheritedAttributes, { ref: (el) => this.navEl = el }), h("div", { key: '9a4395f63e0895bca1918d7236a01dd9d0437f26', role: "list" }, h("slot", { key: 'b74aa1fc77ddfc892f0ba79bceffceab10e49c1f', onSlotchange: this.handleSlotChange.bind(this) }), h("slot", { key: 'c616f6281282a7088073ceb131f12f93d1126c8b', name: "non-collapsed" }), h("slot", { key: '0db22f440bc3956219c343e4dac60bfe09581d73', name: "items-before-expand-btn" }), h("slot", { key: 'a29809c5122d539d11c1e53e591ed4342c338810', name: "hidden-items" }), showExpandBtn && this.renderExpandAllButton(), h("slot", { key: 'aa906ec3b5805f78136b39e5d56937cdca7a7f38', name: "items-after-expand-btn" })))));
135
135
  }
136
136
  static get is() { return "wcs-breadcrumb"; }
137
137
  static get encapsulation() { return "shadow"; }
@@ -232,7 +232,7 @@ export class Breadcrumb {
232
232
  "signature": "(attr: AriaAttributeName, value: string | null | undefined) => Promise<void>",
233
233
  "parameters": [{
234
234
  "name": "attr",
235
- "type": "\"role\" | `aria-${string}`",
235
+ "type": "`aria-${string}` | \"role\"",
236
236
  "docs": ""
237
237
  }, {
238
238
  "name": "value",
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../src/components/breadcrumb/breadcrumb.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,OAAO,EAAE,WAAW,EACpB,CAAC,EACD,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,EACR,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAErG,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAChC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,MAAM,OAAO,UAAU;;QAKX,wBAAmB,GAAyB,EAAE,CAAC;;mCAajB,CAAC;kCAMF,CAAC;qCAEG,6BAA6B;+BAK1B,KAAK;;IAKjD,yBAAyB;QACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IAGD,8BAA8B,CAAC,QAAgB;;QAC3C,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,mBAAmB,mCACjB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAC5D,CAAC;QACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IAED,gBAAgB;;QACZ,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjF,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAC,IAAuB,EAAE,KAAgC;QAC5E,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAEO,kBAAkB;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,mBAAmB;QACvB,OAAO,CACH,CAAC,CAAC,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;YAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CACtE,CAAC;IACN,CAAC;IAEO,uBAAuB;QAC3B,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,sCAAsC,EAAE,CAAC;QAClD,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mCAAmC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC9D,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEjF,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE;YAC9C,IAAI,KAAK,IAAI,wBAAwB,EAAE,CAAC;gBACpC,cAAc,CAAC,IAAI,GAAG,yBAAyB,CAAC;gBAChD,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC;YAChC,CAAC;iBAAM,IAAI,KAAK,GAAG,wBAAwB,IAAI,KAAK,GAAG,uBAAuB,EAAE,CAAC;gBAC7E,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC;gBACrC,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,cAAc,CAAC,IAAI,GAAG,wBAAwB,CAAC;gBAC/C,cAAc,CAAC,IAAI,GAAG,KAAK,KAAK,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,sCAAsC;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE;YAC9C,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC;YACtC,cAAc,CAAC,IAAI,GAAG,KAAK,KAAK,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,sBAAsB;QAC1B,kFAAkF;QAClF,qFAAqF;QACrF,0FAA0F;QAC1F,mCAAmC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,mEAAmE;QACnE,0BAA0B;QAC1B,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,yBAAyB;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtD,MAAM,eAAe,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAC9D,MAAM,mBAAmB,GACrB,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;QACxE,MAAM,yBAAyB,GAC3B,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAsB,CAAC;QACnE,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAEO,qBAAqB;QACzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;QAC1D,OAAO,CACH,WAAK,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,kBAAkB;YACzC,kBACI,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,QAAQ,EACd,IAAI,EAAC,GAAG,EACR,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE;gBAElC,oBAAc,IAAI,EAAC,YAAY,GAAG,CACzB;YACZ,CAAC,mBAAmB,IAAI,CACrB,YAAM,KAAK,EAAC,WAAW,iBAAa,MAAM,IACrC,0BAA0B,CACxB,CACV,CACC,CACT,CAAC;IACN,CAAC;IAED,MAAM;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAC1E,OAAO,CACH,EAAC,IAAI;YACD,0EACI,KAAK,EAAE,2BAA2B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,gBACxE,sBAAsB,IAC9B,IAAI,CAAC,mBAAmB,IAC5B,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE;gBAO5B,4DAAK,IAAI,EAAC,MAAM;oBAEZ,6DAAM,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI;oBAExD,6DAAM,IAAI,EAAC,eAAe,GAAQ;oBAElC,6DAAM,IAAI,EAAC,yBAAyB,GAAG;oBACvC,6DAAM,IAAI,EAAC,cAAc,GAAG;oBAC3B,aAAa,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBAC9C,6DAAM,IAAI,EAAC,wBAAwB,GAAG,CACpC,CACJ,CACH,CACV,CAAC;IACN,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element, forceUpdate,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch\n} from '@stencil/core';\n\nimport { inheritAttributes, inheritAriaAttributes, setOrRemoveAttribute } from '../../utils/helpers';\nimport { AriaAttributeName, MutableAriaAttribute } from '../../utils/mutable-aria-attribute';\nimport {\n ICONS_FONT_CHEVRON_UNICODE,\n NAV_ARIA_LABEL_DEFAULT,\n EXPAND_BTN_ARIA_LABEL_DEFAULT\n} from './breadcrumb-constants';\n\nconst BREADCRUMB_INHERITED_ATTRS = [];\n\n/**\n * A breadcrumb trail consists of a list of links to the parent pages of the current page in hierarchical order. \n * It helps users find their place within a website or web application. Breadcrumbs are often placed horizontally before a page's main content.\n *\n * ## Accessibility guidelines 💡\n * > - If the last item is a link to the current page, you must set the `aria-current` attribute to `page` on `wcs-breadcrumb-item`.\n * > - If the element representing the current page is not a link, `aria-current` is optional.\n * > - You can set the attribute `aria-label` on `wcs-breadcrumb`, it will be passed to the native `nav` element located inside its shadow DOM. \n * > You can find the `aria-label` default value in the table below. If your application is in English, you can set it to `Breadcrumb`.\n * > - You can do the same thing for the `aria-label` of the expand button when the breadcrumb is collapsed. You can find its default value\n * > in the table below too. \n * > - If you need to **dynamically change the `aria-label` attribute of `wcs-breadcrumb` after the first render**, you can use the \n * > `setAriaAttribute` JS method (example below). For the expand button however, you can update the prop `ariaLabelExpandButton`. \n * > Note: we're working on updating the component automatically when attributes change. \n *\n * > ```javascript\n * > const wcsButton = document.querySelector('wcs-button');\n * > await wcsButton.setAriaAttribute('aria-label', 'new label');\n * > ```\n * \n * @cssprop --wcs-breadcrumb-icon-color - Icon color\n * @cssprop --wcs-breadcrumb-icon-font-size - Icon font size\n * @cssprop --wcs-breadcrumb-gap - Gap between breadcrumb items\n */\n@Component({\n tag: 'wcs-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n shadow: true,\n})\nexport class Breadcrumb implements ComponentInterface, MutableAriaAttribute {\n @Element() private el: HTMLElement;\n private navEl?: HTMLElement;\n private expandBtnEl: HTMLWcsButtonElement;\n\n private inheritedAttributes: { [k: string]: any } = {};\n\n /**\n * If the number of breadcrumb items exceeds this maximum,\n * the breadcrumb will collapse and show an expand button. \n * If this prop is `undefined`, breadcrumb items will never collapse.\n */\n @Prop() maxItems?: number;\n /**\n * The number of breadcrumb items to show before the expand button.\n * If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`,\n * the breadcrumb will not be collapsed.\n */\n @Prop() itemsBeforeCollapse: number = 1;\n /**\n * The number of breadcrumb items to show after the expand button.\n * If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`,\n * the breadcrumb will not be collapsed.\n */\n @Prop() itemsAfterCollapse: number = 2;\n /** Set `aria-label` for the expand button when the breadcrumb is collapsed. */\n @Prop() ariaLabelExpandButton?: string = EXPAND_BTN_ARIA_LABEL_DEFAULT;\n\n /**\n * Show breadcrumb items that are inside the hidden-items slot.\n */\n @State() private showHiddenItems: boolean = false;\n\n @Watch('maxItems')\n @Watch('itemsBeforeCollapse')\n @Watch('itemsAfterCollapse')\n handleCollapsePropsChange() {\n this.updateCollapsedViewMode();\n }\n\n @Watch('ariaLabelExpandButton')\n handleAriaLabelExpandBtnChange(newValue: string) {\n this.expandBtnEl?.setAriaAttribute('aria-label', newValue);\n }\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, BREADCRUMB_INHERITED_ATTRS),\n };\n this.updateCollapsedViewMode();\n }\n\n componentDidLoad(): void {\n this.expandBtnEl?.setAriaAttribute('aria-label', this.ariaLabelExpandButton);\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.navEl, attr, value);\n }\n\n private getBreadcrumbItems(): HTMLWcsBreadcrumbItemElement[] {\n return Array.from(this.el.querySelectorAll('wcs-breadcrumb-item'));\n }\n\n private shouldCollapseItems(): boolean {\n return (\n !!this.maxItems &&\n this.getBreadcrumbItems().length > this.maxItems &&\n this.itemsBeforeCollapse + this.itemsAfterCollapse <= this.maxItems\n );\n }\n\n private updateCollapsedViewMode(): void {\n if (this.shouldCollapseItems()) {\n this.assignSlotNamesForCollapsedViewMode();\n } else {\n this.assignSlotNamesForNonCollapsedViewMode();\n }\n }\n\n /**\n * Setting slot names on breadcrumb items allows to leverage JSX in the render method.\n */\n private assignSlotNamesForCollapsedViewMode(): void {\n const breadcrumbItems = this.getBreadcrumbItems();\n const itemBeforeExpandBtnIndex = this.itemsBeforeCollapse - 1;\n const itemAfterExpandBtnIndex = breadcrumbItems.length - this.itemsAfterCollapse;\n\n breadcrumbItems.forEach((breadcrumbItem, index) => {\n if (index <= itemBeforeExpandBtnIndex) {\n breadcrumbItem.slot = 'items-before-expand-btn';\n breadcrumbItem.last = false;\n } else if (index > itemBeforeExpandBtnIndex && index < itemAfterExpandBtnIndex) {\n breadcrumbItem.slot = 'hidden-items';\n breadcrumbItem.last = false;\n } else {\n breadcrumbItem.slot = 'items-after-expand-btn';\n breadcrumbItem.last = index === breadcrumbItems.length - 1;\n }\n });\n }\n \n private assignSlotNamesForNonCollapsedViewMode(): void {\n const breadcrumbItems = this.getBreadcrumbItems();\n breadcrumbItems.forEach((breadcrumbItem, index) => {\n breadcrumbItem.slot = 'non-collapsed';\n breadcrumbItem.last = index === breadcrumbItems.length - 1;\n });\n }\n\n private handleSlotChange(): void {\n this.updateCollapsedViewMode();\n this.showHiddenItems = false;\n forceUpdate(this);\n }\n\n private handleOnExpandBtnClick(): void {\n // We leave the breadcrumb items in the hidden-items slot, without passing them to\n // the non-collapsed slot, so that we know which items to hide again later if needed.\n // For future implementations, the expand button could show or hide hidden items on click,\n // with a wcs-dropdown for example.\n this.showHiddenItems = true;\n // We wait for the first hidden item to be visible in the DOM again\n // to be able to focus it.\n requestAnimationFrame(() => this.setFocusToFirstHiddenItem());\n }\n\n /**\n * Avoid losing focus after clicking the expand button.\n * We need to give focus back to the first breadcrumb item link that was hidden before.\n */\n private setFocusToFirstHiddenItem(): void {\n const breadcrumbItems = this.getBreadcrumbItems();\n const firstHiddenItemIndex = this.itemsBeforeCollapse;\n const firstHiddenItem = breadcrumbItems[firstHiddenItemIndex];\n const firstHiddenItemSlot =\n firstHiddenItem.shadowRoot.querySelector('slot') as HTMLSlotElement;\n const breadcrumbItemLinkToFocus =\n firstHiddenItemSlot.assignedElements()[0] as HTMLAnchorElement;\n breadcrumbItemLinkToFocus?.focus();\n }\n\n private renderExpandAllButton(): JSX.Element {\n const expandBtnIsLastItem = this.itemsAfterCollapse === 0;\n return (\n <div role=\"listitem\" class=\"item-not-slotted\">\n <wcs-button\n mode=\"clear\"\n shape=\"square\"\n size=\"s\"\n onClick={this.handleOnExpandBtnClick.bind(this)}\n ref={(el) => this.expandBtnEl = el}\n >\n <wcs-mat-icon icon=\"more_horiz\" />\n </wcs-button>\n {!expandBtnIsLastItem && (\n <span class=\"item-icon\" aria-hidden=\"true\">\n {ICONS_FONT_CHEVRON_UNICODE}\n </span>\n )}\n </div>\n );\n }\n\n render() {\n const showExpandBtn = this.shouldCollapseItems() && !this.showHiddenItems;\n return (\n <Host>\n <nav\n class={`wcs-breadcrumb-container${this.showHiddenItems ? ' show-hidden-items' : ''}`}\n aria-label={NAV_ARIA_LABEL_DEFAULT}\n {...this.inheritedAttributes}\n ref={(el) => this.navEl = el}\n >\n {/*\n * We use aria roles here instead of an <ol> tag\n * so that the list can be browsed correctly on Firefox with screen readers.\n * There seems to be an issue with Firefox and the Shadow DOM.\n */}\n <div role=\"list\">\n {/* Only the main slot shoud be used by consumers. */}\n <slot onSlotchange={this.handleSlotChange.bind(this)} />\n {/* Non collapsed view mode */}\n <slot name=\"non-collapsed\"></slot>\n {/* Collapsed view mode */}\n <slot name=\"items-before-expand-btn\" />\n <slot name=\"hidden-items\" />\n {showExpandBtn && this.renderExpandAllButton()}\n <slot name=\"items-after-expand-btn\" />\n </div>\n </nav>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../src/components/breadcrumb/breadcrumb.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element, forceUpdate,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch\n} from '@stencil/core';\n\nimport { inheritAttributes, inheritAriaAttributes, setOrRemoveAttribute } from '../../utils/helpers';\nimport { AriaAttributeName, MutableAriaAttribute } from '../../utils/mutable-aria-attribute';\nimport {\n ICONS_FONT_CHEVRON_UNICODE,\n NAV_ARIA_LABEL_DEFAULT,\n EXPAND_BTN_ARIA_LABEL_DEFAULT\n} from './breadcrumb-constants';\n\nconst BREADCRUMB_INHERITED_ATTRS = [];\n\n/**\n * A breadcrumb trail consists of a list of links to the parent pages of the current page in hierarchical order. \n * It helps users find their place within a website or web application. Breadcrumbs are often placed horizontally before a page's main content.\n *\n * ## Accessibility guidelines 💡\n * > - If the last item is a link to the current page, you must set the `aria-current` attribute to `page` on `wcs-breadcrumb-item`.\n * > - If the element representing the current page is not a link, `aria-current` is optional.\n * > - You can set the attribute `aria-label` on `wcs-breadcrumb`, it will be passed to the native `nav` element located inside its shadow DOM. \n * > You can find the `aria-label` default value in the table below. If your application is in English, you can set it to `Breadcrumb`.\n * > - You can do the same thing for the `aria-label` of the expand button when the breadcrumb is collapsed. You can find its default value\n * > in the table below too. \n * > - If you need to **dynamically change the `aria-label` attribute of `wcs-breadcrumb` after the first render**, you can use the \n * > `setAriaAttribute` JS method (example below). For the expand button however, you can update the prop `ariaLabelExpandButton`. \n * > Note: we're working on updating the component automatically when attributes change. \n *\n * > ```javascript\n * > const wcsButton = document.querySelector('wcs-button');\n * > await wcsButton.setAriaAttribute('aria-label', 'new label');\n * > ```\n * \n * @cssprop --wcs-breadcrumb-icon-color - Icon color\n * @cssprop --wcs-breadcrumb-icon-font-size - Icon font size\n * @cssprop --wcs-breadcrumb-gap - Gap between breadcrumb items\n */\n@Component({\n tag: 'wcs-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n shadow: true,\n})\nexport class Breadcrumb implements ComponentInterface, MutableAriaAttribute {\n @Element() private el: HTMLElement;\n private navEl?: HTMLElement;\n private expandBtnEl: HTMLWcsButtonElement;\n\n private inheritedAttributes: { [k: string]: any } = {};\n\n /**\n * If the number of breadcrumb items exceeds this maximum,\n * the breadcrumb will collapse and show an expand button. \n * If this prop is `undefined`, breadcrumb items will never collapse.\n */\n @Prop() maxItems?: number;\n /**\n * The number of breadcrumb items to show before the expand button.\n * If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`,\n * the breadcrumb will not be collapsed.\n */\n @Prop() itemsBeforeCollapse: number = 1;\n /**\n * The number of breadcrumb items to show after the expand button.\n * If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`,\n * the breadcrumb will not be collapsed.\n */\n @Prop() itemsAfterCollapse: number = 2;\n /** Set `aria-label` for the expand button when the breadcrumb is collapsed. */\n @Prop() ariaLabelExpandButton?: string = EXPAND_BTN_ARIA_LABEL_DEFAULT;\n\n /**\n * Show breadcrumb items that are inside the hidden-items slot.\n */\n @State() private showHiddenItems: boolean = false;\n\n @Watch('maxItems')\n @Watch('itemsBeforeCollapse')\n @Watch('itemsAfterCollapse')\n handleCollapsePropsChange() {\n this.updateCollapsedViewMode();\n }\n\n @Watch('ariaLabelExpandButton')\n handleAriaLabelExpandBtnChange(newValue: string) {\n this.expandBtnEl?.setAriaAttribute('aria-label', newValue);\n }\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, BREADCRUMB_INHERITED_ATTRS),\n };\n this.updateCollapsedViewMode();\n }\n\n componentDidLoad(): void {\n this.expandBtnEl?.setAriaAttribute('aria-label', this.ariaLabelExpandButton);\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.navEl, attr, value);\n }\n\n private getBreadcrumbItems(): HTMLWcsBreadcrumbItemElement[] {\n return Array.from(this.el.querySelectorAll('wcs-breadcrumb-item'));\n }\n\n private shouldCollapseItems(): boolean {\n return (\n !!this.maxItems &&\n this.getBreadcrumbItems().length > this.maxItems &&\n this.itemsBeforeCollapse + this.itemsAfterCollapse <= this.maxItems\n );\n }\n\n private updateCollapsedViewMode(): void {\n if (this.shouldCollapseItems()) {\n this.assignSlotNamesForCollapsedViewMode();\n } else {\n this.assignSlotNamesForNonCollapsedViewMode();\n }\n }\n\n /**\n * Setting slot names on breadcrumb items allows to leverage JSX in the render method.\n */\n private assignSlotNamesForCollapsedViewMode(): void {\n const breadcrumbItems = this.getBreadcrumbItems();\n const itemBeforeExpandBtnIndex = this.itemsBeforeCollapse - 1;\n const itemAfterExpandBtnIndex = breadcrumbItems.length - this.itemsAfterCollapse;\n\n breadcrumbItems.forEach((breadcrumbItem, index) => {\n if (index <= itemBeforeExpandBtnIndex) {\n breadcrumbItem.slot = 'items-before-expand-btn';\n breadcrumbItem.last = false;\n } else if (index > itemBeforeExpandBtnIndex && index < itemAfterExpandBtnIndex) {\n breadcrumbItem.slot = 'hidden-items';\n breadcrumbItem.last = false;\n } else {\n breadcrumbItem.slot = 'items-after-expand-btn';\n breadcrumbItem.last = index === breadcrumbItems.length - 1;\n }\n });\n }\n \n private assignSlotNamesForNonCollapsedViewMode(): void {\n const breadcrumbItems = this.getBreadcrumbItems();\n breadcrumbItems.forEach((breadcrumbItem, index) => {\n breadcrumbItem.slot = 'non-collapsed';\n breadcrumbItem.last = index === breadcrumbItems.length - 1;\n });\n }\n\n private handleSlotChange(): void {\n this.updateCollapsedViewMode();\n this.showHiddenItems = false;\n forceUpdate(this);\n }\n\n private handleOnExpandBtnClick(): void {\n // We leave the breadcrumb items in the hidden-items slot, without passing them to\n // the non-collapsed slot, so that we know which items to hide again later if needed.\n // For future implementations, the expand button could show or hide hidden items on click,\n // with a wcs-dropdown for example.\n this.showHiddenItems = true;\n // We wait for the first hidden item to be visible in the DOM again\n // to be able to focus it.\n requestAnimationFrame(() => this.setFocusToFirstHiddenItem());\n }\n\n /**\n * Avoid losing focus after clicking the expand button.\n * We need to give focus back to the first breadcrumb item link that was hidden before.\n */\n private setFocusToFirstHiddenItem(): void {\n const breadcrumbItems = this.getBreadcrumbItems();\n const firstHiddenItemIndex = this.itemsBeforeCollapse;\n const firstHiddenItem = breadcrumbItems[firstHiddenItemIndex];\n const firstHiddenItemSlot =\n firstHiddenItem.shadowRoot.querySelector('slot') as HTMLSlotElement;\n const breadcrumbItemLinkToFocus =\n firstHiddenItemSlot.assignedElements()[0] as HTMLAnchorElement;\n breadcrumbItemLinkToFocus?.focus();\n }\n\n private renderExpandAllButton() {\n const expandBtnIsLastItem = this.itemsAfterCollapse === 0;\n return (\n <div role=\"listitem\" class=\"item-not-slotted\">\n <wcs-button\n mode=\"clear\"\n shape=\"square\"\n size=\"s\"\n onClick={this.handleOnExpandBtnClick.bind(this)}\n ref={(el) => this.expandBtnEl = el}\n >\n <wcs-mat-icon icon=\"more_horiz\" />\n </wcs-button>\n {!expandBtnIsLastItem && (\n <span class=\"item-icon\" aria-hidden=\"true\">\n {ICONS_FONT_CHEVRON_UNICODE}\n </span>\n )}\n </div>\n );\n }\n\n render() {\n const showExpandBtn = this.shouldCollapseItems() && !this.showHiddenItems;\n return (\n <Host>\n <nav\n class={`wcs-breadcrumb-container${this.showHiddenItems ? ' show-hidden-items' : ''}`}\n aria-label={NAV_ARIA_LABEL_DEFAULT}\n {...this.inheritedAttributes}\n ref={(el) => this.navEl = el}\n >\n {/*\n * We use aria roles here instead of an <ol> tag\n * so that the list can be browsed correctly on Firefox with screen readers.\n * There seems to be an issue with Firefox and the Shadow DOM.\n */}\n <div role=\"list\">\n {/* Only the main slot shoud be used by consumers. */}\n <slot onSlotchange={this.handleSlotChange.bind(this)} />\n {/* Non collapsed view mode */}\n <slot name=\"non-collapsed\"></slot>\n {/* Collapsed view mode */}\n <slot name=\"items-before-expand-btn\" />\n <slot name=\"hidden-items\" />\n {showExpandBtn && this.renderExpandAllButton()}\n <slot name=\"items-after-expand-btn\" />\n </div>\n </nav>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { setWcsContent } from "../../utils/playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { expect } from "@playwright/test";
4
+ test.describe('button', () => {
5
+ test('should trigger submit when in a form', async ({ page }) => {
6
+ // Given
7
+ await setWcsContent(page, `
8
+ <form>
9
+ <wcs-button class="wcs-primary" type="wcs-submit"></wcs-button>
10
+ </form>
11
+ `);
12
+ const form = page.locator('form');
13
+ await form.evaluate((el) => {
14
+ el.addEventListener('submit', (e) => {
15
+ e.preventDefault(); // avoid page reload
16
+ });
17
+ });
18
+ const submitEventSpy = await form.spyOnEvent('submit');
19
+ // When
20
+ await page.locator('wcs-button').click();
21
+ await page.waitForChanges();
22
+ // Then
23
+ expect(submitEventSpy).toHaveReceivedEventTimes(1);
24
+ });
25
+ });
26
+ //# sourceMappingURL=button.e2e.playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.e2e.playwright.js","sourceRoot":"","sources":["../../../src/components/button/button.e2e.playwright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAW,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,sCAAsC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAqB,EAAE,EAAE;QAC/E,QAAQ;QACR,MAAM,aAAa,CAAC,IAAI,EAAE;;;;SAIzB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;YACvB,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,oBAAoB;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvD,OAAO;QACP,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,OAAO;QACP,MAAM,CAAC,cAAc,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { setWcsContent } from '../../utils/playwright/test';\nimport { test, E2EPage } from \"@stencil/playwright\";\n\nimport { expect } from \"@playwright/test\";\n\ntest.describe('button', () => {\n test('should trigger submit when in a form', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <form>\n <wcs-button class=\"wcs-primary\" type=\"wcs-submit\"></wcs-button>\n </form>\n `);\n const form = page.locator('form');\n await form.evaluate((el) => {\n el.addEventListener('submit', (e) => {\n e.preventDefault(); // avoid page reload\n });\n });\n\n const submitEventSpy = await form.spyOnEvent('submit');\n\n // When\n await page.locator('wcs-button').click();\n await page.waitForChanges();\n\n // Then\n expect(submitEventSpy).toHaveReceivedEventTimes(1);\n });\n});\n"]}
@@ -331,7 +331,7 @@ export class Button {
331
331
  "signature": "(attr: AriaAttributeName, value: string | null | undefined) => Promise<void>",
332
332
  "parameters": [{
333
333
  "name": "attr",
334
- "type": "\"role\" | `aria-${string}`",
334
+ "type": "`aria-${string}` | \"role\"",
335
335
  "docs": ""
336
336
  }, {
337
337
  "name": "value",
@@ -37,6 +37,9 @@
37
37
  --wcs-checkbox-transition-duration: var(--wcs-semantic-motion-duration-feedback-base);
38
38
  display: inline-flex;
39
39
  }
40
+ :host .wcs-container {
41
+ align-items: center;
42
+ }
40
43
 
41
44
  :host([disabled]) .text {
42
45
  color: var(--wcs-checkbox-text-color-disabled);
@@ -0,0 +1,39 @@
1
+ import { setWcsContent } from "../../utils/playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { expect } from "@playwright/test";
4
+ test.describe('Checkbox component', () => {
5
+ test.describe('Events', () => {
6
+ test('should emit a wcsChange event when clicked on wcs-checkbox', async ({ page }) => {
7
+ // Given
8
+ await setWcsContent(page, `
9
+ <wcs-checkbox name="checkbox-id">
10
+ Checkbox
11
+ </wcs-checkbox>
12
+ `);
13
+ const checkbox = page.locator('wcs-checkbox');
14
+ const wcsChangeEventSpy = await checkbox.spyOnEvent('wcsChange');
15
+ // When
16
+ await checkbox.click();
17
+ await page.waitForChanges();
18
+ // Then
19
+ expect(wcsChangeEventSpy).toHaveReceivedEventTimes(1);
20
+ expect(wcsChangeEventSpy).toHaveReceivedEventDetail({ checked: true });
21
+ });
22
+ test('should emit a wcsChange event when space pressed on wcs-checkbox', async ({ page }) => {
23
+ // Given
24
+ await setWcsContent(page, `
25
+ <wcs-checkbox name="checkbox-id">
26
+ Checkbox
27
+ </wcs-checkbox>
28
+ `);
29
+ const checkbox = page.locator('wcs-checkbox');
30
+ const wcsChangeEventSpy = await checkbox.spyOnEvent('wcsChange');
31
+ // When
32
+ await checkbox.press('Space');
33
+ // Then
34
+ expect(wcsChangeEventSpy).toHaveReceivedEventTimes(1);
35
+ expect(wcsChangeEventSpy).toHaveReceivedEventDetail({ checked: true });
36
+ });
37
+ });
38
+ });
39
+ //# sourceMappingURL=checkbox.e2e.playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.e2e.playwright.js","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.e2e.playwright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAW,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACzB,IAAI,CAAC,4DAA4D,EAAE,KAAK,EAAE,EAAE,IAAI,EAAqB,EAAE,EAAE;YACrG,QAAQ;YACR,MAAM,aAAa,CAAC,IAAI,EAAE;;;;aAIzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,OAAO;YACP,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,iBAAiB,CAAC,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAqB,EAAE,EAAE;YAC3G,QAAQ;YACR,MAAM,aAAa,CAAC,IAAI,EAAE;;;;aAIzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE9B,OAAO;YACP,MAAM,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,iBAAiB,CAAC,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { setWcsContent } from '../../utils/playwright/test';\nimport { test, E2EPage } from \"@stencil/playwright\";\n\nimport { expect } from \"@playwright/test\";\n\ntest.describe('Checkbox component', () => {\n test.describe('Events', () => {\n test('should emit a wcsChange event when clicked on wcs-checkbox', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-checkbox name=\"checkbox-id\">\n Checkbox\n </wcs-checkbox>\n `);\n\n const checkbox = page.locator('wcs-checkbox');\n const wcsChangeEventSpy = await checkbox.spyOnEvent('wcsChange');\n\n // When\n await checkbox.click();\n await page.waitForChanges();\n\n // Then\n expect(wcsChangeEventSpy).toHaveReceivedEventTimes(1);\n expect(wcsChangeEventSpy).toHaveReceivedEventDetail({ checked: true });\n });\n\n test('should emit a wcsChange event when space pressed on wcs-checkbox', async ({ page }: { page: E2EPage }) => {\n // Given\n await setWcsContent(page, `\n <wcs-checkbox name=\"checkbox-id\">\n Checkbox\n </wcs-checkbox>\n `);\n\n const checkbox = page.locator('wcs-checkbox');\n const wcsChangeEventSpy = await checkbox.spyOnEvent('wcsChange');\n\n // When\n await checkbox.press('Space');\n\n // Then\n expect(wcsChangeEventSpy).toHaveReceivedEventTimes(1);\n expect(wcsChangeEventSpy).toHaveReceivedEventDetail({ checked: true });\n });\n });\n});\n"]}