@watermarkinsights/ripple 4.3.0 → 4.4.0-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 (371) hide show
  1. package/dist/cjs/chartFunctions-cecf8134.js +600 -0
  2. package/dist/cjs/{functions-91da05e9.js → functions-4208c444.js} +362 -362
  3. package/dist/cjs/{global-20d48c6c.js → global-bd289a67.js} +24 -24
  4. package/dist/cjs/{index-fae02cd7.js → index-f8ef86de.js} +436 -150
  5. package/dist/cjs/interfaces-ad9e80a6.js +38 -0
  6. package/dist/cjs/intl-3fafc6d1.js +179 -0
  7. package/dist/cjs/loader.cjs.js +4 -13
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +85 -85
  9. package/dist/cjs/priv-datepicker.cjs.entry.js +637 -637
  10. package/dist/cjs/priv-navigator-button.cjs.entry.js +18 -18
  11. package/dist/cjs/priv-navigator-item.cjs.entry.js +21 -21
  12. package/dist/cjs/ripple.cjs.js +4 -7
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +314 -314
  14. package/dist/cjs/wm-button.cjs.entry.js +174 -174
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +17 -17
  16. package/dist/cjs/wm-chart.cjs.entry.js +164 -164
  17. package/dist/cjs/wm-datepicker.cjs.entry.js +160 -160
  18. package/dist/cjs/wm-file-list.cjs.entry.js +10 -10
  19. package/dist/cjs/wm-file.cjs.entry.js +178 -178
  20. package/dist/cjs/wm-input.cjs.entry.js +102 -102
  21. package/dist/cjs/wm-line-chart.cjs.entry.js +462 -462
  22. package/dist/cjs/wm-modal-footer.cjs.entry.js +27 -27
  23. package/dist/cjs/wm-modal-header.cjs.entry.js +21 -21
  24. package/dist/cjs/wm-modal.cjs.entry.js +92 -92
  25. package/dist/cjs/wm-navigation_3.cjs.entry.js +179 -179
  26. package/dist/cjs/wm-navigator.cjs.entry.js +255 -251
  27. package/dist/cjs/wm-option_2.cjs.entry.js +710 -710
  28. package/dist/cjs/wm-pagination.cjs.entry.js +169 -169
  29. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +151 -151
  30. package/dist/cjs/wm-search.cjs.entry.js +192 -192
  31. package/dist/cjs/wm-snackbar.cjs.entry.js +114 -114
  32. package/dist/cjs/wm-tab-item_3.cjs.entry.js +247 -247
  33. package/dist/cjs/wm-tag-input.cjs.entry.js +849 -849
  34. package/dist/cjs/wm-tag-option.cjs.entry.js +33 -33
  35. package/dist/cjs/wm-timepicker.cjs.entry.js +270 -270
  36. package/dist/cjs/wm-toggletip.cjs.entry.js +99 -99
  37. package/dist/cjs/wm-uploader.cjs.entry.js +198 -198
  38. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  39. package/dist/collection/collection-manifest.json +41 -41
  40. package/dist/collection/components/charts/chartFunctions.js +456 -456
  41. package/dist/collection/components/charts/chartFunctions.spec.js +13 -13
  42. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +73 -73
  43. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +257 -254
  44. package/dist/collection/components/charts/screenshots.e2e.js +30 -30
  45. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +121 -121
  46. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +160 -160
  47. package/dist/collection/components/charts/wm-chart/wm-chart.js +382 -381
  48. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +26 -26
  49. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.css +1 -2
  50. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +138 -138
  51. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +731 -731
  52. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +106 -106
  53. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +202 -202
  54. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +54 -54
  55. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +136 -136
  56. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +31 -31
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +119 -119
  58. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +187 -187
  59. package/dist/collection/components/wm-action-menu/wm-action-menu.js +435 -435
  60. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +35 -35
  61. package/dist/collection/components/wm-button/wm-button.e2e.js +58 -58
  62. package/dist/collection/components/wm-button/wm-button.js +454 -452
  63. package/dist/collection/components/wm-button/wm-button.spec.js +63 -63
  64. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +943 -939
  65. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.spec.js +71 -71
  66. package/dist/collection/components/wm-datepicker/wm-datepicker.css +1 -2
  67. package/dist/collection/components/wm-datepicker/wm-datepicker.e2e.js +359 -359
  68. package/dist/collection/components/wm-datepicker/wm-datepicker.js +415 -413
  69. package/dist/collection/components/wm-datepicker/wm-datepicker.spec.js +13 -13
  70. package/dist/collection/components/wm-file/wm-file.js +380 -380
  71. package/dist/collection/components/wm-file/wm-file.spec.js +107 -107
  72. package/dist/collection/components/wm-file-list/wm-file-list.js +42 -42
  73. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +47 -47
  74. package/dist/collection/components/wm-input/wm-input.e2e.js +26 -26
  75. package/dist/collection/components/wm-input/wm-input.js +453 -453
  76. package/dist/collection/components/wm-input/wm-input.spec.js +168 -168
  77. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +18 -18
  78. package/dist/collection/components/wm-menuitem/wm-menuitem.js +446 -436
  79. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +46 -46
  80. package/dist/collection/components/wm-modal/wm-modal-footer.js +130 -130
  81. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +8 -8
  82. package/dist/collection/components/wm-modal/wm-modal-header.js +68 -68
  83. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +5 -5
  84. package/dist/collection/components/wm-modal/wm-modal.e2e.js +65 -65
  85. package/dist/collection/components/wm-modal/wm-modal.js +299 -296
  86. package/dist/collection/components/wm-modal/wm-modal.spec.js +22 -22
  87. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +0 -1
  88. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +112 -112
  89. package/dist/collection/components/wm-navigation/wm-navigation-item.js +125 -125
  90. package/dist/collection/components/wm-navigation/wm-navigation.css +0 -2
  91. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +86 -86
  92. package/dist/collection/components/wm-navigation/wm-navigation.js +209 -209
  93. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +79 -79
  94. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +30 -30
  95. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +103 -103
  96. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +119 -118
  97. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +180 -180
  98. package/dist/collection/components/wm-navigator/wm-navigator.js +458 -454
  99. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +153 -153
  100. package/dist/collection/components/wm-option/wm-option.e2e.js +19 -19
  101. package/dist/collection/components/wm-option/wm-option.js +474 -463
  102. package/dist/collection/components/wm-option/wm-option.spec.js +39 -39
  103. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +301 -301
  104. package/dist/collection/components/wm-pagination/wm-pagination.js +327 -327
  105. package/dist/collection/components/wm-search/wm-search.e2e.js +69 -69
  106. package/dist/collection/components/wm-search/wm-search.js +415 -414
  107. package/dist/collection/components/wm-search/wm-search.spec.js +64 -64
  108. package/dist/collection/components/wm-select/wm-select.e2e.js +443 -443
  109. package/dist/collection/components/wm-select/wm-select.js +967 -966
  110. package/dist/collection/components/wm-select/wm-select.spec.js +250 -250
  111. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +114 -114
  112. package/dist/collection/components/wm-snackbar/wm-snackbar.js +209 -207
  113. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +4 -4
  114. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +190 -188
  115. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +261 -261
  116. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
  117. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +79 -79
  118. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +6 -6
  119. package/dist/collection/components/wm-tag-input/wm-tag-input.css +2 -4
  120. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +168 -168
  121. package/dist/collection/components/wm-tag-input/wm-tag-input.js +1159 -1159
  122. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +147 -147
  123. package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +236 -234
  124. package/dist/collection/components/wm-timepicker/wm-timepicker.css +1 -2
  125. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +147 -147
  126. package/dist/collection/components/wm-timepicker/wm-timepicker.js +531 -527
  127. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +151 -151
  128. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +61 -61
  129. package/dist/collection/components/wm-toggletip/wm-toggletip.js +209 -208
  130. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +16 -16
  131. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +56 -56
  132. package/dist/collection/components/wm-uploader/wm-uploader.js +423 -422
  133. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +149 -149
  134. package/dist/collection/components/wm-wrapper/wm-wrapper.js +26 -26
  135. package/dist/collection/global/__mocks__/functions.js +1 -1
  136. package/dist/collection/global/functions.js +510 -510
  137. package/dist/collection/global/functions.spec.js +123 -123
  138. package/dist/collection/global/global.js +16 -16
  139. package/dist/collection/global/interfaces.js +39 -39
  140. package/dist/collection/global/intl.js +162 -162
  141. package/dist/collection/global/services/__mocks__/http-service.js +112 -112
  142. package/dist/collection/global/services/http-service.js +41 -41
  143. package/dist/collection/global/themes/default.js +4 -4
  144. package/dist/collection/global/themes/neutral.js +4 -4
  145. package/dist/collection/lang/lang.spec.js +13 -13
  146. package/dist/esm/chartFunctions-23173fce.js +584 -0
  147. package/dist/esm/{functions-5afd09f4.js → functions-d0e70094.js} +362 -362
  148. package/dist/esm/{global-d4a9e80e.js → global-4569c7b8.js} +24 -24
  149. package/dist/esm/{index-7e11ea42.js → index-f164fbca.js} +436 -150
  150. package/dist/esm/interfaces-9b75fb61.js +35 -0
  151. package/dist/esm/intl-05c9e0c9.js +174 -0
  152. package/dist/esm/loader.js +5 -14
  153. package/dist/esm/priv-chart-popover.entry.js +85 -85
  154. package/dist/esm/priv-datepicker.entry.js +637 -637
  155. package/dist/esm/priv-navigator-button.entry.js +18 -18
  156. package/dist/esm/priv-navigator-item.entry.js +21 -21
  157. package/dist/esm/ripple.js +5 -8
  158. package/dist/esm/wm-action-menu_2.entry.js +314 -314
  159. package/dist/esm/wm-button.entry.js +174 -174
  160. package/dist/esm/wm-chart-slice.entry.js +17 -17
  161. package/dist/esm/wm-chart.entry.js +164 -164
  162. package/dist/esm/wm-datepicker.entry.js +160 -160
  163. package/dist/esm/wm-file-list.entry.js +10 -10
  164. package/dist/esm/wm-file.entry.js +178 -178
  165. package/dist/esm/wm-input.entry.js +102 -102
  166. package/dist/esm/wm-line-chart.entry.js +462 -462
  167. package/dist/esm/wm-modal-footer.entry.js +27 -27
  168. package/dist/esm/wm-modal-header.entry.js +21 -21
  169. package/dist/esm/wm-modal.entry.js +92 -92
  170. package/dist/esm/wm-navigation_3.entry.js +179 -179
  171. package/dist/esm/wm-navigator.entry.js +255 -251
  172. package/dist/esm/wm-option_2.entry.js +710 -710
  173. package/dist/esm/wm-pagination.entry.js +169 -169
  174. package/dist/esm/wm-progress-indicator_3.entry.js +151 -151
  175. package/dist/esm/wm-search.entry.js +192 -192
  176. package/dist/esm/wm-snackbar.entry.js +114 -114
  177. package/dist/esm/wm-tab-item_3.entry.js +247 -247
  178. package/dist/esm/wm-tag-input.entry.js +849 -849
  179. package/dist/esm/wm-tag-option.entry.js +33 -33
  180. package/dist/esm/wm-timepicker.entry.js +270 -270
  181. package/dist/esm/wm-toggletip.entry.js +99 -99
  182. package/dist/esm/wm-uploader.entry.js +198 -198
  183. package/dist/esm/wm-wrapper.entry.js +12 -12
  184. package/dist/esm-es5/chartFunctions-23173fce.js +1 -0
  185. package/dist/esm-es5/functions-d0e70094.js +1 -0
  186. package/dist/esm-es5/global-4569c7b8.js +1 -0
  187. package/dist/esm-es5/index-f164fbca.js +2 -0
  188. package/dist/esm-es5/{intl-e2da750a.js → intl-05c9e0c9.js} +1 -1
  189. package/dist/esm-es5/loader.js +1 -1
  190. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  191. package/dist/esm-es5/priv-datepicker.entry.js +1 -1
  192. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  193. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  194. package/dist/esm-es5/ripple.js +1 -1
  195. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  196. package/dist/esm-es5/wm-button.entry.js +1 -1
  197. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  198. package/dist/esm-es5/wm-chart.entry.js +1 -1
  199. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  200. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  201. package/dist/esm-es5/wm-file.entry.js +1 -1
  202. package/dist/esm-es5/wm-input.entry.js +1 -1
  203. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  204. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  206. package/dist/esm-es5/wm-modal.entry.js +1 -1
  207. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  208. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  209. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  210. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  211. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  212. package/dist/esm-es5/wm-search.entry.js +1 -1
  213. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  214. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  215. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  216. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  217. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  218. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  219. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  220. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  221. package/dist/loader/index.d.ts +1 -1
  222. package/dist/ripple/p-028ef6db.system.entry.js +1 -0
  223. package/dist/ripple/{p-863e737a.js → p-05d4e49b.js} +1 -1
  224. package/dist/ripple/{p-a1e95b05.system.entry.js → p-06776596.system.entry.js} +1 -1
  225. package/dist/ripple/{p-622a7791.system.entry.js → p-067d7922.system.entry.js} +1 -1
  226. package/dist/ripple/p-09d62ddd.entry.js +1 -0
  227. package/dist/ripple/{p-f30839a1.system.entry.js → p-0ecbf569.system.entry.js} +1 -1
  228. package/dist/ripple/p-0fe97e85.system.js +2 -0
  229. package/dist/ripple/{p-24b08e1f.js → p-13ca30d8.js} +1 -1
  230. package/dist/ripple/{p-8f3f903f.system.js → p-1402cfa2.system.js} +1 -1
  231. package/dist/ripple/p-1453ea51.system.entry.js +1 -0
  232. package/dist/ripple/{p-6abb903c.entry.js → p-153701f9.entry.js} +1 -1
  233. package/dist/ripple/p-1cc91907.system.js +1 -0
  234. package/dist/ripple/{p-ad37cdfd.entry.js → p-1d8b0039.entry.js} +1 -1
  235. package/dist/ripple/{p-d0f1b8c4.system.entry.js → p-1fa2a756.system.entry.js} +1 -1
  236. package/dist/ripple/{p-a52c5a1c.entry.js → p-25446670.entry.js} +1 -1
  237. package/dist/ripple/{p-1283e85d.entry.js → p-27f47edc.entry.js} +1 -1
  238. package/dist/ripple/{p-32b1126c.system.entry.js → p-28e4583c.system.entry.js} +1 -1
  239. package/dist/ripple/{p-a5b23781.system.entry.js → p-2c4f312d.system.entry.js} +1 -1
  240. package/dist/ripple/p-30b17818.system.entry.js +1 -0
  241. package/dist/ripple/{p-0631be01.system.entry.js → p-3446852f.system.entry.js} +1 -1
  242. package/dist/ripple/{p-ae674a54.entry.js → p-350fe5da.entry.js} +1 -1
  243. package/dist/ripple/{p-d04ba5f8.system.entry.js → p-3583d113.system.entry.js} +1 -1
  244. package/dist/ripple/{p-cbd8a60b.system.entry.js → p-361cc8fc.system.entry.js} +1 -1
  245. package/dist/ripple/{p-7529706d.entry.js → p-372faf33.entry.js} +1 -1
  246. package/dist/ripple/{p-19773c40.entry.js → p-3a070f35.entry.js} +1 -1
  247. package/dist/ripple/{p-c7b5ac39.js → p-3af72848.js} +1 -1
  248. package/dist/ripple/{p-c41603e6.entry.js → p-42ebfcfa.entry.js} +1 -1
  249. package/dist/ripple/{p-13594c2e.entry.js → p-43e2a49a.entry.js} +1 -1
  250. package/dist/ripple/{p-ed942b42.entry.js → p-49118468.entry.js} +1 -1
  251. package/dist/ripple/p-49c85d1a.system.js +1 -0
  252. package/dist/ripple/p-4de51706.js +2 -0
  253. package/dist/ripple/{p-3c80bf67.entry.js → p-58174f4e.entry.js} +1 -1
  254. package/dist/ripple/{p-c5e8f8a5.system.entry.js → p-5a4d9897.system.entry.js} +1 -1
  255. package/dist/ripple/{p-e3f0b57f.system.entry.js → p-5ac980e2.system.entry.js} +1 -1
  256. package/dist/ripple/{p-3becce62.system.entry.js → p-633cd89a.system.entry.js} +1 -1
  257. package/dist/ripple/{p-1205fdc1.entry.js → p-63f75d43.entry.js} +1 -1
  258. package/dist/ripple/{p-90ea7e3a.system.entry.js → p-67d48c33.system.entry.js} +1 -1
  259. package/dist/ripple/{p-8ef87907.entry.js → p-6caaf85f.entry.js} +1 -1
  260. package/dist/ripple/{p-935513f8.entry.js → p-6cf7a34a.entry.js} +1 -1
  261. package/dist/ripple/p-73289c2c.system.js +1 -0
  262. package/dist/ripple/{p-c76bbedf.system.entry.js → p-7a8816d9.system.entry.js} +1 -1
  263. package/dist/ripple/{p-8ea68cb3.system.entry.js → p-7e56da2e.system.entry.js} +1 -1
  264. package/dist/ripple/{p-deb4f5a2.entry.js → p-7e8daaac.entry.js} +1 -1
  265. package/dist/ripple/p-88406560.system.entry.js +1 -0
  266. package/dist/ripple/{p-84a7e757.entry.js → p-8cace32f.entry.js} +1 -1
  267. package/dist/ripple/{p-80aef387.entry.js → p-8d4734ad.entry.js} +1 -1
  268. package/dist/ripple/p-8f76a838.system.entry.js +1 -0
  269. package/dist/ripple/p-934c1b6b.js +1 -0
  270. package/dist/ripple/{p-85f744ed.system.js → p-9fecbc8a.system.js} +1 -1
  271. package/dist/ripple/{p-b71a83e3.entry.js → p-a69c37e0.entry.js} +1 -1
  272. package/dist/ripple/{p-9288659b.entry.js → p-a82a8931.entry.js} +1 -1
  273. package/dist/ripple/p-a99b05de.system.entry.js +1 -0
  274. package/dist/ripple/{p-36049d2f.entry.js → p-aadf8c59.entry.js} +1 -1
  275. package/dist/ripple/{p-676c1089.system.entry.js → p-aba5a00e.system.entry.js} +1 -1
  276. package/dist/ripple/{p-0aecac86.entry.js → p-ad6dc751.entry.js} +1 -1
  277. package/dist/ripple/{p-0f1ff645.entry.js → p-b253d2fc.entry.js} +1 -1
  278. package/dist/ripple/p-b2ff4723.system.entry.js +1 -0
  279. package/dist/ripple/{p-a0bf5eef.entry.js → p-b452d1d7.entry.js} +1 -1
  280. package/dist/ripple/{p-1cde16a7.system.entry.js → p-b4d862e1.system.entry.js} +1 -1
  281. package/dist/ripple/{p-d496bc44.system.entry.js → p-bdd4f919.system.entry.js} +1 -1
  282. package/dist/ripple/p-c18b398c.system.js +1 -0
  283. package/dist/ripple/{p-8f8c3705.entry.js → p-c249063c.entry.js} +1 -1
  284. package/dist/ripple/p-c344a69c.entry.js +1 -0
  285. package/dist/ripple/{p-0d9f70ab.entry.js → p-c717d895.entry.js} +1 -1
  286. package/dist/ripple/{p-2e773564.system.entry.js → p-c96a5c94.system.entry.js} +1 -1
  287. package/dist/ripple/{p-15497721.system.entry.js → p-ceced3d9.system.entry.js} +1 -1
  288. package/dist/ripple/{p-d428e9bb.system.entry.js → p-d16f91e9.system.entry.js} +1 -1
  289. package/dist/ripple/{p-ff14e4ec.system.entry.js → p-d3f9d028.system.entry.js} +1 -1
  290. package/dist/ripple/{p-7962f562.entry.js → p-de349bee.entry.js} +1 -1
  291. package/dist/ripple/{p-b3c73bc9.entry.js → p-e24ddae1.entry.js} +1 -1
  292. package/dist/ripple/{p-b3e08b14.system.entry.js → p-e8b58666.system.entry.js} +1 -1
  293. package/dist/ripple/{p-a9c096b5.entry.js → p-fa87bce3.entry.js} +1 -1
  294. package/dist/ripple/ripple.esm.js +1 -1
  295. package/dist/ripple/ripple.js +16 -20
  296. package/dist/types/components/charts/chartFunctions.d.ts +13 -13
  297. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +24 -24
  298. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +8 -8
  299. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +39 -39
  300. package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +74 -74
  301. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +26 -26
  302. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +17 -17
  303. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +7 -7
  304. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +43 -43
  305. package/dist/types/components/wm-button/wm-button.d.ts +40 -40
  306. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +76 -76
  307. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +31 -31
  308. package/dist/types/components/wm-file/wm-file.d.ts +40 -40
  309. package/dist/types/components/wm-file-list/wm-file-list.d.ts +3 -3
  310. package/dist/types/components/wm-input/wm-input.d.ts +46 -46
  311. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +31 -31
  312. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +11 -11
  313. package/dist/types/components/wm-modal/wm-modal-header.d.ts +7 -7
  314. package/dist/types/components/wm-modal/wm-modal.d.ts +24 -24
  315. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +13 -13
  316. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +10 -10
  317. package/dist/types/components/wm-navigation/wm-navigation.d.ts +23 -23
  318. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +7 -7
  319. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +10 -10
  320. package/dist/types/components/wm-navigator/wm-navigator.d.ts +57 -57
  321. package/dist/types/components/wm-option/wm-option.d.ts +36 -36
  322. package/dist/types/components/wm-pagination/wm-pagination.d.ts +27 -27
  323. package/dist/types/components/wm-search/wm-search.d.ts +73 -73
  324. package/dist/types/components/wm-select/wm-select.d.ts +99 -99
  325. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +24 -24
  326. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +30 -30
  327. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +41 -41
  328. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +16 -16
  329. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +114 -114
  330. package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +15 -15
  331. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +48 -48
  332. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +20 -20
  333. package/dist/types/components/wm-uploader/wm-uploader.d.ts +47 -47
  334. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +4 -4
  335. package/dist/types/components.d.ts +382 -0
  336. package/dist/types/global/__mocks__/functions.d.ts +1 -1
  337. package/dist/types/global/functions.d.ts +4 -4
  338. package/dist/types/global/interfaces.d.ts +49 -49
  339. package/dist/types/global/intl.d.ts +31 -31
  340. package/dist/types/global/services/__mocks__/http-service.d.ts +1 -1
  341. package/dist/types/stencil-public-runtime.d.ts +46 -5
  342. package/package.json +1 -1
  343. package/dist/cjs/chartFunctions-2c3e010e.js +0 -600
  344. package/dist/cjs/interfaces-245d7bff.js +0 -38
  345. package/dist/cjs/intl-fa3bb4ae.js +0 -179
  346. package/dist/esm/chartFunctions-36634c04.js +0 -584
  347. package/dist/esm/interfaces-89cad2fc.js +0 -35
  348. package/dist/esm/intl-e2da750a.js +0 -174
  349. package/dist/esm/polyfills/css-shim.js +0 -1
  350. package/dist/esm-es5/chartFunctions-36634c04.js +0 -1
  351. package/dist/esm-es5/functions-5afd09f4.js +0 -1
  352. package/dist/esm-es5/global-d4a9e80e.js +0 -1
  353. package/dist/esm-es5/index-7e11ea42.js +0 -2
  354. package/dist/ripple/p-00acacbe.system.entry.js +0 -1
  355. package/dist/ripple/p-0f889b84.system.js +0 -1
  356. package/dist/ripple/p-13af8346.entry.js +0 -1
  357. package/dist/ripple/p-16363e1c.system.entry.js +0 -1
  358. package/dist/ripple/p-2a95b63f.system.entry.js +0 -1
  359. package/dist/ripple/p-30bf24f8.system.js +0 -2
  360. package/dist/ripple/p-3248c0fa.system.entry.js +0 -1
  361. package/dist/ripple/p-47c20b05.entry.js +0 -1
  362. package/dist/ripple/p-56d64283.system.entry.js +0 -1
  363. package/dist/ripple/p-5e85967a.system.js +0 -1
  364. package/dist/ripple/p-9b2034f6.js +0 -1
  365. package/dist/ripple/p-a3d07be5.system.js +0 -1
  366. package/dist/ripple/p-a6be3cca.system.entry.js +0 -1
  367. package/dist/ripple/p-aafa111a.system.js +0 -1
  368. package/dist/ripple/p-b5bedd63.js +0 -2
  369. package/dist/ripple/p-bd537299.system.entry.js +0 -1
  370. /package/dist/esm-es5/{interfaces-89cad2fc.js → interfaces-9b75fb61.js} +0 -0
  371. /package/dist/ripple/{p-c0c111fd.js → p-196eb2f3.js} +0 -0
