@watermarkinsights/ripple 5.10.0-14 → 5.10.0-16

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 (432) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/{chartFunctions-a3a08880.js → chartFunctions-c4046c7a.js} +3 -3
  3. package/dist/cjs/{functions-5ac8a62f.js → functions-e24249e6.js} +7 -104
  4. package/dist/{esm/app-globals-69d4c258.js → cjs/global-705d39bd.js} +3 -8
  5. package/dist/cjs/index-e86c28b6.js +2649 -0
  6. package/dist/cjs/{intl-57d1cfd1.js → intl-790f6c37.js} +11 -15
  7. package/dist/cjs/loader.cjs.js +4 -5
  8. package/dist/cjs/priv-calendar.cjs.entry.js +6 -7
  9. package/dist/cjs/priv-chart-popover.cjs.entry.js +6 -7
  10. package/dist/cjs/priv-navigator-button.cjs.entry.js +4 -5
  11. package/dist/cjs/priv-navigator-item.cjs.entry.js +4 -5
  12. package/dist/cjs/priv-option-list.cjs.entry.js +5 -6
  13. package/dist/cjs/ripple.cjs.js +12 -13
  14. package/dist/cjs/wm-action-menu_2.cjs.entry.js +8 -10
  15. package/dist/cjs/wm-button.cjs.entry.js +5 -6
  16. package/dist/cjs/wm-chart-slice.cjs.entry.js +1 -1
  17. package/dist/cjs/wm-chart.cjs.entry.js +7 -8
  18. package/dist/cjs/wm-date-range.cjs.entry.js +9 -10
  19. package/dist/cjs/wm-datepicker.cjs.entry.js +9 -10
  20. package/dist/cjs/wm-file-list.cjs.entry.js +4 -5
  21. package/dist/cjs/wm-file.cjs.entry.js +5 -6
  22. package/dist/cjs/wm-input.cjs.entry.js +6 -7
  23. package/dist/cjs/wm-line-chart.cjs.entry.js +15 -16
  24. package/dist/cjs/wm-modal-pss_3.cjs.entry.js +13 -16
  25. package/dist/cjs/wm-modal_3.cjs.entry.js +13 -16
  26. package/dist/cjs/wm-navigation_3.cjs.entry.js +13 -16
  27. package/dist/cjs/wm-navigator.cjs.entry.js +4 -5
  28. package/dist/cjs/wm-nested-select.cjs.entry.js +8 -9
  29. package/dist/cjs/wm-optgroup.cjs.entry.js +5 -6
  30. package/dist/cjs/wm-option_2.cjs.entry.js +10 -12
  31. package/dist/cjs/wm-pagination.cjs.entry.js +5 -6
  32. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +9 -11
  33. package/dist/cjs/wm-search.cjs.entry.js +7 -8
  34. package/dist/cjs/wm-snackbar.cjs.entry.js +7 -8
  35. package/dist/cjs/wm-tab-item_3.cjs.entry.js +11 -14
  36. package/dist/cjs/wm-tag-input.cjs.entry.js +8 -9
  37. package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
  38. package/dist/cjs/wm-textarea.cjs.entry.js +6 -7
  39. package/dist/cjs/wm-timepicker.cjs.entry.js +6 -7
  40. package/dist/cjs/wm-toggletip.cjs.entry.js +6 -7
  41. package/dist/cjs/wm-uploader.cjs.entry.js +98 -17
  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 +1 -1
  45. package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
  46. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.css +5 -5
  47. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +81 -0
  48. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +2 -2
  49. package/dist/collection/components/charts/screenshots.e2e.js +96 -0
  50. package/dist/collection/components/charts/wm-chart/wm-chart.css +5 -5
  51. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +213 -0
  52. package/dist/collection/components/charts/wm-chart/wm-chart.js +1 -1
  53. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +37 -0
  54. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.css +5 -5
  55. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
  56. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +9 -9
  57. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
  58. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +5 -5
  59. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
  60. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.css +5 -5
  61. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
  62. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +1 -1
  63. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
  64. package/dist/collection/components/datepickers/datepicker.css +5 -5
  65. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.css +5 -5
  66. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +2 -2
  67. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
  68. package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
  69. package/dist/collection/components/datepickers/wm-date-range.js +13 -17
  70. package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
  71. package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
  72. package/dist/collection/components/datepickers/wm-datepicker.js +13 -17
  73. package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
  74. package/dist/collection/components/selects/priv-option-list/priv-option-list.css +5 -5
  75. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +5 -7
  76. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.css +5 -5
  77. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +3 -3
  78. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.css +5 -5
  79. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +1 -1
  80. package/dist/collection/components/selects/wm-option/wm-option.css +5 -5
  81. package/dist/collection/components/selects/wm-option/wm-option.e2e.js +22 -0
  82. package/dist/collection/components/selects/wm-option/wm-option.js +1 -1
  83. package/dist/collection/components/selects/wm-option/wm-option.spec.js +63 -0
  84. package/dist/collection/components/selects/wm-select/wm-select.css +5 -5
  85. package/dist/collection/components/selects/wm-select/wm-select.e2e.js +521 -0
  86. package/dist/collection/components/selects/wm-select/wm-select.js +2 -2
  87. package/dist/collection/components/selects/wm-select/wm-select.spec.js +271 -0
  88. package/dist/collection/components/wm-action-menu/wm-action-menu.css +5 -5
  89. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
  90. package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
  91. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
  92. package/dist/collection/components/wm-button/wm-button.css +5 -5
  93. package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
  94. package/dist/collection/components/wm-button/wm-button.js +1 -1
  95. package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
  96. package/dist/collection/components/wm-file/wm-file.css +5 -5
  97. package/dist/collection/components/wm-file/wm-file.js +1 -1
  98. package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
  99. package/dist/collection/components/wm-file-list/wm-file-list.css +5 -5
  100. package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
  101. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
  102. package/dist/collection/components/wm-input/wm-input.css +5 -5
  103. package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
  104. package/dist/collection/components/wm-input/wm-input.js +1 -1
  105. package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
  106. package/dist/collection/components/wm-menuitem/wm-menuitem.css +5 -5
  107. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
  108. package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
  109. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
  110. package/dist/collection/components/wm-modal/wm-modal-footer.css +5 -5
  111. package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
  112. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
  113. package/dist/collection/components/wm-modal/wm-modal-header.css +5 -5
  114. package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
  115. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
  116. package/dist/collection/components/wm-modal/wm-modal.css +5 -5
  117. package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
  118. package/dist/collection/components/wm-modal/wm-modal.js +2 -2
  119. package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
  120. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.css +5 -5
  121. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +1 -1
  122. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.css +5 -5
  123. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +1 -1
  124. package/dist/collection/components/wm-modal-pss/wm-modal-pss.css +5 -5
  125. package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +2 -2
  126. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +5 -5
  127. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
  128. package/dist/collection/components/wm-navigation/wm-navigation-item.css +5 -5
  129. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  130. package/dist/collection/components/wm-navigation/wm-navigation.css +5 -5
  131. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  132. package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
  133. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  134. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +5 -5
  135. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  136. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  137. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.css +5 -5
  138. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +2 -2
  139. package/dist/collection/components/wm-navigator/wm-navigator.css +5 -5
  140. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  141. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  142. package/dist/collection/components/wm-pagination/wm-pagination.css +5 -5
  143. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
  144. package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
  145. package/dist/collection/components/wm-search/wm-search.css +5 -5
  146. package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
  147. package/dist/collection/components/wm-search/wm-search.js +4 -5
  148. package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
  149. package/dist/collection/components/wm-snackbar/wm-snackbar.css +5 -5
  150. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
  151. package/dist/collection/components/wm-snackbar/wm-snackbar.js +2 -2
  152. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
  153. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.css +5 -5
  154. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
  155. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.css +5 -5
  156. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
  157. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.css +5 -5
  158. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
  159. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
  160. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
  161. package/dist/collection/components/wm-tag-input/wm-tag-input.css +5 -5
  162. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
  163. package/dist/collection/components/wm-tag-input/wm-tag-input.js +3 -3
  164. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
  165. package/dist/collection/components/wm-textarea/wm-textarea.css +5 -5
  166. package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
  167. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  168. package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
  169. package/dist/collection/components/wm-timepicker/wm-timepicker.css +5 -5
  170. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
  171. package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
  172. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
  173. package/dist/collection/components/wm-toggletip/wm-toggletip.css +5 -5
  174. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
  175. package/dist/collection/components/wm-toggletip/wm-toggletip.js +2 -2
  176. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
  177. package/dist/collection/components/wm-uploader/wm-uploader.css +154 -13
  178. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
  179. package/dist/collection/components/wm-uploader/wm-uploader.js +154 -11
  180. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
  181. package/dist/collection/global/functions.spec.js +126 -0
  182. package/dist/collection/global/global.js +1 -1
  183. package/dist/collection/global/intl.js +10 -14
  184. package/dist/collection/lang/lang.spec.js +20 -0
  185. package/dist/collection/lang/missing.js +43 -43
  186. package/dist/collection/lang/piglatin.js +93 -93
  187. package/dist/esm/{chartFunctions-21d5a3d3.js → chartFunctions-5555bab0.js} +3 -3
  188. package/dist/esm/{functions-f39e6177.js → functions-8800c690.js} +8 -105
  189. package/dist/{cjs/app-globals-385434e8.js → esm/global-a377e5a4.js} +2 -11
  190. package/dist/esm/index-558b5a82.js +2618 -0
  191. package/dist/esm/{intl-dda73e98.js → intl-82ebfb79.js} +11 -15
  192. package/dist/esm/loader.js +5 -6
  193. package/dist/esm/polyfills/core-js.js +0 -0
  194. package/dist/esm/polyfills/dom.js +0 -0
  195. package/dist/esm/polyfills/es5-html-element.js +0 -0
  196. package/dist/esm/polyfills/index.js +0 -0
  197. package/dist/esm/polyfills/system.js +0 -0
  198. package/dist/esm/priv-calendar.entry.js +6 -7
  199. package/dist/esm/priv-chart-popover.entry.js +6 -7
  200. package/dist/esm/priv-navigator-button.entry.js +4 -5
  201. package/dist/esm/priv-navigator-item.entry.js +4 -5
  202. package/dist/esm/priv-option-list.entry.js +5 -6
  203. package/dist/esm/ripple.js +13 -14
  204. package/dist/esm/wm-action-menu_2.entry.js +8 -10
  205. package/dist/esm/wm-button.entry.js +5 -6
  206. package/dist/esm/wm-chart-slice.entry.js +1 -1
  207. package/dist/esm/wm-chart.entry.js +7 -8
  208. package/dist/esm/wm-date-range.entry.js +9 -10
  209. package/dist/esm/wm-datepicker.entry.js +9 -10
  210. package/dist/esm/wm-file-list.entry.js +4 -5
  211. package/dist/esm/wm-file.entry.js +5 -6
  212. package/dist/esm/wm-input.entry.js +6 -7
  213. package/dist/esm/wm-line-chart.entry.js +15 -16
  214. package/dist/esm/wm-modal-pss_3.entry.js +13 -16
  215. package/dist/esm/wm-modal_3.entry.js +13 -16
  216. package/dist/esm/wm-navigation_3.entry.js +13 -16
  217. package/dist/esm/wm-navigator.entry.js +4 -5
  218. package/dist/esm/wm-nested-select.entry.js +8 -9
  219. package/dist/esm/wm-optgroup.entry.js +5 -6
  220. package/dist/esm/wm-option_2.entry.js +10 -12
  221. package/dist/esm/wm-pagination.entry.js +5 -6
  222. package/dist/esm/wm-progress-indicator_3.entry.js +9 -11
  223. package/dist/esm/wm-search.entry.js +7 -8
  224. package/dist/esm/wm-snackbar.entry.js +7 -8
  225. package/dist/esm/wm-tab-item_3.entry.js +11 -14
  226. package/dist/esm/wm-tag-input.entry.js +8 -9
  227. package/dist/esm/wm-tag-option.entry.js +2 -2
  228. package/dist/esm/wm-textarea.entry.js +6 -7
  229. package/dist/esm/wm-timepicker.entry.js +6 -7
  230. package/dist/esm/wm-toggletip.entry.js +6 -7
  231. package/dist/esm/wm-uploader.entry.js +98 -17
  232. package/dist/esm/wm-wrapper.entry.js +1 -1
  233. package/dist/esm-es5/{chartFunctions-21d5a3d3.js → chartFunctions-5555bab0.js} +1 -1
  234. package/dist/esm-es5/functions-8800c690.js +1 -0
  235. package/dist/esm-es5/global-a377e5a4.js +1 -0
  236. package/dist/esm-es5/index-558b5a82.js +1 -0
  237. package/dist/esm-es5/{intl-dda73e98.js → intl-82ebfb79.js} +1 -1
  238. package/dist/esm-es5/loader.js +1 -1
  239. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  240. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  241. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  242. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  243. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  244. package/dist/esm-es5/ripple.js +1 -1
  245. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  246. package/dist/esm-es5/wm-button.entry.js +1 -1
  247. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  248. package/dist/esm-es5/wm-chart.entry.js +1 -1
  249. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  250. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  251. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  252. package/dist/esm-es5/wm-file.entry.js +1 -1
  253. package/dist/esm-es5/wm-input.entry.js +1 -1
  254. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  255. package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -1
  256. package/dist/esm-es5/wm-modal_3.entry.js +1 -1
  257. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  258. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  259. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  260. package/dist/esm-es5/wm-optgroup.entry.js +1 -1
  261. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  262. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  263. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  264. package/dist/esm-es5/wm-search.entry.js +1 -1
  265. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  266. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  267. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  268. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  269. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  270. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  271. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  272. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  273. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  274. package/dist/loader/cdn.js +2 -1
  275. package/dist/loader/index.cjs.js +2 -1
  276. package/dist/loader/index.d.ts +0 -3
  277. package/dist/loader/index.es2017.js +2 -1
  278. package/dist/loader/index.js +2 -1
  279. package/dist/ripple/p-04502e9c.entry.js +1 -0
  280. package/dist/ripple/p-0aa8c50e.entry.js +1 -0
  281. package/dist/ripple/p-0b4b0741.system.entry.js +1 -0
  282. package/dist/ripple/p-0bffcc33.entry.js +1 -0
  283. package/dist/ripple/p-0d082f95.entry.js +1 -0
  284. package/dist/ripple/p-0eddc626.entry.js +1 -0
  285. package/dist/ripple/p-0fc6dab9.system.entry.js +1 -0
  286. package/dist/ripple/{p-73ce9af7.js → p-11d66b54.js} +1 -1
  287. package/dist/ripple/p-1887c39d.entry.js +1 -0
  288. package/dist/ripple/p-1a4d00a9.system.entry.js +1 -0
  289. package/dist/ripple/p-1bb48113.system.entry.js +1 -0
  290. package/dist/ripple/p-1f695ead.system.entry.js +1 -0
  291. package/dist/ripple/p-21a4a455.system.entry.js +1 -0
  292. package/dist/ripple/p-221a7c22.entry.js +1 -0
  293. package/dist/ripple/{p-37b044c7.system.js → p-2ce69098.system.js} +1 -1
  294. package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
  295. package/dist/ripple/p-34014c8d.system.entry.js +1 -0
  296. package/dist/ripple/p-34218322.system.entry.js +1 -0
  297. package/dist/ripple/p-3bdb760a.entry.js +1 -0
  298. package/dist/ripple/p-3c3c6b29.system.entry.js +1 -0
  299. package/dist/ripple/p-3fb7444d.system.entry.js +1 -0
  300. package/dist/ripple/p-40129c5d.js +1 -0
  301. package/dist/ripple/{p-c34c9cbb.system.entry.js → p-4743176d.system.entry.js} +1 -1
  302. package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
  303. package/dist/ripple/p-4abcb864.entry.js +1 -0
  304. package/dist/ripple/p-4edb481f.system.entry.js +1 -0
  305. package/dist/ripple/p-50501e07.entry.js +1 -0
  306. package/dist/ripple/p-51718b06.system.entry.js +1 -0
  307. package/dist/ripple/{p-44526834.entry.js → p-53975533.entry.js} +1 -1
  308. package/dist/ripple/p-568c595f.js +2 -0
  309. package/dist/ripple/{p-f41ab9ea.js → p-599dd035.js} +1 -1
  310. package/dist/ripple/{p-61769bc6.entry.js → p-5a2b1e2b.system.entry.js} +1 -1
  311. package/dist/ripple/p-5f78dd11.entry.js +1 -0
  312. package/dist/ripple/p-5fe90111.entry.js +1 -0
  313. package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
  314. package/dist/ripple/{p-470ee72d.system.entry.js → p-68f39a1f.system.entry.js} +1 -1
  315. package/dist/ripple/p-6a7fd013.system.entry.js +1 -0
  316. package/dist/ripple/p-6b859ff2.entry.js +1 -0
  317. package/dist/ripple/p-72bf2c06.system.entry.js +1 -0
  318. package/dist/ripple/p-76a9ae45.system.js +1 -0
  319. package/dist/ripple/{p-b0dddc8b.system.js → p-7a647f51.system.js} +1 -1
  320. package/dist/ripple/p-7cf74ee6.system.js +1 -0
  321. package/dist/ripple/p-7f0ca371.system.entry.js +1 -0
  322. package/dist/ripple/p-7f7c5da2.system.entry.js +1 -0
  323. package/dist/ripple/p-88ae8914.system.entry.js +1 -0
  324. package/dist/ripple/p-88c968e7.system.entry.js +1 -0
  325. package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
  326. package/dist/ripple/p-8d7ecab9.entry.js +1 -0
  327. package/dist/ripple/p-8fcebe03.entry.js +1 -0
  328. package/dist/ripple/p-919fd2b6.entry.js +1 -0
  329. package/dist/ripple/p-950dc6c4.system.entry.js +1 -0
  330. package/dist/ripple/p-9f2a0e0a.entry.js +1 -0
  331. package/dist/ripple/p-9f38f65d.system.entry.js +1 -0
  332. package/dist/ripple/p-a0e84979.entry.js +1 -0
  333. package/dist/ripple/p-ab8d78cc.system.js +2 -0
  334. package/dist/ripple/{p-2d3c8179.system.entry.js → p-ac625334.system.entry.js} +1 -1
  335. package/dist/ripple/p-b0512477.system.entry.js +1 -0
  336. package/dist/ripple/p-b0ada8f7.system.entry.js +1 -0
  337. package/dist/ripple/p-b1fe3bbc.system.entry.js +1 -0
  338. package/dist/ripple/p-b72aa60b.entry.js +1 -0
  339. package/dist/ripple/{p-76d248e6.entry.js → p-b976c84b.entry.js} +1 -1
  340. package/dist/ripple/p-bc566798.entry.js +1 -0
  341. package/dist/ripple/p-c0f370f9.system.entry.js +1 -0
  342. package/dist/ripple/p-c6c43720.entry.js +1 -0
  343. package/dist/ripple/p-ce191133.entry.js +1 -0
  344. package/dist/ripple/{p-4de2ab7e.system.entry.js → p-d168b8bc.entry.js} +1 -1
  345. package/dist/ripple/p-d8bc3fd7.system.entry.js +1 -0
  346. package/dist/ripple/p-dadb480d.system.entry.js +1 -0
  347. package/dist/ripple/p-dcbed420.entry.js +1 -0
  348. package/dist/ripple/{p-f03dd608.system.entry.js → p-df387590.entry.js} +1 -1
  349. package/dist/ripple/p-e49d3992.entry.js +1 -0
  350. package/dist/ripple/p-e5b62488.entry.js +1 -0
  351. package/dist/ripple/{p-86520ba3.system.entry.js → p-e5c8a584.entry.js} +1 -1
  352. package/dist/ripple/p-eca78c2b.js +1 -0
  353. package/dist/ripple/p-edd87140.system.js +1 -0
  354. package/dist/ripple/p-ef980041.system.entry.js +1 -0
  355. package/dist/ripple/p-f623828b.entry.js +1 -0
  356. package/dist/ripple/p-f94b8117.system.entry.js +1 -0
  357. package/dist/ripple/p-fef994ea.entry.js +1 -0
  358. package/dist/ripple/ripple.css +1 -1
  359. package/dist/ripple/ripple.esm.js +1 -1
  360. package/dist/ripple/ripple.js +1 -1
  361. package/dist/types/components/wm-uploader/wm-uploader.d.ts +16 -2
  362. package/dist/types/components.d.ts +10 -6
  363. package/dist/types/global/intl.d.ts +2 -2
  364. package/dist/types/stencil-public-runtime.d.ts +10 -3
  365. package/package.json +1 -1
  366. package/dist/cjs/index-788526f5.js +0 -1859
  367. package/dist/esm/index-130e07bb.js +0 -1828
  368. package/dist/esm-es5/app-globals-69d4c258.js +0 -1
  369. package/dist/esm-es5/functions-f39e6177.js +0 -1
  370. package/dist/esm-es5/index-130e07bb.js +0 -1
  371. package/dist/ripple/p-01621baa.system.entry.js +0 -1
  372. package/dist/ripple/p-066e22a8.entry.js +0 -1
  373. package/dist/ripple/p-0b9cfafd.entry.js +0 -1
  374. package/dist/ripple/p-1b022b07.entry.js +0 -1
  375. package/dist/ripple/p-1b3c81cd.system.entry.js +0 -1
  376. package/dist/ripple/p-1dbc5def.system.entry.js +0 -1
  377. package/dist/ripple/p-1e9e2b61.entry.js +0 -1
  378. package/dist/ripple/p-23d2a65e.system.entry.js +0 -1
  379. package/dist/ripple/p-2a825f9b.system.entry.js +0 -1
  380. package/dist/ripple/p-382d18ef.entry.js +0 -1
  381. package/dist/ripple/p-3bf21b98.entry.js +0 -1
  382. package/dist/ripple/p-3d1bb82e.system.entry.js +0 -1
  383. package/dist/ripple/p-3de00415.entry.js +0 -1
  384. package/dist/ripple/p-3f486eed.system.js +0 -1
  385. package/dist/ripple/p-446adb62.entry.js +0 -1
  386. package/dist/ripple/p-457b0368.entry.js +0 -1
  387. package/dist/ripple/p-45bb1cca.entry.js +0 -1
  388. package/dist/ripple/p-4a88d7f0.system.entry.js +0 -1
  389. package/dist/ripple/p-4b41b2b2.system.entry.js +0 -1
  390. package/dist/ripple/p-54bf5f8f.system.entry.js +0 -1
  391. package/dist/ripple/p-55175883.system.entry.js +0 -1
  392. package/dist/ripple/p-585d7d8b.entry.js +0 -1
  393. package/dist/ripple/p-5d7bb3db.system.entry.js +0 -1
  394. package/dist/ripple/p-60bfae00.system.entry.js +0 -1
  395. package/dist/ripple/p-6182809b.system.entry.js +0 -1
  396. package/dist/ripple/p-69111fc9.entry.js +0 -1
  397. package/dist/ripple/p-6e674694.entry.js +0 -1
  398. package/dist/ripple/p-7936661f.entry.js +0 -1
  399. package/dist/ripple/p-7d2bdfa7.system.entry.js +0 -1
  400. package/dist/ripple/p-7e8ce599.entry.js +0 -1
  401. package/dist/ripple/p-834d3b6e.system.entry.js +0 -1
  402. package/dist/ripple/p-84bbdb6c.system.entry.js +0 -1
  403. package/dist/ripple/p-86aa69a1.system.entry.js +0 -1
  404. package/dist/ripple/p-89419541.system.entry.js +0 -1
  405. package/dist/ripple/p-89a2db02.js +0 -1
  406. package/dist/ripple/p-8c5e08b0.entry.js +0 -1
  407. package/dist/ripple/p-8ee66c9b.entry.js +0 -1
  408. package/dist/ripple/p-8f6688d1.entry.js +0 -1
  409. package/dist/ripple/p-8fd93b85.system.js +0 -1
  410. package/dist/ripple/p-916ac4da.system.entry.js +0 -1
  411. package/dist/ripple/p-9bc259e7.system.entry.js +0 -1
  412. package/dist/ripple/p-9d50b702.entry.js +0 -1
  413. package/dist/ripple/p-a377f8ca.system.entry.js +0 -1
  414. package/dist/ripple/p-a388c103.system.entry.js +0 -1
  415. package/dist/ripple/p-a80168b0.entry.js +0 -1
  416. package/dist/ripple/p-aabde755.entry.js +0 -1
  417. package/dist/ripple/p-b0268240.js +0 -1
  418. package/dist/ripple/p-b25b3606.system.js +0 -1
  419. package/dist/ripple/p-b6427999.system.entry.js +0 -1
  420. package/dist/ripple/p-c1031d35.system.entry.js +0 -1
  421. package/dist/ripple/p-c679e48c.system.entry.js +0 -1
  422. package/dist/ripple/p-c92ef4d6.entry.js +0 -1
  423. package/dist/ripple/p-cef8a45b.system.js +0 -2
  424. package/dist/ripple/p-d52910b9.entry.js +0 -1
  425. package/dist/ripple/p-d9da0502.js +0 -2
  426. package/dist/ripple/p-da765ca3.entry.js +0 -1
  427. package/dist/ripple/p-dad57469.entry.js +0 -1
  428. package/dist/ripple/p-e06014b0.entry.js +0 -1
  429. package/dist/ripple/p-e69169a2.system.entry.js +0 -1
  430. package/dist/ripple/p-eeccd224.entry.js +0 -1
  431. package/dist/ripple/p-eee1dcec.entry.js +0 -1
  432. package/dist/ripple/p-fdfca672.entry.js +0 -1
