@watermarkinsights/ripple 5.11.1 → 5.11.2

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 (349) hide show
  1. package/dist/cjs/{chartFunctions-7314b414.js → chartFunctions-0436714f.js} +31 -11
  2. package/dist/cjs/{functions-5ac8a62f.js → functions-e24249e6.js} +7 -104
  3. package/dist/{esm/app-globals-c3920c78.js → cjs/global-650a6fe6.js} +2 -7
  4. package/dist/cjs/index-e86c28b6.js +2649 -0
  5. package/dist/cjs/{intl-07aaf53c.js → intl-a70cf8c2.js} +1 -1
  6. package/dist/cjs/loader.cjs.js +3 -4
  7. package/dist/cjs/priv-calendar.cjs.entry.js +5 -6
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +5 -6
  9. package/dist/cjs/priv-navigator-button.cjs.entry.js +3 -4
  10. package/dist/cjs/priv-navigator-item.cjs.entry.js +3 -4
  11. package/dist/cjs/priv-option-list.cjs.entry.js +4 -5
  12. package/dist/cjs/ripple.cjs.js +11 -12
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +6 -8
  14. package/dist/cjs/wm-button.cjs.entry.js +4 -5
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +1 -1
  16. package/dist/cjs/wm-chart.cjs.entry.js +15 -9
  17. package/dist/cjs/wm-date-range.cjs.entry.js +8 -9
  18. package/dist/cjs/wm-datepicker.cjs.entry.js +8 -9
  19. package/dist/cjs/wm-file-list.cjs.entry.js +3 -4
  20. package/dist/cjs/wm-file.cjs.entry.js +4 -5
  21. package/dist/cjs/wm-input.cjs.entry.js +5 -6
  22. package/dist/cjs/wm-line-chart.cjs.entry.js +14 -15
  23. package/dist/cjs/wm-modal-pss_3.cjs.entry.js +10 -13
  24. package/dist/cjs/wm-modal_3.cjs.entry.js +10 -13
  25. package/dist/cjs/wm-navigation_3.cjs.entry.js +10 -13
  26. package/dist/cjs/wm-navigator.cjs.entry.js +3 -4
  27. package/dist/cjs/wm-nested-select.cjs.entry.js +7 -8
  28. package/dist/cjs/wm-optgroup.cjs.entry.js +4 -5
  29. package/dist/cjs/wm-option_2.cjs.entry.js +8 -10
  30. package/dist/cjs/wm-pagination.cjs.entry.js +4 -5
  31. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +7 -9
  32. package/dist/cjs/wm-search.cjs.entry.js +6 -7
  33. package/dist/cjs/wm-snackbar.cjs.entry.js +6 -7
  34. package/dist/cjs/wm-tab-item_3.cjs.entry.js +8 -11
  35. package/dist/cjs/wm-tag-input.cjs.entry.js +7 -8
  36. package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
  37. package/dist/cjs/wm-textarea.cjs.entry.js +5 -6
  38. package/dist/cjs/wm-timepicker.cjs.entry.js +5 -6
  39. package/dist/cjs/wm-toggletip.cjs.entry.js +5 -6
  40. package/dist/cjs/wm-uploader.cjs.entry.js +6 -7
  41. package/dist/cjs/wm-wrapper.cjs.entry.js +1 -1
  42. package/dist/collection/collection-manifest.json +2 -2
  43. package/dist/collection/components/charts/chartFunctions.js +29 -9
  44. package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
  45. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +81 -0
  46. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +2 -2
  47. package/dist/collection/components/charts/screenshots.e2e.js +96 -0
  48. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +213 -0
  49. package/dist/collection/components/charts/wm-chart/wm-chart.js +10 -3
  50. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +37 -0
  51. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
  52. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +9 -9
  53. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
  54. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
  55. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
  56. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +1 -1
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
  58. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +2 -2
  59. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
  60. package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
  61. package/dist/collection/components/datepickers/wm-date-range.js +13 -17
  62. package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
  63. package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
  64. package/dist/collection/components/datepickers/wm-datepicker.js +13 -17
  65. package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
  66. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +5 -7
  67. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +3 -3
  68. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +1 -1
  69. package/dist/collection/components/selects/wm-option/wm-option.e2e.js +22 -0
  70. package/dist/collection/components/selects/wm-option/wm-option.js +1 -1
  71. package/dist/collection/components/selects/wm-option/wm-option.spec.js +63 -0
  72. package/dist/collection/components/selects/wm-select/wm-select.e2e.js +521 -0
  73. package/dist/collection/components/selects/wm-select/wm-select.js +2 -2
  74. package/dist/collection/components/selects/wm-select/wm-select.spec.js +271 -0
  75. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
  76. package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
  77. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
  78. package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
  79. package/dist/collection/components/wm-button/wm-button.js +1 -1
  80. package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
  81. package/dist/collection/components/wm-file/wm-file.js +1 -1
  82. package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
  83. package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
  84. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
  85. package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
  86. package/dist/collection/components/wm-input/wm-input.js +1 -1
  87. package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
  88. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
  89. package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
  90. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
  91. package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
  92. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
  93. package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
  94. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
  95. package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
  96. package/dist/collection/components/wm-modal/wm-modal.js +2 -2
  97. package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
  98. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +1 -1
  99. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +1 -1
  100. package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +2 -2
  101. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
  102. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  103. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  104. package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
  105. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  106. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  107. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  108. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +1 -1
  109. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  110. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  111. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
  112. package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
  113. package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
  114. package/dist/collection/components/wm-search/wm-search.js +4 -5
  115. package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
  116. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
  117. package/dist/collection/components/wm-snackbar/wm-snackbar.js +2 -2
  118. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
  119. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
  120. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
  121. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
  122. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
  123. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
  124. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
  125. package/dist/collection/components/wm-tag-input/wm-tag-input.js +3 -3
  126. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
  127. package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
  128. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  129. package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
  130. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
  131. package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
  132. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
  133. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
  134. package/dist/collection/components/wm-toggletip/wm-toggletip.js +2 -2
  135. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
  136. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
  137. package/dist/collection/components/wm-uploader/wm-uploader.js +2 -2
  138. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
  139. package/dist/collection/global/functions.spec.js +126 -0
  140. package/dist/collection/lang/lang.spec.js +20 -0
  141. package/dist/esm/{chartFunctions-c273c613.js → chartFunctions-37511f93.js} +31 -11
  142. package/dist/esm/{functions-f39e6177.js → functions-8800c690.js} +8 -105
  143. package/dist/{cjs/app-globals-e5411d07.js → esm/global-1e5a92fa.js} +1 -10
  144. package/dist/esm/index-558b5a82.js +2618 -0
  145. package/dist/esm/{intl-a0ebf99e.js → intl-cf443c87.js} +1 -1
  146. package/dist/esm/loader.js +4 -5
  147. package/dist/esm/priv-calendar.entry.js +5 -6
  148. package/dist/esm/priv-chart-popover.entry.js +5 -6
  149. package/dist/esm/priv-navigator-button.entry.js +3 -4
  150. package/dist/esm/priv-navigator-item.entry.js +3 -4
  151. package/dist/esm/priv-option-list.entry.js +4 -5
  152. package/dist/esm/ripple.js +12 -13
  153. package/dist/esm/wm-action-menu_2.entry.js +6 -8
  154. package/dist/esm/wm-button.entry.js +4 -5
  155. package/dist/esm/wm-chart-slice.entry.js +1 -1
  156. package/dist/esm/wm-chart.entry.js +15 -9
  157. package/dist/esm/wm-date-range.entry.js +8 -9
  158. package/dist/esm/wm-datepicker.entry.js +8 -9
  159. package/dist/esm/wm-file-list.entry.js +3 -4
  160. package/dist/esm/wm-file.entry.js +4 -5
  161. package/dist/esm/wm-input.entry.js +5 -6
  162. package/dist/esm/wm-line-chart.entry.js +14 -15
  163. package/dist/esm/wm-modal-pss_3.entry.js +10 -13
  164. package/dist/esm/wm-modal_3.entry.js +10 -13
  165. package/dist/esm/wm-navigation_3.entry.js +10 -13
  166. package/dist/esm/wm-navigator.entry.js +3 -4
  167. package/dist/esm/wm-nested-select.entry.js +7 -8
  168. package/dist/esm/wm-optgroup.entry.js +4 -5
  169. package/dist/esm/wm-option_2.entry.js +8 -10
  170. package/dist/esm/wm-pagination.entry.js +4 -5
  171. package/dist/esm/wm-progress-indicator_3.entry.js +7 -9
  172. package/dist/esm/wm-search.entry.js +6 -7
  173. package/dist/esm/wm-snackbar.entry.js +6 -7
  174. package/dist/esm/wm-tab-item_3.entry.js +8 -11
  175. package/dist/esm/wm-tag-input.entry.js +7 -8
  176. package/dist/esm/wm-tag-option.entry.js +2 -2
  177. package/dist/esm/wm-textarea.entry.js +5 -6
  178. package/dist/esm/wm-timepicker.entry.js +5 -6
  179. package/dist/esm/wm-toggletip.entry.js +5 -6
  180. package/dist/esm/wm-uploader.entry.js +6 -7
  181. package/dist/esm/wm-wrapper.entry.js +1 -1
  182. package/dist/esm-es5/chartFunctions-37511f93.js +1 -0
  183. package/dist/esm-es5/functions-8800c690.js +1 -0
  184. package/dist/esm-es5/global-1e5a92fa.js +1 -0
  185. package/dist/esm-es5/index-558b5a82.js +1 -0
  186. package/dist/esm-es5/{intl-a0ebf99e.js → intl-cf443c87.js} +1 -1
  187. package/dist/esm-es5/loader.js +1 -1
  188. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  189. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  190. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  191. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  192. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  193. package/dist/esm-es5/ripple.js +1 -1
  194. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  195. package/dist/esm-es5/wm-button.entry.js +1 -1
  196. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  197. package/dist/esm-es5/wm-chart.entry.js +1 -1
  198. package/dist/esm-es5/wm-date-range.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-pss_3.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal_3.entry.js +1 -1
  206. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  207. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  208. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  209. package/dist/esm-es5/wm-optgroup.entry.js +1 -1
  210. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  211. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  212. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  213. package/dist/esm-es5/wm-search.entry.js +1 -1
  214. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  215. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  216. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  217. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  218. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  219. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  220. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  221. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  222. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  223. package/dist/loader/cdn.js +2 -1
  224. package/dist/loader/index.cjs.js +2 -1
  225. package/dist/loader/index.d.ts +0 -3
  226. package/dist/loader/index.es2017.js +2 -1
  227. package/dist/loader/index.js +2 -1
  228. package/dist/ripple/{p-bda9a663.system.entry.js → p-0ba2e506.system.entry.js} +1 -1
  229. package/dist/ripple/{p-0f09ccc6.system.entry.js → p-0e36d5b8.system.entry.js} +1 -1
  230. package/dist/ripple/{p-658f146a.system.entry.js → p-1a4b6b02.system.entry.js} +1 -1
  231. package/dist/ripple/{p-165b5d3d.system.entry.js → p-1a71d867.system.entry.js} +1 -1
  232. package/dist/ripple/{p-79a6b32f.system.entry.js → p-1aea1ad2.system.entry.js} +1 -1
  233. package/dist/ripple/p-22cfff23.entry.js +1 -0
  234. package/dist/ripple/p-32507c13.system.entry.js +1 -0
  235. package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
  236. package/dist/ripple/{p-bb25b9af.system.js → p-3322823d.system.js} +1 -1
  237. package/dist/ripple/p-39e26322.entry.js +1 -0
  238. package/dist/ripple/{p-23bcc6d4.system.entry.js → p-3f40f06b.system.entry.js} +1 -1
  239. package/dist/ripple/p-3fa38234.entry.js +1 -0
  240. package/dist/ripple/p-44f426ad.entry.js +1 -0
  241. package/dist/ripple/{p-391d9f32.system.entry.js → p-460e9ef3.system.entry.js} +1 -1
  242. package/dist/ripple/{p-c34c9cbb.system.entry.js → p-4743176d.system.entry.js} +1 -1
  243. package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
  244. package/dist/ripple/{p-4c1efa04.system.js → p-49c23d69.system.js} +1 -1
  245. package/dist/ripple/p-4de728e1.entry.js +1 -0
  246. package/dist/ripple/p-4ff87702.system.entry.js +1 -0
  247. package/dist/ripple/p-50bcde40.js +1 -0
  248. package/dist/ripple/{p-362b19a2.entry.js → p-544925c2.entry.js} +1 -1
  249. package/dist/ripple/p-568c595f.js +2 -0
  250. package/dist/ripple/{p-bee47080.system.entry.js → p-58668e84.system.entry.js} +1 -1
  251. package/dist/ripple/{p-83d1c1fb.entry.js → p-59bb36fc.entry.js} +1 -1
  252. package/dist/ripple/p-5e9c9f0d.entry.js +1 -0
  253. package/dist/ripple/{p-39dd3870.system.entry.js → p-608f69c1.system.entry.js} +1 -1
  254. package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
  255. package/dist/ripple/{p-5c25870c.entry.js → p-68e04222.entry.js} +1 -1
  256. package/dist/ripple/p-6e72a06c.entry.js +1 -0
  257. package/dist/ripple/{p-5c62e26d.entry.js → p-702252ba.entry.js} +1 -1
  258. package/dist/ripple/{p-a40296fc.system.entry.js → p-704be1e8.system.entry.js} +1 -1
  259. package/dist/ripple/{p-9708c995.js → p-710c6115.js} +1 -1
  260. package/dist/ripple/{p-42596f25.entry.js → p-7478303e.entry.js} +1 -1
  261. package/dist/ripple/p-79043436.entry.js +1 -0
  262. package/dist/ripple/p-797d65b7.entry.js +1 -0
  263. package/dist/ripple/{p-fc170968.system.entry.js → p-79d4f14b.system.entry.js} +1 -1
  264. package/dist/ripple/{p-59e50ea1.system.entry.js → p-7e0fc193.system.entry.js} +1 -1
  265. package/dist/ripple/{p-a3f9e2f6.system.entry.js → p-84e7a8df.system.entry.js} +1 -1
  266. package/dist/ripple/{p-d0736520.system.entry.js → p-878fd4af.system.entry.js} +1 -1
  267. package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
  268. package/dist/ripple/p-8cd8f784.entry.js +1 -0
  269. package/dist/ripple/p-8d72d140.entry.js +1 -0
  270. package/dist/ripple/p-94495341.entry.js +1 -0
  271. package/dist/ripple/p-94717864.entry.js +1 -0
  272. package/dist/ripple/{p-0ed1e17e.entry.js → p-9d461de5.entry.js} +1 -1
  273. package/dist/ripple/p-9eaa0acb.system.entry.js +1 -0
  274. package/dist/ripple/{p-3376581a.system.entry.js → p-a04ef164.system.entry.js} +1 -1
  275. package/dist/ripple/{p-d1751f87.system.entry.js → p-a2936bcb.system.entry.js} +1 -1
  276. package/dist/ripple/p-a30e2948.entry.js +1 -0
  277. package/dist/ripple/p-a69425b0.entry.js +1 -0
  278. package/dist/ripple/p-ab8d78cc.system.js +2 -0
  279. package/dist/ripple/p-adc254e6.entry.js +1 -0
  280. package/dist/ripple/p-b02048a9.entry.js +1 -0
  281. package/dist/ripple/p-b2706394.entry.js +1 -0
  282. package/dist/ripple/{p-3bde67f1.system.entry.js → p-b5971475.system.entry.js} +1 -1
  283. package/dist/ripple/{p-8240dd82.system.entry.js → p-b5c371aa.system.entry.js} +1 -1
  284. package/dist/ripple/{p-76d248e6.entry.js → p-b976c84b.entry.js} +1 -1
  285. package/dist/ripple/{p-3ec9a2a2.system.entry.js → p-bd547650.system.entry.js} +1 -1
  286. package/dist/ripple/{p-0c7cf863.system.entry.js → p-bfc1065f.system.entry.js} +1 -1
  287. package/dist/ripple/{p-62a99b68.entry.js → p-c2b5d9e5.entry.js} +1 -1
  288. package/dist/ripple/p-c3fa1588.system.js +1 -0
  289. package/dist/ripple/p-c4e329e9.entry.js +1 -0
  290. package/dist/ripple/{p-72e05203.system.entry.js → p-c7e30eb0.system.entry.js} +1 -1
  291. package/dist/ripple/{p-9287d70b.system.entry.js → p-caec4f57.system.entry.js} +1 -1
  292. package/dist/ripple/{p-35c7696e.entry.js → p-ce44ba70.entry.js} +1 -1
  293. package/dist/ripple/{p-c62342c4.entry.js → p-d57e8196.entry.js} +1 -1
  294. package/dist/ripple/p-dc77d98a.entry.js +1 -0
  295. package/dist/ripple/{p-3c407959.system.entry.js → p-ddcbb694.system.entry.js} +1 -1
  296. package/dist/ripple/{p-35218430.system.entry.js → p-de272ae7.system.entry.js} +1 -1
  297. package/dist/ripple/{p-cca7a151.system.entry.js → p-e2c6052b.system.entry.js} +1 -1
  298. package/dist/ripple/p-e6f884a6.js +1 -0
  299. package/dist/ripple/p-e844cbf3.entry.js +1 -0
  300. package/dist/ripple/p-eca78c2b.js +1 -0
  301. package/dist/ripple/p-edd87140.system.js +1 -0
  302. package/dist/ripple/p-efdad4ea.system.js +1 -0
  303. package/dist/ripple/{p-35644be9.system.entry.js → p-f22e26b6.system.entry.js} +1 -1
  304. package/dist/ripple/p-f5bc8926.entry.js +1 -0
  305. package/dist/ripple/{p-ead461fe.system.entry.js → p-f6eff655.system.entry.js} +1 -1
  306. package/dist/ripple/{p-22dda578.system.entry.js → p-f779ec68.system.entry.js} +1 -1
  307. package/dist/ripple/ripple.esm.js +1 -1
  308. package/dist/ripple/ripple.js +1 -1
  309. package/dist/types/stencil-public-runtime.d.ts +10 -3
  310. package/package.json +1 -1
  311. package/dist/cjs/index-788526f5.js +0 -1859
  312. package/dist/esm/index-130e07bb.js +0 -1828
  313. package/dist/esm-es5/app-globals-c3920c78.js +0 -1
  314. package/dist/esm-es5/chartFunctions-c273c613.js +0 -1
  315. package/dist/esm-es5/functions-f39e6177.js +0 -1
  316. package/dist/esm-es5/index-130e07bb.js +0 -1
  317. package/dist/ripple/p-0f356c45.entry.js +0 -1
  318. package/dist/ripple/p-105e5721.system.entry.js +0 -1
  319. package/dist/ripple/p-152b20ae.entry.js +0 -1
  320. package/dist/ripple/p-2a30d411.system.entry.js +0 -1
  321. package/dist/ripple/p-32b88ab2.entry.js +0 -1
  322. package/dist/ripple/p-3ceed568.entry.js +0 -1
  323. package/dist/ripple/p-3f486eed.system.js +0 -1
  324. package/dist/ripple/p-4a1601c5.js +0 -1
  325. package/dist/ripple/p-4b8cb0a4.entry.js +0 -1
  326. package/dist/ripple/p-5d8386b4.system.entry.js +0 -1
  327. package/dist/ripple/p-68a96191.entry.js +0 -1
  328. package/dist/ripple/p-6c0c2e1f.entry.js +0 -1
  329. package/dist/ripple/p-72f7d6e1.system.js +0 -1
  330. package/dist/ripple/p-76542ab3.entry.js +0 -1
  331. package/dist/ripple/p-76f9acec.entry.js +0 -1
  332. package/dist/ripple/p-86a5178d.entry.js +0 -1
  333. package/dist/ripple/p-89a2db02.js +0 -1
  334. package/dist/ripple/p-8d4f674f.entry.js +0 -1
  335. package/dist/ripple/p-8f5ac061.entry.js +0 -1
  336. package/dist/ripple/p-96505312.js +0 -1
  337. package/dist/ripple/p-985fb8b9.entry.js +0 -1
  338. package/dist/ripple/p-aaaee14f.entry.js +0 -1
  339. package/dist/ripple/p-b4e7d63f.entry.js +0 -1
  340. package/dist/ripple/p-ba047c79.entry.js +0 -1
  341. package/dist/ripple/p-ba32888d.system.js +0 -1
  342. package/dist/ripple/p-c5c31818.entry.js +0 -1
  343. package/dist/ripple/p-cef8a45b.system.js +0 -2
  344. package/dist/ripple/p-d528f5e4.entry.js +0 -1
  345. package/dist/ripple/p-d9da0502.js +0 -2
  346. package/dist/ripple/p-da424bdb.entry.js +0 -1
  347. package/dist/ripple/p-f39b556d.entry.js +0 -1
  348. package/dist/ripple/p-f98f9a32.entry.js +0 -1
  349. package/dist/ripple/p-f9a71cf6.entry.js +0 -1
