@watermarkinsights/ripple 5.11.0-1 → 5.11.0-11

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 (430) hide show
  1. package/dist/cjs/{chartFunctions-a3a08880.js → chartFunctions-b47a5431.js} +12 -9
  2. package/dist/cjs/{functions-5ac8a62f.js → functions-e24249e6.js} +7 -104
  3. package/dist/{esm/app-globals-ca017e0d.js → cjs/global-d5d3e483.js} +2 -7
  4. package/dist/cjs/index-e86c28b6.js +2649 -0
  5. package/dist/cjs/{intl-07aaf53c.js → intl-a70cf8c2.js} +1 -1
  6. package/dist/cjs/loader.cjs.js +3 -4
  7. package/dist/cjs/priv-calendar.cjs.entry.js +12 -13
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +6 -7
  9. package/dist/cjs/priv-navigator-button.cjs.entry.js +4 -5
  10. package/dist/cjs/priv-navigator-item.cjs.entry.js +4 -5
  11. package/dist/cjs/priv-option-list.cjs.entry.js +7 -8
  12. package/dist/cjs/ripple.cjs.js +11 -12
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +8 -10
  14. package/dist/cjs/wm-button.cjs.entry.js +5 -6
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +1 -1
  16. package/dist/cjs/wm-chart.cjs.entry.js +7 -8
  17. package/dist/cjs/wm-date-range.cjs.entry.js +9 -10
  18. package/dist/cjs/wm-datepicker.cjs.entry.js +9 -10
  19. package/dist/cjs/wm-file-list.cjs.entry.js +4 -5
  20. package/dist/cjs/wm-file.cjs.entry.js +12 -13
  21. package/dist/cjs/wm-input.cjs.entry.js +6 -7
  22. package/dist/cjs/wm-line-chart.cjs.entry.js +20 -28
  23. package/dist/cjs/wm-modal-pss_3.cjs.entry.js +13 -16
  24. package/dist/cjs/wm-modal_3.cjs.entry.js +13 -16
  25. package/dist/cjs/wm-navigation_3.cjs.entry.js +13 -16
  26. package/dist/cjs/wm-navigator.cjs.entry.js +4 -5
  27. package/dist/cjs/wm-nested-select.cjs.entry.js +11 -12
  28. package/dist/cjs/wm-optgroup.cjs.entry.js +5 -6
  29. package/dist/cjs/wm-option_2.cjs.entry.js +11 -13
  30. package/dist/cjs/wm-pagination.cjs.entry.js +5 -6
  31. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +10 -12
  32. package/dist/cjs/wm-search.cjs.entry.js +9 -10
  33. package/dist/cjs/wm-snackbar.cjs.entry.js +8 -9
  34. package/dist/cjs/wm-tab-item_3.cjs.entry.js +11 -14
  35. package/dist/cjs/wm-tag-input.cjs.entry.js +10 -11
  36. package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
  37. package/dist/cjs/wm-textarea.cjs.entry.js +6 -7
  38. package/dist/cjs/wm-timepicker.cjs.entry.js +6 -7
  39. package/dist/cjs/wm-toggletip.cjs.entry.js +8 -8
  40. package/dist/cjs/wm-uploader.cjs.entry.js +7 -8
  41. package/dist/cjs/wm-wrapper.cjs.entry.js +1 -1
  42. package/dist/collection/collection-manifest.json +2 -2
  43. package/dist/collection/components/charts/chartFunctions.js +10 -7
  44. package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
  45. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.css +570 -13
  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 +3 -3
  48. package/dist/collection/components/charts/screenshots.e2e.js +96 -0
  49. package/dist/collection/components/charts/wm-chart/wm-chart.css +622 -65
  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 +1 -1
  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.css +599 -68
  54. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
  55. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +14 -21
  56. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +622 -65
  58. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
  59. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.css +583 -26
  60. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
  61. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +2 -2
  62. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
  63. package/dist/collection/components/datepickers/datepicker.css +589 -25
  64. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.css +587 -51
  65. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +8 -8
  66. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
  67. package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
  68. package/dist/collection/components/datepickers/wm-date-range.js +13 -17
  69. package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
  70. package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
  71. package/dist/collection/components/datepickers/wm-datepicker.js +13 -17
  72. package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
  73. package/dist/collection/components/selects/priv-option-list/priv-option-list.css +576 -36
  74. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +7 -9
  75. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.css +597 -64
  76. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +6 -6
  77. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.css +570 -13
  78. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +1 -1
  79. package/dist/collection/components/selects/wm-option/wm-option.css +577 -30
  80. package/dist/collection/components/selects/wm-option/wm-option.e2e.js +22 -0
  81. package/dist/collection/components/selects/wm-option/wm-option.js +1 -1
  82. package/dist/collection/components/selects/wm-option/wm-option.spec.js +63 -0
  83. package/dist/collection/components/selects/wm-select/wm-select.css +591 -40
  84. package/dist/collection/components/selects/wm-select/wm-select.e2e.js +521 -0
  85. package/dist/collection/components/selects/wm-select/wm-select.js +3 -3
  86. package/dist/collection/components/selects/wm-select/wm-select.spec.js +271 -0
  87. package/dist/collection/components/wm-action-menu/wm-action-menu.css +575 -18
  88. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
  89. package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
  90. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
  91. package/dist/collection/components/wm-button/wm-button.css +584 -51
  92. package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
  93. package/dist/collection/components/wm-button/wm-button.js +1 -1
  94. package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
  95. package/dist/collection/components/wm-file/wm-file.css +573 -25
  96. package/dist/collection/components/wm-file/wm-file.js +8 -8
  97. package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
  98. package/dist/collection/components/wm-file-list/wm-file-list.css +577 -20
  99. package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
  100. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
  101. package/dist/collection/components/wm-input/wm-input.css +588 -25
  102. package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
  103. package/dist/collection/components/wm-input/wm-input.js +1 -1
  104. package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
  105. package/dist/collection/components/wm-menuitem/wm-menuitem.css +579 -18
  106. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
  107. package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
  108. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
  109. package/dist/collection/components/wm-modal/wm-modal-footer.css +577 -20
  110. package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
  111. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
  112. package/dist/collection/components/wm-modal/wm-modal-header.css +577 -20
  113. package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
  114. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
  115. package/dist/collection/components/wm-modal/wm-modal.css +570 -13
  116. package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
  117. package/dist/collection/components/wm-modal/wm-modal.js +2 -2
  118. package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
  119. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.css +570 -13
  120. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +1 -1
  121. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.css +577 -20
  122. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +1 -1
  123. package/dist/collection/components/wm-modal-pss/wm-modal-pss.css +570 -13
  124. package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +2 -2
  125. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +575 -24
  126. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
  127. package/dist/collection/components/wm-navigation/wm-navigation-item.css +570 -13
  128. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  129. package/dist/collection/components/wm-navigation/wm-navigation.css +570 -13
  130. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  131. package/dist/collection/components/wm-navigation/wm-navigation.js +3 -3
  132. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  133. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +570 -13
  134. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  135. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  136. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.css +576 -19
  137. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +1 -1
  138. package/dist/collection/components/wm-navigator/wm-navigator.css +575 -18
  139. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  140. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  141. package/dist/collection/components/wm-pagination/wm-pagination.css +575 -18
  142. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
  143. package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
  144. package/dist/collection/components/wm-search/wm-search.css +573 -23
  145. package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
  146. package/dist/collection/components/wm-search/wm-search.js +6 -7
  147. package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
  148. package/dist/collection/components/wm-snackbar/wm-snackbar.css +577 -34
  149. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
  150. package/dist/collection/components/wm-snackbar/wm-snackbar.js +3 -3
  151. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
  152. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.css +570 -13
  153. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
  154. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.css +576 -19
  155. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
  156. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.css +570 -13
  157. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
  158. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
  159. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
  160. package/dist/collection/components/wm-tag-input/wm-tag-input.css +624 -86
  161. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
  162. package/dist/collection/components/wm-tag-input/wm-tag-input.js +5 -5
  163. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
  164. package/dist/collection/components/wm-textarea/wm-textarea.css +588 -25
  165. package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
  166. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  167. package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
  168. package/dist/collection/components/wm-timepicker/wm-timepicker.css +590 -37
  169. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
  170. package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
  171. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
  172. package/dist/collection/components/wm-toggletip/wm-toggletip.css +573 -23
  173. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
  174. package/dist/collection/components/wm-toggletip/wm-toggletip.js +4 -3
  175. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
  176. package/dist/collection/components/wm-uploader/wm-uploader.css +600 -61
  177. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
  178. package/dist/collection/components/wm-uploader/wm-uploader.js +2 -2
  179. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
  180. package/dist/collection/global/functions.spec.js +126 -0
  181. package/dist/collection/lang/lang.spec.js +20 -0
  182. package/dist/esm/{chartFunctions-21d5a3d3.js → chartFunctions-d2ecde7f.js} +12 -9
  183. package/dist/esm/{functions-f39e6177.js → functions-8800c690.js} +8 -105
  184. package/dist/{cjs/app-globals-5e46c5dd.js → esm/global-5ca2ebd7.js} +1 -10
  185. package/dist/esm/index-558b5a82.js +2618 -0
  186. package/dist/esm/{intl-a0ebf99e.js → intl-cf443c87.js} +1 -1
  187. package/dist/esm/loader.js +4 -5
  188. package/dist/esm/priv-calendar.entry.js +12 -13
  189. package/dist/esm/priv-chart-popover.entry.js +6 -7
  190. package/dist/esm/priv-navigator-button.entry.js +4 -5
  191. package/dist/esm/priv-navigator-item.entry.js +4 -5
  192. package/dist/esm/priv-option-list.entry.js +7 -8
  193. package/dist/esm/ripple.js +12 -13
  194. package/dist/esm/wm-action-menu_2.entry.js +8 -10
  195. package/dist/esm/wm-button.entry.js +5 -6
  196. package/dist/esm/wm-chart-slice.entry.js +1 -1
  197. package/dist/esm/wm-chart.entry.js +7 -8
  198. package/dist/esm/wm-date-range.entry.js +9 -10
  199. package/dist/esm/wm-datepicker.entry.js +9 -10
  200. package/dist/esm/wm-file-list.entry.js +4 -5
  201. package/dist/esm/wm-file.entry.js +12 -13
  202. package/dist/esm/wm-input.entry.js +6 -7
  203. package/dist/esm/wm-line-chart.entry.js +20 -28
  204. package/dist/esm/wm-modal-pss_3.entry.js +13 -16
  205. package/dist/esm/wm-modal_3.entry.js +13 -16
  206. package/dist/esm/wm-navigation_3.entry.js +13 -16
  207. package/dist/esm/wm-navigator.entry.js +4 -5
  208. package/dist/esm/wm-nested-select.entry.js +11 -12
  209. package/dist/esm/wm-optgroup.entry.js +5 -6
  210. package/dist/esm/wm-option_2.entry.js +11 -13
  211. package/dist/esm/wm-pagination.entry.js +5 -6
  212. package/dist/esm/wm-progress-indicator_3.entry.js +10 -12
  213. package/dist/esm/wm-search.entry.js +9 -10
  214. package/dist/esm/wm-snackbar.entry.js +8 -9
  215. package/dist/esm/wm-tab-item_3.entry.js +11 -14
  216. package/dist/esm/wm-tag-input.entry.js +10 -11
  217. package/dist/esm/wm-tag-option.entry.js +2 -2
  218. package/dist/esm/wm-textarea.entry.js +6 -7
  219. package/dist/esm/wm-timepicker.entry.js +6 -7
  220. package/dist/esm/wm-toggletip.entry.js +8 -8
  221. package/dist/esm/wm-uploader.entry.js +7 -8
  222. package/dist/esm/wm-wrapper.entry.js +1 -1
  223. package/dist/esm-es5/chartFunctions-d2ecde7f.js +1 -0
  224. package/dist/esm-es5/functions-8800c690.js +1 -0
  225. package/dist/esm-es5/global-5ca2ebd7.js +1 -0
  226. package/dist/esm-es5/index-558b5a82.js +1 -0
  227. package/dist/esm-es5/{intl-a0ebf99e.js → intl-cf443c87.js} +1 -1
  228. package/dist/esm-es5/loader.js +1 -1
  229. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  230. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  231. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  232. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  233. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  234. package/dist/esm-es5/ripple.js +1 -1
  235. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  236. package/dist/esm-es5/wm-button.entry.js +1 -1
  237. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  238. package/dist/esm-es5/wm-chart.entry.js +1 -1
  239. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  240. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  241. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  242. package/dist/esm-es5/wm-file.entry.js +1 -1
  243. package/dist/esm-es5/wm-input.entry.js +1 -1
  244. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  245. package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -1
  246. package/dist/esm-es5/wm-modal_3.entry.js +1 -1
  247. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  248. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  249. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  250. package/dist/esm-es5/wm-optgroup.entry.js +1 -1
  251. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  252. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  253. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  254. package/dist/esm-es5/wm-search.entry.js +1 -1
  255. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  256. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  257. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  258. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  259. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  260. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  261. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  262. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  263. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  264. package/dist/loader/cdn.js +2 -1
  265. package/dist/loader/index.cjs.js +2 -1
  266. package/dist/loader/index.d.ts +0 -3
  267. package/dist/loader/index.es2017.js +2 -1
  268. package/dist/loader/index.js +2 -1
  269. package/dist/ripple/p-0255181b.js +1 -0
  270. package/dist/ripple/p-0ba2e506.system.entry.js +1 -0
  271. package/dist/ripple/p-0e36d5b8.system.entry.js +1 -0
  272. package/dist/ripple/p-159c4e96.entry.js +1 -0
  273. package/dist/ripple/p-1a4b6b02.system.entry.js +1 -0
  274. package/dist/ripple/p-1a71d867.system.entry.js +1 -0
  275. package/dist/ripple/p-1fce9f27.entry.js +1 -0
  276. package/dist/ripple/p-22cfff23.entry.js +1 -0
  277. package/dist/ripple/p-2b21c6f5.system.entry.js +1 -0
  278. package/dist/ripple/p-32507c13.system.entry.js +1 -0
  279. package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
  280. package/dist/ripple/{p-bb25b9af.system.js → p-3322823d.system.js} +1 -1
  281. package/dist/ripple/p-366920dc.js +1 -0
  282. package/dist/ripple/p-39e26322.entry.js +1 -0
  283. package/dist/ripple/p-3f40f06b.system.entry.js +1 -0
  284. package/dist/ripple/p-3fa38234.entry.js +1 -0
  285. package/dist/ripple/p-44f426ad.entry.js +1 -0
  286. package/dist/ripple/p-460e9ef3.system.entry.js +1 -0
  287. package/dist/ripple/{p-c34c9cbb.system.entry.js → p-4743176d.system.entry.js} +1 -1
  288. package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
  289. package/dist/ripple/p-4de728e1.entry.js +1 -0
  290. package/dist/ripple/p-4ff87702.system.entry.js +1 -0
  291. package/dist/ripple/p-5415aaf9.system.entry.js +1 -0
  292. package/dist/ripple/p-544925c2.entry.js +1 -0
  293. package/dist/ripple/p-568c595f.js +2 -0
  294. package/dist/ripple/p-56c0e19d.system.js +1 -0
  295. package/dist/ripple/p-58668e84.system.entry.js +1 -0
  296. package/dist/ripple/p-59bb36fc.entry.js +1 -0
  297. package/dist/ripple/p-5e9c9f0d.entry.js +1 -0
  298. package/dist/ripple/p-608f69c1.system.entry.js +1 -0
  299. package/dist/ripple/p-64b1e73b.entry.js +1 -0
  300. package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
  301. package/dist/ripple/p-68e04222.entry.js +1 -0
  302. package/dist/ripple/p-6e72a06c.entry.js +1 -0
  303. package/dist/ripple/p-702252ba.entry.js +1 -0
  304. package/dist/ripple/p-704be1e8.system.entry.js +1 -0
  305. package/dist/ripple/{p-9708c995.js → p-710c6115.js} +1 -1
  306. package/dist/ripple/p-7478303e.entry.js +1 -0
  307. package/dist/ripple/p-79043436.entry.js +1 -0
  308. package/dist/ripple/p-797d65b7.entry.js +1 -0
  309. package/dist/ripple/p-79d4f14b.system.entry.js +1 -0
  310. package/dist/ripple/p-7cf5993c.system.entry.js +1 -0
  311. package/dist/ripple/p-7e0fc193.system.entry.js +1 -0
  312. package/dist/ripple/p-878fd4af.system.entry.js +1 -0
  313. package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
  314. package/dist/ripple/p-8cd8f784.entry.js +1 -0
  315. package/dist/ripple/p-8d72d140.entry.js +1 -0
  316. package/dist/ripple/p-94495341.entry.js +1 -0
  317. package/dist/ripple/p-94717864.entry.js +1 -0
  318. package/dist/ripple/p-9d461de5.entry.js +1 -0
  319. package/dist/ripple/p-9eaa0acb.system.entry.js +1 -0
  320. package/dist/ripple/p-a04ef164.system.entry.js +1 -0
  321. package/dist/ripple/p-a2936bcb.system.entry.js +1 -0
  322. package/dist/ripple/p-a69425b0.entry.js +1 -0
  323. package/dist/ripple/p-ab8d78cc.system.js +2 -0
  324. package/dist/ripple/p-adc254e6.entry.js +1 -0
  325. package/dist/ripple/p-b02048a9.entry.js +1 -0
  326. package/dist/ripple/p-b2706394.entry.js +1 -0
  327. package/dist/ripple/p-b5971475.system.entry.js +1 -0
  328. package/dist/ripple/p-b5c371aa.system.entry.js +1 -0
  329. package/dist/ripple/{p-76d248e6.entry.js → p-b976c84b.entry.js} +1 -1
  330. package/dist/ripple/p-bd547650.system.entry.js +1 -0
  331. package/dist/ripple/p-bfc1065f.system.entry.js +1 -0
  332. package/dist/ripple/p-c2b5d9e5.entry.js +1 -0
  333. package/dist/ripple/p-c7e30eb0.system.entry.js +1 -0
  334. package/dist/ripple/p-ce44ba70.entry.js +1 -0
  335. package/dist/ripple/p-d57e8196.entry.js +1 -0
  336. package/dist/ripple/p-d70d72f4.system.js +1 -0
  337. package/dist/ripple/p-dc77d98a.entry.js +1 -0
  338. package/dist/ripple/p-ddcbb694.system.entry.js +1 -0
  339. package/dist/ripple/p-de272ae7.system.entry.js +1 -0
  340. package/dist/ripple/p-e2c6052b.system.entry.js +1 -0
  341. package/dist/ripple/p-e71ee9f4.system.js +1 -0
  342. package/dist/ripple/p-eca78c2b.js +1 -0
  343. package/dist/ripple/p-edd87140.system.js +1 -0
  344. package/dist/ripple/p-f22e26b6.system.entry.js +1 -0
  345. package/dist/ripple/p-f5bc8926.entry.js +1 -0
  346. package/dist/ripple/p-f6eff655.system.entry.js +1 -0
  347. package/dist/ripple/p-f779ec68.system.entry.js +1 -0
  348. package/dist/ripple/ripple.css +1 -1
  349. package/dist/ripple/ripple.esm.js +1 -1
  350. package/dist/ripple/ripple.js +1 -1
  351. package/dist/types/global/interfaces.d.ts +1 -0
  352. package/dist/types/stencil-public-runtime.d.ts +10 -3
  353. package/package.json +1 -1
  354. package/dist/cjs/index-788526f5.js +0 -1859
  355. package/dist/esm/index-130e07bb.js +0 -1828
  356. package/dist/esm-es5/app-globals-ca017e0d.js +0 -1
  357. package/dist/esm-es5/chartFunctions-21d5a3d3.js +0 -1
  358. package/dist/esm-es5/functions-f39e6177.js +0 -1
  359. package/dist/esm-es5/index-130e07bb.js +0 -1
  360. package/dist/ripple/p-0335da82.entry.js +0 -1
  361. package/dist/ripple/p-044cbd11.system.entry.js +0 -1
  362. package/dist/ripple/p-07087139.system.entry.js +0 -1
  363. package/dist/ripple/p-0bffed17.entry.js +0 -1
  364. package/dist/ripple/p-0d77c2f2.system.entry.js +0 -1
  365. package/dist/ripple/p-1c9e0cae.system.entry.js +0 -1
  366. package/dist/ripple/p-2686e38f.entry.js +0 -1
  367. package/dist/ripple/p-26c0304e.entry.js +0 -1
  368. package/dist/ripple/p-2e1f1f9e.entry.js +0 -1
  369. package/dist/ripple/p-2f07262e.entry.js +0 -1
  370. package/dist/ripple/p-3405e16e.entry.js +0 -1
  371. package/dist/ripple/p-342e6ba1.system.entry.js +0 -1
  372. package/dist/ripple/p-36fa8451.entry.js +0 -1
  373. package/dist/ripple/p-37b044c7.system.js +0 -1
  374. package/dist/ripple/p-3e144fc5.system.js +0 -1
  375. package/dist/ripple/p-3f486eed.system.js +0 -1
  376. package/dist/ripple/p-44b7ac3f.system.entry.js +0 -1
  377. package/dist/ripple/p-46979d51.entry.js +0 -1
  378. package/dist/ripple/p-4b0989d7.entry.js +0 -1
  379. package/dist/ripple/p-4ffed2a0.system.entry.js +0 -1
  380. package/dist/ripple/p-540dc07f.entry.js +0 -1
  381. package/dist/ripple/p-56d7d853.entry.js +0 -1
  382. package/dist/ripple/p-585d603f.entry.js +0 -1
  383. package/dist/ripple/p-5a05046a.system.entry.js +0 -1
  384. package/dist/ripple/p-5c2fc698.entry.js +0 -1
  385. package/dist/ripple/p-5f247e4a.entry.js +0 -1
  386. package/dist/ripple/p-65d2c6b7.entry.js +0 -1
  387. package/dist/ripple/p-6b119eec.system.entry.js +0 -1
  388. package/dist/ripple/p-6c1553b1.system.entry.js +0 -1
  389. package/dist/ripple/p-6c716f1c.system.entry.js +0 -1
  390. package/dist/ripple/p-721c785a.system.entry.js +0 -1
  391. package/dist/ripple/p-72935ed4.entry.js +0 -1
  392. package/dist/ripple/p-7718d572.system.entry.js +0 -1
  393. package/dist/ripple/p-79b5df24.entry.js +0 -1
  394. package/dist/ripple/p-7dec8712.system.entry.js +0 -1
  395. package/dist/ripple/p-8270cd9e.system.entry.js +0 -1
  396. package/dist/ripple/p-88e4a846.js +0 -1
  397. package/dist/ripple/p-89a2db02.js +0 -1
  398. package/dist/ripple/p-8acb1dc0.entry.js +0 -1
  399. package/dist/ripple/p-8b983e94.system.entry.js +0 -1
  400. package/dist/ripple/p-9160d382.system.entry.js +0 -1
  401. package/dist/ripple/p-91fc6acf.system.entry.js +0 -1
  402. package/dist/ripple/p-945d47d1.system.js +0 -1
  403. package/dist/ripple/p-97c524e5.system.entry.js +0 -1
  404. package/dist/ripple/p-a173bac6.system.entry.js +0 -1
  405. package/dist/ripple/p-a89a0ce4.system.entry.js +0 -1
  406. package/dist/ripple/p-a96fd05a.entry.js +0 -1
  407. package/dist/ripple/p-aaa18797.entry.js +0 -1
  408. package/dist/ripple/p-aab342f1.entry.js +0 -1
  409. package/dist/ripple/p-aae83494.system.entry.js +0 -1
  410. package/dist/ripple/p-ade89f97.system.entry.js +0 -1
  411. package/dist/ripple/p-b02dfe01.system.entry.js +0 -1
  412. package/dist/ripple/p-b8912fba.system.entry.js +0 -1
  413. package/dist/ripple/p-c22b9ac6.entry.js +0 -1
  414. package/dist/ripple/p-cef8a45b.system.js +0 -2
  415. package/dist/ripple/p-d19f494d.system.entry.js +0 -1
  416. package/dist/ripple/p-d3ffe48c.system.entry.js +0 -1
  417. package/dist/ripple/p-d49cd886.entry.js +0 -1
  418. package/dist/ripple/p-d7ce58a3.entry.js +0 -1
  419. package/dist/ripple/p-d9da0502.js +0 -2
  420. package/dist/ripple/p-e3083b58.entry.js +0 -1
  421. package/dist/ripple/p-e8023928.system.entry.js +0 -1
  422. package/dist/ripple/p-eb832c89.entry.js +0 -1
  423. package/dist/ripple/p-ecd38ef7.entry.js +0 -1
  424. package/dist/ripple/p-ee307bf6.entry.js +0 -1
  425. package/dist/ripple/p-f1abfaa1.entry.js +0 -1
  426. package/dist/ripple/p-f41ab9ea.js +0 -1
  427. package/dist/ripple/p-f4ed6ee8.system.entry.js +0 -1
  428. package/dist/ripple/p-f9222794.system.entry.js +0 -1
  429. package/dist/ripple/p-fd862f4e.system.entry.js +0 -1
  430. package/dist/ripple/p-fec7ea2d.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,13 +11,13 @@ 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