@@ -0,0 +1,176 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ import { AxePuppeteer } from "@axe-core/puppeteer";
3
+ describe("wm-line-chart", () => {
4
+ let page;
5
+ async function createPageHelper() {
6
+ page = await newE2EPage();
7
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
8
+ <wm-line-chart
9
+ label="Regional Job Trends"
10
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
11
+ x-axis-label="Year"
12
+ y-axis-label="Change Since 2020"
13
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13, "2023": null, "2024": 20, "2025": 23, "2026": 25, "2027": 32, "2028": 35, "2029": 40, "2030": 42, "2031": 52, "2032": 54, "2033": 61}, "National": {"2020": 8, "2021": 13, "2022": 16, "2023": 21, "2024": 23, "2025": 26, "2026": 28, "2027": 29, "2028": 32, "2029": 35, "2030": 39, "2031": 49, "2032": 51, "2033": 58} }'
14
+ units="year,%"
15
+ show-deltas="true"
16
+ y-range="0,25,50,75,100"
17
+ highlight-start="2026"
18
+ visibility-toggles="true"
19
+ >
20
+ </wm-line-chart>
21
+ </main></body></html>`);
22
+ }
23
+ it("passes Axe tests", async () => {
24
+ await createPageHelper();
25
+ const results = await new AxePuppeteer(page).analyze();
26
+ expect(results.violations.length).toBe(0);
27
+ });
28
+ it("has keyboard navigation for legend", async () => {
29
+ await createPageHelper();
30
+ // first focus goes to first button
31
+ await page.keyboard.press("Tab");
32
+ await page.waitForChanges();
33
+ let activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
34
+ await page.waitForChanges();
35
+ expect(activeElId).toBe("visibility-button-0");
36
+ // wraps right
37
+ await page.keyboard.press("ArrowLeft");
38
+ await page.waitForChanges();
39
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
40
+ await page.waitForChanges();
41
+ expect(activeElId).toBe("visibility-button-1");
42
+ await page.keyboard.press("ArrowLeft");
43
+ await page.waitForChanges();
44
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
45
+ await page.waitForChanges();
46
+ expect(activeElId).toBe("visibility-button-0");
47
+ await page.keyboard.press("ArrowRight");
48
+ await page.waitForChanges();
49
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
50
+ await page.waitForChanges();
51
+ expect(activeElId).toBe("visibility-button-1");
52
+ // wraps left
53
+ await page.keyboard.press("ArrowRight");
54
+ await page.waitForChanges();
55
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
56
+ await page.waitForChanges();
57
+ expect(activeElId).toBe("visibility-button-0");
58
+ });
59
+ it("has keyboard navigation for data points", async () => {
60
+ page = await newE2EPage();
61
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
62
+ <wm-line-chart
63
+ label="Regional Job Trends"
64
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
65
+ x-axis-label="Year"
66
+ y-axis-label="Change Since 2020"
67
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13}, "National": {"2020": 8, "2021": null, "2022": 16}}'
68
+ y-range="0,25,50,75,100"
69
+ >
70
+ </wm-line-chart>
71
+ </main></body></html>`);
72
+ await page.keyboard.press("Tab");
73
+ await page.waitForChanges();
74
+ let activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
75
+ expect(activeElId).toBe("Regional-0");
76
+ await page.keyboard.press("ArrowRight");
77
+ await page.waitForChanges();
78
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
79
+ await page.waitForChanges();
80
+ expect(activeElId).toBe("Regional-1");
81
+ await page.keyboard.press("ArrowRight");
82
+ await page.waitForChanges();
83
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
84
+ expect(activeElId).toBe("Regional-2");
85
+ // wraps left
86
+ await page.keyboard.press("ArrowRight");
87
+ await page.waitForChanges();
88
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
89
+ expect(activeElId).toBe("Regional-0");
90
+ // wraps Left
91
+ await page.keyboard.press("ArrowLeft");
92
+ await page.waitForChanges();
93
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
94
+ expect(activeElId).toBe("Regional-2");
95
+ await page.keyboard.press("ArrowLeft");
96
+ await page.waitForChanges();
97
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
98
+ expect(activeElId).toBe("Regional-1");
99
+ // next line
100
+ await page.keyboard.press("ArrowLeft");
101
+ await page.waitForChanges();
102
+ await page.keyboard.press("ArrowDown");
103
+ await page.waitForChanges();
104
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
105
+ expect(activeElId).toBe("National-0");
106
+ // skips null data point
107
+ await page.keyboard.press("ArrowLeft");
108
+ await page.waitForChanges();
109
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
110
+ expect(activeElId).toBe("National-2");
111
+ // wraps to first line
112
+ await page.keyboard.press("ArrowLeft");
113
+ await page.waitForChanges();
114
+ await page.keyboard.press("ArrowDown");
115
+ await page.waitForChanges();
116
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
117
+ expect(activeElId).toBe("Regional-0");
118
+ // wraps to last line
119
+ await page.keyboard.press("ArrowUp");
120
+ await page.waitForChanges();
121
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
122
+ expect(activeElId).toBe("National-0");
123
+ await page.keyboard.press("ArrowUp");
124
+ await page.waitForChanges();
125
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
126
+ expect(activeElId).toBe("Regional-0");
127
+ });
128
+ it("visibility toggle hides lines, data points are skipped by navigation", async () => {
129
+ page = await newE2EPage();
130
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
131
+ <wm-line-chart
132
+ label="Regional Job Trends"
133
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
134
+ x-axis-label="Year"
135
+ y-axis-label="Change Since 2020"
136
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13}, "National": {"2020": 8, "2021": 12, "2022": 16}, "International": {"2020": 8, "2021": 12, "2022": 16}}'
137
+ visibility-toggles="true"
138
+ >
139
+ </wm-line-chart>
140
+ </main></body></html>`);
141
+ const allLineEls = await page.findAll("wm-line-chart >>> .line");
142
+ expect(allLineEls[0]).not.toHaveClass("hidden");
143
+ await page.keyboard.press("Tab");
144
+ await page.waitForChanges();
145
+ // Enter key toggles button
146
+ await page.keyboard.press("Enter");
147
+ await page.waitForChanges();
148
+ expect(allLineEls[0]).toHaveClass("hidden");
149
+ // Space key toggles button
150
+ await page.keyboard.press("Space");
151
+ await page.waitForChanges();
152
+ expect(allLineEls[0]).not.toHaveClass("hidden");
153
+ await page.keyboard.press("Space");
154
+ await page.waitForChanges();
155
+ expect(allLineEls[0]).toHaveClass("hidden");
156
+ // tab focuses first visible data point
157
+ await page.keyboard.press("Tab");
158
+ await page.waitForChanges();
159
+ let activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
160
+ expect(activeElId).toBe("National-0");
161
+ await page.keyboard.press("ArrowDown");
162
+ await page.waitForChanges();
163
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
164
+ expect(activeElId).toBe("International-0");
165
+ // data point nav skips hidden line
166
+ await page.keyboard.press("ArrowDown");
167
+ await page.waitForChanges();
168
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
169
+ expect(activeElId).toBe("National-0");
170
+ // data point nav skips hidden line
171
+ await page.keyboard.press("ArrowUp");
172
+ await page.waitForChanges();
173
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
174
+ expect(activeElId).toBe("International-0");
175
+ });
176
+ });
@@ -11,12 +11,12 @@ export class LineChart {
11
11
  this.displayedXIntervals = [];
12
12
  this.yIntervals = [];
13
13
  this.lineStyles = [
14
- { color: "#8b86ca", icon: "f536" }, // lavender, triangle
15
- { color: "#2e1b46", icon: "f12f" }, // midnight, circle
16
- { color: "#0089e4", icon: "f763" }, // blue, square
17
- { color: "#088000", icon: "f4ce" }, // forest, star
18
- { color: "#ea8500", icon: "f70a" }, // orange, rhombus
19
- { color: "#d54f41", icon: "f536" }, // red, upside down triangle
14
+ { color: "#8b86ca", icon: "f536" },
15
+ { color: "#2e1b46", icon: "f12f" },
16
+ { color: "#0089e4", icon: "f763" },
17
+ { color: "#088000", icon: "f4ce" },
18
+ { color: "#ea8500", icon: "f70a" },
19
+ { color: "#d54f41", icon: "f536" },
20
20
  { color: "#146ca9", icon: "f6ff" }, // blue, upside down triangle
21
21
  ];
22
22
  this.debouncedResize = debounce(async () => {
@@ -403,7 +403,7 @@ export class LineChart {
403
403
  popoverStyle = {
404
404
  "--leftPosition": `0%`,
405
405
  "--topPosition": "0%",
406
- maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px", // take up no more max-width than is visually available
406
+ maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px",
407
407
  transform: `translateX(calc(${displaceLeft}))`, // align with left edge of component
408
408
  };
409
409
  }
@@ -443,9 +443,9 @@ export class LineChart {
443
443
  return h("div", { class: "highlight", style: highlightStyle });
444
444
  }
445
445
  render() {
446
- return (h(Host, { key: '5a7e6e4c3e644053ad733255c7973d5554a82923', onBlur: () => this.resetDataPointFocus(), onMouseLeave: () => (this.popoverIndex = -1) }, h("div", { key: '6fa6f50f75654c7959b24d5a1e0a16f91e1e265d', class: "component-wrapper", role: "application", "aria-roledescription": chartMessages.interactiveChart, "aria-label": this.label, "aria-describedby": "chart-description" }, this.renderLegend(), h("div", { key: '21e0e796d079678eb8b9012907491a014fb6d0c6', class: "chart-wrapper" }, h("div", { key: '3f9306f5d4f4a7a35187669dd0526d6ed8839521', class: "chart-label --y-axis", style: { "--labelWidth": this.labelWidth } }, this.yAxisLabel, this.parsedUnits[1] && ` (${this.parsedUnits[1]})`), this.renderYIntervals(), h("div", { key: '15e94d7886b6aa320a83cb8352655c4e65dba13b', ref: (el) => (this.plotAreaEl = el), class: `plot-area ${this.hasPartialInterval ? "" : "right-border"}`, style: {
446
+ return (h(Host, { onBlur: () => this.resetDataPointFocus(), onMouseLeave: () => (this.popoverIndex = -1) }, h("div", { class: "component-wrapper", role: "application", "aria-roledescription": chartMessages.interactiveChart, "aria-label": this.label, "aria-describedby": "chart-description" }, this.renderLegend(), h("div", { class: "chart-wrapper" }, h("div", { class: "chart-label --y-axis", style: { "--labelWidth": this.labelWidth } }, this.yAxisLabel, this.parsedUnits[1] && ` (${this.parsedUnits[1]})`), this.renderYIntervals(), h("div", { ref: (el) => (this.plotAreaEl = el), class: `plot-area ${this.hasPartialInterval ? "" : "right-border"}`, style: {
447
447
  "--backgroundSize": `${this.dataPointMatrix[0][this.xIntervals.indexOf(this.displayedXIntervals[1])].xPositionPercent}%`,
448
- } }, this.highlightStart && this.renderHighlight(), this.renderData(), this.renderHoverAreas()), this.popoverIndex !== -1 && this.renderHoverIndicator(), this.popoverIndex !== -1 && this.renderPopover(), this.renderXIntervals(), h("div", { key: 'd30088ab428ec61c9ee395d0ca30876422ffab15', class: "chart-label --x-axis" }, this.xAxisLabel, this.parsedUnits[0] && ` (${this.parsedUnits[0]})`)), h("div", { key: 'dd89ddbb408b35625315be2c77257a9c76f93557', id: "chart-description", class: "sr-only" }, `${lineChartMessages.instructions} ${this.description}`), h("div", { key: '153a8e77d758fe3161c0f2ca0a722de8753ec217', ref: (el) => (this.liveRegionEl = el), "aria-live": "polite", class: "sr-only" }, this.announcement))));
448
+ } }, this.highlightStart && this.renderHighlight(), this.renderData(), this.renderHoverAreas()), this.popoverIndex !== -1 && this.renderHoverIndicator(), this.popoverIndex !== -1 && this.renderPopover(), this.renderXIntervals(), h("div", { class: "chart-label --x-axis" }, this.xAxisLabel, this.parsedUnits[0] && ` (${this.parsedUnits[0]})`)), h("div", { id: "chart-description", class: "sr-only" }, `${lineChartMessages.instructions} ${this.description}`), h("div", { ref: (el) => (this.liveRegionEl = el), "aria-live": "polite", class: "sr-only" }, this.announcement))));
449
449
  }
450
450
  static get is() { return "wm-line-chart"; }
451
451
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,163 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { LineChart } from "./wm-line-chart";
3
+ // import * as globalFuncs from "../../../global/functions";
4
+ // jest.spyOn(globalFuncs, "generateId");
5
+ // // @ts-ignore
6
+ // globalFuncs.generateId.mockImplementation(() => "random-id");
7
+ // mock ResizeObserver
8
+ global.ResizeObserver = jest.fn().mockImplementation(() => ({
9
+ observe: jest.fn(),
10
+ unobserve: jest.fn(),
11
+ disconnect: jest.fn(),
12
+ }));
13
+ async function createPageHelper() {
14
+ return await newSpecPage({
15
+ components: [LineChart],
16
+ html: `<wm-line-chart
17
+ label="Regional Job Trends"
18
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
19
+ x-axis-label="Year"
20
+ y-axis-label="Change Since 2020"
21
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13, "2023": null, "2024": 20, "2025": 23, "2026": 25, "2027": 32, "2028": 35, "2029": 40, "2030": 42, "2031": 52, "2032": 54, "2033": 61}, "National": {"2020": 8, "2021": 13, "2022": 16, "2023": 21, "2024": 23, "2025": 26, "2026": 28, "2027": 29, "2028": 32, "2029": 35, "2030": 39, "2031": 49, "2032": 51, "2033": 58} }'
22
+ units="year,%"
23
+ show-deltas="true"
24
+ y-range="0,25,50,75,100"
25
+ highlight-start="2026"
26
+ >
27
+ </wm-line-chart>`,
28
+ });
29
+ }
30
+ describe("Line Chart", () => {
31
+ let page;
32
+ it("builds", async () => {
33
+ page = await createPageHelper();
34
+ expect(page.root).toMatchSnapshot();
35
+ });
36
+ it("has proper aria properties and attributes", async () => {
37
+ page = await createPageHelper();
38
+ const componentWrapperEl = await page.root.shadowRoot.querySelector(".component-wrapper");
39
+ expect(componentWrapperEl).toEqualAttribute("role", "application");
40
+ expect(componentWrapperEl).toEqualAttribute("aria-roledescription", "Interactive chart");
41
+ expect(componentWrapperEl).toEqualAttribute("aria-label", "Regional Job Trends");
42
+ expect(componentWrapperEl).toEqualAttribute("aria-describedby", "chart-description");
43
+ const firstPointEl = await page.root.shadowRoot.querySelector(".point");
44
+ expect(firstPointEl).toEqualAttribute("role", "img");
45
+ });
46
+ it("plots all non-null data points", async () => {
47
+ page = await newSpecPage({
48
+ components: [LineChart],
49
+ html: `<wm-line-chart
50
+ label="Regional Job Trends"
51
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
52
+ x-axis-label="Year"
53
+ y-axis-label="Change Since 2020"
54
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13, "2023": 15, "2024": 20}, "National": {"2020": 8, "2021": 13, "2022": null, "2023": 21, "2024": 23}, "International": {"2020": 8, "2021": null, "2022": null, "2023": 21, "2024": 23} }'
55
+ >
56
+ </wm-line-chart>`,
57
+ });
58
+ const allPointEls = await page.root.shadowRoot.querySelectorAll(".point");
59
+ const allLineEls = await page.root.shadowRoot.querySelectorAll(".line");
60
+ const firstLinePointEls = await allLineEls[0].querySelectorAll(".point");
61
+ const firstLineLineEls = await allLineEls[0].querySelectorAll("line");
62
+ const secondLinePointEls = await allLineEls[1].querySelectorAll(".point");
63
+ const secondLineLineEls = await allLineEls[1].querySelectorAll("line");
64
+ const thirdLinePointEls = await allLineEls[2].querySelectorAll(".point");
65
+ const thirdLineLineEls = await allLineEls[2].querySelectorAll("line");
66
+ // each line has 5 intervals
67
+ // first line has 0 nulls
68
+ // second line has 1 null
69
+ // third line has 2 nulls
70
+ expect(allPointEls.length).toBe(12);
71
+ expect(firstLinePointEls.length).toBe(5);
72
+ expect(firstLineLineEls.length).toBe(4);
73
+ expect(secondLinePointEls.length).toBe(4);
74
+ expect(secondLineLineEls.length).toBe(2);
75
+ expect(thirdLinePointEls.length).toBe(3);
76
+ expect(thirdLineLineEls.length).toBe(1);
77
+ });
78
+ it("calculates deltas correctly", async () => {
79
+ const component = await new LineChart();
80
+ let previousPoint = {
81
+ lineLabel: "fake label",
82
+ xValue: "2020",
83
+ yValue: 999,
84
+ xPositionPercent: 0,
85
+ yPositionPercent: 10,
86
+ highlighted: false,
87
+ };
88
+ let currentPoint = {
89
+ lineLabel: "fake label",
90
+ xValue: "2021",
91
+ yValue: 999,
92
+ xPositionPercent: 20,
93
+ yPositionPercent: 12,
94
+ highlighted: false,
95
+ };
96
+ previousPoint.yValue = 10;
97
+ currentPoint.yValue = 12;
98
+ expect(component.calcDelta(currentPoint, previousPoint)).toBe("+20%");
99
+ previousPoint.yValue = 10;
100
+ currentPoint.yValue = 7;
101
+ expect(component.calcDelta(currentPoint, previousPoint)).toBe("-30%");
102
+ previousPoint.yValue = 12;
103
+ currentPoint.yValue = 10;
104
+ expect(component.calcDelta(currentPoint, previousPoint)).toBe("-16.67%");
105
+ previousPoint.yValue = 0;
106
+ currentPoint.yValue = 1;
107
+ expect(component.calcDelta(currentPoint, previousPoint)).toBe("-");
108
+ previousPoint.yValue = 17;
109
+ currentPoint.yValue = 0;
110
+ expect(component.calcDelta(currentPoint, previousPoint)).toBe("-100%");
111
+ });
112
+ it("uses label-width to set y-axis label width", async () => {
113
+ page = await newSpecPage({
114
+ components: [LineChart],
115
+ html: `<wm-line-chart
116
+ label="Regional Job Trends"
117
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
118
+ x-axis-label="Year"
119
+ y-axis-label="Change Since 2020"
120
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13, "2023": null, "2024": 20, "2025": 23, "2026": 25, "2027": 32, "2028": 35, "2029": 40, "2030": 42, "2031": 52, "2032": 54, "2033": 61}, "National": {"2020": 8, "2021": 13, "2022": 16, "2023": 21, "2024": 23, "2025": 26, "2026": 28, "2027": 29, "2028": 32, "2029": 35, "2030": 39, "2031": 49, "2032": 51, "2033": 58} }'
121
+ >
122
+ </wm-line-chart>`,
123
+ });
124
+ let yAxisLabel = await page.root.shadowRoot.querySelector(".--y-axis");
125
+ expect(yAxisLabel.style.cssText).toBe("--labelWidth: 120px;");
126
+ page = await newSpecPage({
127
+ components: [LineChart],
128
+ html: `<wm-line-chart
129
+ label="Regional Job Trends"
130
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
131
+ x-axis-label="Year"
132
+ y-axis-label="Change Since 2020"
133
+ line-data='{"Regional": {"2020": 5, "2021": 10, "2022": 13, "2023": null, "2024": 20, "2025": 23, "2026": 25, "2027": 32, "2028": 35, "2029": 40, "2030": 42, "2031": 52, "2032": 54, "2033": 61}, "National": {"2020": 8, "2021": 13, "2022": 16, "2023": 21, "2024": 23, "2025": 26, "2026": 28, "2027": 29, "2028": 32, "2029": 35, "2030": 39, "2031": 49, "2032": 51, "2033": 58} }'
134
+ label-width="23%"
135
+ >
136
+ </wm-line-chart>`,
137
+ });
138
+ yAxisLabel = await page.root.shadowRoot.querySelector(".--y-axis");
139
+ expect(yAxisLabel.style.cssText).toBe("--labelWidth: 23%;");
140
+ });
141
+ it("sets custom y-range if provided, abbreviates y-axis numbers of thousands", async () => {
142
+ page = await newSpecPage({
143
+ components: [LineChart],
144
+ html: `<wm-line-chart
145
+ label="Regional Job Trends"
146
+ description="View job trends for your region compared to national tends from the past 3 years with a 3 year projection"
147
+ x-axis-label="Year"
148
+ y-axis-label="Change Since 2020"
149
+ line-data='{"Regional": {"2020": -10000, "2021": 10900, "2022": 40200} }'
150
+ y-range="-13300,0,100,10000,20945,30099,40520"
151
+ >
152
+ </wm-line-chart>`,
153
+ });
154
+ const yIntervals = await page.root.shadowRoot.querySelectorAll(".y-interval");
155
+ expect(yIntervals[0].textContent).toBe("40.5K");
156
+ expect(yIntervals[1].textContent).toBe("30.1K");
157
+ expect(yIntervals[2].textContent).toBe("20.9K");
158
+ expect(yIntervals[3].textContent).toBe("10K");
159
+ expect(yIntervals[4].textContent).toBe("100");
160
+ expect(yIntervals[5].textContent).toBe("0");
161
+ expect(yIntervals[6].textContent).toBe("-13.3K");
162
+ });
163
+ });
@@ -524,7 +524,7 @@
524
524
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z'/%3E%3C/svg%3E%0A");
525
525
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z'/%3E%3C/svg%3E%0A");
526
526
  }
527
- .svg-icon.svg-add-tag:before {
527
+ .svg-icon.svg-add-outline:before {
528
528
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z'/%3E%3C/svg%3E%0A");
529
529
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z'/%3E%3C/svg%3E%0A");
530
530
  }
@@ -540,10 +540,6 @@
540
540
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M19.8 22.6L17.15 20H6.5Q4.2 20 2.6 18.4T1 14.5Q1 12.58 2.19 11.08 3.38 9.57 5.25 9.15 5.33 8.95 5.4 8.76 5.5 8.57 5.55 8.35L1.4 4.2L2.8 2.8L21.2 21.2M6.5 18H15.15L7.1 9.95Q7.05 10.23 7.03 10.5 7 10.73 7 11H6.5Q5.05 11 4.03 12.03 3 13.05 3 14.5 3 15.95 4.03 17 5.05 18 6.5 18M11.13 14M21.6 18.75L20.15 17.35Q20.58 17 20.79 16.54 21 16.08 21 15.5 21 14.45 20.27 13.73 19.55 13 18.5 13H17V11Q17 8.93 15.54 7.46 14.08 6 12 6 11.33 6 10.7 6.16 10.07 6.33 9.5 6.68L8.05 5.23Q8.93 4.63 9.91 4.31 10.9 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 16.5 22.63 17.31 22.25 18.15 21.6 18.75M14.83 12.03Z'/%3E%3C/svg%3E%0A");
541
541
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M19.8 22.6L17.15 20H6.5Q4.2 20 2.6 18.4T1 14.5Q1 12.58 2.19 11.08 3.38 9.57 5.25 9.15 5.33 8.95 5.4 8.76 5.5 8.57 5.55 8.35L1.4 4.2L2.8 2.8L21.2 21.2M6.5 18H15.15L7.1 9.95Q7.05 10.23 7.03 10.5 7 10.73 7 11H6.5Q5.05 11 4.03 12.03 3 13.05 3 14.5 3 15.95 4.03 17 5.05 18 6.5 18M11.13 14M21.6 18.75L20.15 17.35Q20.58 17 20.79 16.54 21 16.08 21 15.5 21 14.45 20.27 13.73 19.55 13 18.5 13H17V11Q17 8.93 15.54 7.46 14.08 6 12 6 11.33 6 10.7 6.16 10.07 6.33 9.5 6.68L8.05 5.23Q8.93 4.63 9.91 4.31 10.9 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 16.5 22.63 17.31 22.25 18.15 21.6 18.75M14.83 12.03Z'/%3E%3C/svg%3E%0A");
542
542
  }
543
- .svg-icon.svg-apps:before {
544
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z'/%3E%3C/svg%3E%0A");
545
- mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z'/%3E%3C/svg%3E%0A");
546
- }
547
543
  .svg-icon.svg-attach:before {
548
544
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z'/%3E%3C/svg%3E%0A");
549
545
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z'/%3E%3C/svg%3E%0A");
@@ -668,6 +664,10 @@
668
664
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z'/%3E%3C/svg%3E%0A");
669
665
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z'/%3E%3C/svg%3E%0A");
670
666
  }
667
+ .svg-icon.svg-reset:before {
668
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z'/%3E%3C/svg%3E%0A");
669
+ mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z'/%3E%3C/svg%3E%0A");
670
+ }
671
671
  .svg-icon.svg-restore:before {
672
672
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3'/%3E%3C/svg%3E%0A");
673
673
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3'/%3E%3C/svg%3E%0A");
@@ -90,7 +90,7 @@ export class ProgressIndicator {
90
90
  }
91
91
  }
92
92
  render() {
93
- return (h(Host, { key: '16620db2087213bc753d2d757c7790a41670b1ab', onBlur: () => exitChart.call(this) }, h("div", { key: 'c676d6afdd78059bff7ae59f8ee275886e5bf22a', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.mode} ${this.isTabbing && !this.userIsNavigating ? "user-is-tabbing" : ""}`, role: "application", "aria-label": this.ariaLabelText, tabindex: "0", "aria-roledescription": this.chartRoleDescription, "aria-describedby": `chart-instructions` }, h("label", { key: '1b863341957baf0839d36be915d0aa632d03873f', id: `label-${this.uid}`, class: `label ${this.barLabelsWidth && this.mode === "bar" ? "custom-width" : ""}`, style: { "--custom-label-width": this.barLabelsWidth }, htmlFor: `graphic-${this.uid}` }, h("span", { key: 'be37ff1bc3863b7603944139fd78a0d7a6884e46', class: "label-text" }, this.label), this.subinfo ? h("span", { class: "subinfo" }, this.subinfo) : ""), this.mode && this.renderBarOrDoughnut(), this.mode === "doughnut" ? renderLegend.call(this, this.mode) : "", h("priv-chart-popover", { key: '8541969e643c69fd8e0090f69efd7c038ea1e2ea', class: this.isTabbing ? "user-is-tabbing" : "", onIntChartPopoverOpenChanged: (ev) => this.handlePopoverOpenChanged(ev) }), this.mode === "doughnut" ? renderCompletionMessage.call(this) : ""), renderInstructionsText()));
93
+ return (h(Host, { onBlur: () => exitChart.call(this) }, h("div", { ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.mode} ${this.isTabbing && !this.userIsNavigating ? "user-is-tabbing" : ""}`, role: "application", "aria-label": this.ariaLabelText, tabindex: "0", "aria-roledescription": this.chartRoleDescription, "aria-describedby": `chart-instructions` }, h("label", { id: `label-${this.uid}`, class: `label ${this.barLabelsWidth && this.mode === "bar" ? "custom-width" : ""}`, style: { "--custom-label-width": this.barLabelsWidth }, htmlFor: `graphic-${this.uid}` }, h("span", { class: "label-text" }, this.label), this.subinfo ? h("span", { class: "subinfo" }, this.subinfo) : ""), this.mode && this.renderBarOrDoughnut(), this.mode === "doughnut" ? renderLegend.call(this, this.mode) : "", h("priv-chart-popover", { class: this.isTabbing ? "user-is-tabbing" : "", onIntChartPopoverOpenChanged: (ev) => this.handlePopoverOpenChanged(ev) }), this.mode === "doughnut" ? renderCompletionMessage.call(this) : ""), renderInstructionsText()));
94
94
  }
95
95
  static get is() { return "wm-progress-indicator"; }
96
96
  static get encapsulation() { return "shadow"; }
@@ -134,7 +134,7 @@
134
134
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z'/%3E%3C/svg%3E%0A");
135
135
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z'/%3E%3C/svg%3E%0A");
136
136
  }
137
- .svg-icon.svg-add-tag:before {
137
+ .svg-icon.svg-add-outline:before {
138
138
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z'/%3E%3C/svg%3E%0A");
139
139
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z'/%3E%3C/svg%3E%0A");
140
140
  }
@@ -150,10 +150,6 @@
150
150
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M19.8 22.6L17.15 20H6.5Q4.2 20 2.6 18.4T1 14.5Q1 12.58 2.19 11.08 3.38 9.57 5.25 9.15 5.33 8.95 5.4 8.76 5.5 8.57 5.55 8.35L1.4 4.2L2.8 2.8L21.2 21.2M6.5 18H15.15L7.1 9.95Q7.05 10.23 7.03 10.5 7 10.73 7 11H6.5Q5.05 11 4.03 12.03 3 13.05 3 14.5 3 15.95 4.03 17 5.05 18 6.5 18M11.13 14M21.6 18.75L20.15 17.35Q20.58 17 20.79 16.54 21 16.08 21 15.5 21 14.45 20.27 13.73 19.55 13 18.5 13H17V11Q17 8.93 15.54 7.46 14.08 6 12 6 11.33 6 10.7 6.16 10.07 6.33 9.5 6.68L8.05 5.23Q8.93 4.63 9.91 4.31 10.9 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 16.5 22.63 17.31 22.25 18.15 21.6 18.75M14.83 12.03Z'/%3E%3C/svg%3E%0A");
151
151
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M19.8 22.6L17.15 20H6.5Q4.2 20 2.6 18.4T1 14.5Q1 12.58 2.19 11.08 3.38 9.57 5.25 9.15 5.33 8.95 5.4 8.76 5.5 8.57 5.55 8.35L1.4 4.2L2.8 2.8L21.2 21.2M6.5 18H15.15L7.1 9.95Q7.05 10.23 7.03 10.5 7 10.73 7 11H6.5Q5.05 11 4.03 12.03 3 13.05 3 14.5 3 15.95 4.03 17 5.05 18 6.5 18M11.13 14M21.6 18.75L20.15 17.35Q20.58 17 20.79 16.54 21 16.08 21 15.5 21 14.45 20.27 13.73 19.55 13 18.5 13H17V11Q17 8.93 15.54 7.46 14.08 6 12 6 11.33 6 10.7 6.16 10.07 6.33 9.5 6.68L8.05 5.23Q8.93 4.63 9.91 4.31 10.9 4 12 4 14.93 4 16.96 6.04 19 8.07 19 11 20.73 11.2 21.86 12.5 23 13.78 23 15.5 23 16.5 22.63 17.31 22.25 18.15 21.6 18.75M14.83 12.03Z'/%3E%3C/svg%3E%0A");
152
152
  }
153
- .svg-icon.svg-apps:before {
154
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z'/%3E%3C/svg%3E%0A");
155
- mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z'/%3E%3C/svg%3E%0A");
156
- }
157
153
  .svg-icon.svg-attach:before {
158
154
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z'/%3E%3C/svg%3E%0A");
159
155
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z'/%3E%3C/svg%3E%0A");
@@ -278,6 +274,10 @@
278
274
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z'/%3E%3C/svg%3E%0A");
279
275
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z'/%3E%3C/svg%3E%0A");
280
276
  }
277
+ .svg-icon.svg-reset:before {
278
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z'/%3E%3C/svg%3E%0A");
279
+ mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z'/%3E%3C/svg%3E%0A");
280
+ }
281
281
  .svg-icon.svg-restore:before {
282
282
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3'/%3E%3C/svg%3E%0A");
283
283
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3'/%3E%3C/svg%3E%0A");
@@ -0,0 +1,69 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ import { AxePuppeteer } from "@axe-core/puppeteer";
3
+ describe("Progress Monitor", () => {
4
+ let page;
5
+ async function createPageHelper() {
6
+ page = await newE2EPage();
7
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
8
+ <wm-progress-monitor id="first-monitor">
9
+ <wm-progress-indicator label="First Indicator">
10
+ <wm-progress-slice amount="5" popover-title="5/20 Completed" popover-text="Popover text" popover-button-text="Button text" legend="completed" </wm-progress-slice>
11
+ <wm-progress-slice amount="15" popover-title="15/20 Not completed" popover-text="Popover text" popover-button-text="Button text" legend="not completed" </wm-progress-slice>
12
+ </wm-progress-indicator>
13
+ <wm-progress-indicator label="Second Indicator">
14
+ <wm-progress-slice amount="3" popover-title="3/20 Completed" popover-text="Popover text" popover-button-text="Button text" legend="completed" </wm-progress-slice>
15
+ <wm-progress-slice amount="17" popover-title="17/20 Not completed" popover-text="Popover text" popover-button-text="Button text" legend="not completed" </wm-progress-slice>
16
+ </wm-progress-indicator>
17
+ </wm-progress-monitor>
18
+ </main></body></html>`);
19
+ }
20
+ it("passes Axe checks", async () => {
21
+ await createPageHelper();
22
+ const results = await new AxePuppeteer(page).analyze();
23
+ expect(results.violations.length).toBe(0);
24
+ });
25
+ // Monitor toggles Indicator modes
26
+ it("toggles indicator modes", async () => {
27
+ await createPageHelper();
28
+ const indicator = await page.find("wm-progress-indicator");
29
+ page.setViewport({ width: 500, height: 900 });
30
+ await page.waitForChanges();
31
+ let classes = indicator.shadowRoot.querySelector(".component-wrapper").getAttribute("class");
32
+ expect(classes).toContain("bar");
33
+ page.setViewport({ width: 700, height: 900 });
34
+ await page.waitForChanges();
35
+ classes = indicator.shadowRoot.querySelector(".component-wrapper").getAttribute("class");
36
+ expect(classes).toContain("doughnut");
37
+ });
38
+ /* can't get the popover to show
39
+ // Slices read x of y {{popover text}}
40
+ it("announces the slice to SR", async () => {
41
+ await createPageHelper();
42
+ const indicator = await page.find("wm-progress-indicator");
43
+ await page.keyboard.press("Tab");
44
+ await page.waitForChanges();
45
+ await page.keyboard.press("ArrowDown");
46
+ await page.waitForChanges();
47
+ const popover = indicator.shadowRoot.querySelector("priv-chart-popover");
48
+ const results = await page.compareScreenshot();
49
+ expect(results).toMatchScreenshot({ allowableMismatchedPixels: 100 });
50
+
51
+ popover.open = true;
52
+ const liveRegion = popover.querySelector(".live-region");
53
+ expect(liveRegion.textContent).toBe("");
54
+ });
55
+ */
56
+ /*** E2E ***/
57
+ // Doughnuts display in row, bars display in column
58
+ // Popovers automatically appear when navigating via keyboard
59
+ // Popovers emit wmProgressIndicatorButtonTriggered
60
+ // Tab navigates through indicators, no tab stop on Monitor
61
+ // Clicking a slice opens the popover
62
+ // Clicking outside or hitting escape closes the popover
63
+ /*** CAN'T BE TESTED? ***/
64
+ // Default breakpoint is the width of all children
65
+ // Breakpoint is customizable
66
+ //// including "px" makes it px
67
+ //// # less than 100 refers to # of charts
68
+ //// # greater than 100 refers to px
69
+ });
@@ -59,7 +59,7 @@ export class ProgressMonitor {
59
59
  }))));
60
60
  }
61
61
  render() {
62
- return (h(Host, { key: '6b654a2da62f9ca402ba16163e1d1497c5c99be8', class: this.mode === "doughnut" ? "row" : "column" }, this.modeInitialized && this.groupLegend && this.mode === "bar" && this.renderLegend(), this.modeInitialized && h("slot", { key: 'd3b70aa0e0c409bc0bcf2d6b20ad2b9c44c8eb11' })));
62
+ return (h(Host, { class: this.mode === "doughnut" ? "row" : "column" }, this.modeInitialized && this.groupLegend && this.mode === "bar" && this.renderLegend(), this.modeInitialized && h("slot", null)));
63
63
  }
64
64
  static get is() { return "wm-progress-monitor"; }
65
65
  static get encapsulation() { return "shadow"; }