@@ -0,0 +1,312 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ describe("wm-pagination", () => {
3
+ let page, el;
4
+ beforeEach(async () => {
5
+ page = await newE2EPage();
6
+ await page.setContent("<wm-pagination total-items='43' items-per-page='10' current-page='1'></wm-pagination>");
7
+ el = await page.find("wm-pagination");
8
+ await page.evaluate(async () => {
9
+ await document.addEventListener("wmPaginationPageClicked", function (ev) {
10
+ let pagin = document.querySelector("wm-pagination");
11
+ pagin.currentPage = +ev.target.value;
12
+ });
13
+ });
14
+ });
15
+ // HANDLES ONE PAGE (FALLBACK IF DEV'S CONDITIONAL RENDERING FAILS)
16
+ it("does not render pagination", async () => {
17
+ el.setAttribute("current-page", "1");
18
+ el.setAttribute("total-items", "5");
19
+ el.setAttribute("items-per-page", "10");
20
+ await page.waitForChanges();
21
+ const current = await page.find("wm-pagination >>> nav");
22
+ expect(current).toBe(null);
23
+ });
24
+ //HANDLES SHORT PAGINATION (FIVE PAGES OR LESS )
25
+ it("indicates the current page correctly", async () => {
26
+ el.setAttribute("current-page", "5");
27
+ el.setAttribute("total-items", "47");
28
+ el.setAttribute("items-per-page", "10");
29
+ await page.waitForChanges();
30
+ let current = await page.find("wm-pagination >>> [aria-current='page']");
31
+ let val = await current.getProperty("value");
32
+ expect(val).toEqual("5");
33
+ });
34
+ it("displays the correct number of buttons", async () => {
35
+ el.setAttribute("current-page", "2");
36
+ el.setAttribute("total-items", "47");
37
+ el.setAttribute("items-per-page", "10");
38
+ await page.waitForChanges();
39
+ //There should be prev, five page numbers and next
40
+ let buttons = await page.findAll("wm-pagination >>> button");
41
+ expect(buttons.length).toBe(7);
42
+ el.setAttribute("current-page", "2");
43
+ el.setAttribute("total-items", "11");
44
+ el.setAttribute("items-per-page", "10");
45
+ await page.waitForChanges();
46
+ //There should now be prev, two page numbers, and next
47
+ buttons = await page.findAll("wm-pagination >>> button");
48
+ expect(buttons.length).toBe(4);
49
+ });
50
+ it("disables previous and next", async () => {
51
+ el.setAttribute("current-page", "5");
52
+ el.setAttribute("total-items", "47");
53
+ el.setAttribute("items-per-page", "10");
54
+ await page.waitForChanges();
55
+ let buttons = await page.findAll("wm-pagination >>> button");
56
+ let prev = await buttons[0];
57
+ let next = await buttons[6];
58
+ expect(prev).not.toHaveAttribute("disabled");
59
+ expect(next).toHaveAttribute("disabled");
60
+ el.setAttribute("current-page", "1");
61
+ await page.waitForChanges();
62
+ buttons = await page.findAll("wm-pagination >>> button");
63
+ prev = await buttons[0];
64
+ next = await buttons[6];
65
+ expect(next).not.toHaveAttribute("disabled");
66
+ expect(prev).toHaveAttribute("disabled");
67
+ });
68
+ //Add tests for keyboard navigation to simulate events that update the current page
69
+ // HANDLES LONG PAGINATION (SIX OR MORE PAGES)
70
+ it("indicates the current page correctly", async () => {
71
+ el.setAttribute("current-page", "6");
72
+ el.setAttribute("total-items", "147");
73
+ el.setAttribute("items-per-page", "10");
74
+ await page.waitForChanges();
75
+ let current = await page.find("wm-pagination >>> [aria-current='page']");
76
+ let val = await current.getProperty("value");
77
+ expect(val).toEqual("6");
78
+ });
79
+ it("displays five page number buttons regardless of the current page", async () => {
80
+ el.setAttribute("current-page", "3");
81
+ el.setAttribute("total-items", "147");
82
+ el.setAttribute("items-per-page", "10");
83
+ await page.waitForChanges();
84
+ let buttons = await page.findAll("wm-pagination >>> button");
85
+ //five page number buttons, plus the two prev/next buttons that always render
86
+ expect(buttons.length).toBe(7);
87
+ el.setAttribute("current-page", "15");
88
+ el.setAttribute("total-items", "147");
89
+ el.setAttribute("items-per-page", "10");
90
+ await page.waitForChanges();
91
+ buttons = await page.findAll("wm-pagination >>> button");
92
+ //five page number buttons, plus the two prev/next buttons that always render
93
+ expect(buttons.length).toBe(7);
94
+ el.setAttribute("current-page", "7");
95
+ el.setAttribute("total-items", "147");
96
+ el.setAttribute("items-per-page", "10");
97
+ await page.waitForChanges();
98
+ buttons = await page.findAll("wm-pagination >>> button");
99
+ //five page number buttons, plus the two prev/next buttons that always render
100
+ expect(buttons.length).toBe(7);
101
+ });
102
+ it("displays only the right hand ellipsis when current page is within the first four pages", async () => {
103
+ el.setAttribute("current-page", "3");
104
+ el.setAttribute("total-items", "147");
105
+ el.setAttribute("items-per-page", "10");
106
+ await page.waitForChanges();
107
+ const displayedElements = await page.find("wm-pagination >>> div.pagebtncontainer");
108
+ //Check that page number, not left hand ellipsis, is displayed
109
+ expect(displayedElements.childNodes[2].innerHTML).toBe("2");
110
+ //Check that ellipsis is displayed in the right spot
111
+ expect(displayedElements.childNodes[5].innerHTML).toBe("...");
112
+ });
113
+ it("displays only the left hand ellipsis only when current page is within the last four pages", async () => {
114
+ el.setAttribute("current-page", "13");
115
+ el.setAttribute("total-items", "147");
116
+ el.setAttribute("items-per-page", "10");
117
+ await page.waitForChanges();
118
+ const displayedElements = await page.find("wm-pagination >>> div.pagebtncontainer");
119
+ //Check that page number, not right hand ellipsis, is displayed
120
+ expect(displayedElements.childNodes[5].innerHTML).toBe("14");
121
+ //Check that ellipsis is displayed in the right spot
122
+ expect(displayedElements.childNodes[2].innerHTML).toBe("...");
123
+ });
124
+ it("displays both sets of ellipsis when the total page count is greater than 6 and the current page is not within the first four or the last four pages", async () => {
125
+ el.setAttribute("current-page", "8");
126
+ el.setAttribute("total-items", "147");
127
+ el.setAttribute("items-per-page", "10");
128
+ await page.waitForChanges();
129
+ const displayedElements = await page.find("wm-pagination >>> div.pagebtncontainer");
130
+ //left ellipsis
131
+ expect(displayedElements.childNodes[2].innerHTML).toBe("...");
132
+ //right ellipsis
133
+ expect(displayedElements.childNodes[6].innerHTML).toBe("...");
134
+ });
135
+ it("fires an event when a button is triggered", async () => {
136
+ el.setAttribute("current-page", "3");
137
+ el.setAttribute("total-items", "147");
138
+ el.setAttribute("items-per-page", "10");
139
+ await page.waitForChanges();
140
+ await page.keyboard.press("Tab"); // Previous btn
141
+ await page.waitForChanges();
142
+ await page.keyboard.press("Enter");
143
+ await page.waitForChanges();
144
+ let current = await page.find("wm-pagination >>> [aria-current='page']");
145
+ expect(current.id).toBe("wm-2");
146
+ });
147
+ // A11Y
148
+ // UX requirements, cf. https://watermarkinsights.atlassian.net/wiki/spaces/WDS/pages/51938484/Pagination
149
+ it("allows user to tab through the clickable pagination elements", async () => {
150
+ el.setAttribute("current-page", "5");
151
+ el.setAttribute("total-items", "97");
152
+ el.setAttribute("items-per-page", "10");
153
+ await page.waitForChanges();
154
+ // User should be able to tab through the clickable pagination elements. Navigating below to page 5
155
+ await page.keyboard.press("Tab");
156
+ await page.waitForChanges();
157
+ await page.keyboard.press("Tab");
158
+ await page.waitForChanges();
159
+ await page.keyboard.press("Tab");
160
+ await page.waitForChanges();
161
+ await page.keyboard.press("Tab");
162
+ await page.waitForChanges();
163
+ let activeElId = await page.evaluate(async () => {
164
+ let el = await document.activeElement.shadowRoot.activeElement;
165
+ return el.id;
166
+ });
167
+ expect(activeElId).toBe("wm-5");
168
+ //Navigating below to next button
169
+ await page.keyboard.press("Tab");
170
+ await page.waitForChanges();
171
+ await page.keyboard.press("Tab");
172
+ await page.waitForChanges();
173
+ await page.keyboard.press("Tab");
174
+ await page.waitForChanges();
175
+ activeElId = await page.evaluate(async () => {
176
+ let el = await document.activeElement.shadowRoot.activeElement;
177
+ return el.id;
178
+ });
179
+ expect(activeElId).toBe("next");
180
+ });
181
+ it("updates the current page when enter is pressed on a page button and keeps focus on the selected page", async () => {
182
+ el.setAttribute("current-page", "5");
183
+ el.setAttribute("total-items", "97");
184
+ el.setAttribute("items-per-page", "10");
185
+ await page.waitForChanges();
186
+ //Navigate to page 6 and click on it
187
+ await page.keyboard.press("Tab");
188
+ await page.waitForChanges();
189
+ await page.keyboard.press("Tab");
190
+ await page.waitForChanges();
191
+ await page.keyboard.press("Tab");
192
+ await page.waitForChanges();
193
+ await page.keyboard.press("Tab");
194
+ await page.waitForChanges();
195
+ await page.keyboard.press("Tab");
196
+ await page.waitForChanges();
197
+ await page.keyboard.press("Enter");
198
+ await page.waitForChanges();
199
+ //Current page should update to page 6
200
+ let current = await page.find("wm-pagination >>> [aria-current='page']");
201
+ let val = await current.getProperty("value");
202
+ expect(val).toEqual("6");
203
+ //Focus should remain on 6 even though button arrangement changes
204
+ let activeElId = await page.evaluate(async () => {
205
+ let el = await document.activeElement.shadowRoot.activeElement;
206
+ return el.id;
207
+ });
208
+ expect(activeElId).toBe("wm-6");
209
+ });
210
+ it("decrements the current page when enter is pressed on the previous button, keeps focus on the previous button until it becomes disabled, and moves focus first page once it is disabled", async () => {
211
+ el.setAttribute("current-page", "3");
212
+ el.setAttribute("total-items", "97");
213
+ el.setAttribute("items-per-page", "10");
214
+ await page.waitForChanges();
215
+ //Navigate to previous button
216
+ await page.keyboard.press("Tab");
217
+ await page.waitForChanges();
218
+ await page.keyboard.press("Enter");
219
+ await page.waitForChanges();
220
+ //Current page should decrease by 1
221
+ let current = await page.find("wm-pagination >>> [aria-current='page']");
222
+ let val = await current.getProperty("value");
223
+ expect(val).toEqual("2");
224
+ //Focus should remain on previous button
225
+ let activeElId = await page.evaluate(async () => {
226
+ let el = await document.activeElement.shadowRoot.activeElement;
227
+ return el.id;
228
+ });
229
+ expect(activeElId).toBe("previous");
230
+ //Press previous again, reaching first page and disabling previous button
231
+ await page.keyboard.press("Enter");
232
+ await page.waitForChanges();
233
+ current = await page.find("wm-pagination >>> [aria-current='page']");
234
+ val = await current.getProperty("value");
235
+ expect(val).toEqual("1");
236
+ //Focus is shifted to first page button rather than flying out to body
237
+ activeElId = await page.evaluate(async () => {
238
+ let el = await document.activeElement.shadowRoot.activeElement;
239
+ return el.id;
240
+ });
241
+ expect(activeElId).toBe("wm-1");
242
+ });
243
+ it("increments the current page when enter is pressed on the next button, keeps focus on the next button until it becomes disabled, and moves focus back to last page once it is disabled", async () => {
244
+ el.setAttribute("current-page", "8");
245
+ el.setAttribute("total-items", "97");
246
+ el.setAttribute("items-per-page", "10");
247
+ await page.waitForChanges();
248
+ //Navigate to the next button and press enter
249
+ await page.keyboard.press("Tab");
250
+ await page.waitForChanges();
251
+ await page.keyboard.press("Tab");
252
+ await page.waitForChanges();
253
+ await page.keyboard.press("Tab");
254
+ await page.waitForChanges();
255
+ await page.keyboard.press("Tab");
256
+ await page.waitForChanges();
257
+ await page.keyboard.press("Tab");
258
+ await page.waitForChanges();
259
+ await page.keyboard.press("Tab");
260
+ await page.waitForChanges();
261
+ await page.keyboard.press("Tab");
262
+ await page.waitForChanges();
263
+ await page.keyboard.press("Enter");
264
+ await page.waitForChanges();
265
+ //Current page should increase by 1
266
+ let current = await page.find("wm-pagination >>> [aria-current='page']");
267
+ let val = await current.getProperty("value");
268
+ expect(val).toEqual("9");
269
+ //Focus should remain on the next button
270
+ let activeElId = await page.evaluate(async () => {
271
+ let el = await document.activeElement.shadowRoot.activeElement;
272
+ return el.id;
273
+ });
274
+ expect(activeElId).toBe("next");
275
+ //Press next again
276
+ await page.keyboard.press("Enter");
277
+ await page.waitForChanges();
278
+ //Last page is reached, and next button becomes disabled
279
+ current = await page.find("wm-pagination >>> [aria-current='page']");
280
+ val = await current.getProperty("value");
281
+ expect(val).toEqual("10");
282
+ //Rather than the focus shifting to the body once it is disabled, focus is brought to last page button
283
+ activeElId = await page.evaluate(async () => {
284
+ let el = await document.activeElement.shadowRoot.activeElement;
285
+ return el.id;
286
+ });
287
+ expect(activeElId).toBe("wm-10");
288
+ });
289
+ it("sets labels dynamically so that screenreaders properly announce the navigable pagination elements", async () => {
290
+ el.setAttribute("current-page", "3");
291
+ el.setAttribute("total-items", "47");
292
+ el.setAttribute("items-per-page", "10");
293
+ await page.waitForChanges();
294
+ let buttons = await page.findAll("wm-pagination >>> button");
295
+ let notCurrentPage = buttons[2];
296
+ expect(notCurrentPage).toEqualAttribute("aria-label", "Go to page 2");
297
+ let currentPage = buttons[3];
298
+ expect(currentPage).toEqualAttribute("aria-label", "");
299
+ //Change current page number
300
+ await page.keyboard.press("Tab");
301
+ await page.waitForChanges();
302
+ await page.keyboard.press("Enter");
303
+ await page.waitForChanges();
304
+ buttons = await page.findAll("wm-pagination >>> button");
305
+ //Button 3 no longer as label indicating it's the current page
306
+ notCurrentPage = buttons[3];
307
+ expect(notCurrentPage).toEqualAttribute("aria-label", "Go to page 3");
308
+ //Button 2 now has current page label
309
+ currentPage = buttons[2];
310
+ expect(currentPage).toEqualAttribute("aria-label", "");
311
+ });
312
+ });
@@ -151,7 +151,7 @@ export class Pagination {
151
151
  render() {
152
152
  return (
153
153
  // do not render the component if there's only one page
154
- this.totalItems > this.itemsPerPage && (h("nav", { key: '4a9b64a4bbfa5da2d26b64c639054985826fc968', "aria-label": `Pagination Navigation. ${this.getCurrentPagesInView()}. Current page, ${this.currentPage}.` }, this.isLargeSize ? this.renderLarge() : this.renderSmall(), h("div", { key: '98de85ef66a0861f2f1997c7881b17f0a50509b9', id: "status", class: "sr-only", "aria-live": "polite", "aria-relevant": "text", "aria-atomic": "true" }, this.srAnnouncement))));
154
+ this.totalItems > this.itemsPerPage && (h("nav", { "aria-label": `Pagination Navigation. ${this.getCurrentPagesInView()}. Current page, ${this.currentPage}.` }, this.isLargeSize ? this.renderLarge() : this.renderSmall(), h("div", { id: "status", class: "sr-only", "aria-live": "polite", "aria-relevant": "text", "aria-atomic": "true" }, this.srAnnouncement))));
155
155
  }