20
- { color: "#146ca9", icon: "f6ff" }, // blue, upside down triangle
14
+ { color: "#8b86ca", icon: "triangle" },
15
+ { color: "#2e1b46", icon: "circle" },
16
+ { color: "#0089e4", icon: "square" },
17
+ { color: "#088000", icon: "star" },
18
+ { color: "#ea8500", icon: "rhombus" },
19
+ { color: "#d54f41", icon: "triangle-inverted" },
20
+ { color: "#146ca9", icon: "pentagon" }, // blue
21
21
  ];
22
22
  this.debouncedResize = debounce(async () => {
23
23
  this.displayedXIntervals = this.determineDisplayedXIntervals();
@@ -301,16 +301,11 @@ export class LineChart {
301
301
  })));
302
302
  }
303
303
  renderVisibilityToggle(lineLabel, lineIdx, isHidden) {
304
- return (h("wm-button", { id: `visibility-button-${lineIdx}`, class: "visibility-toggle", "label-for-identical-buttons": `${lineIdx === 0 ? `Toggle line visibility list with ${this.dataPointMatrix.length} items` : ""} ${isHidden ? globalMessages.show : globalMessages.hide} ${lineLabel} toggle ${isHidden ? "pressed" : ""}`, "button-type": "navigational", tooltip: isHidden ? globalMessages.show : globalMessages.hide, tooltipPosition: "bottom", icon: isHidden ? "f209" : "f208", onClick: () => this.toggleLineVisibility(lineIdx), onKeyDown: (ev) => this.handleVisibilityToggleKeydown(ev, lineIdx), onFocus: () => (this.popoverIndex = -1) }));
304
+ return (h("wm-button", { id: `visibility-button-${lineIdx}`, class: "visibility-toggle", "label-for-identical-buttons": `${lineIdx === 0 ? `Toggle line visibility list with ${this.dataPointMatrix.length} items` : ""} ${isHidden ? globalMessages.show : globalMessages.hide} ${lineLabel} toggle ${isHidden ? "pressed" : ""}`, "button-type": "navigational", tooltip: isHidden ? globalMessages.show : globalMessages.hide, tooltipPosition: "bottom", icon: isHidden ? "#hide" : "#show", onClick: () => this.toggleLineVisibility(lineIdx), onKeyDown: (ev) => this.handleVisibilityToggleKeydown(ev, lineIdx), onFocus: () => (this.popoverIndex = -1) }));
305
305
  }
