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
@@ -1,206 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- import { setWcsContent } from "../../utils/tests";
3
- describe('counter', () => {
4
- it('should increment the counter when click on plus button', async () => {
5
- // Given
6
- const page = await newE2EPage();
7
- await setWcsContent(page, `
8
- <wcs-counter></wcs-counter>
9
- `);
10
- const counter = await page.find('wcs-counter');
11
- const changeSpy = await counter.spyOnEvent('wcsChange');
12
- const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
13
- // When
14
- await incrementButton.click();
15
- await page.waitForChanges();
16
- // Then
17
- expect(changeSpy).toHaveReceivedEventTimes(1);
18
- expect(changeSpy).toHaveReceivedEventDetail({ value: 1 });
19
- });
20
- it('should decrement the counter when click on minus button', async () => {
21
- // Given
22
- const page = await newE2EPage();
23
- await setWcsContent(page, `
24
- <wcs-counter></wcs-counter>
25
- `);
26
- const counter = await page.find('wcs-counter');
27
- const changeSpy = await counter.spyOnEvent('wcsChange');
28
- const incrementButton = await page.find('wcs-counter >>> wcs-button:first-child');
29
- // When
30
- await incrementButton.click();
31
- await page.waitForChanges();
32
- // Then
33
- expect(changeSpy).toHaveReceivedEventTimes(1);
34
- expect(changeSpy).toHaveReceivedEventDetail({ value: -1 });
35
- });
36
- it('should have 0 as default value', async () => {
37
- // Given
38
- const page = await newE2EPage();
39
- await setWcsContent(page, `
40
- <wcs-counter></wcs-counter>
41
- `);
42
- const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
43
- // Then
44
- expect(currentDisplayedValue).toEqualText('0');
45
- });
46
- it('should respect the step attribute', async () => {
47
- // Given
48
- const page = await newE2EPage();
49
- await setWcsContent(page, `
50
- <wcs-counter step="5"></wcs-counter>
51
- `);
52
- const counter = await page.find('wcs-counter');
53
- const changeSpy = await counter.spyOnEvent('wcsChange');
54
- const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
55
- // When
56
- await incrementButton.click();
57
- await page.waitForChanges();
58
- // Then
59
- expect(changeSpy).toHaveReceivedEventTimes(1);
60
- expect(changeSpy).toHaveReceivedEventDetail({ value: 5 });
61
- });
62
- it('should respect the min attribute', async () => {
63
- // Given
64
- const page = await newE2EPage();
65
- await setWcsContent(page, `
66
- <wcs-counter min="-1" value="0"></wcs-counter>
67
- `);
68
- const counter = await page.find('wcs-counter');
69
- const changeSpy = await counter.spyOnEvent('wcsChange');
70
- const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');
71
- // When
72
- await decrementButton.click();
73
- await decrementButton.click();
74
- await page.waitForChanges();
75
- // Then
76
- expect(changeSpy).toHaveReceivedEventTimes(1);
77
- expect(changeSpy).toHaveReceivedEventDetail({ value: -1 });
78
- });
79
- it('should use the min attribute as default value when value is not set', async () => {
80
- // Given
81
- const page = await newE2EPage();
82
- await setWcsContent(page, `
83
- <wcs-counter min="5"></wcs-counter>
84
- `);
85
- const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
86
- // Then
87
- expect(currentDisplayedValue).toEqualText('5');
88
- });
89
- it('should respect the max attribute', async () => {
90
- // Given
91
- const page = await newE2EPage();
92
- await setWcsContent(page, `
93
- <wcs-counter max="1"></wcs-counter>
94
- `);
95
- const counter = await page.find('wcs-counter');
96
- const changeSpy = await counter.spyOnEvent('wcsChange');
97
- const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
98
- // When
99
- await incrementButton.click();
100
- await incrementButton.click();
101
- await page.waitForChanges();
102
- // Then
103
- expect(changeSpy).toHaveReceivedEventTimes(1);
104
- expect(changeSpy).toHaveReceivedEventDetail({ value: 1 });
105
- });
106
- it('should respect the value attribute', async () => {
107
- // Given
108
- const page = await newE2EPage();
109
- await setWcsContent(page, `
110
- <wcs-counter value="5"></wcs-counter>
111
- `);
112
- const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
113
- // Then
114
- expect(currentDisplayedValue).toEqualText('5');
115
- });
116
- it('should use the min value as default when min is greater than 0', async () => {
117
- // Given
118
- const page = await newE2EPage();
119
- await setWcsContent(page, `
120
- <wcs-counter min="5"></wcs-counter>
121
- `);
122
- const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
123
- // Then
124
- expect(currentDisplayedValue).toEqualText('5');
125
- });
126
- it('should use the min value as default when min is greater than value', async () => {
127
- // Given
128
- const page = await newE2EPage();
129
- await setWcsContent(page, `
130
- <wcs-counter min="5" value="3"></wcs-counter>
131
- `);
132
- const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
133
- // Then
134
- expect(currentDisplayedValue).toEqualText('5');
135
- });
136
- it('should fire wcsBlur event when the counter loose focus', async () => {
137
- const page = await newE2EPage();
138
- await setWcsContent(page, `
139
- <button id="first">first</button>
140
- <wcs-counter></wcs-counter>
141
- <button id="last">last</button>
142
- `);
143
- const counter = await page.find('wcs-counter');
144
- const blurSpy = await counter.spyOnEvent('wcsBlur');
145
- const firstButton = await page.find('#first');
146
- // When
147
- await firstButton.click();
148
- await page.keyboard.press('Tab');
149
- await page.keyboard.press('Tab');
150
- await page.waitForChanges();
151
- // Then
152
- expect(blurSpy).toHaveReceivedEventTimes(1);
153
- });
154
- it('should fire wcsBlur event when the user click on decrement button and leave', async () => {
155
- const page = await newE2EPage();
156
- await setWcsContent(page, `
157
- <wcs-counter></wcs-counter>
158
- <button>last</button>
159
- `);
160
- const counter = await page.find('wcs-counter');
161
- const button = await page.find('button');
162
- const blurSpy = await counter.spyOnEvent('wcsBlur');
163
- const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');
164
- // When
165
- await decrementButton.click();
166
- await button.click();
167
- await page.waitForChanges();
168
- // Then
169
- expect(blurSpy).toHaveReceivedEventTimes(1);
170
- });
171
- it('should fire wcsBlur event when the user click on increment button and leave', async () => {
172
- const page = await newE2EPage();
173
- await setWcsContent(page, `
174
- <wcs-counter></wcs-counter>
175
- <button>last</button>
176
- `);
177
- const counter = await page.find('wcs-counter');
178
- const button = await page.find('button');
179
- const blurSpy = await counter.spyOnEvent('wcsBlur');
180
- const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
181
- // When
182
- await incrementButton.click();
183
- await button.click();
184
- await page.waitForChanges();
185
- // Then
186
- expect(blurSpy).toHaveReceivedEventTimes(1);
187
- });
188
- it('should not be interactive when disabled', async () => {
189
- // Given
190
- const page = await newE2EPage();
191
- await setWcsContent(page, `
192
- <wcs-counter disabled="true"></wcs-counter>
193
- `);
194
- const counter = await page.find('wcs-counter');
195
- const changeSpy = await counter.spyOnEvent('wcsChange');
196
- const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
197
- // When
198
- await incrementButton.click();
199
- await page.waitForChanges();
200
- // Then
201
- expect(changeSpy).not.toHaveReceivedEvent();
202
- expect(await counter.getProperty('value')).toBe(0);
203
- expect(await incrementButton.getProperty('disabled')).toBe(true);
204
- });
205
- });
206
- //# sourceMappingURL=counter.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"counter.e2e.js","sourceRoot":"","sources":["../../../src/components/counter/counter.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { setWcsContent } from \"../../utils/tests\";\n\n\ndescribe('counter', () => {\n it('should increment the counter when click on plus button', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: 1});\n });\n\n it('should decrement the counter when click on minus button', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:first-child');\n // When\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: -1});\n });\n\n it('should have 0 as default value', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n\n // Then\n expect(currentDisplayedValue).toEqualText('0');\n });\n it('should respect the step attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter step=\"5\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: 5});\n });\n it('should respect the min attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"-1\" value=\"0\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');\n // When\n await decrementButton.click();\n await decrementButton.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: -1});\n });\n it('should use the min attribute as default value when value is not set', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"5\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should respect the max attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter max=\"1\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: 1});\n });\n it('should respect the value attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter value=\"5\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should use the min value as default when min is greater than 0', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"5\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should use the min value as default when min is greater than value', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"5\" value=\"3\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should fire wcsBlur event when the counter loose focus', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <button id=\"first\">first</button>\n <wcs-counter></wcs-counter>\n <button id=\"last\">last</button>\n `);\n const counter = await page.find('wcs-counter');\n const blurSpy = await counter.spyOnEvent('wcsBlur');\n const firstButton = await page.find('#first');\n // When\n await firstButton.click();\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n // Then\n expect(blurSpy).toHaveReceivedEventTimes(1);\n });\n it('should fire wcsBlur event when the user click on decrement button and leave', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n <button>last</button>\n `);\n const counter = await page.find('wcs-counter');\n const button = await page.find('button');\n const blurSpy = await counter.spyOnEvent('wcsBlur');\n const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');\n // When\n await decrementButton.click();\n await button.click();\n await page.waitForChanges();\n\n // Then\n expect(blurSpy).toHaveReceivedEventTimes(1);\n });\n it('should fire wcsBlur event when the user click on increment button and leave', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n <button>last</button>\n `);\n const counter = await page.find('wcs-counter');\n const button = await page.find('button');\n const blurSpy = await counter.spyOnEvent('wcsBlur');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await button.click();\n await page.waitForChanges();\n\n // Then\n expect(blurSpy).toHaveReceivedEventTimes(1);\n });\n it('should not be interactive when disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter disabled=\"true\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n\n // When\n await incrementButton.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(await counter.getProperty('value')).toBe(0);\n expect(await incrementButton.getProperty('disabled')).toBe(true);\n });\n});\n"]}
@@ -1,156 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- import { setWcsContent } from "../../utils/tests";
3
- describe('Dropdown component', () => {
4
- let page;
5
- let dropdown;
6
- let dropdownButton;
7
- let items;
8
- let firstItem;
9
- let lastItem;
10
- beforeEach(async () => {
11
- // Given
12
- page = await newE2EPage();
13
- await setWcsContent(page, `
14
- <wcs-dropdown mode="plain" shape="normal" size="m">
15
- <span slot="placeholder">Dropdown</span>
16
- <wcs-dropdown-item id="first-item">Premier item</wcs-dropdown-item>
17
- <wcs-dropdown-header>ACTION HEADER</wcs-dropdown-header>
18
- <wcs-dropdown-item>Second item test avec un long texte</wcs-dropdown-item>
19
- <wcs-dropdown-item>Dernier item</wcs-dropdown-item>
20
- <wcs-dropdown-divider></wcs-dropdown-divider>
21
- <wcs-dropdown-item id="last-item">Dernier item</wcs-dropdown-item>
22
- </wcs-dropdown>
23
- `);
24
- dropdown = await page.find('wcs-dropdown');
25
- dropdownButton = await page.find('wcs-dropdown >>> #dropdown-button');
26
- items = await page.findAll('wcs-dropdown-item');
27
- firstItem = await page.find('wcs-dropdown-item#first-item');
28
- lastItem = await page.find('wcs-dropdown-item#last-item');
29
- });
30
- describe('keyboard interactions', () => {
31
- it('Enter should open menu and move focus to the first item', async () => {
32
- // When
33
- await dropdown.focus();
34
- await page.keyboard.press('Enter');
35
- await page.waitForChanges();
36
- // Then
37
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
38
- const focusedItem = await page.find(':focus');
39
- expect(focusedItem).toEqual(items[0]);
40
- });
41
- it('SPACE should open menu and move focus to the first item', async () => {
42
- // When
43
- await dropdown.focus();
44
- await page.keyboard.press('Space');
45
- await page.waitForChanges();
46
- // Then
47
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
48
- const focusedItem = await page.find(':focus');
49
- expect(focusedItem).toEqual(items[0]);
50
- });
51
- it('DOWN_ARROW should open menu and move focus to the first item', async () => {
52
- // When
53
- await dropdown.focus();
54
- await page.keyboard.press('ArrowDown');
55
- await page.waitForChanges();
56
- // Then
57
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
58
- const focusedItem = await page.find(':focus');
59
- expect(focusedItem).toEqual(items[0]);
60
- });
61
- it('UP_ARROW should open menu and move focus to the last item', async () => {
62
- // When
63
- await dropdown.focus();
64
- await page.keyboard.press('ArrowUp');
65
- await page.waitForChanges();
66
- // Then
67
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
68
- const focusedItem = await page.find(':focus');
69
- expect(focusedItem).toEqual(items[items.length - 1]);
70
- });
71
- it('HOME should focus the first item', async () => {
72
- // When
73
- await dropdownButton.click();
74
- await page.waitForChanges();
75
- await page.keyboard.press('Home');
76
- await page.waitForChanges();
77
- // Then
78
- const focusedItem = await page.find(':focus');
79
- expect(focusedItem).toEqual(firstItem);
80
- });
81
- it('END should focus the last item', async () => {
82
- // When
83
- await dropdownButton.click();
84
- await page.waitForChanges();
85
- await page.keyboard.press('End');
86
- await page.waitForChanges();
87
- // Then
88
- const focusedItem = await page.find(':focus');
89
- expect(focusedItem).toEqual(lastItem);
90
- });
91
- it('UP_ARROW should move focus to the previous item', async () => {
92
- // When
93
- await dropdownButton.click();
94
- await page.keyboard.press('ArrowUp');
95
- await page.waitForChanges();
96
- // Then
97
- const focusedItem = await page.find(':focus');
98
- expect(focusedItem).toEqual(lastItem);
99
- });
100
- it('DOWN_ARROW should move focus to the next item', async () => {
101
- // When
102
- await dropdownButton.click();
103
- await page.keyboard.press('ArrowDown');
104
- await page.waitForChanges();
105
- // Then
106
- const focusedItem = await page.find(':focus');
107
- expect(focusedItem).toEqual(items[1]);
108
- });
109
- it('ESCAPE should close the menu and set focus on the dropdown button', async () => {
110
- // When
111
- await dropdownButton.click();
112
- await page.keyboard.press('Escape');
113
- await page.waitForChanges();
114
- // Then
115
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
116
- const focusedElement = await page.find(':focus');
117
- expect(focusedElement).toEqual(dropdown);
118
- });
119
- it('TAB should close the menu and set focus on the dropdown button', async () => {
120
- // When
121
- await dropdownButton.click();
122
- await page.keyboard.press('Tab');
123
- await page.waitForChanges();
124
- // Then
125
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
126
- const focusedElement = await page.find(':focus');
127
- expect(focusedElement).toEqual(dropdown);
128
- });
129
- it('SHIFT+TAB should close the menu and set focus on the dropdown button', async () => {
130
- // When
131
- await dropdownButton.click();
132
- await page.keyboard.down('Shift');
133
- await page.keyboard.press('Tab');
134
- await page.keyboard.up('Shift');
135
- await page.waitForChanges();
136
- // Then
137
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
138
- const focusedElement = await page.find(':focus');
139
- expect(focusedElement).toEqual(dropdown);
140
- });
141
- it('ENTER should activate the item, close menu, and set focus on the dropdown button', async () => {
142
- const itemClickSpy = await dropdown.spyOnEvent('wcsDropdownItemClick');
143
- // When
144
- await dropdownButton.click();
145
- await items[0].focus();
146
- await page.keyboard.press('Enter');
147
- await page.waitForChanges();
148
- // Then
149
- expect(itemClickSpy).toHaveReceivedEventTimes(1);
150
- expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
151
- const focusedElement = await page.find(':focus');
152
- expect(focusedElement).toEqual(dropdown);
153
- });
154
- });
155
- });
156
- //# sourceMappingURL=dropdown.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown.e2e.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { setWcsContent } from \"../../utils/tests\";\n\ndescribe('Dropdown component', () => {\n let page;\n let dropdown;\n let dropdownButton;\n let items;\n let firstItem;\n let lastItem;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-dropdown mode=\"plain\" shape=\"normal\" size=\"m\">\n <span slot=\"placeholder\">Dropdown</span>\n <wcs-dropdown-item id=\"first-item\">Premier item</wcs-dropdown-item>\n <wcs-dropdown-header>ACTION HEADER</wcs-dropdown-header>\n <wcs-dropdown-item>Second item test avec un long texte</wcs-dropdown-item>\n <wcs-dropdown-item>Dernier item</wcs-dropdown-item>\n <wcs-dropdown-divider></wcs-dropdown-divider>\n <wcs-dropdown-item id=\"last-item\">Dernier item</wcs-dropdown-item>\n </wcs-dropdown>\n `);\n dropdown = await page.find('wcs-dropdown');\n dropdownButton = await page.find('wcs-dropdown >>> #dropdown-button');\n items = await page.findAll('wcs-dropdown-item');\n firstItem = await page.find('wcs-dropdown-item#first-item');\n lastItem = await page.find('wcs-dropdown-item#last-item');\n });\n\n describe('keyboard interactions', () => {\n it('Enter should open menu and move focus to the first item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[0]);\n });\n\n it('SPACE should open menu and move focus to the first item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('Space');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[0]);\n });\n\n it('DOWN_ARROW should open menu and move focus to the first item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[0]);\n });\n\n it('UP_ARROW should open menu and move focus to the last item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[items.length - 1]);\n });\n\n it('HOME should focus the first item', async () => {\n // When\n await dropdownButton.click();\n await page.waitForChanges();\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(firstItem);\n });\n\n it('END should focus the last item', async () => {\n // When\n await dropdownButton.click();\n await page.waitForChanges();\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(lastItem);\n });\n\n it('UP_ARROW should move focus to the previous item', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(lastItem);\n });\n\n it('DOWN_ARROW should move focus to the next item', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[1]);\n });\n\n it('ESCAPE should close the menu and set focus on the dropdown button', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n\n it('TAB should close the menu and set focus on the dropdown button', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n\n it('SHIFT+TAB should close the menu and set focus on the dropdown button', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n\n it('ENTER should activate the item, close menu, and set focus on the dropdown button', async () => {\n const itemClickSpy = await dropdown.spyOnEvent('wcsDropdownItemClick');\n\n // When\n await dropdownButton.click();\n await items[0].focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(itemClickSpy).toHaveReceivedEventTimes(1);\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n });\n});\n"]}
@@ -1,176 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- describe('wcs-editable-field', () => {
3
- it('renders with input element and default props', async () => {
4
- const page = await newE2EPage();
5
- await page.setContent(`
6
- <wcs-editable-field label="Test Input" value="Initial value" type="input" id="test">
7
- <wcs-input></wcs-input>
8
- </wcs-editable-field>
9
- `);
10
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
11
- expect(displayContainer).not.toBeNull();
12
- expect(displayContainer.textContent).toContain('Initial value');
13
- const label = await page.find('wcs-editable-field >>> .label');
14
- expect(label.textContent).toBe('Test Input');
15
- });
16
- it('transitions from DISPLAY to EDIT state when clicked', async () => {
17
- const page = await newE2EPage();
18
- await page.setContent(`
19
- <wcs-editable-field label="Test Input" value="Initial value" type="input" id="test">
20
- <wcs-input></wcs-input>
21
- </wcs-editable-field>
22
- `);
23
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
24
- await displayContainer.click();
25
- // Wait for state transition
26
- await page.waitForChanges();
27
- const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');
28
- expect(editContainer).not.toBeNull();
29
- });
30
- it('properly handles validation', async () => {
31
- const page = await newE2EPage();
32
- await page.setContent(`
33
- <wcs-editable-field id="validate-test" label="Test Validation" value="Valid" error-msg="Value is invalid" type="input">
34
- <wcs-input></wcs-input>
35
- </wcs-editable-field>
36
- `);
37
- // Set up validation function
38
- await page.$eval('wcs-editable-field', (el) => {
39
- el.validateFn = (val) => val === 'Valid';
40
- });
41
- // Go to edit mode
42
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
43
- await displayContainer.click();
44
- await page.waitForChanges();
45
- // Input invalid value
46
- const input = await page.find('wcs-input');
47
- await input.type('Invalid');
48
- await page.waitForChanges();
49
- // Trigger validation (simulate Enter key)
50
- await input.press('Enter');
51
- await page.waitForChanges();
52
- // Check error message is displayed
53
- const errorElement = await page.find('wcs-editable-field >>> wcs-error');
54
- expect(errorElement).not.toBeNull();
55
- expect(errorElement.textContent).toBe('Value is invalid');
56
- });
57
- it('emits wcsChange event with correct data', async () => {
58
- const page = await newE2EPage();
59
- await page.setContent(`
60
- <wcs-editable-field label="Test Events" value="Old value" type="input" id="event-test">
61
- <wcs-input id="test-input"></wcs-input>
62
- </wcs-editable-field>
63
- `);
64
- const changeEvent = await page.spyOnEvent('wcsChange');
65
- // Go to edit mode
66
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
67
- await displayContainer.click();
68
- await page.waitForChanges();
69
- // Input new value
70
- const input = await page.find('wcs-input');
71
- await input.press('Backspace'); // Clear value (backspace is easier than selecting all)
72
- await input.press('Backspace');
73
- await input.press('Backspace');
74
- await input.press('Backspace');
75
- await input.press('Backspace');
76
- await input.press('Backspace');
77
- await input.press('Backspace');
78
- await input.press('Backspace');
79
- await input.press('Backspace');
80
- await input.type('New value');
81
- await page.waitForChanges();
82
- // Submit the form
83
- await input.press('Enter');
84
- await page.waitForChanges();
85
- // Note: Functions defined in the event's detail object (successHandler and errorHandler)
86
- // are not cloned by the DOM's structured clone algorithm.
87
- // This means that when the event is emitted, these functions will not be present in the
88
- // event.detail object when accessed in E2E tests, even though they exist in the browser.
89
- expect(changeEvent).toHaveNthReceivedEventDetail(0, {
90
- newValue: 'New value'
91
- });
92
- });
93
- it('respects readonly property', async () => {
94
- const page = await newE2EPage();
95
- await page.setContent(`
96
- <wcs-editable-field label="Read Only Field" value="Readonly value" readonly="true" type="input" id="test">
97
- <wcs-input></wcs-input>
98
- </wcs-editable-field>
99
- `);
100
- // Check readonly icon is displayed
101
- const readonlyIcon = await page.find('wcs-editable-field >>> .readonly-icon');
102
- expect(readonlyIcon).not.toBeNull();
103
- // Try clicking
104
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
105
- await displayContainer.click();
106
- await page.waitForChanges();
107
- // Should still be in display mode
108
- const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');
109
- expect(editContainer).toBeNull();
110
- });
111
- it('works correctly with textarea', async () => {
112
- const page = await newE2EPage();
113
- await page.setContent(`
114
- <wcs-editable-field label="Textarea Test" type="textarea" value="Multiline\nText" id="test">
115
- <wcs-textarea></wcs-textarea>
116
- </wcs-editable-field>
117
- `);
118
- // Check it renders correctly
119
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
120
- expect(displayContainer.textContent).toContain('Multiline\nText');
121
- // Go to edit mode
122
- await displayContainer.click();
123
- await page.waitForChanges();
124
- // Should need Ctrl+Enter to submit with textarea
125
- const textarea = await page.find('wcs-textarea');
126
- await textarea.press('Enter'); // This should NOT submit
127
- await page.waitForChanges();
128
- // Should still be in edit mode
129
- const editContainerVisible = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');
130
- expect(editContainerVisible).not.toBeNull();
131
- });
132
- it('works correctly with select', async () => {
133
- const page = await newE2EPage();
134
- await page.setContent(`
135
- <wcs-editable-field label="Select Test" type="select" value="option1" id="test">
136
- <wcs-select>
137
- <wcs-select-option value="option1">Option 1</wcs-select-option>
138
- <wcs-select-option value="option2">Option 2</wcs-select-option>
139
- </wcs-select>
140
- </wcs-editable-field>
141
- `);
142
- // Go to edit mode
143
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
144
- await displayContainer.click();
145
- await page.waitForChanges();
146
- // We get the select element
147
- const select = await page.find('wcs-select');
148
- await select.focus();
149
- await select.press('ArrowDown');
150
- // press CTRL + ENTER (combined) to validate
151
- await page.keyboard.down('Control');
152
- await page.keyboard.press('Enter');
153
- await page.keyboard.up('Control');
154
- await page.waitForChanges();
155
- // Should be in load state after change
156
- const loadContainer = await page.find('wcs-editable-field >>> .load-container:not(.display-none)');
157
- expect(loadContainer).not.toBeNull();
158
- });
159
- it('properly handles custom formatting function', async () => {
160
- const page = await newE2EPage();
161
- await page.setContent(`
162
- <wcs-editable-field id="format-test" label="Formatting Test" value="test value" type="input">
163
- <wcs-input></wcs-input>
164
- </wcs-editable-field>
165
- `);
166
- // Set custom formatter
167
- await page.$eval('wcs-editable-field', (el) => {
168
- el.formatFn = (val) => val ? val.toUpperCase() : '';
169
- });
170
- await page.waitForChanges();
171
- // Check formatted output
172
- const displayContainer = await page.find('wcs-editable-field >>> .display-container');
173
- expect(displayContainer.textContent).toContain('TEST VALUE');
174
- });
175
- });
176
- //# sourceMappingURL=editable-field.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editable-field.e2e.js","sourceRoot":"","sources":["../../../src/components/editable-field/editable-field.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\n\ndescribe('wcs-editable-field', () => {\n it('renders with input element and default props', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Test Input\" value=\"Initial value\" type=\"input\" id=\"test\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n expect(displayContainer).not.toBeNull();\n expect(displayContainer.textContent).toContain('Initial value');\n\n const label = await page.find('wcs-editable-field >>> .label');\n expect(label.textContent).toBe('Test Input');\n });\n\n it('transitions from DISPLAY to EDIT state when clicked', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Test Input\" value=\"Initial value\" type=\"input\" id=\"test\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n \n // Wait for state transition\n await page.waitForChanges();\n \n const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');\n expect(editContainer).not.toBeNull();\n });\n\n it('properly handles validation', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field id=\"validate-test\" label=\"Test Validation\" value=\"Valid\" error-msg=\"Value is invalid\" type=\"input\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n // Set up validation function\n await page.$eval('wcs-editable-field', (el) => {\n el.validateFn = (val) => val === 'Valid';\n });\n \n // Go to edit mode\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // Input invalid value\n const input = await page.find('wcs-input');\n await input.type('Invalid');\n await page.waitForChanges();\n \n // Trigger validation (simulate Enter key)\n await input.press('Enter');\n await page.waitForChanges();\n \n // Check error message is displayed\n const errorElement = await page.find('wcs-editable-field >>> wcs-error');\n expect(errorElement).not.toBeNull();\n expect(errorElement.textContent).toBe('Value is invalid');\n });\n\n it('emits wcsChange event with correct data', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Test Events\" value=\"Old value\" type=\"input\" id=\"event-test\">\n <wcs-input id=\"test-input\"></wcs-input>\n </wcs-editable-field>\n `);\n \n const changeEvent = await page.spyOnEvent('wcsChange');\n \n // Go to edit mode\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // Input new value\n const input = await page.find('wcs-input');\n await input.press('Backspace'); // Clear value (backspace is easier than selecting all)\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.type('New value');\n await page.waitForChanges();\n \n // Submit the form\n await input.press('Enter');\n await page.waitForChanges();\n \n // Note: Functions defined in the event's detail object (successHandler and errorHandler)\n // are not cloned by the DOM's structured clone algorithm.\n // This means that when the event is emitted, these functions will not be present in the\n // event.detail object when accessed in E2E tests, even though they exist in the browser.\n expect(changeEvent).toHaveNthReceivedEventDetail(0, {\n newValue: 'New value'\n });\n });\n\n it('respects readonly property', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Read Only Field\" value=\"Readonly value\" readonly=\"true\" type=\"input\" id=\"test\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n // Check readonly icon is displayed\n const readonlyIcon = await page.find('wcs-editable-field >>> .readonly-icon');\n expect(readonlyIcon).not.toBeNull();\n \n // Try clicking\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // Should still be in display mode\n const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');\n expect(editContainer).toBeNull();\n });\n\n it('works correctly with textarea', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Textarea Test\" type=\"textarea\" value=\"Multiline\\nText\" id=\"test\">\n <wcs-textarea></wcs-textarea>\n </wcs-editable-field>\n `);\n \n // Check it renders correctly\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n expect(displayContainer.textContent).toContain('Multiline\\nText');\n \n // Go to edit mode\n await displayContainer.click();\n await page.waitForChanges();\n \n // Should need Ctrl+Enter to submit with textarea\n const textarea = await page.find('wcs-textarea');\n await textarea.press('Enter'); // This should NOT submit\n await page.waitForChanges();\n \n // Should still be in edit mode\n const editContainerVisible = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');\n expect(editContainerVisible).not.toBeNull();\n });\n\n it('works correctly with select', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Select Test\" type=\"select\" value=\"option1\" id=\"test\">\n <wcs-select>\n <wcs-select-option value=\"option1\">Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n </wcs-select>\n </wcs-editable-field>\n `);\n \n // Go to edit mode\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // We get the select element\n const select = await page.find('wcs-select');\n await select.focus();\n await select.press('ArrowDown');\n \n // press CTRL + ENTER (combined) to validate\n await page.keyboard.down('Control');\n await page.keyboard.press('Enter');\n await page.keyboard.up('Control');\n\n await page.waitForChanges();\n \n // Should be in load state after change\n const loadContainer = await page.find('wcs-editable-field >>> .load-container:not(.display-none)');\n expect(loadContainer).not.toBeNull();\n });\n\n it('properly handles custom formatting function', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field id=\"format-test\" label=\"Formatting Test\" value=\"test value\" type=\"input\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n // Set custom formatter\n await page.$eval('wcs-editable-field', (el) => {\n el.formatFn = (val) => val ? val.toUpperCase() : '';\n });\n await page.waitForChanges();\n \n // Check formatted output\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n expect(displayContainer.textContent).toContain('TEST VALUE');\n });\n});"]}