@watermarkinsights/ripple 5.6.0-2 → 5.6.0-3

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 (382) hide show
  1. package/dist/cjs/{chartFunctions-800ea87d.js → chartFunctions-fb38580b.js} +10 -7
  2. package/dist/cjs/{functions-c6e27c75.js → functions-a70fcff7.js} +7 -104
  3. package/dist/{esm/app-globals-bbc3f842.js → cjs/global-85a3a126.js} +2 -7
  4. package/dist/cjs/index-e86c28b6.js +2653 -0
  5. package/dist/cjs/{intl-9f836d29.js → intl-4a3a3a94.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 +9 -12
  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-footer.cjs.entry.js +3 -4
  24. package/dist/cjs/wm-modal-header.cjs.entry.js +5 -6
  25. package/dist/cjs/wm-modal.cjs.entry.js +5 -6
  26. package/dist/cjs/wm-navigation_3.cjs.entry.js +10 -13
  27. package/dist/cjs/wm-navigator.cjs.entry.js +3 -4
  28. package/dist/cjs/wm-nested-select.cjs.entry.js +7 -8
  29. package/dist/cjs/wm-optgroup.cjs.entry.js +4 -5
  30. package/dist/cjs/wm-option_2.cjs.entry.js +8 -10
  31. package/dist/cjs/wm-pagination.cjs.entry.js +4 -5
  32. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +8 -10
  33. package/dist/cjs/wm-search.cjs.entry.js +6 -7
  34. package/dist/cjs/wm-snackbar.cjs.entry.js +6 -7
  35. package/dist/cjs/wm-tab-item_3.cjs.entry.js +8 -11
  36. package/dist/cjs/wm-tag-input.cjs.entry.js +7 -8
  37. package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
  38. package/dist/cjs/wm-textarea.cjs.entry.js +5 -6
  39. package/dist/cjs/wm-timepicker.cjs.entry.js +5 -6
  40. package/dist/cjs/wm-toggletip.cjs.entry.js +5 -6
  41. package/dist/cjs/wm-uploader.cjs.entry.js +6 -7
  42. package/dist/cjs/wm-wrapper.cjs.entry.js +1 -1
  43. package/dist/collection/collection-manifest.json +2 -2
  44. package/dist/collection/components/charts/chartFunctions.js +3 -3
  45. package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
  46. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +81 -0
  47. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +2 -2
  48. package/dist/collection/components/charts/screenshots.e2e.js +96 -0
  49. package/dist/collection/components/charts/wm-chart/wm-chart.css +13 -8
  50. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +213 -0
  51. package/dist/collection/components/charts/wm-chart/wm-chart.js +3 -5
  52. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +37 -0
  53. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
  54. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +9 -9
  55. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
  56. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +13 -8
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
  58. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
  59. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +1 -1
  60. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
  61. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +2 -2
  62. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
  63. package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
  64. package/dist/collection/components/datepickers/wm-date-range.js +13 -17
  65. package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
  66. package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
  67. package/dist/collection/components/datepickers/wm-datepicker.js +13 -17
  68. package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
  69. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +7 -10
  70. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +3 -3
  71. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +2 -2
  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-navigation/wm-navigation-hamburger.js +1 -1
  99. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  100. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  101. package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
  102. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  103. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  104. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  105. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +1 -1
  106. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  107. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  108. package/dist/collection/components/wm-option/wm-option.e2e.js +22 -0
  109. package/dist/collection/components/wm-option/wm-option.js +1 -1
  110. package/dist/collection/components/wm-option/wm-option.spec.js +63 -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-7e5619f6.js → chartFunctions-c07590f5.js} +10 -7
  142. package/dist/esm/{functions-046fc5a3.js → functions-dea8b0f6.js} +8 -105
  143. package/dist/{cjs/app-globals-2eb5411e.js → esm/global-fc303bc4.js} +1 -10
  144. package/dist/esm/index-558b5a82.js +2622 -0
  145. package/dist/esm/{intl-0822738a.js → intl-417d8b33.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 +9 -12
  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-footer.entry.js +3 -4
  164. package/dist/esm/wm-modal-header.entry.js +5 -6
  165. package/dist/esm/wm-modal.entry.js +5 -6
  166. package/dist/esm/wm-navigation_3.entry.js +10 -13
  167. package/dist/esm/wm-navigator.entry.js +3 -4
  168. package/dist/esm/wm-nested-select.entry.js +7 -8
  169. package/dist/esm/wm-optgroup.entry.js +4 -5
  170. package/dist/esm/wm-option_2.entry.js +8 -10
  171. package/dist/esm/wm-pagination.entry.js +4 -5
  172. package/dist/esm/wm-progress-indicator_3.entry.js +8 -10
  173. package/dist/esm/wm-search.entry.js +6 -7
  174. package/dist/esm/wm-snackbar.entry.js +6 -7
  175. package/dist/esm/wm-tab-item_3.entry.js +8 -11
  176. package/dist/esm/wm-tag-input.entry.js +7 -8
  177. package/dist/esm/wm-tag-option.entry.js +2 -2
  178. package/dist/esm/wm-textarea.entry.js +5 -6
  179. package/dist/esm/wm-timepicker.entry.js +5 -6
  180. package/dist/esm/wm-toggletip.entry.js +5 -6
  181. package/dist/esm/wm-uploader.entry.js +6 -7
  182. package/dist/esm/wm-wrapper.entry.js +1 -1
  183. package/dist/esm-es5/{chartFunctions-7e5619f6.js → chartFunctions-c07590f5.js} +1 -1
  184. package/dist/esm-es5/functions-dea8b0f6.js +1 -0
  185. package/dist/esm-es5/global-fc303bc4.js +1 -0
  186. package/dist/esm-es5/index-558b5a82.js +1 -0
  187. package/dist/esm-es5/{intl-0822738a.js → intl-417d8b33.js} +1 -1
  188. package/dist/esm-es5/loader.js +1 -1
  189. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  190. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  191. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  192. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  193. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  194. package/dist/esm-es5/ripple.js +1 -1
  195. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  196. package/dist/esm-es5/wm-button.entry.js +1 -1
  197. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  198. package/dist/esm-es5/wm-chart.entry.js +1 -1
  199. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  200. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  201. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  202. package/dist/esm-es5/wm-file.entry.js +1 -1
  203. package/dist/esm-es5/wm-input.entry.js +1 -1
  204. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  206. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  207. package/dist/esm-es5/wm-modal.entry.js +1 -1
  208. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  209. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  210. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  211. package/dist/esm-es5/wm-optgroup.entry.js +1 -1
  212. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  213. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  214. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  215. package/dist/esm-es5/wm-search.entry.js +1 -1
  216. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  217. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  218. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  219. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  220. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  221. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  222. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  223. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  224. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  225. package/dist/loader/cdn.js +2 -1
  226. package/dist/loader/index.cjs.js +2 -1
  227. package/dist/loader/index.d.ts +0 -3
  228. package/dist/loader/index.es2017.js +2 -1
  229. package/dist/loader/index.js +2 -1
  230. package/dist/ripple/p-021ff5fa.system.entry.js +1 -0
  231. package/dist/ripple/{p-1a474fb3.entry.js → p-0289e88d.entry.js} +1 -1
  232. package/dist/ripple/p-03a28fd8.entry.js +1 -0
  233. package/dist/ripple/p-10fffb96.entry.js +1 -0
  234. package/dist/ripple/p-182f1286.system.entry.js +1 -0
  235. package/dist/ripple/{p-fb3cfb8b.entry.js → p-1ae47d48.entry.js} +1 -1
  236. package/dist/ripple/p-1aead401.entry.js +1 -0
  237. package/dist/ripple/p-230cd6ec.system.entry.js +1 -0
  238. package/dist/ripple/p-24ba754f.entry.js +1 -0
  239. package/dist/ripple/p-24c56217.system.entry.js +1 -0
  240. package/dist/ripple/p-294b38ca.system.entry.js +1 -0
  241. package/dist/ripple/p-2c7bb996.system.entry.js +1 -0
  242. package/dist/ripple/p-2ed54dbc.entry.js +1 -0
  243. package/dist/ripple/p-2f899c05.system.entry.js +1 -0
  244. package/dist/ripple/p-311923b2.system.entry.js +1 -0
  245. package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
  246. package/dist/ripple/p-350223f1.entry.js +1 -0
  247. package/dist/ripple/p-3568472c.entry.js +1 -0
  248. package/dist/ripple/p-37687638.system.entry.js +1 -0
  249. package/dist/ripple/{p-e2c9204d.system.entry.js → p-37f39cd9.system.entry.js} +1 -1
  250. package/dist/ripple/p-3bdac9a4.entry.js +1 -0
  251. package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
  252. package/dist/ripple/{p-7135f074.system.entry.js → p-4df006b1.system.entry.js} +1 -1
  253. package/dist/ripple/p-4e1065d1.system.entry.js +1 -0
  254. package/dist/ripple/{p-18d3ad51.entry.js → p-503702ef.entry.js} +1 -1
  255. package/dist/ripple/{p-06792553.system.entry.js → p-5052c9dd.system.entry.js} +1 -1
  256. package/dist/ripple/p-568c595f.js +2 -0
  257. package/dist/ripple/p-588d678d.entry.js +1 -0
  258. package/dist/ripple/p-5b9babd9.system.entry.js +1 -0
  259. package/dist/ripple/p-61a19aa5.entry.js +1 -0
  260. package/dist/ripple/p-62744f66.entry.js +1 -0
  261. package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
  262. package/dist/ripple/p-667fed4f.system.js +1 -0
  263. package/dist/ripple/p-6a6bfac8.entry.js +1 -0
  264. package/dist/ripple/{p-c171f37b.entry.js → p-6dd5fd2e.entry.js} +1 -1
  265. package/dist/ripple/p-71ed7e56.system.entry.js +1 -0
  266. package/dist/ripple/p-87d0933f.system.entry.js +1 -0
  267. package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
  268. package/dist/ripple/p-8c02e3a3.entry.js +1 -0
  269. package/dist/ripple/{p-05f0f2e9.entry.js → p-8c7d5cd9.entry.js} +1 -1
  270. package/dist/ripple/p-902a54c5.entry.js +1 -0
  271. package/dist/ripple/{p-e562e32d.system.entry.js → p-91b21054.system.entry.js} +1 -1
  272. package/dist/ripple/p-94db7841.entry.js +1 -0
  273. package/dist/ripple/p-9e9c9d20.entry.js +1 -0
  274. package/dist/ripple/p-a20333e9.entry.js +1 -0
  275. package/dist/ripple/p-ab8d78cc.system.js +2 -0
  276. package/dist/ripple/{p-1123b0fd.entry.js → p-ace05e0b.entry.js} +1 -1
  277. package/dist/ripple/p-ade3d9a9.entry.js +1 -0
  278. package/dist/ripple/p-b0a02b42.system.entry.js +1 -0
  279. package/dist/ripple/p-b8963e4d.system.entry.js +1 -0
  280. package/dist/ripple/{p-c2fc7204.system.entry.js → p-b918e97a.system.entry.js} +1 -1
  281. package/dist/ripple/p-b99f6b96.js +1 -0
  282. package/dist/ripple/p-b9f650c7.system.js +1 -0
  283. package/dist/ripple/p-bb884a44.js +1 -0
  284. package/dist/ripple/p-c10f3273.entry.js +1 -0
  285. package/dist/ripple/{p-98bf2ccb.system.js → p-c28863e7.system.js} +1 -1
  286. package/dist/ripple/p-c4df2809.entry.js +1 -0
  287. package/dist/ripple/p-c4ec5884.system.entry.js +1 -0
  288. package/dist/ripple/p-c51398ba.entry.js +1 -0
  289. package/dist/ripple/p-c7dfcc99.system.entry.js +1 -0
  290. package/dist/ripple/p-c885c7f9.entry.js +1 -0
  291. package/dist/ripple/p-c93275bd.system.entry.js +1 -0
  292. package/dist/ripple/p-c9543950.system.entry.js +1 -0
  293. package/dist/ripple/p-c999c1f7.system.entry.js +1 -0
  294. package/dist/ripple/{p-772c4fd2.system.entry.js → p-cb690d83.system.entry.js} +1 -1
  295. package/dist/ripple/{p-b6df0519.system.js → p-cd7cef47.system.js} +1 -1
  296. package/dist/ripple/{p-28169294.js → p-d32bf479.js} +1 -1
  297. package/dist/ripple/{p-ac47e6f5.system.entry.js → p-d52545c7.system.entry.js} +1 -1
  298. package/dist/ripple/p-d9122935.system.entry.js +1 -0
  299. package/dist/ripple/p-daf03315.entry.js +1 -0
  300. package/dist/ripple/p-de283385.system.js +1 -0
  301. package/dist/ripple/p-de35505c.entry.js +1 -0
  302. package/dist/ripple/p-e004b92b.system.entry.js +1 -0
  303. package/dist/ripple/p-e26a6bd0.entry.js +1 -0
  304. package/dist/ripple/p-e42eeb59.system.entry.js +1 -0
  305. package/dist/ripple/{p-58a073f2.js → p-e8c12272.js} +1 -1
  306. package/dist/ripple/p-e9395ac5.entry.js +1 -0
  307. package/dist/ripple/p-eeebc2c7.entry.js +1 -0
  308. package/dist/ripple/p-f69a16d4.system.entry.js +1 -0
  309. package/dist/ripple/p-f8c6fa96.system.entry.js +1 -0
  310. package/dist/ripple/{p-e25e8ed7.system.entry.js → p-fb3d5a64.system.entry.js} +1 -1
  311. package/dist/ripple/ripple.esm.js +1 -1
  312. package/dist/ripple/ripple.js +1 -1
  313. package/dist/types/stencil-public-runtime.d.ts +10 -3
  314. package/package.json +1 -1
  315. package/dist/cjs/index-788526f5.js +0 -1863
  316. package/dist/esm/index-130e07bb.js +0 -1832
  317. package/dist/esm-es5/app-globals-bbc3f842.js +0 -1
  318. package/dist/esm-es5/functions-046fc5a3.js +0 -1
  319. package/dist/esm-es5/index-130e07bb.js +0 -1
  320. package/dist/ripple/p-0b7a64cd.system.entry.js +0 -1
  321. package/dist/ripple/p-0db47768.system.entry.js +0 -1
  322. package/dist/ripple/p-140d2dad.system.entry.js +0 -1
  323. package/dist/ripple/p-1727c66e.entry.js +0 -1
  324. package/dist/ripple/p-179e4aee.entry.js +0 -1
  325. package/dist/ripple/p-1ed0a315.system.entry.js +0 -1
  326. package/dist/ripple/p-200298b3.entry.js +0 -1
  327. package/dist/ripple/p-22704516.system.entry.js +0 -1
  328. package/dist/ripple/p-28a88d69.entry.js +0 -1
  329. package/dist/ripple/p-28a89430.entry.js +0 -1
  330. package/dist/ripple/p-29388a85.entry.js +0 -1
  331. package/dist/ripple/p-2952dc73.entry.js +0 -1
  332. package/dist/ripple/p-2ec551cc.entry.js +0 -1
  333. package/dist/ripple/p-30aa965a.entry.js +0 -1
  334. package/dist/ripple/p-341d27c6.system.entry.js +0 -1
  335. package/dist/ripple/p-354a97f2.entry.js +0 -1
  336. package/dist/ripple/p-35f78ec6.system.entry.js +0 -1
  337. package/dist/ripple/p-381d004e.system.entry.js +0 -1
  338. package/dist/ripple/p-39de670a.entry.js +0 -1
  339. package/dist/ripple/p-3ad563c4.system.entry.js +0 -1
  340. package/dist/ripple/p-3ea3db64.system.entry.js +0 -1
  341. package/dist/ripple/p-42925871.entry.js +0 -1
  342. package/dist/ripple/p-46f449d2.system.js +0 -1
  343. package/dist/ripple/p-540f74b1.system.entry.js +0 -1
  344. package/dist/ripple/p-61666258.entry.js +0 -1
  345. package/dist/ripple/p-64449b64.entry.js +0 -1
  346. package/dist/ripple/p-68fc8da3.system.entry.js +0 -1
  347. package/dist/ripple/p-6e95e98c.system.js +0 -1
  348. package/dist/ripple/p-71ddeb97.system.js +0 -1
  349. package/dist/ripple/p-7b5be38a.js +0 -1
  350. package/dist/ripple/p-833c05ca.entry.js +0 -1
  351. package/dist/ripple/p-8789b4c9.js +0 -1
  352. package/dist/ripple/p-8dd54304.system.entry.js +0 -1
  353. package/dist/ripple/p-9420679d.entry.js +0 -1
  354. package/dist/ripple/p-96697a65.system.entry.js +0 -1
  355. package/dist/ripple/p-974ca7a4.system.entry.js +0 -1
  356. package/dist/ripple/p-97e62c9d.system.entry.js +0 -1
  357. package/dist/ripple/p-b116fb2d.entry.js +0 -1
  358. package/dist/ripple/p-bb28c2c7.system.entry.js +0 -1
  359. package/dist/ripple/p-c9dc5cfa.entry.js +0 -1
  360. package/dist/ripple/p-ca6bbd68.system.entry.js +0 -1
  361. package/dist/ripple/p-cb85c4a7.entry.js +0 -1
  362. package/dist/ripple/p-cc5b07b1.system.entry.js +0 -1
  363. package/dist/ripple/p-cef8a45b.system.js +0 -2
  364. package/dist/ripple/p-d6502e2e.entry.js +0 -1
  365. package/dist/ripple/p-d78dad3d.entry.js +0 -1
  366. package/dist/ripple/p-d7b7c350.entry.js +0 -1
  367. package/dist/ripple/p-d9da0502.js +0 -2
  368. package/dist/ripple/p-dde32280.entry.js +0 -1
  369. package/dist/ripple/p-dfaa6a61.system.entry.js +0 -1
  370. package/dist/ripple/p-e2de8541.system.entry.js +0 -1
  371. package/dist/ripple/p-ea407923.entry.js +0 -1
  372. package/dist/ripple/p-ea9c152f.entry.js +0 -1
  373. package/dist/ripple/p-f02dce0f.system.entry.js +0 -1
  374. package/dist/ripple/p-f38622dc.system.entry.js +0 -1
  375. package/dist/ripple/p-f8c7adab.system.entry.js +0 -1
  376. package/dist/ripple/p-fdb4cf9e.system.entry.js +0 -1
  377. package/dist/ripple/p-feb80dd1.entry.js +0 -1
  378. package/dist/ripple/p-ff0e05e4.entry.js +0 -1
  379. package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +0 -68
  380. package/dist/types/components/selects/wm-nested-select/wm-nested-select.d.ts +0 -55
  381. package/dist/types/components/selects/wm-optgroup/wm-optgroup.d.ts +0 -16
  382. package/dist/types/components/wm-option/wm-option.d.ts +0 -40
@@ -0,0 +1,74 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import * as globalFunctions from "../../global/functions";
3
+ jest.spyOn(globalFunctions, "generateId").mockReturnValue("random-id");
4
+ import { Button } from "./wm-button";
5
+ describe("button", () => {
6
+ it("builds", async () => {
7
+ const page = await newSpecPage({
8
+ components: [Button],
9
+ html: "<wm-button></wm-button>",
10
+ });
11
+ expect(page.root).toMatchSnapshot();
12
+ });
13
+ it("has style and an icon type props with default values", async () => {
14
+ const page = await newSpecPage({
15
+ components: [Button],
16
+ html: "<wm-button></wm-button>",
17
+ });
18
+ const button = page.root;
19
+ const buttonEl = page.root.shadowRoot.querySelector("button");
20
+ expect(button).toHaveProperty("buttonType");
21
+ expect(button.buttonType).toEqual("secondary");
22
+ expect(buttonEl).toHaveClass("-secondary");
23
+ expect(button).toHaveProperty("icon");
24
+ expect(button.icon).toEqual(undefined);
25
+ expect(button).toHaveProperty("iconSize");
26
+ expect(button.iconSize).toBeUndefined;
27
+ });
28
+ it("has a method that validates the style property and resets an invalid property to a button type of secondary", async () => {
29
+ const page = await newSpecPage({
30
+ components: [Button],
31
+ html: "<wm-button></wm-button>",
32
+ });
33
+ const button = page.root;
34
+ expect(button).toHaveProperty("buttonType");
35
+ button.setAttribute("button-type", "foobar");
36
+ expect(button.buttonType).toEqual("secondary");
37
+ });
38
+ it("sets the aria label if the property labelForIdenticalButtons is passed", async () => {
39
+ const page = await newSpecPage({
40
+ components: [Button],
41
+ html: "<wm-button label-for-identical-buttons='read this instead of the text'>Button</wm-button>",
42
+ });
43
+ const button = page.root.shadowRoot.querySelector("button");
44
+ expect(button).toEqualAttribute("aria-label", "read this instead of the text");
45
+ });
46
+ // TOOLTIP
47
+ describe("error throwing", () => {
48
+ it("throws error when icononly or navigational button used without tooltip", async () => {
49
+ const mockFunc = jest.fn();
50
+ console.error = mockFunc;
51
+ await newSpecPage({
52
+ components: [Button],
53
+ html: "<wm-button icon='f1c0' button-type='icononly'></wm-button>",
54
+ });
55
+ expect(mockFunc).toHaveBeenCalledWith("wm-button should have a valid 'tooltip' property when button-type is set to 'icononly' or 'navigational'.");
56
+ const mockFunc2 = jest.fn();
57
+ console.error = mockFunc2;
58
+ await newSpecPage({
59
+ components: [Button],
60
+ html: "<wm-button icon='f1c0' button-type='navigational'></wm-button>",
61
+ });
62
+ expect(mockFunc2).toHaveBeenCalledWith("wm-button should have a valid 'tooltip' property when button-type is set to 'icononly' or 'navigational'.");
63
+ });
64
+ it("throws error when icononly button used without icon", async () => {
65
+ const mockFunc = jest.fn();
66
+ console.error = mockFunc;
67
+ await newSpecPage({
68
+ components: [Button],
69
+ html: "<wm-button button-type='icononly' tooltip='edit'></wm-button>",
70
+ });
71
+ expect(mockFunc).toHaveBeenCalledWith("wm-button should have a valid 'icon' property when button-type is set to 'icononly' or 'navigational'.");
72
+ });
73
+ });
74
+ });
@@ -168,7 +168,7 @@ export class File {
168
168
  return (h("div", { class: `file-wrapper ${this.progress === 100 ? "checked" : ""}` }, h("div", { class: `file ${this.errorMessage ? "--error" : ""}` }, this.renderFileName(), !this.errorMessage && (h("div", { class: `right-group ${this.isCondensed ? "condensed" : ""}` }, this.renderFileInfo(), this.fileActions !== "" && this.renderFileControls())), this.errorMessage && (h("wm-button", { "permanently-delete": true, "button-type": "textonly", "label-for-identical-buttons": this.generateClearButtonLabel(this.name), onClick: () => this.wmFileErrorCleared.emit() }, this.clearButtonText))), this.errorMessage && h("div", { class: "error-message" }, this.errorMessage)));
169
169
  }
170
170
  render() {
171
- return h(Host, { key: '5ad8e488eb44edfd26404408e27b8adc6d01e124', role: "listitem" }, this.isUploading ? this.renderFileInProgress() : this.renderFile());
171
+ return h(Host, { role: "listitem" }, this.isUploading ? this.renderFileInProgress() : this.renderFile());
172
172
  }
173
173
  static get is() { return "wm-file"; }
174
174
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,194 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { File } from "./wm-file";
3
+ // mock ResizeObserver
4
+ global.ResizeObserver = jest.fn().mockImplementation(() => ({
5
+ observe: jest.fn(),
6
+ unobserve: jest.fn(),
7
+ disconnect: jest.fn(),
8
+ }));
9
+ describe("wm-file", () => {
10
+ let html, page;
11
+ async function createPageHelper() {
12
+ return await newSpecPage({
13
+ components: [File],
14
+ html: `<wm-file
15
+ id="file1"
16
+ name="File retrieved from server"
17
+ type="pdf"
18
+ last-updated="10/30/97 3:46 PM"
19
+ size="22 KB"
20
+ file-actions="download preview delete"
21
+ >
22
+ </wm-file>`,
23
+ });
24
+ }
25
+ it("renders green check alongside recently uploaded files", async () => {
26
+ html = `<wm-file
27
+ id="file1"
28
+ name="File retrieved from server"
29
+ type="pdf"
30
+ last-updated="10/30/97 3:46 PM"
31
+ size="22 KB"
32
+ file-actions="download preview delete"
33
+ progress="100"
34
+ >
35
+ </wm-file>`;
36
+ page = await newSpecPage({ components: [File], html });
37
+ await page.waitForChanges();
38
+ const fileWrapperEl = page.root.shadowRoot.querySelector(".file-wrapper");
39
+ expect(fileWrapperEl).toHaveClass("checked");
40
+ });
41
+ it("renders file actions in the proper order", async () => {
42
+ html = `<wm-file
43
+ id="file1"
44
+ name="File retrieved from server"
45
+ type="pdf"
46
+ last-updated="10/30/97 3:46 PM"
47
+ size="22 KB"
48
+ file-actions="download delete preview"
49
+ >
50
+ </wm-file>`;
51
+ page = await newSpecPage({ components: [File], html });
52
+ await page.waitForChanges();
53
+ const fileActionEls = page.root.shadowRoot.querySelectorAll("wm-button");
54
+ expect(fileActionEls[0]).toEqualAttribute("tooltip", "Preview");
55
+ expect(fileActionEls[1]).toEqualAttribute("tooltip", "Download");
56
+ expect(fileActionEls[2]).toEqualAttribute("tooltip", "Delete");
57
+ });
58
+ it("defaults available actions to download and delete", async () => {
59
+ html = `<wm-file
60
+ id="file1"
61
+ name="File retrieved from server"
62
+ type="pdf"
63
+ last-updated="10/30/97 3:46 PM"
64
+ size="22 KB"
65
+ >
66
+ </wm-file>`;
67
+ page = await newSpecPage({ components: [File], html });
68
+ await page.waitForChanges();
69
+ const deleteButton = page.root.shadowRoot.querySelector(".delete-button");
70
+ const downloadButton = page.root.shadowRoot.querySelector(".download-button");
71
+ const previewButton = page.root.shadowRoot.querySelector(".preview-button");
72
+ expect(deleteButton).toBeTruthy();
73
+ expect(downloadButton).toBeTruthy();
74
+ expect(previewButton).toBeFalsy();
75
+ });
76
+ it("displays no file actions when an empty string is passed", async () => {
77
+ html = `<wm-file
78
+ id="file1"
79
+ name="File retrieved from server"
80
+ type="pdf"
81
+ last-updated="10/30/97 3:46 PM"
82
+ size="22 KB"
83
+ file-actions=""
84
+ >
85
+ </wm-file>`;
86
+ page = await newSpecPage({ components: [File], html });
87
+ await page.waitForChanges();
88
+ const deleteButton = page.root.shadowRoot.querySelector(".delete-button");
89
+ const downloadButton = page.root.shadowRoot.querySelector(".download-button");
90
+ const previewButton = page.root.shadowRoot.querySelector(".preview-button");
91
+ expect(deleteButton).toBeFalsy();
92
+ expect(downloadButton).toBeFalsy();
93
+ expect(previewButton).toBeFalsy();
94
+ });
95
+ it("renders timestamp by default, size if specified, or none based on show-info prop", async () => {
96
+ page = await createPageHelper();
97
+ await page.waitForChanges();
98
+ let fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
99
+ expect(fileInfoEl.textContent).toBe("10/30/97 3:46 PM");
100
+ page = await newSpecPage({
101
+ components: [File],
102
+ html: `<wm-file
103
+ id="file1"
104
+ name="File retrieved from server"
105
+ type="pdf"
106
+ last-updated="10/30/97 3:46 PM"
107
+ size="22 KB"
108
+ file-actions="download preview delete"
109
+ show-info="size"
110
+ >
111
+ </wm-file>`,
112
+ });
113
+ await page.waitForChanges();
114
+ fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
115
+ expect(fileInfoEl.textContent).toBe("22 KB");
116
+ page = await newSpecPage({
117
+ components: [File],
118
+ html: `<wm-file
119
+ id="file1"
120
+ name="File retrieved from server"
121
+ type="pdf"
122
+ last-updated="10/30/97 3:46 PM"
123
+ size="22 KB"
124
+ file-actions="download preview delete"
125
+ show-info="time"
126
+ >
127
+ </wm-file>`,
128
+ });
129
+ await page.waitForChanges();
130
+ fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
131
+ expect(fileInfoEl.textContent).toBe("10/30/97 3:46 PM");
132
+ page = await newSpecPage({
133
+ components: [File],
134
+ html: `<wm-file
135
+ id="file1"
136
+ name="File retrieved from server"
137
+ type="pdf"
138
+ last-updated="10/30/97 3:46 PM"
139
+ size="22 KB"
140
+ file-actions="download preview delete"
141
+ show-info="none"
142
+ >
143
+ </wm-file>`,
144
+ });
145
+ await page.waitForChanges();
146
+ fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
147
+ expect(fileInfoEl).toBeFalsy();
148
+ });
149
+ it("emits the appropriate events when user clicks the buttons", async () => {
150
+ const filePreviewedSpy = jest.fn();
151
+ const fileDownloadedSpy = jest.fn();
152
+ const fileDeletedSpy = jest.fn();
153
+ html = `<wm-file
154
+ id="file1"
155
+ name="File retrieved from server"
156
+ type="pdf"
157
+ last-updated="10/30/97 3:46 PM"
158
+ size="22 KB"
159
+ file-actions="download preview delete"
160
+ >
161
+ </wm-file>`;
162
+ page = await newSpecPage({ components: [File], html });
163
+ await page.waitForChanges();
164
+ page.root.addEventListener("wmFilePreview", filePreviewedSpy);
165
+ page.root.addEventListener("wmFileDownload", fileDownloadedSpy);
166
+ page.root.addEventListener("wmFileDelete", fileDeletedSpy);
167
+ // wmFilePreview
168
+ page.root.shadowRoot.querySelector(".preview-button").click();
169
+ await page.waitForChanges();
170
+ expect(filePreviewedSpy.mock.calls[0][0].target.id).toBe("file1");
171
+ // wmFileDownload
172
+ page.root.shadowRoot.querySelector(".download-button").click();
173
+ await page.waitForChanges();
174
+ expect(fileDownloadedSpy.mock.calls[0][0].target.id).toBe("file1");
175
+ // wmFileDelete
176
+ page.root.shadowRoot.querySelector(".delete-button").click();
177
+ await page.waitForChanges();
178
+ expect(fileDeletedSpy.mock.calls[0][0].target.id).toBe("file1");
179
+ jest.restoreAllMocks();
180
+ });
181
+ it("renders with an error if one is passed", async () => {
182
+ html = `<wm-file
183
+ id="file1"
184
+ error-message="Example error message"
185
+ file='{"id": "file1", "name": "File retrieved from server.pdf", "lastUpdated": "10/30/97 3:46 PM", "size": "22 KB", "fileActions": "download preview delete"}'
186
+ ></wm-file>`;
187
+ page = await newSpecPage({ components: [File], html });
188
+ await page.waitForChanges();
189
+ const fileDiv = page.root.shadowRoot.querySelector(".file");
190
+ expect(fileDiv).toHaveClass("--error");
191
+ const errorText = page.root.shadowRoot.querySelector(".error-message");
192
+ expect(errorText.textContent).toBe("Example error message");
193
+ });
194
+ });
@@ -4,7 +4,7 @@ export class FileList {
4
4
  this.showInfo = "last-updated";
5
5
  }
6
6
  render() {
7
- return (h("div", { key: '398a8905ff498ed10cb7057d3c686f26d8f2a36f', role: "list", class: "list-wrapper" }, h("slot", { key: 'c66ff037e9ee2ced8b3ffef541164fe20ae3e125' })));
7
+ return (h("div", { role: "list", class: "list-wrapper" }, h("slot", null)));
8
8
  }
9
9
  static get is() { return "wm-file-list"; }
10
10
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,69 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { FileList } from "./wm-file-list";
3
+ import { File } from "../wm-file/wm-file";
4
+ // mock ResizeObserver
5
+ global.ResizeObserver = jest.fn().mockImplementation(() => ({
6
+ observe: jest.fn(),
7
+ unobserve: jest.fn(),
8
+ disconnect: jest.fn(),
9
+ }));
10
+ describe("wm-file-list", () => {
11
+ let page;
12
+ async function createPageHelper() {
13
+ return await newSpecPage({
14
+ components: [FileList, File],
15
+ html: `<wm-file-list id="filelist1">
16
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
17
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
18
+ </wm-file-list>`,
19
+ });
20
+ }
21
+ it("renders all files", async () => {
22
+ page = await createPageHelper();
23
+ await page.waitForChanges();
24
+ let fileEls = page.root.querySelectorAll("wm-file");
25
+ expect(fileEls.length).toBe(2);
26
+ expect(fileEls[0]).toEqualAttribute("id", "file1");
27
+ expect(fileEls[1]).toEqualAttribute("id", "file2");
28
+ });
29
+ it("passes on show-info to it's children wm-files", async () => {
30
+ page = await createPageHelper();
31
+ await page.waitForChanges();
32
+ // default (last-updated)
33
+ let fileEl = page.root.querySelector("wm-file");
34
+ expect(fileEl.showInfo).toBe("last-updated");
35
+ // size
36
+ page = await newSpecPage({
37
+ components: [FileList, File],
38
+ html: `<wm-file-list id="filelist1" show-info="size">
39
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
40
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
41
+ </wm-file-list>`,
42
+ });
43
+ await page.waitForChanges();
44
+ fileEl = page.root.querySelector("wm-file");
45
+ expect(fileEl.showInfo).toBe("size");
46
+ // last-updated (specified)
47
+ page = await newSpecPage({
48
+ components: [FileList, File],
49
+ html: `<wm-file-list id="filelist1" show-info="last-updated">
50
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
51
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
52
+ </wm-file-list>`,
53
+ });
54
+ await page.waitForChanges();
55
+ fileEl = page.root.querySelector("wm-file");
56
+ expect(fileEl.showInfo).toBe("last-updated");
57
+ // none
58
+ page = await newSpecPage({
59
+ components: [FileList, File],
60
+ html: `<wm-file-list id="filelist1" show-info="none">
61
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
62
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
63
+ </wm-file-list>`,
64
+ });
65
+ await page.waitForChanges();
66
+ fileEl = page.root.querySelector("wm-file");
67
+ expect(fileEl.showInfo).toBe("none");
68
+ });
69
+ });
@@ -0,0 +1,32 @@
1
+ import AxePuppeteer from "@axe-core/puppeteer";
2
+ import { newE2EPage } from "@stencil/core/testing";
3
+ describe("wm-input", () => {
4
+ // ts throws erroneous warning about vars being unused...
5
+ // @ts-ignore
6
+ let page, el, inputField;
7
+ beforeEach(async () => {
8
+ page = await newE2EPage();
9
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
10
+ <wm-input label="input"></wm-input>
11
+ </main></body></html>`);
12
+ el = await page.find("wm-input");
13
+ inputField = await page.find("wm-input >>> input");
14
+ await page.waitForChanges();
15
+ });
16
+ it("passes Axe checks", async () => {
17
+ const results = await new AxePuppeteer(page).analyze();
18
+ expect(results.violations.length).toBe(0);
19
+ });
20
+ it("updates input value when changed programatically", async () => {
21
+ el.setProperty("value", "33245");
22
+ await page.waitForChanges();
23
+ const value = await el.getProperty("value");
24
+ expect(value).toBe("33245");
25
+ });
26
+ it("updates value prop when user types", async () => {
27
+ await inputField.type("example");
28
+ await page.waitForChanges();
29
+ const value = await el.getProperty("value");
30
+ expect(value).toBe("example");
31
+ });
32
+ });
@@ -101,7 +101,7 @@ export class Input {
101
101
  : `info error`;
102
102
  }
103
103
  render() {
104
- return (h("div", { key: '7db24a360d7f3378e69aa3c8fb659aa91b8b913f', class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}`, ref: (el) => (this.inputWrapperEl = el) }, h("div", { key: '746b377195a7e93d1ec73f8de6122756d813992d', class: "label-wrapper" }, h("label", { key: '96ca5bc471e4f23aa6138dc377a38e5797b293e6', htmlFor: "inputfield", class: "label" }, this.label, this.characterLimit && (h("span", { key: 'e51d0b811eb04dc446d4140a4adf36a4e85423da', class: "sr-only" }, " ", globalMessages.getCharacterLimit(this.characterLimit))), this.requiredField && (h("span", { key: '244fcf468648e136e5c4a528c070488dccaa7c94', class: "required", "aria-hidden": "true" }, "*")))), h("div", { key: '40d75843b86aa0012a5bb7d277c6d17cd9164ff5', class: "inner-wrapper" }, h("div", { key: '1caa12e9919c11f22071aae6916bbc32d37bebc2', class: "text-after-wrapper" }, h("div", { key: '1e07eb06f59c4c343eb6fd6188440b51046d359c', class: `inputfield-wrapper ${this.isDisabled ? "disabled" : ""}`, style: this.getInputWidth() }, this.symbolBefore && (h("span", { key: '84db811d1334653344e90eecbc687bd23d9ae032', class: "symbol", id: "symbol-before" }, this.symbolBefore)), h("input", { key: '844dca05f01dde484479577e83176aff952727ab', ref: (el) => (this.inputEl = el), id: "inputfield", disabled: this.isDisabled, "aria-describedby": this.descriptors(), onInput: (ev) => this.handleInput(ev), onKeyDown: (ev) => this.handleKeyDown(ev), onBlur: () => this.handleBlur(), onFocus: () => this.handleFocus(), placeholder: this.placeholder, autocomplete: "off", "aria-required": this.requiredField ? "true" : null, maxLength: this.characterLimit || undefined, type: this.type, step: this.step, max: this.max, min: this.min, value: this.el.value }), this.symbolAfter && (h("span", { key: '6e01dbb081603f9c27e39cb8dd33b144657d9654', class: "symbol", id: "symbol-after" }, this.symbolAfter)), this.characterLimit && typeof this.characterLimit === "number" ? (h("div", { class: "character-count" }, this.charCount, "/", this.characterLimit)) : ("")), this.textAfter && (h("span", { key: 'cde565ddedd1355ea1129cf38c3de4335da38631', class: "text-after", id: "text-after" }, this.textAfter))), this.info && (h("div", { key: 'a8d3c096987bd40efa9c5f7416df7cb50c9cc1ff', id: "info", class: "info" }, this.info)), h("div", { key: '48200834cdd3e3f633256afc75b4daacbf4fa0a8', id: "error", class: "error-message" }, this.errorMessage), h("div", { key: '8db2be5cc97bbad09213e40464010285857638f5', class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }, this.announcement))));
104
+ return (h("div", { class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}`, ref: (el) => (this.inputWrapperEl = el) }, h("div", { class: "label-wrapper" }, h("label", { htmlFor: "inputfield", class: "label" }, this.label, this.characterLimit && (h("span", { class: "sr-only" }, " ", globalMessages.getCharacterLimit(this.characterLimit))), this.requiredField && (h("span", { class: "required", "aria-hidden": "true" }, "*")))), h("div", { class: "inner-wrapper" }, h("div", { class: "text-after-wrapper" }, h("div", { class: `inputfield-wrapper ${this.isDisabled ? "disabled" : ""}`, style: this.getInputWidth() }, this.symbolBefore && (h("span", { class: "symbol", id: "symbol-before" }, this.symbolBefore)), h("input", { ref: (el) => (this.inputEl = el), id: "inputfield", disabled: this.isDisabled, "aria-describedby": this.descriptors(), onInput: (ev) => this.handleInput(ev), onKeyDown: (ev) => this.handleKeyDown(ev), onBlur: () => this.handleBlur(), onFocus: () => this.handleFocus(), placeholder: this.placeholder, autocomplete: "off", "aria-required": this.requiredField ? "true" : null, maxLength: this.characterLimit || undefined, type: this.type, step: this.step, max: this.max, min: this.min, value: this.el.value }), this.symbolAfter && (h("span", { class: "symbol", id: "symbol-after" }, this.symbolAfter)), this.characterLimit && typeof this.characterLimit === "number" ? (h("div", { class: "character-count" }, this.charCount, "/", this.characterLimit)) : ("")), this.textAfter && (h("span", { class: "text-after", id: "text-after" }, this.textAfter))), this.info && (h("div", { id: "info", class: "info" }, this.info)), h("div", { id: "error", class: "error-message" }, this.errorMessage), h("div", { class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }, this.announcement))));
105
105
  }
106
106
  static get is() { return "wm-input"; }
107
107
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,173 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { Input } from "./wm-input";
3
+ describe("input", () => {
4
+ let page;
5
+ beforeEach(async () => {
6
+ page = await newSpecPage({
7
+ components: [Input],
8
+ html: "<wm-input label='input'></wm-input>",
9
+ });
10
+ });
11
+ it("has the right aria attributes", async () => {
12
+ let inputField = await page.root.shadowRoot.querySelector("input");
13
+ // input field is described by help text
14
+ expect(inputField).toEqualAttribute("aria-describedby", "info error");
15
+ });
16
+ it("inputfield is disabled when the prop is passed", async () => {
17
+ await page.setContent(`<wm-input label="input" disabled></wm-input>`);
18
+ let inputField = await page.root.shadowRoot.querySelector("input");
19
+ expect(inputField).toHaveAttribute("disabled");
20
+ });
21
+ it("handles keydown", () => {
22
+ // handleKeyDown
23
+ const component = new Input();
24
+ component.characterLimit = 10;
25
+ let event = { key: "", ctrlKey: false, metaKey: false, altKey: false };
26
+ let inputEl = document.createElement("input");
27
+ // @ts-ignore
28
+ component.inputEl = inputEl;
29
+ const mockAnnounce = (component.announce = jest.fn());
30
+ const mockGenerateCharacterLimiWarning = (component.generateCharacterLimitWarning = jest.fn());
31
+ function resetKeys() {
32
+ event.key = "";
33
+ event.ctrlKey = false;
34
+ event.metaKey = false;
35
+ event.altKey = false;
36
+ //@ts-ignore
37
+ component.inputEl.value = "";
38
+ }
39
+ // no modifiers, empty key
40
+ resetKeys();
41
+ component.handleKeyDown(event);
42
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
43
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
44
+ jest.clearAllMocks();
45
+ // no modifiers, wrong key
46
+ resetKeys();
47
+ event.key = "ArrowDown";
48
+ component.handleKeyDown(event);
49
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
50
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
51
+ jest.clearAllMocks();
52
+ // no modifiers, right key, not at limit
53
+ resetKeys();
54
+ event.key = "a";
55
+ component.handleKeyDown(event);
56
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
57
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
58
+ jest.clearAllMocks();
59
+ // no modifiers, right key, at limit
60
+ resetKeys();
61
+ //@ts-ignore
62
+ component.inputEl.value = "1234567890";
63
+ event.key = "a";
64
+ component.handleKeyDown(event);
65
+ expect(mockAnnounce).toHaveBeenCalledTimes(1);
66
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(1);
67
+ jest.clearAllMocks();
68
+ // no modifiers, right key, above limit
69
+ resetKeys();
70
+ //@ts-ignore
71
+ component.inputEl.value = "12345678901234567890";
72
+ event.key = "a";
73
+ component.handleKeyDown(event);
74
+ expect(mockAnnounce).toHaveBeenCalledTimes(1);
75
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(1);
76
+ jest.clearAllMocks();
77
+ // ctrl modifier, right key, above limit
78
+ resetKeys();
79
+ //@ts-ignore
80
+ component.inputEl.value = "12345678901234567890";
81
+ event.key = "a";
82
+ event.ctrlKey = true;
83
+ component.handleKeyDown(event);
84
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
85
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
86
+ jest.clearAllMocks();
87
+ // meta modifier, right key, above limit
88
+ resetKeys();
89
+ //@ts-ignore
90
+ component.inputEl.value = "12345678901234567890";
91
+ event.key = "a";
92
+ event.metaKey = true;
93
+ component.handleKeyDown(event);
94
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
95
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
96
+ jest.clearAllMocks();
97
+ // alt modifier, right key, above limit
98
+ resetKeys();
99
+ //@ts-ignore
100
+ component.inputEl.value = "12345678901234567890";
101
+ event.key = "a";
102
+ event.altKey = true;
103
+ component.handleKeyDown(event);
104
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
105
+ expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
106
+ jest.clearAllMocks();
107
+ jest.restoreAllMocks();
108
+ });
109
+ it("handles input", () => {
110
+ // handleInput
111
+ const component = new Input();
112
+ let inputEl = {};
113
+ let event = { target: inputEl };
114
+ const mockAnnounce = (component.announce = jest.fn());
115
+ const mockGenerateCharacterLimitWarning = (component.generateCharacterLimitWarning = jest.fn(() => "announcement"));
116
+ inputEl.value = "fish";
117
+ event.target = inputEl;
118
+ //@ts-ignore
119
+ component.handleInput(event);
120
+ expect(component.value).toBe("fish");
121
+ expect(component.charCount).toBe(4);
122
+ expect(mockAnnounce).toHaveBeenCalledTimes(0);
123
+ expect(mockGenerateCharacterLimitWarning).toHaveBeenCalledTimes(0);
124
+ component.characterLimit = 10;
125
+ inputEl.value = "two fish";
126
+ event.target = inputEl;
127
+ //@ts-ignore
128
+ component.handleInput(event);
129
+ expect(component.value).toBe("two fish");
130
+ expect(component.charCount).toBe(8);
131
+ expect(mockAnnounce).toHaveBeenCalledTimes(1);
132
+ expect(mockAnnounce).toHaveBeenCalledWith("announcement");
133
+ expect(mockGenerateCharacterLimitWarning).toHaveBeenCalledTimes(1);
134
+ expect(mockGenerateCharacterLimitWarning).toHaveBeenCalledWith(8, 10);
135
+ jest.resetAllMocks();
136
+ });
137
+ it("updates classes on focus", () => {
138
+ const component = new Input();
139
+ const divEl = document.createElement("div");
140
+ //@ts-ignore
141
+ component.inputWrapperEl = divEl;
142
+ //@ts-ignore
143
+ expect(component.inputWrapperEl).not.toHaveClass("focus");
144
+ component.handleFocus();
145
+ //@ts-ignore
146
+ expect(component.inputWrapperEl).toHaveClass("focus");
147
+ });
148
+ it("updates the live region announcement", () => {
149
+ // announce
150
+ const component = new Input();
151
+ let divEl = document.createElement("div");
152
+ //@ts-ignore
153
+ component.liveRegionEl = divEl;
154
+ component.announce("Message");
155
+ expect(component.announcement).toBe("Message");
156
+ //@ts-ignore
157
+ component.liveRegionEl.textContent = "Message";
158
+ component.announce("Message");
159
+ expect(component.announcement).toBe("Message" + "\u00A0");
160
+ });
161
+ it("generates the appropriate character limit warning", () => {
162
+ // generateCharacterLimitWarning
163
+ const component = new Input();
164
+ expect(component.generateCharacterLimitWarning(0, 10)).toBe("0 of 10 characters entered.");
165
+ expect(component.generateCharacterLimitWarning(5, 8)).toBe("5 of 8 characters entered.");
166
+ expect(component.generateCharacterLimitWarning(8, 8)).toBe("8 of 8 characters entered. No additional characters will be entered.");
167
+ });
168
+ it("sets input to required", async () => {
169
+ await page.setContent(`<wm-input label='input' required-field='true'></wm-input>`);
170
+ const input = await page.root.shadowRoot.querySelector("input");
171
+ expect(input).toEqualAttribute("aria-required", "true");
172
+ });
173
+ });
@@ -0,0 +1,23 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ describe("wm-menuitem", () => {
3
+ let page;
4
+ beforeEach(async () => {
5
+ page = await newE2EPage();
6
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
7
+ <wm-action-menu id='menu' tooltip="menu name"><wm-menuitem id='first' disabled onClick='action()'>First action</wm-menuitem><wm-menuitem id='second'>Second action</wm-menuitem><wm-menuitem id='third'>Third action</wm-menuitem></wm-action-menu>
8
+ <script>function action() {document.getElementById('second').innerHTML = 'Changed text'}</script></main></body></html>`);
9
+ });
10
+ it("renders", async () => {
11
+ const element = await page.find("wm-menuitem");
12
+ expect(element).not.toBeNull();
13
+ });
14
+ it("prevents action on disabled item", async () => {
15
+ await page.keyboard.press("Tab");
16
+ await page.keyboard.press("Enter"); // open popup
17
+ await page.waitForChanges();
18
+ await page.keyboard.press("Enter");
19
+ await page.waitForChanges();
20
+ let changedMenuitem = await page.find("wm-menuitem#second");
21
+ expect(changedMenuitem.innerHTML).toEqual("Second action");
22
+ });
23
+ });
@@ -88,7 +88,7 @@ export class Menuitem {
88
88
  }
89
89
  }
90
90
  render() {
91
- return (h(Host, { key: '209d7a0e22f05dc500f71a8f8b29e51e4f5da1c2', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: '3b5a9b5d9571ab224b6cde8a5a01548eb045b159', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, h("span", { key: 'de7447ebec7218723fec7390b77179bc68ae7823', ref: (el) => (this.iconEl = el) }), this.el.textContent, this.description ? h("div", { class: "description" }, this.description) : "")));
91
+ return (h(Host, { tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, h("div", { class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, h("span", { ref: (el) => (this.iconEl = el) }), this.el.textContent, this.description ? h("div", { class: "description" }, this.description) : "")));
92
92
  }
93
93
  static get is() { return "wm-menuitem"; }
94
94
  static get encapsulation() { return "shadow"; }