@watermarkinsights/ripple 5.3.0-0 → 5.3.0-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 (363) hide show
  1. package/dist/cjs/{chartFunctions-9075d687.js → chartFunctions-246529c5.js} +3 -3
  2. package/dist/cjs/{functions-b73604c3.js → functions-be4156cf.js} +7 -104
  3. package/dist/{esm/app-globals-0c592c57.js → cjs/global-6b1a23e9.js} +2 -7
  4. package/dist/cjs/index-f8ef86de.js +2582 -0
  5. package/dist/cjs/{intl-b20d5420.js → intl-a13884e8.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/ripple.cjs.js +11 -12
  12. package/dist/cjs/wm-action-menu_2.cjs.entry.js +6 -8
  13. package/dist/cjs/wm-button.cjs.entry.js +4 -5
  14. package/dist/cjs/wm-chart-slice.cjs.entry.js +1 -1
  15. package/dist/cjs/wm-chart.cjs.entry.js +6 -7
  16. package/dist/cjs/wm-date-range.cjs.entry.js +7 -8
  17. package/dist/cjs/wm-datepicker.cjs.entry.js +7 -8
  18. package/dist/cjs/wm-file-list.cjs.entry.js +3 -4
  19. package/dist/cjs/wm-file.cjs.entry.js +4 -5
  20. package/dist/cjs/wm-input.cjs.entry.js +5 -6
  21. package/dist/cjs/wm-line-chart.cjs.entry.js +14 -15
  22. package/dist/cjs/wm-modal-footer.cjs.entry.js +3 -4
  23. package/dist/cjs/wm-modal-header.cjs.entry.js +5 -6
  24. package/dist/cjs/wm-modal.cjs.entry.js +5 -6
  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-option_2.cjs.entry.js +8 -10
  28. package/dist/cjs/wm-pagination.cjs.entry.js +4 -5
  29. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +7 -9
  30. package/dist/cjs/wm-search.cjs.entry.js +6 -7
  31. package/dist/cjs/wm-snackbar.cjs.entry.js +69 -35
  32. package/dist/cjs/wm-tab-item_3.cjs.entry.js +8 -11
  33. package/dist/cjs/wm-tag-input.cjs.entry.js +7 -8
  34. package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
  35. package/dist/cjs/wm-textarea.cjs.entry.js +5 -6
  36. package/dist/cjs/wm-timepicker.cjs.entry.js +5 -6
  37. package/dist/cjs/wm-toggletip.cjs.entry.js +5 -6
  38. package/dist/cjs/wm-uploader.cjs.entry.js +6 -7
  39. package/dist/cjs/wm-wrapper.cjs.entry.js +1 -1
  40. package/dist/collection/collection-manifest.json +2 -2
  41. package/dist/collection/components/charts/chartFunctions.js +1 -1
  42. package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
  43. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +81 -0
  44. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +2 -2
  45. package/dist/collection/components/charts/screenshots.e2e.js +96 -0
  46. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +213 -0
  47. package/dist/collection/components/charts/wm-chart/wm-chart.js +1 -1
  48. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +37 -0
  49. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
  50. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +9 -9
  51. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
  52. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
  53. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
  54. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +1 -1
  55. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
  56. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +2 -2
  57. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
  58. package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
  59. package/dist/collection/components/datepickers/wm-date-range.js +12 -16
  60. package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
  61. package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
  62. package/dist/collection/components/datepickers/wm-datepicker.js +12 -16
  63. package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
  64. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
  65. package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
  66. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
  67. package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
  68. package/dist/collection/components/wm-button/wm-button.js +1 -1
  69. package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
  70. package/dist/collection/components/wm-file/wm-file.js +1 -1
  71. package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
  72. package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
  73. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
  74. package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
  75. package/dist/collection/components/wm-input/wm-input.js +1 -1
  76. package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
  77. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
  78. package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
  79. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
  80. package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
  81. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
  82. package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
  83. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
  84. package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
  85. package/dist/collection/components/wm-modal/wm-modal.js +2 -2
  86. package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
  87. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
  88. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  89. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  90. package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
  91. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  92. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  93. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  94. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +1 -1
  95. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  96. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  97. package/dist/collection/components/wm-option/wm-option.e2e.js +22 -0
  98. package/dist/collection/components/wm-option/wm-option.js +1 -1
  99. package/dist/collection/components/wm-option/wm-option.spec.js +63 -0
  100. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
  101. package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
  102. package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
  103. package/dist/collection/components/wm-search/wm-search.js +4 -5
  104. package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
  105. package/dist/collection/components/wm-select/wm-select.e2e.js +521 -0
  106. package/dist/collection/components/wm-select/wm-select.js +2 -2
  107. package/dist/collection/components/wm-select/wm-select.spec.js +271 -0
  108. package/dist/collection/components/wm-snackbar/wm-snackbar.css +69 -46
  109. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
  110. package/dist/collection/components/wm-snackbar/wm-snackbar.js +66 -31
  111. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
  112. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
  113. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
  114. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
  115. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
  116. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
  117. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
  118. package/dist/collection/components/wm-tag-input/wm-tag-input.js +3 -3
  119. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
  120. package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
  121. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  122. package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
  123. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
  124. package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
  125. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
  126. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
  127. package/dist/collection/components/wm-toggletip/wm-toggletip.js +2 -2
  128. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
  129. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
  130. package/dist/collection/components/wm-uploader/wm-uploader.js +2 -2
  131. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
  132. package/dist/collection/dev/snackbar.js +48 -32
  133. package/dist/collection/global/functions.spec.js +126 -0
  134. package/dist/collection/lang/lang.spec.js +20 -0
  135. package/dist/esm/{chartFunctions-730742b7.js → chartFunctions-e2554a36.js} +3 -3
  136. package/dist/esm/{functions-eda88c5f.js → functions-f65dbb96.js} +8 -105
  137. package/dist/{cjs/app-globals-7025eb63.js → esm/global-b3bbb95e.js} +1 -10
  138. package/dist/esm/index-f164fbca.js +2552 -0
  139. package/dist/esm/{intl-de8432e2.js → intl-f7f77de7.js} +1 -1
  140. package/dist/esm/loader.js +4 -5
  141. package/dist/esm/polyfills/core-js.js +0 -0
  142. package/dist/esm/polyfills/dom.js +0 -0
  143. package/dist/esm/polyfills/es5-html-element.js +0 -0
  144. package/dist/esm/polyfills/index.js +0 -0
  145. package/dist/esm/polyfills/system.js +0 -0
  146. package/dist/esm/priv-calendar.entry.js +5 -6
  147. package/dist/esm/priv-chart-popover.entry.js +5 -6
  148. package/dist/esm/priv-navigator-button.entry.js +3 -4
  149. package/dist/esm/priv-navigator-item.entry.js +3 -4
  150. package/dist/esm/ripple.js +12 -13
  151. package/dist/esm/wm-action-menu_2.entry.js +6 -8
  152. package/dist/esm/wm-button.entry.js +4 -5
  153. package/dist/esm/wm-chart-slice.entry.js +1 -1
  154. package/dist/esm/wm-chart.entry.js +6 -7
  155. package/dist/esm/wm-date-range.entry.js +7 -8
  156. package/dist/esm/wm-datepicker.entry.js +7 -8
  157. package/dist/esm/wm-file-list.entry.js +3 -4
  158. package/dist/esm/wm-file.entry.js +4 -5
  159. package/dist/esm/wm-input.entry.js +5 -6
  160. package/dist/esm/wm-line-chart.entry.js +14 -15
  161. package/dist/esm/wm-modal-footer.entry.js +3 -4
  162. package/dist/esm/wm-modal-header.entry.js +5 -6
  163. package/dist/esm/wm-modal.entry.js +5 -6
  164. package/dist/esm/wm-navigation_3.entry.js +10 -13
  165. package/dist/esm/wm-navigator.entry.js +3 -4
  166. package/dist/esm/wm-option_2.entry.js +8 -10
  167. package/dist/esm/wm-pagination.entry.js +4 -5
  168. package/dist/esm/wm-progress-indicator_3.entry.js +7 -9
  169. package/dist/esm/wm-search.entry.js +6 -7
  170. package/dist/esm/wm-snackbar.entry.js +69 -35
  171. package/dist/esm/wm-tab-item_3.entry.js +8 -11
  172. package/dist/esm/wm-tag-input.entry.js +7 -8
  173. package/dist/esm/wm-tag-option.entry.js +2 -2
  174. package/dist/esm/wm-textarea.entry.js +5 -6
  175. package/dist/esm/wm-timepicker.entry.js +5 -6
  176. package/dist/esm/wm-toggletip.entry.js +5 -6
  177. package/dist/esm/wm-uploader.entry.js +6 -7
  178. package/dist/esm/wm-wrapper.entry.js +1 -1
  179. package/dist/esm-es5/{chartFunctions-730742b7.js → chartFunctions-e2554a36.js} +1 -1
  180. package/dist/esm-es5/functions-f65dbb96.js +1 -0
  181. package/dist/esm-es5/global-b3bbb95e.js +1 -0
  182. package/dist/esm-es5/index-f164fbca.js +1 -0
  183. package/dist/esm-es5/{intl-de8432e2.js → intl-f7f77de7.js} +1 -1
  184. package/dist/esm-es5/loader.js +1 -1
  185. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  186. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  187. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  188. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  189. package/dist/esm-es5/ripple.js +1 -1
  190. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  191. package/dist/esm-es5/wm-button.entry.js +1 -1
  192. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  193. package/dist/esm-es5/wm-chart.entry.js +1 -1
  194. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  195. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  196. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  197. package/dist/esm-es5/wm-file.entry.js +1 -1
  198. package/dist/esm-es5/wm-input.entry.js +1 -1
  199. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  200. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  201. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  202. package/dist/esm-es5/wm-modal.entry.js +1 -1
  203. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  204. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  205. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  206. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  207. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  208. package/dist/esm-es5/wm-search.entry.js +1 -1
  209. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  210. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  211. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  212. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  213. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  214. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  215. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  216. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  217. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  218. package/dist/loader/cdn.js +2 -1
  219. package/dist/loader/index.cjs.js +2 -1
  220. package/dist/loader/index.d.ts +0 -3
  221. package/dist/loader/index.es2017.js +2 -1
  222. package/dist/loader/index.js +2 -1
  223. package/dist/ripple/p-04bf6c89.entry.js +1 -0
  224. package/dist/ripple/{p-98e77431.entry.js → p-0b77b2a1.entry.js} +1 -1
  225. package/dist/ripple/p-0fe97e85.system.js +2 -0
  226. package/dist/ripple/p-109684b1.entry.js +1 -0
  227. package/dist/ripple/p-11383396.system.entry.js +1 -0
  228. package/dist/ripple/{p-7b5ac088.entry.js → p-19dec591.entry.js} +1 -1
  229. package/dist/ripple/p-1cb6b37e.entry.js +1 -0
  230. package/dist/ripple/p-2197287c.entry.js +1 -0
  231. package/dist/ripple/{p-5ab8174c.entry.js → p-22e6104e.entry.js} +1 -1
  232. package/dist/ripple/p-24d88d8d.system.entry.js +1 -0
  233. package/dist/ripple/{p-ff095cec.entry.js → p-25446670.entry.js} +1 -1
  234. package/dist/ripple/p-2bac4b4e.system.entry.js +1 -0
  235. package/dist/ripple/p-30a9ba6e.entry.js +1 -0
  236. package/dist/ripple/p-32cf6907.system.entry.js +1 -0
  237. package/dist/ripple/p-379fe53e.entry.js +1 -0
  238. package/dist/ripple/{p-4aae5688.entry.js → p-3a070f35.entry.js} +1 -1
  239. package/dist/ripple/{p-181068af.system.entry.js → p-3db9e0d8.system.entry.js} +1 -1
  240. package/dist/ripple/p-41e8a079.entry.js +1 -0
  241. package/dist/ripple/p-4272aa37.system.js +1 -0
  242. package/dist/ripple/p-45126063.system.entry.js +1 -0
  243. package/dist/ripple/{p-fd34619f.system.entry.js → p-48a6acfa.system.entry.js} +1 -1
  244. package/dist/ripple/p-4de51706.js +2 -0
  245. package/dist/ripple/{p-245f0080.entry.js → p-4e616347.entry.js} +1 -1
  246. package/dist/ripple/p-577ea283.system.entry.js +1 -0
  247. package/dist/ripple/p-5a04c222.entry.js +1 -0
  248. package/dist/ripple/{p-3036a712.js → p-5b2c1bd1.js} +1 -1
  249. package/dist/ripple/{p-e0929c38.system.js → p-5bbf7fdc.system.js} +1 -1
  250. package/dist/ripple/p-5dbad2ff.entry.js +1 -0
  251. package/dist/ripple/p-625aeeec.system.entry.js +1 -0
  252. package/dist/ripple/p-635f40b1.entry.js +1 -0
  253. package/dist/ripple/p-63fabfed.entry.js +1 -0
  254. package/dist/ripple/p-6dc3ee86.system.js +1 -0
  255. package/dist/ripple/p-7144d185.system.entry.js +1 -0
  256. package/dist/ripple/p-720b6ab0.entry.js +1 -0
  257. package/dist/ripple/p-7573a2fa.entry.js +1 -0
  258. package/dist/ripple/p-76d2dada.entry.js +1 -0
  259. package/dist/ripple/{p-0f117524.system.entry.js → p-780d4673.system.entry.js} +1 -1
  260. package/dist/ripple/p-79af9baf.entry.js +1 -0
  261. package/dist/ripple/{p-b6dcc6d8.system.entry.js → p-7a9ffbcb.system.entry.js} +1 -1
  262. package/dist/ripple/{p-f170963b.system.entry.js → p-7e56da2e.system.entry.js} +1 -1
  263. package/dist/ripple/p-7f4b4071.system.entry.js +1 -0
  264. package/dist/ripple/{p-a36f5e7d.system.entry.js → p-8081f931.system.entry.js} +1 -1
  265. package/dist/ripple/p-84926b89.system.entry.js +1 -0
  266. package/dist/ripple/p-88406560.system.entry.js +1 -0
  267. package/dist/ripple/{p-f95bc54b.entry.js → p-8f38dc86.entry.js} +1 -1
  268. package/dist/ripple/p-92c1ff36.system.entry.js +1 -0
  269. package/dist/ripple/{p-0e1523db.entry.js → p-98120733.entry.js} +1 -1
  270. package/dist/ripple/p-9c6d6b26.system.entry.js +1 -0
  271. package/dist/ripple/{p-e3a15de3.system.entry.js → p-9d8c2a52.system.entry.js} +1 -1
  272. package/dist/ripple/{p-47d993b9.system.entry.js → p-a99b05de.system.entry.js} +1 -1
  273. package/dist/ripple/{p-ce028b38.system.js → p-ae32eb8d.system.js} +1 -1
  274. package/dist/ripple/p-ae8ad491.entry.js +1 -0
  275. package/dist/ripple/p-b0579a2a.system.entry.js +1 -0
  276. package/dist/ripple/p-b0f14557.system.entry.js +1 -0
  277. package/dist/ripple/p-ba751ca4.js +1 -0
  278. package/dist/ripple/{p-39f4fca0.system.entry.js → p-bd27ded2.system.entry.js} +1 -1
  279. package/dist/ripple/p-c38f2a00.system.entry.js +1 -0
  280. package/dist/ripple/p-c51293e2.entry.js +1 -0
  281. package/dist/ripple/p-c717d895.entry.js +1 -0
  282. package/dist/ripple/p-c8873e0c.system.entry.js +1 -0
  283. package/dist/ripple/p-ca9d9447.system.entry.js +1 -0
  284. package/dist/ripple/p-cda6c77e.entry.js +1 -0
  285. package/dist/ripple/{p-ecd26b33.system.entry.js → p-ce5455a3.system.entry.js} +1 -1
  286. package/dist/ripple/p-d265a41e.entry.js +1 -0
  287. package/dist/ripple/p-d325a37b.entry.js +1 -0
  288. package/dist/ripple/p-d7c47dc0.system.entry.js +1 -0
  289. package/dist/ripple/p-d88d806e.js +1 -0
  290. package/dist/ripple/p-dcfdbd30.entry.js +1 -0
  291. package/dist/ripple/p-eb649319.system.js +1 -0
  292. package/dist/ripple/p-ef3fe609.system.entry.js +1 -0
  293. package/dist/ripple/p-f6f29a56.entry.js +1 -0
  294. package/dist/ripple/{p-96cc3c63.js → p-f79a6e32.js} +1 -1
  295. package/dist/ripple/p-f93858ad.system.entry.js +1 -0
  296. package/dist/ripple/p-fc7e5296.entry.js +1 -0
  297. package/dist/ripple/p-ff80aadd.system.entry.js +1 -0
  298. package/dist/ripple/ripple.esm.js +1 -1
  299. package/dist/ripple/ripple.js +1 -1
  300. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +6 -3
  301. package/dist/types/global/interfaces.d.ts +3 -0
  302. package/dist/types/stencil-public-runtime.d.ts +10 -3
  303. package/package.json +1 -1
  304. package/dist/cjs/index-3c3d6c9f.js +0 -1810
  305. package/dist/esm/index-0ed3ed7d.js +0 -1780
  306. package/dist/esm-es5/app-globals-0c592c57.js +0 -1
  307. package/dist/esm-es5/functions-eda88c5f.js +0 -1
  308. package/dist/esm-es5/index-0ed3ed7d.js +0 -1
  309. package/dist/ripple/p-0096e233.system.entry.js +0 -1
  310. package/dist/ripple/p-0ad27de3.system.entry.js +0 -1
  311. package/dist/ripple/p-0ccf9f96.entry.js +0 -1
  312. package/dist/ripple/p-0f7a85f4.entry.js +0 -1
  313. package/dist/ripple/p-13760c2c.entry.js +0 -1
  314. package/dist/ripple/p-14bab3fa.system.entry.js +0 -1
  315. package/dist/ripple/p-1e536698.js +0 -1
  316. package/dist/ripple/p-2c18b6d1.system.entry.js +0 -1
  317. package/dist/ripple/p-340b18ea.entry.js +0 -1
  318. package/dist/ripple/p-37c39a40.system.entry.js +0 -1
  319. package/dist/ripple/p-3f5e94e3.system.js +0 -1
  320. package/dist/ripple/p-48beea19.system.js +0 -1
  321. package/dist/ripple/p-4ea963f3.system.entry.js +0 -1
  322. package/dist/ripple/p-501d3115.entry.js +0 -1
  323. package/dist/ripple/p-527581c5.entry.js +0 -1
  324. package/dist/ripple/p-563b5820.entry.js +0 -1
  325. package/dist/ripple/p-57695dba.js +0 -2
  326. package/dist/ripple/p-5c6c325e.system.entry.js +0 -1
  327. package/dist/ripple/p-5f4c8d63.system.entry.js +0 -1
  328. package/dist/ripple/p-68e3e7c0.entry.js +0 -1
  329. package/dist/ripple/p-68fec757.system.entry.js +0 -1
  330. package/dist/ripple/p-6982bc34.entry.js +0 -1
  331. package/dist/ripple/p-6a793c40.system.entry.js +0 -1
  332. package/dist/ripple/p-6c31f0ad.system.entry.js +0 -1
  333. package/dist/ripple/p-6daf1bd3.system.entry.js +0 -1
  334. package/dist/ripple/p-6e406e8b.entry.js +0 -1
  335. package/dist/ripple/p-77210f26.entry.js +0 -1
  336. package/dist/ripple/p-7a844f5d.system.js +0 -2
  337. package/dist/ripple/p-7d5aaa73.system.entry.js +0 -1
  338. package/dist/ripple/p-80c92919.system.entry.js +0 -1
  339. package/dist/ripple/p-81fd2ed5.system.entry.js +0 -1
  340. package/dist/ripple/p-84d294d1.system.js +0 -1
  341. package/dist/ripple/p-85178a0d.entry.js +0 -1
  342. package/dist/ripple/p-8768ba4d.system.entry.js +0 -1
  343. package/dist/ripple/p-8af21b69.entry.js +0 -1
  344. package/dist/ripple/p-a30eef53.entry.js +0 -1
  345. package/dist/ripple/p-ad6c979f.entry.js +0 -1
  346. package/dist/ripple/p-af8c1cfa.entry.js +0 -1
  347. package/dist/ripple/p-b19be746.entry.js +0 -1
  348. package/dist/ripple/p-b483ec14.entry.js +0 -1
  349. package/dist/ripple/p-b4a34241.entry.js +0 -1
  350. package/dist/ripple/p-be28a95e.system.entry.js +0 -1
  351. package/dist/ripple/p-c6d970a4.entry.js +0 -1
  352. package/dist/ripple/p-dba63006.system.entry.js +0 -1
  353. package/dist/ripple/p-dbb37269.system.entry.js +0 -1
  354. package/dist/ripple/p-e19f8c43.js +0 -1
  355. package/dist/ripple/p-e3d66797.entry.js +0 -1
  356. package/dist/ripple/p-e64276f2.entry.js +0 -1
  357. package/dist/ripple/p-e9978b2f.entry.js +0 -1
  358. package/dist/ripple/p-ecbd3ea9.system.entry.js +0 -1
  359. package/dist/ripple/p-ee49cb03.entry.js +0 -1
  360. package/dist/ripple/p-f0fbb86b.system.entry.js +0 -1
  361. package/dist/ripple/p-f4f3bf9f.system.entry.js +0 -1
  362. package/dist/types/components/datepickers/priv-calendar/priv-calendar.d.ts +0 -72
  363. package/dist/types/components/datepickers/wm-date-range.d.ts +0 -68
@@ -0,0 +1,271 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import * as globalFuncs from "../../global/functions";
3
+ jest.spyOn(globalFuncs, "getTextDir").mockImplementation(() => "rtl");
4
+ import { Select } from "./wm-select";
5
+ import { Option } from "../wm-option/wm-option";
6
+ // mock MutationObserver
7
+ global.MutationObserver = jest.fn().mockImplementation(() => ({
8
+ observe: jest.fn(),
9
+ unobserve: jest.fn(),
10
+ disconnect: jest.fn(),
11
+ }));
12
+ describe("wm-select", () => {
13
+ it("builds", async () => {
14
+ const comp = await newSpecPage({
15
+ components: [Select, Option],
16
+ html: '<wm-select label="mock label"><wm-option selected></wm-option></wm-select>',
17
+ });
18
+ expect(comp.root).toMatchSnapshot();
19
+ });
20
+ it("has the right props", () => {
21
+ const select = new Select();
22
+ expect(select).toHaveProperty("label");
23
+ expect(select).toHaveProperty("labelPosition");
24
+ expect(select).toHaveProperty("maxHeight");
25
+ expect(select).toHaveProperty("requiredField");
26
+ expect(select).toHaveProperty("errorMessage");
27
+ expect(select).toHaveProperty("disabled");
28
+ expect(select).toHaveProperty("multiple");
29
+ expect(select).toHaveProperty("search");
30
+ expect(select).toHaveProperty("selectAll");
31
+ expect(select).toHaveProperty("placeholder");
32
+ expect(select).toHaveProperty("isExpanded");
33
+ expect(select).toHaveProperty("childOptions");
34
+ expect(select).toHaveProperty("keysSoFar");
35
+ expect(select).toHaveProperty("searchIndex");
36
+ });
37
+ it("has the right roles", async () => {
38
+ const page = await newSpecPage({
39
+ components: [Select, Option],
40
+ html: '<wm-select id="random-id" search label="mock label"><wm-option selected>First option</wm-option></wm-select>',
41
+ });
42
+ const searchFieldEl = await page.root.shadowRoot.querySelector(".searchfield");
43
+ const listboxEl = await page.root.shadowRoot.querySelector("#list");
44
+ expect(listboxEl).toEqualAttribute("role", "listbox");
45
+ expect(listboxEl).not.toHaveAttribute("aria-multiselectable"); // only multiselect
46
+ expect(searchFieldEl).toEqualAttribute("role", "combobox");
47
+ });
48
+ it("multiselect has multiselectable aria attr", async () => {
49
+ const page = await newSpecPage({
50
+ components: [Select, Option],
51
+ html: '<wm-select multiple label="mock label"><wm-option>1</wm-option></wm-select>',
52
+ });
53
+ const listboxEl = await page.root.shadowRoot.querySelector("#list");
54
+ expect(listboxEl).toHaveAttribute("aria-multiselectable");
55
+ });
56
+ it("displays error message", async () => {
57
+ const page = await newSpecPage({
58
+ components: [Select, Option],
59
+ html: '<wm-select error-message="test error" label="mock label"><wm-option selected></wm-option></wm-select>',
60
+ });
61
+ const errorMessage = await page.root.shadowRoot.querySelector(".error-message");
62
+ expect(errorMessage.textContent).toBe("test error");
63
+ });
64
+ it("adapts options correctly - multiselect", async () => {
65
+ const page = await newSpecPage({
66
+ components: [Select, Option],
67
+ html: '<wm-select multiple label="mock label"><wm-option></wm-option></wm-select>',
68
+ });
69
+ const option = await page.root.querySelector("wm-option");
70
+ expect(option === null || option === void 0 ? void 0 : option.classList.contains("multi-option")).toBe(true);
71
+ });
72
+ describe("reacts to wm-option events", () => {
73
+ it("handles option Enter", () => {
74
+ // handleChildEnter
75
+ const component = new Select();
76
+ const mockClose = (component.close = jest.fn());
77
+ component.handleChildEnter();
78
+ expect(mockClose).toHaveBeenCalledTimes(1);
79
+ jest.restoreAllMocks();
80
+ });
81
+ it("handles option Up", () => {
82
+ // handleChildUp
83
+ const component = new Select();
84
+ const mockMoveUp = (component.moveUp = jest.fn());
85
+ const optionEl = document.createElement("option");
86
+ const event = { detail: optionEl };
87
+ component.handleChildUp(event);
88
+ expect(mockMoveUp).toHaveBeenCalledTimes(1);
89
+ expect(mockMoveUp).toHaveBeenCalledWith(optionEl);
90
+ jest.restoreAllMocks();
91
+ });
92
+ it("handles option Down", () => {
93
+ // handleChildDown
94
+ const component = new Select();
95
+ const mockMoveDown = (component.moveDown = jest.fn());
96
+ const optionEl = document.createElement("option");
97
+ const event = { detail: optionEl };
98
+ component.handleChildDown(event);
99
+ expect(mockMoveDown).toHaveBeenCalledTimes(1);
100
+ expect(mockMoveDown).toHaveBeenCalledWith(optionEl);
101
+ jest.restoreAllMocks();
102
+ });
103
+ it("handles option Home", () => {
104
+ // moveToFirstOption
105
+ const component = new Select();
106
+ const mockFocusOption = (component.focusOption = jest.fn());
107
+ const option1 = document.createElement("option");
108
+ option1.textContent = "1";
109
+ const option2 = document.createElement("option");
110
+ option2.textContent = "2";
111
+ const option3 = document.createElement("option");
112
+ option3.textContent = "3";
113
+ jest
114
+ .spyOn(component, "visibleOptionEls", "get")
115
+ // @ts-ignore
116
+ .mockReturnValue([option1, option2, option3]);
117
+ component.moveToFirstOption();
118
+ expect(mockFocusOption).toHaveBeenCalledTimes(1);
119
+ expect(mockFocusOption).toHaveBeenCalledWith(option1);
120
+ jest.restoreAllMocks();
121
+ });
122
+ it("handles option End", () => {
123
+ // moveToLastOption
124
+ const component = new Select();
125
+ const mockFocusOption = (component.focusOption = jest.fn());
126
+ const option1 = document.createElement("option");
127
+ option1.textContent = "1";
128
+ const option2 = document.createElement("option");
129
+ option2.textContent = "2";
130
+ const option3 = document.createElement("option");
131
+ option3.textContent = "3";
132
+ jest
133
+ .spyOn(component, "visibleOptionEls", "get")
134
+ // @ts-ignore
135
+ .mockReturnValue([option1, option2, option3]);
136
+ component.moveToLastOption();
137
+ expect(mockFocusOption).toHaveBeenCalledTimes(1);
138
+ expect(mockFocusOption).toHaveBeenCalledWith(option3);
139
+ jest.restoreAllMocks();
140
+ });
141
+ it("handles option Escape", () => {
142
+ // closePopupOnEscape
143
+ const component = new Select();
144
+ const mockClose = (component.close = jest.fn());
145
+ component.closePopupOnEscape();
146
+ expect(mockClose).toHaveBeenCalledTimes(1);
147
+ expect(mockClose).toHaveBeenCalledWith();
148
+ jest.restoreAllMocks();
149
+ });
150
+ it("handles option Blur", () => {
151
+ // handleOptionBlur
152
+ const component = new Select();
153
+ const blurObserver = jest.fn();
154
+ const fakeTarget = document.createElement("div");
155
+ component.el.addEventListener("blur", blurObserver);
156
+ component.handleOptionBlur({ detail: { relatedTarget: component.el } });
157
+ expect(blurObserver).toHaveBeenCalledTimes(0);
158
+ jest.clearAllMocks();
159
+ component.handleOptionBlur({ detail: { relatedTarget: fakeTarget } });
160
+ expect(blurObserver).toHaveBeenCalledTimes(1);
161
+ expect(blurObserver.mock.calls[0][0].relatedTarget).toStrictEqual(fakeTarget);
162
+ jest.clearAllMocks();
163
+ jest.restoreAllMocks();
164
+ });
165
+ });
166
+ it("prevent button blur", () => {
167
+ const component = new Select();
168
+ const mockStopPropagation = jest.fn();
169
+ const event = { stopPropagation: mockStopPropagation };
170
+ const fakeTarget = document.createElement("div");
171
+ // @ts-ignore
172
+ event.relatedTarget = fakeTarget;
173
+ component.handleButtonBlur(event);
174
+ expect(mockStopPropagation).toHaveBeenCalledTimes(0);
175
+ jest.clearAllMocks();
176
+ // @ts-ignore
177
+ event.relatedTarget = component.el;
178
+ component.handleButtonBlur(event);
179
+ expect(mockStopPropagation).toHaveBeenCalledTimes(1);
180
+ jest.clearAllMocks();
181
+ jest.restoreAllMocks();
182
+ });
183
+ it("handles keydowns", () => {
184
+ const component = new Select();
185
+ const mockPreventDefault = jest.fn();
186
+ const event = { preventDefault: mockPreventDefault, key: "" };
187
+ const mockOpen = (component.open = jest.fn());
188
+ // @ts-ignore
189
+ event.key = "ArrowDown";
190
+ component.isExpanded = false;
191
+ component.handleKey(event);
192
+ expect(mockPreventDefault).toHaveBeenCalledTimes(1);
193
+ expect(mockOpen).toHaveBeenCalledTimes(1);
194
+ expect(mockOpen).toHaveBeenCalledWith("next");
195
+ jest.clearAllMocks();
196
+ component.isExpanded = true;
197
+ component.handleKey(event);
198
+ expect(mockPreventDefault).toHaveBeenCalledTimes(0);
199
+ expect(mockOpen).toHaveBeenCalledTimes(0);
200
+ jest.clearAllMocks();
201
+ // @ts-ignore
202
+ event.key = "ArrowUp";
203
+ component.isExpanded = false;
204
+ component.handleKey(event);
205
+ expect(mockPreventDefault).toHaveBeenCalledTimes(1);
206
+ expect(mockOpen).toHaveBeenCalledTimes(1);
207
+ expect(mockOpen).toHaveBeenCalledWith("previous");
208
+ jest.clearAllMocks();
209
+ component.isExpanded = true;
210
+ component.handleKey(event);
211
+ expect(mockPreventDefault).toHaveBeenCalledTimes(0);
212
+ expect(mockOpen).toHaveBeenCalledTimes(0);
213
+ jest.clearAllMocks();
214
+ // any other key
215
+ // @ts-ignore
216
+ event.key = "f";
217
+ component.handleKey(event);
218
+ expect(mockPreventDefault).toHaveBeenCalledTimes(0);
219
+ expect(mockOpen).toHaveBeenCalledTimes(0);
220
+ jest.clearAllMocks();
221
+ jest.restoreAllMocks();
222
+ });
223
+ describe("select-all option", () => {
224
+ it("shows select-all button when prop is set and multiple is set", async () => {
225
+ const page = await newSpecPage({
226
+ components: [Select, Option],
227
+ html: '<wm-select multiple select-all label="mock label"><wm-option></wm-option></wm-select>',
228
+ });
229
+ const btn = page.root.shadowRoot.querySelector(".select-all");
230
+ expect(btn).not.toBeNull();
231
+ });
232
+ it("doesn't show select-all button when prop is not set", async () => {
233
+ const page = await newSpecPage({
234
+ components: [Select, Option],
235
+ html: '<wm-select label="mock label"><wm-option selected></wm-option></wm-select>',
236
+ });
237
+ const btn = page.root.shadowRoot.querySelector(".select-all");
238
+ expect(btn).toBeNull();
239
+ });
240
+ it("doesn't show select-all button when prop is set but multiple is not", async () => {
241
+ const page = await newSpecPage({
242
+ components: [Select, Option],
243
+ html: '<wm-select select-all label="mock label"><wm-option selected></wm-option></wm-select>',
244
+ });
245
+ const btn = page.root.shadowRoot.querySelector(".select-all");
246
+ expect(btn).toBeNull();
247
+ });
248
+ it("button text is 'Select all'", async () => {
249
+ const page = await newSpecPage({
250
+ components: [Select, Option],
251
+ html: `<wm-select multiple select-all label="mock label">
252
+ <wm-option>first</wm-option>
253
+ <wm-option>second</wm-option>
254
+ </wm-select>`,
255
+ });
256
+ const btn = page.root.shadowRoot.querySelector(".select-all");
257
+ expect(btn.textContent).toBe("Select All");
258
+ });
259
+ it("button text is 'Deselect all' when all options are selected", async () => {
260
+ const page = await newSpecPage({
261
+ components: [Select, Option],
262
+ html: `<wm-select multiple select-all label="mock label">
263
+ <wm-option selected>first</wm-option>
264
+ <wm-option selected>second</wm-option>
265
+ </wm-select>`,
266
+ });
267
+ const btn = page.root.shadowRoot.querySelector(".select-all");
268
+ expect(btn.textContent).toBe("Deselect All");
269
+ });
270
+ });
271
+ });
@@ -36,39 +36,31 @@
36
36
  --wmcolor-snackbar-close-icon-hover: var(--wmcolor-button-icon-navigational-hover-ondark);
37
37
  --wmcolor-snackbar-close-icon: var(--wmcolor-button-icon-navigational-ondark);
38
38
  --wmcolor-snackbar-text: var(--wmcolor-text-ondark);
39
- }
40
- :host * {
41
- box-sizing: border-box;
42
- margin: unset;
43
- }
44
- :host .wm-snackbars {
45
39
  position: fixed;
46
40
  bottom: 0;
47
41
  left: 1.25rem;
48
42
  right: 1.25rem;
49
- padding: 0.25rem 0.625rem 1.875rem;
50
43
  z-index: 2001;
44
+ }
45
+ :host * {
46
+ box-sizing: border-box;
47
+ margin: unset;
48
+ }
49
+ :host .list-wrapper {
50
+ -webkit-overflow-scrolling: touch;
51
51
  max-width: 35.5rem;
52
52
  max-height: 17.5rem;
53
- -webkit-overflow-scrolling: touch;
54
53
  overflow: auto;
54
+ padding: 0.25rem 0.625rem 1.875rem;
55
+ display: flex;
56
+ flex-direction: column-reverse;
57
+ gap: 1.25rem;
55
58
  }