156
156
  static get is() { return "wm-pagination"; }
157
157
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,76 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ import { AxePuppeteer } from "@axe-core/puppeteer";
3
+ describe("wm-search", () => {
4
+ let page;
5
+ beforeEach(async () => {
6
+ page = await newE2EPage();
7
+ });
8
+ it("passes Axe checks", async () => {
9
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
10
+ <wm-search label="example" placeholder="search here"></wm-search>
11
+ </main></body></html>`);
12
+ const results = await new AxePuppeteer(page).analyze();
13
+ expect(results.violations.length).toBe(0);
14
+ });
15
+ it("delegates focus", async () => {
16
+ await page.setContent(`<wm-search label="example" placeholder="search here">click here</wm-search>`);
17
+ const wmSearch = await page.find("wm-search");
18
+ wmSearch.focus();
19
+ let activeEl = await page.evaluate(async () => {
20
+ let el = await document.activeElement.shadowRoot.activeElement;
21
+ return el.nodeName;
22
+ });
23
+ expect(activeEl).toBe("INPUT");
24
+ });
25
+ it("updates the aria-live region with the number of results in the basic type", async () => {
26
+ page = await newE2EPage();
27
+ await page.setContent(`<wm-search label="example" search-type="basic" placeholder="search here">click here</wm-search>`);
28
+ await page.waitForChanges();
29
+ let component = await page.find("wm-search");
30
+ let input = await page.find("wm-search >>> input");
31
+ let liveRegion = await page.find("wm-search >>> #wm-search-live");
32
+ expect(liveRegion.textContent).toEqual("");
33
+ await input.type("a");
34
+ await page.waitForChanges();
35
+ component.setProperty("numResults", 3);
36
+ await page.waitForChanges();
37
+ expect(liveRegion.textContent).toEqual("3 results found");
38
+ await input.type("b");
39
+ await page.waitForChanges();
40
+ component.setProperty("numResults", 2);
41
+ await page.waitForChanges();
42
+ expect(liveRegion.textContent).toEqual("2 results found");
43
+ await input.type("c");
44
+ await page.waitForChanges();
45
+ component.setProperty("numResults", 0);
46
+ await page.waitForChanges();
47
+ expect(liveRegion.textContent).toEqual("No results found");
48
+ });
49
+ it("updates the aria-live region with the number of results and the name of the corresponding item in the find type", async () => {
50
+ page = await newE2EPage();
51
+ await page.setContent(`<wm-search label="example" search-type="find" placeholder="search here">click here</wm-search>`);
52
+ await page.waitForChanges();
53
+ let component = await page.find("wm-search");
54
+ let input = await page.find("wm-search >>> input");
55
+ let liveRegion = await page.find("wm-search >>> #wm-search-live");
56
+ expect(liveRegion.textContent).toEqual("");
57
+ await input.type("a");
58
+ await page.waitForChanges();
59
+ component.setProperty("numResults", 3);
60
+ component.setProperty("highlightedName", "a");
61
+ await page.waitForChanges();
62
+ expect(liveRegion.textContent).toEqual("1 of 3 results, a");
63
+ await input.type("b");
64
+ await page.waitForChanges();
65
+ component.setProperty("numResults", 2);
66
+ component.setProperty("highlightedName", "b");
67
+ await page.waitForChanges();
68
+ expect(liveRegion.textContent).toEqual("1 of 2 results, b");
69
+ await input.type("c");
70
+ await page.waitForChanges();
71
+ component.setProperty("numResults", 0);
72
+ component.setProperty("highlightedName", "");
73
+ await page.waitForChanges();
74
+ expect(liveRegion.textContent).toEqual("No results found");
75
+ });
76
+ });
@@ -166,10 +166,10 @@ export class Search {
166
166
  * End search and find render helpers
167
167
  */
168
168
  render() {
169
- return (h(Host, { key: '1ffec56e18aeda2b15741dd86adb2a0d2d131dfc' }, h("div", { key: '1253a6ac6923653d7bc5daceb3fa83f3eb3f45ea', id: "wm-search-wrapper", class: `wm-search-wrapper ${this.searchType}` }, h("input", { key: '20d3c4520fdf0fc511f7e2b7866e4089a4a58a71', disabled: this.isDisabled, id: "wm-search-input", placeholder: this.placeholder, "aria-label": `${this.label ? this.label + ". " : ""}${intl.formatMessage({
169
+ return (h(Host, null, h("div", { id: "wm-search-wrapper", class: `wm-search-wrapper ${this.searchType}` }, h("input", { disabled: this.isDisabled, id: "wm-search-input", placeholder: this.placeholder, "aria-label": `${this.label ? this.label + ". " : ""}${intl.formatMessage({
170
170
  id: "search.typeToFilterResults",
171
171
  defaultMessage: "Type to filter the results",
172
- })}`, onInput: (ev) => this.updateValue(ev.target.value), onBlur: () => this.handleBlur(), "aria-autocomplete": "none", autocomplete: "off", value: this.value }), h("span", { key: '410a1c3e881bbdf76f9b8c3a6aaf3064e200c776', class: "svg-icon svg-search" }), this.searchType === "find" && this.renderResultsAndBrowseButtons(), h("div", { key: '51a68b524397adab5278394479a5059708629f2c', id: "wm-search-live", class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.resultsLiveRegion = el) }, this.announcement)), this.searchType === "find" && this.renderJumpToLink()));
172
+ })}`, onInput: (ev) => this.updateValue(ev.target.value), onBlur: () => this.handleBlur(), "aria-autocomplete": "none", autocomplete: "off", value: this.value }), h("span", { class: "svg-icon svg-search" }), this.searchType === "find" && this.renderResultsAndBrowseButtons(), h("div", { id: "wm-search-live", class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.resultsLiveRegion = el) }, this.announcement)), this.searchType === "find" && this.renderJumpToLink()));
173
173
  }
174
174
  static get is() { return "wm-search"; }
175
175
  static get encapsulation() { return "shadow"; }
@@ -380,9 +380,8 @@ export class Search {
380
380
  "complexType": {
381
381
  "signature": "(value: string) => Promise<void>",
382
382
  "parameters": [{
383
- "name": "value",
384
- "type": "string",
385
- "docs": ""
383
+ "tags": [],
384
+ "text": ""
386
385
  }],
387
386
  "references": {
388
387
  "Promise": {
@@ -0,0 +1,71 @@
1
+ import { Search } from "./wm-search";
2
+ import { newSpecPage } from "@stencil/core/testing";
3
+ console.error = jest.fn();
4
+ describe("wm-search", () => {
5
+ let page;
6
+ beforeEach(async () => {
7
+ jest.clearAllMocks();
8
+ page = await newSpecPage({
9
+ components: [Search],
10
+ html: `<wm-search></wm-search>`,
11
+ });
12
+ jest
13
+ .spyOn(window, "requestAnimationFrame")
14
+ // @ts-ignore
15
+ .mockImplementation((cb) => cb());
16
+ });
17
+ it("renders", () => {
18
+ expect(new Search()).toBeTruthy();
19
+ expect(page.root).toMatchSnapshot();
20
+ });
21
+ it("has the right props", () => {
22
+ const search = new Search();
23
+ expect(search).toHaveProperty("placeholder");
24
+ expect(search).toHaveProperty("label");
25
+ expect(search).toHaveProperty("numResults");
26
+ expect(search).toHaveProperty("highlightedId");
27
+ expect(search).toHaveProperty("highlightedName");
28
+ expect(search).toHaveProperty("searchType");
29
+ });
30
+ it("should render an input element", async () => {
31
+ const input = page.root.shadowRoot.querySelector("input");
32
+ expect(input).toBeTruthy();
33
+ });
34
+ it("renders an aria-live region", () => {
35
+ const liveRegion = page.root.shadowRoot.querySelector("[aria-live='polite']");
36
+ expect(liveRegion).toBeTruthy();
37
+ });
38
+ it("throws an error if required props aren't passed", async () => {
39
+ expect(console.error).toHaveBeenCalledTimes(2);
40
+ });
41
+ it("should be the basic type by default", () => {
42
+ const search = new Search();
43
+ expect(search.searchType).toEqual("basic");
44
+ });
45
+ it("renders two buttons when the searchType property is set to find", async () => {
46
+ page.rootInstance.searchType = "find";
47
+ await page.waitForChanges();
48
+ const buttons = page.root.shadowRoot.querySelectorAll("wm-button");
49
+ expect(buttons.length).toEqual(2);
50
+ });
51
+ it("sets the input's placeholder attribute in sentence case according to the placeholder prop", async () => {
52
+ page = await newSpecPage({
53
+ components: [Search],
54
+ html: `<wm-search placeholder="Placeholder value"></wm-search>`,
55
+ });
56
+ const input = page.root.shadowRoot.querySelector("input");
57
+ expect(input).toEqualAttribute("placeholder", "Placeholder value");
58
+ });
59
+ it("sets the input's aria-label attribute according to the label prop", async () => {
60
+ page.rootInstance.label = "Label value";
61
+ await page.waitForChanges();
62
+ const input = page.root.shadowRoot.querySelector("input");
63
+ expect(input).toEqualAttribute("aria-label", "Label value. Type to filter the results");
64
+ });
65
+ it("sets the component's value property according to the input's value", async () => {
66
+ //Check input rather than just call the method???
67
+ await page.root.updateValue("hello");
68
+ await page.waitForChanges();
69
+ expect(page.rootInstance.value).toEqual("hello");
70
+ });
71
+ });
@@ -0,0 +1,112 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ describe("wm-snackbar", () => {
3
+ let page;
4
+ beforeEach(async () => {
5
+ page = await newE2EPage();
6
+ await page.setContent("<wm-button id='create-snack' onclick='generateSnackbar()'></wm-button><wm-snackbar notifications='[]' id='snack'></wm-snackbar ><script>function generateSnackbar() { const snackbar = document.getElementById('snack'); const id = '3'; let notifications = JSON.parse(snackbar.notifications); let newNotification = {'id': id, message: 'You did something', link: 'Undo'}; let updatedNotifications = [ ...notifications, newNotification ]; snackbar.notifications = JSON.stringify(updatedNotifications); }</script>");
7
+ await page.evaluate(async () => {
8
+ document.addEventListener("wmSnackbarSnackFinished", (ev) => {
9
+ const snackbar = document.querySelector("wm-snackbar");
10
+ let newSnacks = JSON.parse(snackbar.notifications).filter((snack) => +snack.id !== +ev.detail.id);
11
+ snackbar.notifications = JSON.stringify(newSnacks);
12
+ });
13
+ });
14
+ });
15
+ afterEach(async () => {
16
+ jest.clearAllTimers();
17
+ });
18
+ // RENDER
19
+ it("it displays a snackbar when it receives a notification", async () => {
20
+ //generate snackbar
21
+ const button = await page.find("wm-button");
22
+ button.click(); //perform action that generates a notification
23
+ await page.waitForChanges();
24
+ const snackbar = await page.find("wm-snackbar >>> .content-wrapper");
25
+ expect(snackbar).not.toBeNull();
26
+ });
27
+ it("it displays multiple snackbars when it receives more than one notification", async () => {
28
+ //generate snackbars
29
+ const button = await page.find("wm-button");
30
+ button.click();
31
+ await page.waitForChanges();
32
+ button.click();
33
+ await page.waitForChanges();
34
+ const snackbars = await page.findAll("wm-snackbar >>> .content-wrapper");
35
+ expect(snackbars.length).toBe(2);
36
+ });
37
+ it("dismisses the snackbar after 20 seconds if the user is clicking and not tabbing", async () => {
38
+ //generate snackbar
39
+ const snackExpired = await page.spyOnEvent("wmSnackbarSnackFinished");
40
+ const button = await page.find("wm-button");
41
+ button.click();
42
+ await page.waitForChanges();
43
+ let snack = await page.find("wm-snackbar >>> .content-wrapper");
44
+ expect(snack).not.toBeNull();
45
+ await new Promise((resolve) => {
46
+ setTimeout(() => {
47
+ resolve("");
48
+ }, 21000);
49
+ });
50
+ snack = await page.find("wm-snackbar >>> .content-wrapper");
51
+ expect(snack).toBeNull();
52
+ expect(snackExpired).toHaveReceivedEventDetail({
53
+ id: "3",
54
+ message: "You did something",
55
+ link: "Undo",
56
+ });
57
+ });
58
+ it("dismisses the snackbar when the close button is clicked", async () => {
59
+ //generate snackbar
60
+ const triggerButton = await page.find("wm-button");
61
+ triggerButton.click();
62
+ await page.waitForChanges();
63
+ //press close button
64
+ const closeButton = await page.find("wm-snackbar >>> button");
65
+ closeButton.click();
66
+ await page.waitForChanges();
67
+ const snackbar = await page.find("wm-snackbar >>> .content-wrapper");
68
+ expect(snackbar).toBeNull();
69
+ });
70
+ //ACCESSIBILITY
71
+ it("renders an aria-live region", async () => {
72
+ const element = await page.find("wm-snackbar >>> #wm-live-region-snack");
73
+ expect(element).toEqualAttribute("aria-live", "polite");
74
+ });
75
+ it("focuses the action link in snackbar if the user is tabbing", async () => {
76
+ //generate snackbar
77
+ await page.keyboard.press("Tab");
78
+ await page.keyboard.press("Enter");
79
+ await page.waitForChanges();
80
+ const focusedElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
81
+ const link = await page.find("wm-snackbar >>> .link");
82
+ expect(focusedElId).toBe(link.id);
83
+ });
84
+ it("dismisses the snackbar when enter is pressed on close button and returns focus to last active element before snackbar was created", async () => {
85
+ //generate snackbar
86
+ await page.keyboard.press("Tab");
87
+ await page.keyboard.press("Enter");
88
+ await page.waitForChanges();
89
+ //press close button
90
+ await page.keyboard.press("Tab");
91
+ await page.keyboard.press("Enter");
92
+ await page.waitForChanges();
93
+ const snackbar = await page.find("wm-snackbar >>> .content-wrapper");
94
+ expect(snackbar).toBeNull();
95
+ const focusedElId = await page.evaluate(() => document.activeElement.id);
96
+ expect(focusedElId).toBe("create-snack");
97
+ });
98
+ it("dismisses the snackbar if the user tabs out of it and it returns focus to last active element before snackbar was created", async () => {
99
+ //generate snackbar
100
+ await page.keyboard.press("Tab");
101
+ await page.keyboard.press("Enter");
102
+ await page.waitForChanges();
103
+ //tab out
104
+ await page.keyboard.press("Tab");
105
+ await page.keyboard.press("Tab");
106
+ await page.waitForChanges();
107
+ const snackbar = await page.find("wm-snackbar >>> .content-wrapper");
108
+ expect(snackbar).toBeNull();
109
+ const focusedElId = await page.evaluate(() => document.activeElement.id);
110
+ expect(focusedElId).toBe("create-snack");
111
+ });
112
+ });
@@ -150,11 +150,11 @@ export class Snackbar {
150
150
  }, onKeyDown: (ev) => ev.key === "Enter" && this.snackLinkClicked(notification) }, h("span", { "aria-hidden": "true" }, notification.link), notification.newWindow && h("div", { class: "svg-icon svg-open-in-new" })))), h("button", { id: `close-button-${notification.id}`, "aria-label": "Close this notification", class: "closesnack", tabindex: notification.link ? 0 : -1, onClick: () => this.snackDismissed(notification), onMouseEnter: (ev) => showTooltip("bottom", ev.target, globalMessages.close), onMouseLeave: () => hideTooltip(), onFocus: (ev) => this.isTabbing && showTooltip("bottom", ev.target, globalMessages.close), onBlur: () => hideTooltip() }, h("div", { class: "svg-icon svg-close" }))), h("div", { class: "sr-only", tabindex: notification.link ? 0 : -1, onFocus: () => notification.link && this.snackDismissed(notification) })))));
151
151
  }
152
152
  render() {
153
- return (h(Host, { key: '4a20ad18b5f35266c9bb1b2000c6dd4a56260850' }, h("div", { key: 'c732bd432d88c8522096491c4e28750e18912832', ref: (el) => (this.snackAreaEl = el), class: {
153
+ return (h(Host, null, h("div", { ref: (el) => (this.snackAreaEl = el), class: {
154
154
  "list-wrapper": true,
155
155
  "user-is-tabbing": this.isTabbing,
156
156
  empty: this.parsedNotifications.length == 0,
157
- } }, this.renderSnackbars()), h("div", { key: '88d92b97479e3914bd99958c3045e95048e527c2', class: "sr-only", "aria-live": "polite", "aria-atomic": "false", id: `wm-live-region-${this.uid}`, ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
157
+ } }, this.renderSnackbars()), h("div", { class: "sr-only", "aria-live": "polite", "aria-atomic": "false", id: `wm-live-region-${this.uid}`, ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
158
158
  }
159
159
  static get is() { return "wm-snackbar"; }
160
160
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,9 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ jest.mock("../../global/functions");
3
+ import { Snackbar } from "./wm-snackbar";
4
+ describe("wm-snackbar", () => {
5
+ it("builds", async () => {
6
+ const comp = await newSpecPage({ components: [Snackbar], html: "<wm-snackbar><wm-snackbar>" });
7
+ expect(comp.root).toMatchSnapshot();
8
+ });
9
+ });
@@ -40,7 +40,7 @@ export class TabItem {
40
40
  "background-size": `calc(100% - ${bkgSize}${units}) 3px`,
41
41
  };
42
42
  }
43
- return (h(Host, { key: '03f7157e9d97d75d964bcf74bd3b22a6d4b134f7', role: "presentation" }, h("li", { key: '4c2f0e96555a70677c07e27a93bc8b32da016044', class: "tab-item", role: "presentation" }, h("a", { key: 'f433630cab179818bd2193b2fdac45a794e9f241', class: `tab ${classes}`, style: styles, role: "tab", ref: (el) => (this.linkEl = el), onClick: this.tabClicked, id: `tab-link-${this.tabId}`, onKeyDown: (ev) => this.tabPressed(ev), "aria-selected": this.selected ? "true" : "false", tabindex: this.selected ? 0 : -1 }, h("slot", { key: 'cbfdd92ef027ae9c1b73ffe9bbce37ab71007521' })))));
43
+ return (h(Host, { role: "presentation" }, h("li", { class: "tab-item", role: "presentation" }, h("a", { class: `tab ${classes}`, style: styles, role: "tab", ref: (el) => (this.linkEl = el), onClick: this.tabClicked, id: `tab-link-${this.tabId}`, onKeyDown: (ev) => this.tabPressed(ev), "aria-selected": this.selected ? "true" : "false", tabindex: this.selected ? 0 : -1 }, h("slot", null)))));
44
44
  }
45
45
  static get is() { return "wm-tab-item"; }
46
46
  static get encapsulation() { return "shadow"; }