@@ -1,62 +1,62 @@
1
1
  import { newE2EPage } from "@stencil/core/testing";
2
2
  import { AxePuppeteer } from "@axe-core/puppeteer";
3
3
  describe("wm-select", () => {
4
- let page;
5
- async function createPageHelper() {
6
- page = await newE2EPage();
7
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
4
+ let page;
5
+ async function createPageHelper() {
6
+ page = await newE2EPage();
7
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
8
8
  <wm-select id='test' label="Make a selection">
9
9
  <wm-option id='first' selected>First option</wm-option>
10
10
  <wm-option id='second'>Second option</wm-option>
11
11
  <wm-option id='third'>Third option</wm-option>
12
12
  </wm-select>
13
13
  </main></body></html>`);
14
- }
15
- it("passes Axe checks", async () => {
16
- await createPageHelper();
17
- const results = await new AxePuppeteer(page).analyze();
18
- expect(results.violations.length).toBe(0);
19
- });
20
- // RENDER
21
- it("renders", async () => {
22
- await createPageHelper();
23
- const element = await page.find("wm-select");
24
- await page.waitForChanges();
25
- expect(element).not.toBeNull();
26
- });
27
- // ATTRIBUTES
28
- it("has the right WAI_ARIA roles, states and properties", async () => {
29
- await createPageHelper();
30
- const button = await page.find("wm-select >>> button");
31
- const listbox = await page.find("wm-select >>> #list");
32
- /* check aria-expanded attribute */
33
- expect(button).toEqualAttribute("aria-expanded", "false");
34
- /* The listbox has tabindex="-1" */
35
- expect(listbox).toEqualAttribute("tabindex", "-1");
36
- /* Roving tabindex: we're setting tabindex dynamically. follows focus */
37
- /* https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex */
38
- await page.keyboard.press("Tab");
39
- await page.waitForChanges();
40
- await page.keyboard.press("Enter"); // open popup
41
- await page.waitForChanges();
42
- const first = await page.find("#first");
43
- await page.waitForChanges();
44
- expect(first).toEqualAttribute("tabIndex", "0");
45
- /* In a single-select listbox, the selected option has aria-selected set to true. */
46
- await page.keyboard.press("ArrowDown");
47
- await page.waitForChanges();
48
- await page.keyboard.press("ArrowDown");
49
- await page.waitForChanges();
50
- const third = await page.find("#third");
51
- expect(third).toEqualAttribute("tabIndex", "0"); // third is focused...
52
- expect(first).toEqualAttribute("aria-selected", true); // ...first is still selected (default)
53
- });
54
- it("switches the dropdown direction", async () => {
55
- // Viewport is 800 x 600 by default
56
- // with the first select at the top of the page
57
- // and the 2nd one at the bottom
58
- page = await newE2EPage();
59
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
14
+ }
15
+ it("passes Axe checks", async () => {
16
+ await createPageHelper();
17
+ const results = await new AxePuppeteer(page).analyze();
18
+ expect(results.violations.length).toBe(0);
19
+ });
20
+ // RENDER
21
+ it("renders", async () => {
22
+ await createPageHelper();
23
+ const element = await page.find("wm-select");
24
+ await page.waitForChanges();
25
+ expect(element).not.toBeNull();
26
+ });
27
+ // ATTRIBUTES
28
+ it("has the right WAI_ARIA roles, states and properties", async () => {
29
+ await createPageHelper();
30
+ const button = await page.find("wm-select >>> button");
31
+ const listbox = await page.find("wm-select >>> #list");
32
+ /* check aria-expanded attribute */
33
+ expect(button).toEqualAttribute("aria-expanded", "false");
34
+ /* The listbox has tabindex="-1" */
35
+ expect(listbox).toEqualAttribute("tabindex", "-1");
36
+ /* Roving tabindex: we're setting tabindex dynamically. follows focus */
37
+ /* https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex */
38
+ await page.keyboard.press("Tab");
39
+ await page.waitForChanges();
40
+ await page.keyboard.press("Enter"); // open popup
41
+ await page.waitForChanges();
42
+ const first = await page.find("#first");
43
+ await page.waitForChanges();
44
+ expect(first).toEqualAttribute("tabIndex", "0");
45
+ /* In a single-select listbox, the selected option has aria-selected set to true. */
46
+ await page.keyboard.press("ArrowDown");
47
+ await page.waitForChanges();
48
+ await page.keyboard.press("ArrowDown");
49
+ await page.waitForChanges();
50
+ const third = await page.find("#third");
51
+ expect(third).toEqualAttribute("tabIndex", "0"); // third is focused...
52
+ expect(first).toEqualAttribute("aria-selected", true); // ...first is still selected (default)
53
+ });
54
+ it("switches the dropdown direction", async () => {
55
+ // Viewport is 800 x 600 by default
56
+ // with the first select at the top of the page
57
+ // and the 2nd one at the bottom
58
+ page = await newE2EPage();
59
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
60
60
  <wm-select id='select1' label="Make a selection">
61
61
  <wm-option id='first' selected>First option</wm-option>
62
62
  <wm-option id='second'>Second option</wm-option>
@@ -69,234 +69,234 @@ describe("wm-select", () => {
69
69
  <wm-option id='third'>Third option</wm-option>
70
70
  </wm-select>
71
71
  </main></body></html>`);
72
- // dropdown goes down by default, but if there is not
73
- // enough space under the component AND there is more space above,
74
- // it goes up
75
- await page.keyboard.press("Tab");
76
- await page.waitForChanges();
77
- await page.keyboard.press("Enter");
78
- await page.waitForChanges();
79
- const select1_options = await page.find("#select1 >>> .dropdown");
80
- await page.waitForChanges();
81
- expect(select1_options.classList.contains("upwards")).toBeFalsy();
82
- await page.keyboard.press("Tab");
83
- await page.waitForChanges();
84
- await page.keyboard.press("Enter");
85
- await page.waitForChanges();
86
- const select2_options = await page.find("#select2 >>> .dropdown");
87
- await page.waitForChanges();
88
- expect(select2_options.classList.contains("upwards")).toBeTruthy();
89
- });
90
- // FOCUS
91
- it("toggles user-is-tabbing class", async () => {
92
- await createPageHelper();
93
- const btn = await page.find("wm-select >>> button");
94
- await page.keyboard.press("Tab");
95
- await page.waitForChanges();
96
- expect(btn).toHaveClass("user-is-tabbing");
97
- await page.mouse.click(-10, -10);
98
- await page.waitForChanges();
99
- expect(btn).not.toHaveClass("user-is-tabbing");
100
- });
101
- /* When a single-select listbox receives focus:
102
- /* - If none of the options are selected before the listbox receives focus, the first option receives focus.
103
- Optionally, the first option may be automatically selected. */
104
- /* - If an option is selected before the listbox receives focus, focus is set on the selected option. */
105
- it("automatically focuses the first option", async () => {
106
- await createPageHelper();
107
- await page.keyboard.press("Tab");
108
- await page.waitForChanges();
109
- await page.keyboard.press("Enter");
110
- await page.waitForChanges();
111
- const firstItem = await page.find("wm-option");
112
- await page.waitForChanges();
113
- expect(firstItem).toEqualAttribute("tabindex", "0");
114
- });
115
- /* Down Arrow: Moves focus to the next option (1). If the listbox is collapsed (2), also expands the list (3). */
116
- /* Up Arrow: Moves focus to the previous option (4). If the listbox is collapsed (5), also expands the list (6). */
117
- it("handles Up and Down Arrow keys", async () => {
118
- await createPageHelper();
119
- const btn = await page.find("wm-select >>> #selectbtn");
120
- expect(btn.getAttribute("aria-expanded")).toEqual("false"); // 2
121
- await page.keyboard.press("Tab");
122
- await page.waitForChanges();
123
- await page.keyboard.press("ArrowDown");
124
- await page.waitForChanges();
125
- expect(btn.getAttribute("aria-expanded")).toEqual("true"); // 3
126
- const second = await page.find("#second");
127
- await page.waitForChanges();
128
- expect(second).toEqualAttribute("tabindex", "0"); // 1
129
- await page.keyboard.press("ArrowDown");
130
- await page.waitForChanges();
131
- const third = await page.find("#third");
132
- await page.waitForChanges();
133
- expect(third).toEqualAttribute("tabindex", "0"); // 1
134
- await page.keyboard.press("ArrowUp");
135
- await page.waitForChanges();
136
- expect(second).toEqualAttribute("tabindex", "0"); // 4
137
- await page.keyboard.press("Enter");
138
- await page.waitForChanges();
139
- expect(btn.getAttribute("aria-expanded")).toEqual("false"); // 5
140
- await page.waitForTimeout(500); // focus returns to btn with a timeout to make sure SRs read the updated state
141
- await page.keyboard.press("ArrowUp");
142
- await page.waitForChanges();
143
- await page.keyboard.press("ArrowUp");
144
- await page.waitForChanges();
145
- expect(btn.getAttribute("aria-expanded")).toEqual("true"); // 6
146
- });
147
- /* Home: If the listbox is displayed, moves focus to first option. */
148
- /* End: If the listbox is displayed, moves focus to last option. */
149
- it("handles Home and End keys", async () => {
150
- await createPageHelper();
151
- await page.keyboard.press("Tab");
152
- await page.waitForChanges();
153
- await page.keyboard.press("Enter");
154
- await page.waitForChanges();
155
- let firstEl = await page.find("#first");
156
- await page.waitForChanges();
157
- expect(firstEl).toEqualAttribute("tabindex", "0");
158
- await page.keyboard.press("End");
159
- await page.waitForChanges();
160
- let lastEl = await page.find("#third");
161
- expect(lastEl).toEqualAttribute("tabindex", "0");
162
- expect(firstEl).toEqualAttribute("tabindex", "-1");
163
- await page.keyboard.press("Home");
164
- await page.waitForChanges();
165
- firstEl = await page.find("#first");
166
- lastEl = await page.find("#third");
167
- expect(firstEl).toEqualAttribute("tabindex", "0");
168
- expect(lastEl).toEqualAttribute("tabindex", "-1");
169
- });
170
- /* Type-ahead is recommended for all listboxes, especially those with more than seven options: */
171
- /* - Type a character: focus moves to the next item with a name that starts with the typed character. */
172
- /* - Type multiple characters in rapid succession: focus moves to the next item with a name that starts with the string of characters typed */
173
- it("handles typing", async () => {
174
- await createPageHelper();
175
- await page.keyboard.press("Tab");
176
- await page.keyboard.press("Enter");
177
- await page.waitForChanges();
178
- await page.keyboard.press("t");
179
- await page.waitForChanges();
180
- const focusedEl = await page.find("#third");
181
- await page.waitForChanges();
182
- expect(focusedEl).toEqualAttribute("tabindex", "0");
183
- });
184
- // OPENING / CLOSING POPUP
185
- it("Enter key opens and closes the dropdown", async () => {
186
- await createPageHelper();
187
- await page.keyboard.press("Tab");
188
- await page.waitForChanges();
189
- await page.keyboard.press("Enter");
190
- await page.waitForChanges();
191
- const btn = await page.find("wm-select >>> #selectbtn");
192
- await page.waitForChanges();
193
- expect(btn.getAttribute("aria-expanded")).toEqual("true");
194
- await page.keyboard.press("ArrowDown");
195
- await page.waitForChanges();
196
- await page.keyboard.press("Enter");
197
- await page.waitForChanges();
198
- expect(btn.getAttribute("aria-expanded")).toEqual("false");
199
- });
200
- it("Space key opens and closes the dropdown", async () => {
201
- await createPageHelper();
202
- await page.keyboard.press("Tab");
203
- await page.waitForChanges();
204
- await page.keyboard.press("Space");
205
- await page.waitForChanges();
206
- const btn = await page.find("wm-select >>> #selectbtn");
207
- await page.waitForChanges();
208
- expect(btn.getAttribute("aria-expanded")).toEqual("true");
209
- await page.keyboard.press("ArrowDown");
210
- await page.waitForChanges();
211
- await page.keyboard.press("Space");
212
- await page.waitForChanges();
213
- expect(btn.getAttribute("aria-expanded")).toEqual("false");
214
- });
215
- /* Spacebar: Should open the popup (we didn't implement, comes for free. test makes sure we don't break it) */
216
- it("handles the Spacebar key", async () => {
217
- await createPageHelper();
218
- await page.keyboard.press("Tab");
219
- await page.waitForChanges();
220
- await page.keyboard.press("Space");
221
- await page.waitForChanges();
222
- const btn = await page.find("wm-select >>> #selectbtn");
223
- expect(btn.getAttribute("aria-expanded")).toEqual("true");
224
- });
225
- /* Escape: If the listbox is displayed, closes the popup and returns focus to the button. */
226
- it("handles the Escape key", async () => {
227
- await createPageHelper();
228
- await page.keyboard.press("Tab");
229
- await page.waitForChanges();
230
- await page.keyboard.press("Enter");
231
- await page.waitForChanges();
232
- let btn = await page.find("wm-select >>> button");
233
- expect(btn.getAttribute("aria-expanded")).toEqual("true");
234
- await page.keyboard.press("ArrowDown");
235
- await page.waitForChanges();
236
- await page.keyboard.press("Escape");
237
- await page.waitForTimeout(500); // there's a set timeout on the focus func to make sure SR announce the updated state
238
- const activeElId = await page.evaluate(() => document.activeElement.id);
239
- btn = await page.find("wm-select >>> button");
240
- expect(activeElId).toEqual("test");
241
- expect(btn.getAttribute("aria-expanded")).toEqual("false");
242
- });
243
- // Label
244
- it("creates a label element", async () => {
245
- await createPageHelper();
246
- let label = await page.find("wm-select >>> label");
247
- expect(label.textContent).toBe("Make a selection");
248
- });
249
- it("emits the proper events when option is clicked", async () => {
250
- page = await newE2EPage();
251
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
72
+ // dropdown goes down by default, but if there is not
73
+ // enough space under the component AND there is more space above,
74
+ // it goes up
75
+ await page.keyboard.press("Tab");
76
+ await page.waitForChanges();
77
+ await page.keyboard.press("Enter");
78
+ await page.waitForChanges();
79
+ const select1_options = await page.find("#select1 >>> .dropdown");
80
+ await page.waitForChanges();
81
+ expect(select1_options.classList.contains("upwards")).toBeFalsy();
82
+ await page.keyboard.press("Tab");
83
+ await page.waitForChanges();
84
+ await page.keyboard.press("Enter");
85
+ await page.waitForChanges();
86
+ const select2_options = await page.find("#select2 >>> .dropdown");
87
+ await page.waitForChanges();
88
+ expect(select2_options.classList.contains("upwards")).toBeTruthy();
89
+ });
90
+ // FOCUS
91
+ it("toggles user-is-tabbing class", async () => {
92
+ await createPageHelper();
93
+ const btn = await page.find("wm-select >>> button");
94
+ await page.keyboard.press("Tab");
95
+ await page.waitForChanges();
96
+ expect(btn).toHaveClass("user-is-tabbing");
97
+ await page.mouse.click(-10, -10);
98
+ await page.waitForChanges();
99
+ expect(btn).not.toHaveClass("user-is-tabbing");
100
+ });
101
+ /* When a single-select listbox receives focus:
102
+ /* - If none of the options are selected before the listbox receives focus, the first option receives focus.
103
+ Optionally, the first option may be automatically selected. */
104
+ /* - If an option is selected before the listbox receives focus, focus is set on the selected option. */
105
+ it("automatically focuses the first option", async () => {
106
+ await createPageHelper();
107
+ await page.keyboard.press("Tab");
108
+ await page.waitForChanges();
109
+ await page.keyboard.press("Enter");
110
+ await page.waitForChanges();
111
+ const firstItem = await page.find("wm-option");
112
+ await page.waitForChanges();
113
+ expect(firstItem).toEqualAttribute("tabindex", "0");
114
+ });
115
+ /* Down Arrow: Moves focus to the next option (1). If the listbox is collapsed (2), also expands the list (3). */
116
+ /* Up Arrow: Moves focus to the previous option (4). If the listbox is collapsed (5), also expands the list (6). */
117
+ it("handles Up and Down Arrow keys", async () => {
118
+ await createPageHelper();
119
+ const btn = await page.find("wm-select >>> #selectbtn");
120
+ expect(btn.getAttribute("aria-expanded")).toEqual("false"); // 2
121
+ await page.keyboard.press("Tab");
122
+ await page.waitForChanges();
123
+ await page.keyboard.press("ArrowDown");
124
+ await page.waitForChanges();
125
+ expect(btn.getAttribute("aria-expanded")).toEqual("true"); // 3
126
+ const second = await page.find("#second");
127
+ await page.waitForChanges();
128
+ expect(second).toEqualAttribute("tabindex", "0"); // 1
129
+ await page.keyboard.press("ArrowDown");
130
+ await page.waitForChanges();
131
+ const third = await page.find("#third");
132
+ await page.waitForChanges();
133
+ expect(third).toEqualAttribute("tabindex", "0"); // 1
134
+ await page.keyboard.press("ArrowUp");
135
+ await page.waitForChanges();
136
+ expect(second).toEqualAttribute("tabindex", "0"); // 4
137
+ await page.keyboard.press("Enter");
138
+ await page.waitForChanges();
139
+ expect(btn.getAttribute("aria-expanded")).toEqual("false"); // 5
140
+ await page.waitForTimeout(500); // focus returns to btn with a timeout to make sure SRs read the updated state
141
+ await page.keyboard.press("ArrowUp");
142
+ await page.waitForChanges();
143
+ await page.keyboard.press("ArrowUp");
144
+ await page.waitForChanges();
145
+ expect(btn.getAttribute("aria-expanded")).toEqual("true"); // 6
146
+ });
147
+ /* Home: If the listbox is displayed, moves focus to first option. */
148
+ /* End: If the listbox is displayed, moves focus to last option. */
149
+ it("handles Home and End keys", async () => {
150
+ await createPageHelper();
151
+ await page.keyboard.press("Tab");
152
+ await page.waitForChanges();
153
+ await page.keyboard.press("Enter");
154
+ await page.waitForChanges();
155
+ let firstEl = await page.find("#first");
156
+ await page.waitForChanges();
157
+ expect(firstEl).toEqualAttribute("tabindex", "0");
158
+ await page.keyboard.press("End");
159
+ await page.waitForChanges();
160
+ let lastEl = await page.find("#third");
161
+ expect(lastEl).toEqualAttribute("tabindex", "0");
162
+ expect(firstEl).toEqualAttribute("tabindex", "-1");
163
+ await page.keyboard.press("Home");
164
+ await page.waitForChanges();
165
+ firstEl = await page.find("#first");
166
+ lastEl = await page.find("#third");
167
+ expect(firstEl).toEqualAttribute("tabindex", "0");
168
+ expect(lastEl).toEqualAttribute("tabindex", "-1");
169
+ });
170
+ /* Type-ahead is recommended for all listboxes, especially those with more than seven options: */
171
+ /* - Type a character: focus moves to the next item with a name that starts with the typed character. */
172
+ /* - Type multiple characters in rapid succession: focus moves to the next item with a name that starts with the string of characters typed */
173
+ it("handles typing", async () => {
174
+ await createPageHelper();
175
+ await page.keyboard.press("Tab");
176
+ await page.keyboard.press("Enter");
177
+ await page.waitForChanges();
178
+ await page.keyboard.press("t");
179
+ await page.waitForChanges();
180
+ const focusedEl = await page.find("#third");
181
+ await page.waitForChanges();
182
+ expect(focusedEl).toEqualAttribute("tabindex", "0");
183
+ });
184
+ // OPENING / CLOSING POPUP
185
+ it("Enter key opens and closes the dropdown", async () => {
186
+ await createPageHelper();
187
+ await page.keyboard.press("Tab");
188
+ await page.waitForChanges();
189
+ await page.keyboard.press("Enter");
190
+ await page.waitForChanges();
191
+ const btn = await page.find("wm-select >>> #selectbtn");
192
+ await page.waitForChanges();
193
+ expect(btn.getAttribute("aria-expanded")).toEqual("true");
194
+ await page.keyboard.press("ArrowDown");
195
+ await page.waitForChanges();
196
+ await page.keyboard.press("Enter");
197
+ await page.waitForChanges();
198
+ expect(btn.getAttribute("aria-expanded")).toEqual("false");
199
+ });
200
+ it("Space key opens and closes the dropdown", async () => {
201
+ await createPageHelper();
202
+ await page.keyboard.press("Tab");
203
+ await page.waitForChanges();
204
+ await page.keyboard.press("Space");
205
+ await page.waitForChanges();
206
+ const btn = await page.find("wm-select >>> #selectbtn");
207
+ await page.waitForChanges();
208
+ expect(btn.getAttribute("aria-expanded")).toEqual("true");
209
+ await page.keyboard.press("ArrowDown");
210
+ await page.waitForChanges();
211
+ await page.keyboard.press("Space");
212
+ await page.waitForChanges();
213
+ expect(btn.getAttribute("aria-expanded")).toEqual("false");
214
+ });
215
+ /* Spacebar: Should open the popup (we didn't implement, comes for free. test makes sure we don't break it) */
216
+ it("handles the Spacebar key", async () => {
217
+ await createPageHelper();
218
+ await page.keyboard.press("Tab");
219
+ await page.waitForChanges();
220
+ await page.keyboard.press("Space");
221
+ await page.waitForChanges();
222
+ const btn = await page.find("wm-select >>> #selectbtn");
223
+ expect(btn.getAttribute("aria-expanded")).toEqual("true");
224
+ });
225
+ /* Escape: If the listbox is displayed, closes the popup and returns focus to the button. */
226
+ it("handles the Escape key", async () => {
227
+ await createPageHelper();
228
+ await page.keyboard.press("Tab");
229
+ await page.waitForChanges();
230
+ await page.keyboard.press("Enter");
231
+ await page.waitForChanges();
232
+ let btn = await page.find("wm-select >>> button");
233
+ expect(btn.getAttribute("aria-expanded")).toEqual("true");
234
+ await page.keyboard.press("ArrowDown");
235
+ await page.waitForChanges();
236
+ await page.keyboard.press("Escape");
237
+ await page.waitForTimeout(500); // there's a set timeout on the focus func to make sure SR announce the updated state
238
+ const activeElId = await page.evaluate(() => document.activeElement.id);
239
+ btn = await page.find("wm-select >>> button");
240
+ expect(activeElId).toEqual("test");
241
+ expect(btn.getAttribute("aria-expanded")).toEqual("false");
242
+ });
243
+ // Label
244
+ it("creates a label element", async () => {
245
+ await createPageHelper();
246
+ let label = await page.find("wm-select >>> label");
247
+ expect(label.textContent).toBe("Make a selection");
248
+ });
249
+ it("emits the proper events when option is clicked", async () => {
250
+ page = await newE2EPage();
251
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
252
252
  <wm-select multiple label="Make a selection">
253
253
  <wm-option id='first'>First option</wm-option>
254
254
  </wm-select>
255
255
  </main></body></html>`);
256
- const wmOptionSelectedSpy = await page.spyOnEvent("wmOptionSelected");
257
- const wmOptionDeselectedSpy = await page.spyOnEvent("wmOptionDeselected");
258
- // Selection key
259
- await page.keyboard.press("Tab");
260
- await page.keyboard.press("Enter");
261
- await page.waitForChanges(); // allow dropdown to open
262
- await page.keyboard.press("Space");
263
- await page.waitForChanges();
264
- expect(wmOptionSelectedSpy).toHaveReceivedEventTimes(1);
265
- expect(wmOptionDeselectedSpy).toHaveReceivedEventTimes(0);
266
- // Deselection
267
- const optionEl = await page.find("wm-option");
268
- optionEl.setProperty("selected", true);
269
- await page.waitForChanges();
270
- await page.keyboard.press("Space");
271
- expect(wmOptionSelectedSpy).toHaveReceivedEventTimes(1);
272
- expect(wmOptionDeselectedSpy).toHaveReceivedEventTimes(1);
273
- });
274
- /**************
275
- * MULTISELECT *
276
- **************/
277
- /* If one or more options are selected before the listbox receives focus, focus is set on the first option in the list that is selected */
278
- it("automatically focuses the first selected option - multiselect", async () => {
279
- page = await newE2EPage();
280
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
256
+ const wmOptionSelectedSpy = await page.spyOnEvent("wmOptionSelected");
257
+ const wmOptionDeselectedSpy = await page.spyOnEvent("wmOptionDeselected");
258
+ // Selection key
259
+ await page.keyboard.press("Tab");
260
+ await page.keyboard.press("Enter");
261
+ await page.waitForChanges(); // allow dropdown to open
262
+ await page.keyboard.press("Space");
263
+ await page.waitForChanges();
264
+ expect(wmOptionSelectedSpy).toHaveReceivedEventTimes(1);
265
+ expect(wmOptionDeselectedSpy).toHaveReceivedEventTimes(0);
266
+ // Deselection
267
+ const optionEl = await page.find("wm-option");
268
+ optionEl.setProperty("selected", true);
269
+ await page.waitForChanges();
270
+ await page.keyboard.press("Space");
271
+ expect(wmOptionSelectedSpy).toHaveReceivedEventTimes(1);
272
+ expect(wmOptionDeselectedSpy).toHaveReceivedEventTimes(1);
273
+ });
274
+ /**************
275
+ * MULTISELECT *
276
+ **************/
277
+ /* If one or more options are selected before the listbox receives focus, focus is set on the first option in the list that is selected */
278
+ it("automatically focuses the first selected option - multiselect", async () => {
279
+ page = await newE2EPage();
280
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
281
281
  <wm-select id='test' multiple label="Make a selection">
282
282
  <wm-option id='first'>First option</wm-option>
283
283
  <wm-option id='second' selected>Second option</wm-option>
284
284
  <wm-option id='third' selected>Third option</wm-option>
285
285
  </wm-select>
286
286
  </main></body></html>`);
287
- const select = await page.find("wm-select");
288
- await page.keyboard.press("Tab");
289
- await page.waitForChanges();
290
- await page.keyboard.press("Enter");
291
- await page.waitForChanges();
292
- const secondOption = select.shadowRoot.querySelectorAll("wm-option")[1];
293
- await page.waitForChanges();
294
- expect(secondOption).toEqualAttribute("tabindex", "0");
295
- });
296
- /* Up Arrow: moves focus to the previous (last) option. */
297
- it("automatically focuses the previous (last) option - multiselect", async () => {
298
- page = await newE2EPage();
299
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
287
+ const select = await page.find("wm-select");
288
+ await page.keyboard.press("Tab");
289
+ await page.waitForChanges();
290
+ await page.keyboard.press("Enter");
291
+ await page.waitForChanges();
292
+ const secondOption = select.shadowRoot.querySelectorAll("wm-option")[1];
293
+ await page.waitForChanges();
294
+ expect(secondOption).toEqualAttribute("tabindex", "0");
295
+ });
296
+ /* Up Arrow: moves focus to the previous (last) option. */
297
+ it("automatically focuses the previous (last) option - multiselect", async () => {
298
+ page = await newE2EPage();
299
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
300
300
  <wm-select multiple label="Make a selection">
301
301
  <wm-option id='first'>First option</wm-option>
302
302
  <wm-option id='second' selected>Second option</wm-option>
@@ -305,18 +305,18 @@ describe("wm-select", () => {
305
305
  <wm-option id='fifth'>Fifth option</wm-option>
306
306
  </wm-select>
307
307
  </main></body></html>`);
308
- await page.keyboard.press("Tab");
309
- await page.waitForChanges();
310
- await page.keyboard.press("ArrowUp");
311
- await page.waitForChanges();
312
- const lastOption = await page.find("#fifth");
313
- await page.waitForChanges();
314
- expect(lastOption).toEqualAttribute("tabindex", "0");
315
- });
316
- /* Down Arrow: moves focus to the next (first) option. */
317
- it("automatically focuses the next option - multiselect", async () => {
318
- page = await newE2EPage();
319
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
308
+ await page.keyboard.press("Tab");
309
+ await page.waitForChanges();
310
+ await page.keyboard.press("ArrowUp");
311
+ await page.waitForChanges();
312
+ const lastOption = await page.find("#fifth");
313
+ await page.waitForChanges();
314
+ expect(lastOption).toEqualAttribute("tabindex", "0");
315
+ });
316
+ /* Down Arrow: moves focus to the next (first) option. */
317
+ it("automatically focuses the next option - multiselect", async () => {
318
+ page = await newE2EPage();
319
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
320
320
  <wm-select multiple label="Make a selection">
321
321
  <wm-option id='first'>First option</wm-option>
322
322
  <wm-option id='second' selected>Second option</wm-option>
@@ -325,17 +325,17 @@ describe("wm-select", () => {
325
325
  <wm-option id='fifth'>Fifth option</wm-option>
326
326
  </wm-select>
327
327
  </main></body></html>`);
328
- await page.keyboard.press("Tab");
329
- await page.waitForChanges();
330
- await page.keyboard.press("ArrowDown");
331
- await page.waitForChanges();
332
- const firstOption = await page.find("#first");
333
- await page.waitForChanges();
334
- expect(firstOption).toEqualAttribute("tabindex", "0");
335
- });
336
- it("recognizes when all are selected", async () => {
337
- page = await newE2EPage();
338
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
328
+ await page.keyboard.press("Tab");
329
+ await page.waitForChanges();
330
+ await page.keyboard.press("ArrowDown");
331
+ await page.waitForChanges();
332
+ const firstOption = await page.find("#first");
333
+ await page.waitForChanges();
334
+ expect(firstOption).toEqualAttribute("tabindex", "0");
335
+ });
336
+ it("recognizes when all are selected", async () => {
337
+ page = await newE2EPage();
338
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
339
339
  <div style='width: 300px'>
340
340
  <wm-select multiple label="Make a selection" all-selected-message="All options selected">
341
341
  <wm-option id='first' selected>First option</wm-option>
@@ -343,10 +343,10 @@ describe("wm-select", () => {
343
343
  </wm-select>
344
344
  </div>
345
345
  </main></body></html>`);
346
- let button = await page.find("wm-select >>> button");
347
- expect(button.textContent).toBe("First option, Second option");
348
- page = await newE2EPage();
349
- await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
346
+ let button = await page.find("wm-select >>> button");
347
+ expect(button.textContent).toBe("First option, Second option");
348
+ page = await newE2EPage();
349
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
350
350
  <div style='width: 100px'>
351
351
  <wm-select multiple label="Make a selection" all-selected-message="All options selected">
352
352
  <wm-option id='first' selected>First option</wm-option>
@@ -357,172 +357,172 @@ describe("wm-select", () => {
357
357
  </wm-select>
358
358
  </div>
359
359
  </main></body></html>`);
360
- button = await page.find("wm-select >>> button");
361
- expect(button.textContent).toBe("All options selected");
362
- });
363
- /*********************
364
- * Select with Search *
365
- *********************/
366
- it("filters options when search term is entered", async () => {
367
- page = await newE2EPage();
368
- await page.setContent(`<wm-select search multiple label="Make a selection">
360
+ button = await page.find("wm-select >>> button");
361
+ expect(button.textContent).toBe("All options selected");
362
+ });
363
+ /*********************
364
+ * Select with Search *
365
+ *********************/
366
+ it("filters options when search term is entered", async () => {
367
+ page = await newE2EPage();
368
+ await page.setContent(`<wm-select search multiple label="Make a selection">
369
369
  <wm-option id='first' selected>First option</wm-option>
370
370
  <wm-option id='second'>Second option</wm-option>
371
371
  <wm-option id='third'>Third option</wm-option>
372
372
  <wm-option id='fourth'>Fourth option</wm-option>
373
373
  <wm-option id='fifth'>Fifth option</wm-option>
374
374
  </wm-select>`);
375
- await page.keyboard.press("Tab");
376
- await page.waitForChanges();
377
- await page.keyboard.press("Space");
378
- await page.waitForChanges();
379
- // it sends focus to the searchfield when opened
380
- let activeElName = await page.evaluate(async () => {
381
- let el = await document.activeElement.shadowRoot.activeElement;
382
- return el.nodeName;
383
- });
384
- expect(activeElName).toBe("INPUT");
385
- // it displays selected options at the top of the dropdown
386
- const duplicateFirstItemSelected = await page.evaluate(() => {
387
- return document.activeElement.shadowRoot.querySelectorAll("wm-option")[0].getAttribute("aria-selected");
375
+ await page.keyboard.press("Tab");
376
+ await page.waitForChanges();
377
+ await page.keyboard.press("Space");
378
+ await page.waitForChanges();
379
+ // it sends focus to the searchfield when opened
380
+ let activeElName = await page.evaluate(async () => {
381
+ let el = await document.activeElement.shadowRoot.activeElement;
382
+ return el.nodeName;
383
+ });
384
+ expect(activeElName).toBe("INPUT");
385
+ // it displays selected options at the top of the dropdown
386
+ const duplicateFirstItemSelected = await page.evaluate(() => {
387
+ return document.activeElement.shadowRoot.querySelectorAll("wm-option")[0].getAttribute("aria-selected");
388
+ });
389
+ expect(duplicateFirstItemSelected).toBe("true");
390
+ // it filters options when a search term is entered
391
+ await page.waitForTimeout("160");
392
+ await page.keyboard.press("r");
393
+ await page.waitForChanges();
394
+ await page.waitForTimeout("160");
395
+ let searchTerm = await page.evaluate(() => {
396
+ return document.querySelector("wm-select").shadowRoot.querySelector(".searchfield")
397
+ .value;
398
+ });
399
+ expect(searchTerm).toBe("r");
400
+ const firstItem = await page.find("#first");
401
+ const secondItem = await page.find("#second");
402
+ const thirdItem = await page.find("#third");
403
+ expect(firstItem).not.toHaveClass("filtered-out");
404
+ expect(secondItem).toHaveClass("filtered-out");
405
+ expect(thirdItem).not.toHaveClass("filtered-out");
406
+ let liveRegionEl = await page.find("wm-select >>> #announcement");
407
+ expect(liveRegionEl.textContent).toBe("3 options found");
408
+ // it bolds matching text of options that pass the search term
409
+ const thirdItemInnerHTML = await page.evaluate(() => {
410
+ return document.querySelector("#third").shadowRoot.querySelector(".option-wrapper").innerHTML;
411
+ });
412
+ expect(thirdItemInnerHTML.includes("<strong>r</strong>")).toBe(true);
413
+ // it displayed no options message when none pass the filter
414
+ await page.keyboard.press("Delete");
415
+ await page.waitForChanges();
416
+ await page.keyboard.press("x");
417
+ await page.waitForChanges();
418
+ await page.waitForTimeout("200");
419
+ const searchResultsMessageEl = await page.find("wm-select >>> .search-results-message");
420
+ expect(searchResultsMessageEl.textContent).toBe("No results found. Please try your search again.");
421
+ liveRegionEl = await page.find("wm-select >>> #announcement");
422
+ expect(liveRegionEl.textContent).toBe("No results found. Please try your search again.");
423
+ // it clears search term when closing dropdown
424
+ await page.keyboard.press("Escape");
425
+ await page.waitForChanges();
426
+ await page.waitForTimeout("200");
427
+ await page.keyboard.press("Space");
428
+ await page.waitForChanges();
429
+ await page.waitForTimeout("200");
430
+ searchTerm = await page.evaluate(() => {
431
+ return document.querySelector("wm-select").shadowRoot.querySelector(".searchfield")
432
+ .value;
433
+ });
434
+ expect(searchTerm).toBe("");
388
435
  });
389
- expect(duplicateFirstItemSelected).toBe("true");
390
- // it filters options when a search term is entered
391
- await page.waitForTimeout("160");
392
- await page.keyboard.press("r");
393
- await page.waitForChanges();
394
- await page.waitForTimeout("160");
395
- let searchTerm = await page.evaluate(() => {
396
- return document.querySelector("wm-select").shadowRoot.querySelector(".searchfield")
397
- .value;
398
- });
399
- expect(searchTerm).toBe("r");
400
- const firstItem = await page.find("#first");
401
- const secondItem = await page.find("#second");
402
- const thirdItem = await page.find("#third");
403
- expect(firstItem).not.toHaveClass("filtered-out");
404
- expect(secondItem).toHaveClass("filtered-out");
405
- expect(thirdItem).not.toHaveClass("filtered-out");
406
- let liveRegionEl = await page.find("wm-select >>> #announcement");
407
- expect(liveRegionEl.textContent).toBe("3 options found");
408
- // it bolds matching text of options that pass the search term
409
- const thirdItemInnerHTML = await page.evaluate(() => {
410
- return document.querySelector("#third").shadowRoot.querySelector(".option-wrapper").innerHTML;
411
- });
412
- expect(thirdItemInnerHTML.includes("<strong>r</strong>")).toBe(true);
413
- // it displayed no options message when none pass the filter
414
- await page.keyboard.press("Delete");
415
- await page.waitForChanges();
416
- await page.keyboard.press("x");
417
- await page.waitForChanges();
418
- await page.waitForTimeout("200");
419
- const searchResultsMessageEl = await page.find("wm-select >>> .search-results-message");
420
- expect(searchResultsMessageEl.textContent).toBe("No results found. Please try your search again.");
421
- liveRegionEl = await page.find("wm-select >>> #announcement");
422
- expect(liveRegionEl.textContent).toBe("No results found. Please try your search again.");
423
- // it clears search term when closing dropdown
424
- await page.keyboard.press("Escape");
425
- await page.waitForChanges();
426
- await page.waitForTimeout("200");
427
- await page.keyboard.press("Space");
428
- await page.waitForChanges();
429
- await page.waitForTimeout("200");
430
- searchTerm = await page.evaluate(() => {
431
- return document.querySelector("wm-select").shadowRoot.querySelector(".searchfield")
432
- .value;
433
- });
434
- expect(searchTerm).toBe("");
435
- });
436
- it("doesn't show the select all option if user is typing in search bar", async () => {
437
- page = await newE2EPage();
438
- await page.setContent(`<wm-select multiple select-all search id='test' label="Make a selection">
436
+ it("doesn't show the select all option if user is typing in search bar", async () => {
437
+ page = await newE2EPage();
438
+ await page.setContent(`<wm-select multiple select-all search id='test' label="Make a selection">
439
439
  <wm-option id='first'>First option</wm-option>
440
440
  <wm-option id='second'>Second option</wm-option>
441
441
  <wm-option id='third'>Third option</wm-option>
442
442
  </wm-select>`);
443
- let selectAllBtn = await page.find("wm-select >>> .select-all");
444
- expect(selectAllBtn).not.toBeUndefined();
445
- await page.keyboard.press("Tab");
446
- await page.keyboard.press("Enter");
447
- await page.waitForChanges();
448
- await page.keyboard.press("Enter");
449
- await page.waitForChanges();
450
- selectAllBtn = await page.find("wm-select >>> .select-all");
451
- expect(selectAllBtn).not.toBeUndefined();
452
- await page.keyboard.press("s");
453
- await page.waitForChanges();
454
- // two waitForChanges are needed for this test to pass, presumably the first is to allow the keyboard press to go through
455
- // and the second is for the select-all button to disappear
456
- await page.waitForChanges();
457
- selectAllBtn = await page.find("wm-select >>> .select-all");
458
- expect(selectAllBtn).toBeNull();
459
- });
460
- it("emits the proper select all deselect all events", async () => {
461
- let page = await newE2EPage();
462
- await page.setContent(`<wm-select multiple select-all id='test' label="make a selection">
443
+ let selectAllBtn = await page.find("wm-select >>> .select-all");
444
+ expect(selectAllBtn).not.toBeUndefined();
445
+ await page.keyboard.press("Tab");
446
+ await page.keyboard.press("Enter");
447
+ await page.waitForChanges();
448
+ await page.keyboard.press("Enter");
449
+ await page.waitForChanges();
450
+ selectAllBtn = await page.find("wm-select >>> .select-all");
451
+ expect(selectAllBtn).not.toBeUndefined();
452
+ await page.keyboard.press("s");
453
+ await page.waitForChanges();
454
+ // two waitForChanges are needed for this test to pass, presumably the first is to allow the keyboard press to go through
455
+ // and the second is for the select-all button to disappear
456
+ await page.waitForChanges();
457
+ selectAllBtn = await page.find("wm-select >>> .select-all");
458
+ expect(selectAllBtn).toBeNull();
459
+ });
460
+ it("emits the proper select all deselect all events", async () => {
461
+ let page = await newE2EPage();
462
+ await page.setContent(`<wm-select multiple select-all id='test' label="make a selection">
463
463
  <wm-option id='first'>first option</wm-option>
464
464
  <wm-option id='second'>second option</wm-option>
465
465
  <wm-option id='third'>third option</wm-option>
466
466
  </wm-select>`);
467
- const wmSelectAllSelectedSpy = await page.spyOnEvent("wmSelectAllSelected");
468
- const wmSelectAllDeselectedSpy = await page.spyOnEvent("wmSelectAllDeselected");
469
- await page.keyboard.press("Tab");
470
- await page.waitForChanges();
471
- await page.keyboard.press("Enter");
472
- await page.waitForChanges();
473
- await page.keyboard.press("ArrowUp");
474
- await page.waitForChanges();
475
- await page.keyboard.press("Space");
476
- await page.waitForChanges();
477
- expect(wmSelectAllSelectedSpy).toHaveReceivedEventTimes(1);
478
- expect(wmSelectAllDeselectedSpy).toHaveReceivedEventTimes(0);
479
- const options = await page.findAll("wm-option");
480
- options.forEach((option) => option.setProperty("selected", true));
481
- await page.waitForChanges();
482
- // // dropdown stayed open, focus stayed on button.
483
- // // reactivating it should deselect
484
- await page.keyboard.press("Enter");
485
- await page.waitForChanges();
486
- expect(wmSelectAllSelectedSpy).toHaveReceivedEventTimes(1);
487
- expect(wmSelectAllDeselectedSpy).toHaveReceivedEventTimes(1);
488
- });
489
- xit("handles keyboard motion", async () => {
490
- const page = await newE2EPage();
491
- await page.setContent(`<wm-select select-all search multiple id='test' label="Make a selection">
467
+ const wmSelectAllSelectedSpy = await page.spyOnEvent("wmSelectAllSelected");
468
+ const wmSelectAllDeselectedSpy = await page.spyOnEvent("wmSelectAllDeselected");
469
+ await page.keyboard.press("Tab");
470
+ await page.waitForChanges();
471
+ await page.keyboard.press("Enter");
472
+ await page.waitForChanges();
473
+ await page.keyboard.press("ArrowUp");
474
+ await page.waitForChanges();
475
+ await page.keyboard.press("Space");
476
+ await page.waitForChanges();
477
+ expect(wmSelectAllSelectedSpy).toHaveReceivedEventTimes(1);
478
+ expect(wmSelectAllDeselectedSpy).toHaveReceivedEventTimes(0);
479
+ const options = await page.findAll("wm-option");
480
+ options.forEach((option) => option.setProperty("selected", true));
481
+ await page.waitForChanges();
482
+ // // dropdown stayed open, focus stayed on button.
483
+ // // reactivating it should deselect
484
+ await page.keyboard.press("Enter");
485
+ await page.waitForChanges();
486
+ expect(wmSelectAllSelectedSpy).toHaveReceivedEventTimes(1);
487
+ expect(wmSelectAllDeselectedSpy).toHaveReceivedEventTimes(1);
488
+ });
489
+ xit("handles keyboard motion", async () => {
490
+ const page = await newE2EPage();
491
+ await page.setContent(`<wm-select select-all search multiple id='test' label="Make a selection">
492
492
  <wm-option id='first'>First option</wm-option>
493
493
  <wm-option id='second'>Second option</wm-option>
494
494
  </wm-select>`);
495
- await page.keyboard.press("Tab");
496
- await page.waitForChanges();
497
- await page.keyboard.press("ArrowDown");
498
- await page.waitForChanges();
499
- // Down arrow from the input focuses the Select All button
500
- await page.keyboard.press("ArrowDown");
501
- await page.waitForChanges();
502
- // let activeEl = await page.evaluate(() => document.activeElement!.shadowRoot!.activeElement);
503
- // expect(activeEl).toHaveClass("select-all");
504
- // const selectAllBtn = await page.find("wm-select >>> .select-all");
505
- // expect(selectAllBtn).toEqualAttribute("tabindex", "0");
506
- // Down arrow from the Select All button focuses the first option
507
- await page.keyboard.press("ArrowDown");
508
- await page.waitForChanges();
509
- const first = await page.find("#first");
510
- expect(first).toEqualAttribute("tabindex", "0");
511
- // - Down arrow from the last option focuses the search input
512
- await page.keyboard.press("ArrowDown");
513
- await page.waitForChanges();
514
- await page.keyboard.press("ArrowDown");
515
- await page.waitForChanges();
516
- let inputWrapperEl = await page.find("wm-select >>> .searchfield-wrapper");
517
- expect(inputWrapperEl).toHaveClass("focus");
518
- // - Up arrow from the Select All button focuses the input
519
- await page.keyboard.press("ArrowDown");
520
- await page.waitForChanges();
521
- await page.keyboard.press("ArrowUp");
522
- await page.waitForChanges();
523
- inputWrapperEl = await page.find("wm-select >>> .searchfield-wrapper");
524
- expect(inputWrapperEl).toHaveClass("focus");
525
- });
495
+ await page.keyboard.press("Tab");
496
+ await page.waitForChanges();
497
+ await page.keyboard.press("ArrowDown");
498
+ await page.waitForChanges();
499
+ // Down arrow from the input focuses the Select All button
500
+ await page.keyboard.press("ArrowDown");
501
+ await page.waitForChanges();
502
+ // let activeEl = await page.evaluate(() => document.activeElement!.shadowRoot!.activeElement);
503
+ // expect(activeEl).toHaveClass("select-all");
504
+ // const selectAllBtn = await page.find("wm-select >>> .select-all");
505
+ // expect(selectAllBtn).toEqualAttribute("tabindex", "0");
506
+ // Down arrow from the Select All button focuses the first option
507
+ await page.keyboard.press("ArrowDown");
508
+ await page.waitForChanges();
509
+ const first = await page.find("#first");
510
+ expect(first).toEqualAttribute("tabindex", "0");
511
+ // - Down arrow from the last option focuses the search input
512
+ await page.keyboard.press("ArrowDown");
513
+ await page.waitForChanges();
514
+ await page.keyboard.press("ArrowDown");
515
+ await page.waitForChanges();
516
+ let inputWrapperEl = await page.find("wm-select >>> .searchfield-wrapper");
517
+ expect(inputWrapperEl).toHaveClass("focus");
518
+ // - Up arrow from the Select All button focuses the input
519
+ await page.keyboard.press("ArrowDown");
520
+ await page.waitForChanges();
521
+ await page.keyboard.press("ArrowUp");
522
+ await page.waitForChanges();
523
+ inputWrapperEl = await page.find("wm-select >>> .searchfield-wrapper");
524
+ expect(inputWrapperEl).toHaveClass("focus");
525
+ });
526
526
  });
527
527
  /* A11Y: SOURCES
528
528
  https://www.w3.org/TR/wai-aria-practices/#listbox_roles_states_props