56
- :host .wm-snackbars.empty {
57
- -ms-transition: all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
58
- -webkit-transition: all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
59
- -moz-transition: all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
60
- transition: all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
61
- padding-top: 0;
62
- padding-bottom: 0;
63
- }
64
- :host .wm-snackbars .wm-snack-wrapper {
59
+ :host .wm-snack-wrapper {
65
60
  width: 100%;
66
61
  height: 100%;
67
62
  }
68
- :host .wm-snackbars .wm-snack-wrapper:not(:last-child) {
69
- margin-bottom: 1.25rem;
70
- }
71
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar {
63
+ :host .wm-snack-wrapper .wm-snackbar {
72
64
  -webkit-box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);
73
65
  -moz-box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);
74
66
  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);
@@ -86,14 +78,30 @@
86
78
  transition: all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);
87
79
  font-size: 0.875rem;
88
80
  color: var(--wmcolor-snackbar-text);
89
- padding: 0.9375rem 1.875rem;
81
+ padding: 4px 16px;
82
+ min-height: 3.75rem;
90
83
  background: var(--wmcolor-snackbar-background);
91
84
  opacity: 0;
92
85
  left: 0;
93
86
  position: relative;
94
87
  font-family: inherit;
95
88
  }
96
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link {
89
+ :host .wm-snack-wrapper .wm-snackbar.grow {
90
+ animation: grow 0.25s;
91
+ animation-fill-mode: forwards;
92
+ animation-timing-function: ease-in-out;
93
+ }
94
+ @keyframes grow {
95
+ 0% {
96
+ opacity: 0;
97
+ transform: scale(0.9);
98
+ }
99
+ 100% {
100
+ opacity: 1;
101
+ transform: scale(1);
102
+ }
103
+ }
104
+ :host .wm-snack-wrapper .wm-snackbar .link {
97
105
  letter-spacing: 0;
98
106
  text-transform: none;
99
107
  font-size: 0.875rem;
@@ -103,12 +111,12 @@
103
111
  height: auto;
104
112
  border-radius: 0;
105
113
  line-height: 1;
106
- margin: 0 3.125rem 0 0.625rem;
114
+ margin-right: 1rem;
107
115
  text-decoration: none;
108
116
  font-weight: 600;
109
117
  cursor: pointer;
110
118
  }
111
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link.new-window::after {
119
+ :host .wm-snack-wrapper .wm-snackbar .link.new-window::after {
112
120
  display: inline-block;
113
121
  font: normal normal normal 24px/1 "Material Design Icons";
114
122
  font-size: inherit;
@@ -117,27 +125,27 @@
117
125
  -webkit-font-smoothing: antialiased;
118
126
  -moz-osx-font-smoothing: grayscale;
119
127
  display: inline;
120
- content: "\f137";
128
+ content: "\f3cc";
121
129
  margin-left: 0.25rem;
122
130
  }
123
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:hover {
131
+ :host .wm-snack-wrapper .wm-snackbar .link:hover {
124
132
  text-decoration: underline;
125
133
  }
126
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:focus {
134
+ :host .wm-snack-wrapper .wm-snackbar .link:focus {
127
135
  outline: none;
128
136
  border: none;
129
137
  }
130
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link::-moz-focus-inner {
138
+ :host .wm-snack-wrapper .wm-snackbar .link::-moz-focus-inner {
131
139
  border: 0;
132
140
  outline: none;
133
141
  }
134
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar:not(:last-child) {
142
+ :host .wm-snack-wrapper .wm-snackbar:not(:last-child) {
135
143
  margin-bottom: 1.25rem;
136
144
  }
137
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar.active:not(button) {
145
+ :host .wm-snack-wrapper .wm-snackbar.active:not(button) {
138
146
  opacity: 1;
139
147
  }
140
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg {
148
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg {
141
149
  display: -webkit-box;
142
150
  display: -webkit-flex;
143
151
  display: -ms-flexbox;
@@ -154,10 +162,31 @@
154
162
  position: relative;
155
163
  padding: 0;
156
164
  }
157
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext {
165
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext {
166
+ display: flex;
167
+ flex-wrap: wrap;
168
+ gap: 12px;
158
169
  width: 100%;
170
+ align-items: center;
159
171
  }
160
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack {
172
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext .msg {
173
+ display: block;
174
+ flex: 0 0 0;
175
+ min-width: fit-content;
176
+ }
177
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext .msg.long {
178
+ min-width: 216px;
179
+ flex: 1 0 0;
180
+ }
181
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext .link {
182
+ display: flex;
183
+ flex: 0 0 auto;
184
+ }
185
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext .link span {
186
+ display: block;
187
+ white-space: nowrap;
188
+ }
189
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack {
161
190
  -webkit-box-shadow: none;
162
191
  -moz-box-shadow: none;
163
192
  box-shadow: none;
@@ -178,13 +207,7 @@
178
207
  text-align: center;
179
208
  letter-spacing: normal;
180
209
  }
181
- @media screen and (min-width: 48rem) {
182
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack {
183
- min-width: 1.875rem;
184
- min-height: 1.875rem;
185
- }
186
- }
187
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:before {
210
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:before {
188
211
  display: inline-block;
189
212
  font: normal normal normal 24px/1 "Material Design Icons";
190
213
  font-size: inherit;
@@ -195,24 +218,24 @@
195
218
  content: "\f156";
196
219
  font-size: 1.12rem;
197
220
  }
198
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:hover {
221
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:hover {
199
222
  background-color: var(--wmcolor-snackbar-close-background-hover);
200
223
  color: var(--wmcolor-snackbar-close-icon-hover);
201
224
  }
202
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus {
225
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus {
203
226
  outline: none;
204
227
  }
205
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack::-moz-focus-inner {
228
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack::-moz-focus-inner {
206
229
  border: 0;
207
230
  outline: none;
208
231
  }
209
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:active {
232
+ :host .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:active {
210
233
  -ms-transform: scale(0.9, 0.9);
211
234
  -webkit-transform: scale(0.9, 0.9);
212
235
  -moz-transform: scale(0.9, 0.9);
213
236
  transform: scale(0.9, 0.9);
214
237
  }
215
- :host .wm-snackbars .wm-snack-wrapper .wm-snackbar .sr-only {
238
+ :host .wm-snack-wrapper .wm-snackbar .sr-only {
216
239
  position: absolute !important;
217
240
  width: 1px !important;
218
241
  height: 1px !important;
@@ -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 >>> .wm-snackbarmsg");
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 >>> .wm-snackbarmsg");
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 >>> .wm-snackbarmsg");
44
+ expect(snack).not.toBeNull();
45
+ await new Promise((resolve) => {
46
+ setTimeout(() => {
47
+ resolve("");
48
+ }, 21000);
49
+ });
50
+ snack = await page.find("wm-snackbar >>> .wm-snackbarmsg");
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 >>> .wm-snackbarmsg");
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 >>> .wm-snackbarmsg");
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 >>> .wm-snackbarmsg");
108
+ expect(snackbar).toBeNull();
109
+ const focusedElId = await page.evaluate(() => document.activeElement.id);
110
+ expect(focusedElId).toBe("create-snack");
111
+ });
112
+ });