306
306
  renderIcon(lineIdx) {
307
307
  const { color, icon } = this.lineStyles[lineIdx];
308
- const iconStyle = {
309
- "--iconColor": color,
310
- "--icon": `"\\${icon}"`,
311
- "--translation": lineIdx === 5 ? "rotate(180deg)" : "unset",
312
- };
313
- return h("span", { class: "icon", style: iconStyle });
308
+ return h("div", { style: { color: color }, class: `svg-icon svg-shape-${icon}` });
314
309
  }
315
310
  renderXIntervals() {
316
311
  const gridStyle = {
@@ -336,11 +331,9 @@ export class LineChart {
336
331
  const { color, icon } = this.lineStyles[lineIdx];
337
332
  const firstPointTabIndex = lineIdx === 0 && pointIdx === 0 ? 0 : undefined;
338
333
  const iconStyle = {
339
- "--icon": `"\\${icon}"`,
340
- "--iconColor": color,
334
+ color: color,
341
335
  "--xPosition": xPositionPercent + "%",
342
336
  "--yPosition": yPositionPercent + "%",
343
- "--translation": lineIdx === 5 ? "translate(-50%, -50%) rotate(180deg)" : "translate(-50%, -50%)",
344
337
  };
345
338
  let ariaLabel = `${lineLabel} ${highlighted ? this.highlightQualifier : ""} ${this.xAxisLabel} ${xValue + (this.parsedUnits[0] ? this.parsedUnits[0] : "")}, ${this.yAxisLabel}: ${yValue + (this.parsedUnits[1] ? this.parsedUnits[1] : "")}`;
346
339
  if (this.showDeltas && pointIdx > 0) {
@@ -348,7 +341,7 @@ export class LineChart {
348
341
  const changeSinceMessage = lineChartMessages.getChangeSince(prevDataPoint.xValue);
349
342
  ariaLabel += `, ${changeSinceMessage} ${this.calcDelta(dataPoint, prevDataPoint)}`;
350
343
  }
351
- return (h("span", { id: `${lineLabel}-${pointIdx}`, role: "img", "aria-label": ariaLabel, tabIndex: firstPointTabIndex, class: "point icon", style: iconStyle, "data-lineidx": lineIdx, "data-pointidx": pointIdx, "data-xvalue": xValue, onKeyDown: (ev) => this.handleDataPointKeydown(ev), onFocus: () => (this.popoverIndex = pointIdx), onClick: (ev) => this.focusDataPointByEl(ev.target), onMouseEnter: () => (this.popoverIndex = pointIdx) }));
344
+ return (h("span", { id: `${lineLabel}-${pointIdx}`, role: "img", "aria-label": ariaLabel, tabIndex: firstPointTabIndex, class: `point svg-icon svg-shape-${icon}`, style: iconStyle, "data-lineidx": lineIdx, "data-pointidx": pointIdx, "data-xvalue": xValue, onKeyDown: (ev) => this.handleDataPointKeydown(ev), onFocus: () => (this.popoverIndex = pointIdx), onClick: (ev) => this.focusDataPointByEl(ev.target), onMouseEnter: () => (this.popoverIndex = pointIdx) }, h("span", { class: `point-bg svg-icon svg-shape-${icon}` })));
352
345
  }
353
346
  })));
354
347
  }
@@ -403,7 +396,7 @@ export class LineChart {
403
396
  popoverStyle = {
404
397
  "--leftPosition": `0%`,
405
398
  "--topPosition": "0%",
406
- maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px", // take up no more max-width than is visually available
399
+ maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px",
407
400
  transform: `translateX(calc(${displaceLeft}))`, // align with left edge of component
408
401
  };
409
402
  }
@@ -443,9 +436,9 @@ export class LineChart {
443
436
  return h("div", { class: "highlight", style: highlightStyle });
444
437
  }
445
438
  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: {
439
+ 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
440
  "--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))));
441
+ } }, 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
442
  }
450
443
  static get is() { return "wm-line-chart"; }
451
444
  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
+ });