@watermarkinsights/ripple 4.3.0 → 4.4.0-0

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 (371) hide show
  1. package/dist/cjs/chartFunctions-cecf8134.js +600 -0
  2. package/dist/cjs/{functions-91da05e9.js → functions-4208c444.js} +362 -362
  3. package/dist/cjs/{global-20d48c6c.js → global-bd289a67.js} +24 -24
  4. package/dist/cjs/{index-fae02cd7.js → index-f8ef86de.js} +436 -150
  5. package/dist/cjs/interfaces-ad9e80a6.js +38 -0
  6. package/dist/cjs/intl-3fafc6d1.js +179 -0
  7. package/dist/cjs/loader.cjs.js +4 -13
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +85 -85
  9. package/dist/cjs/priv-datepicker.cjs.entry.js +637 -637
  10. package/dist/cjs/priv-navigator-button.cjs.entry.js +18 -18
  11. package/dist/cjs/priv-navigator-item.cjs.entry.js +21 -21
  12. package/dist/cjs/ripple.cjs.js +4 -7
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +314 -314
  14. package/dist/cjs/wm-button.cjs.entry.js +174 -174
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +17 -17
  16. package/dist/cjs/wm-chart.cjs.entry.js +164 -164
  17. package/dist/cjs/wm-datepicker.cjs.entry.js +160 -160
  18. package/dist/cjs/wm-file-list.cjs.entry.js +10 -10
  19. package/dist/cjs/wm-file.cjs.entry.js +178 -178
  20. package/dist/cjs/wm-input.cjs.entry.js +102 -102
  21. package/dist/cjs/wm-line-chart.cjs.entry.js +462 -462
  22. package/dist/cjs/wm-modal-footer.cjs.entry.js +27 -27
  23. package/dist/cjs/wm-modal-header.cjs.entry.js +21 -21
  24. package/dist/cjs/wm-modal.cjs.entry.js +92 -92
  25. package/dist/cjs/wm-navigation_3.cjs.entry.js +179 -179
  26. package/dist/cjs/wm-navigator.cjs.entry.js +255 -251
  27. package/dist/cjs/wm-option_2.cjs.entry.js +710 -710
  28. package/dist/cjs/wm-pagination.cjs.entry.js +169 -169
  29. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +151 -151
  30. package/dist/cjs/wm-search.cjs.entry.js +192 -192
  31. package/dist/cjs/wm-snackbar.cjs.entry.js +114 -114
  32. package/dist/cjs/wm-tab-item_3.cjs.entry.js +247 -247
  33. package/dist/cjs/wm-tag-input.cjs.entry.js +849 -849
  34. package/dist/cjs/wm-tag-option.cjs.entry.js +33 -33
  35. package/dist/cjs/wm-timepicker.cjs.entry.js +270 -270
  36. package/dist/cjs/wm-toggletip.cjs.entry.js +99 -99
  37. package/dist/cjs/wm-uploader.cjs.entry.js +198 -198
  38. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  39. package/dist/collection/collection-manifest.json +41 -41
  40. package/dist/collection/components/charts/chartFunctions.js +456 -456
  41. package/dist/collection/components/charts/chartFunctions.spec.js +13 -13
  42. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +73 -73
  43. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +257 -254
  44. package/dist/collection/components/charts/screenshots.e2e.js +30 -30
  45. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +121 -121
  46. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +160 -160
  47. package/dist/collection/components/charts/wm-chart/wm-chart.js +382 -381
  48. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +26 -26
  49. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.css +1 -2
  50. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +138 -138
  51. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +731 -731
  52. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +106 -106
  53. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +202 -202
  54. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +54 -54
  55. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +136 -136
  56. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +31 -31
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +119 -119
  58. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +187 -187
  59. package/dist/collection/components/wm-action-menu/wm-action-menu.js +435 -435
  60. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +35 -35
  61. package/dist/collection/components/wm-button/wm-button.e2e.js +58 -58
  62. package/dist/collection/components/wm-button/wm-button.js +454 -452
  63. package/dist/collection/components/wm-button/wm-button.spec.js +63 -63
  64. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +943 -939
  65. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.spec.js +71 -71
  66. package/dist/collection/components/wm-datepicker/wm-datepicker.css +1 -2
  67. package/dist/collection/components/wm-datepicker/wm-datepicker.e2e.js +359 -359
  68. package/dist/collection/components/wm-datepicker/wm-datepicker.js +415 -413
  69. package/dist/collection/components/wm-datepicker/wm-datepicker.spec.js +13 -13
  70. package/dist/collection/components/wm-file/wm-file.js +380 -380
  71. package/dist/collection/components/wm-file/wm-file.spec.js +107 -107
  72. package/dist/collection/components/wm-file-list/wm-file-list.js +42 -42
  73. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +47 -47
  74. package/dist/collection/components/wm-input/wm-input.e2e.js +26 -26
  75. package/dist/collection/components/wm-input/wm-input.js +453 -453
  76. package/dist/collection/components/wm-input/wm-input.spec.js +168 -168
  77. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +18 -18
  78. package/dist/collection/components/wm-menuitem/wm-menuitem.js +446 -436
  79. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +46 -46
  80. package/dist/collection/components/wm-modal/wm-modal-footer.js +130 -130
  81. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +8 -8
  82. package/dist/collection/components/wm-modal/wm-modal-header.js +68 -68
  83. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +5 -5
  84. package/dist/collection/components/wm-modal/wm-modal.e2e.js +65 -65
  85. package/dist/collection/components/wm-modal/wm-modal.js +299 -296
  86. package/dist/collection/components/wm-modal/wm-modal.spec.js +22 -22
  87. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +0 -1
  88. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +112 -112
  89. package/dist/collection/components/wm-navigation/wm-navigation-item.js +125 -125
  90. package/dist/collection/components/wm-navigation/wm-navigation.css +0 -2
  91. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +86 -86
  92. package/dist/collection/components/wm-navigation/wm-navigation.js +209 -209
  93. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +79 -79
  94. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +30 -30
  95. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +103 -103
  96. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +119 -118
  97. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +180 -180
  98. package/dist/collection/components/wm-navigator/wm-navigator.js +458 -454
  99. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +153 -153
  100. package/dist/collection/components/wm-option/wm-option.e2e.js +19 -19
  101. package/dist/collection/components/wm-option/wm-option.js +474 -463
  102. package/dist/collection/components/wm-option/wm-option.spec.js +39 -39
  103. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +301 -301
  104. package/dist/collection/components/wm-pagination/wm-pagination.js +327 -327
  105. package/dist/collection/components/wm-search/wm-search.e2e.js +69 -69
  106. package/dist/collection/components/wm-search/wm-search.js +415 -414
  107. package/dist/collection/components/wm-search/wm-search.spec.js +64 -64
  108. package/dist/collection/components/wm-select/wm-select.e2e.js +443 -443
  109. package/dist/collection/components/wm-select/wm-select.js +967 -966
  110. package/dist/collection/components/wm-select/wm-select.spec.js +250 -250
  111. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +114 -114
  112. package/dist/collection/components/wm-snackbar/wm-snackbar.js +209 -207
  113. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +4 -4
  114. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +190 -188
  115. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +261 -261
  116. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
  117. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +79 -79
  118. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +6 -6
  119. package/dist/collection/components/wm-tag-input/wm-tag-input.css +2 -4
  120. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +168 -168
  121. package/dist/collection/components/wm-tag-input/wm-tag-input.js +1159 -1159
  122. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +147 -147
  123. package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +236 -234
  124. package/dist/collection/components/wm-timepicker/wm-timepicker.css +1 -2
  125. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +147 -147
  126. package/dist/collection/components/wm-timepicker/wm-timepicker.js +531 -527
  127. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +151 -151
  128. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +61 -61
  129. package/dist/collection/components/wm-toggletip/wm-toggletip.js +209 -208
  130. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +16 -16
  131. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +56 -56
  132. package/dist/collection/components/wm-uploader/wm-uploader.js +423 -422
  133. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +149 -149
  134. package/dist/collection/components/wm-wrapper/wm-wrapper.js +26 -26
  135. package/dist/collection/global/__mocks__/functions.js +1 -1
  136. package/dist/collection/global/functions.js +510 -510
  137. package/dist/collection/global/functions.spec.js +123 -123
  138. package/dist/collection/global/global.js +16 -16
  139. package/dist/collection/global/interfaces.js +39 -39
  140. package/dist/collection/global/intl.js +162 -162
  141. package/dist/collection/global/services/__mocks__/http-service.js +112 -112
  142. package/dist/collection/global/services/http-service.js +41 -41
  143. package/dist/collection/global/themes/default.js +4 -4
  144. package/dist/collection/global/themes/neutral.js +4 -4
  145. package/dist/collection/lang/lang.spec.js +13 -13
  146. package/dist/esm/chartFunctions-23173fce.js +584 -0
  147. package/dist/esm/{functions-5afd09f4.js → functions-d0e70094.js} +362 -362
  148. package/dist/esm/{global-d4a9e80e.js → global-4569c7b8.js} +24 -24
  149. package/dist/esm/{index-7e11ea42.js → index-f164fbca.js} +436 -150
  150. package/dist/esm/interfaces-9b75fb61.js +35 -0
  151. package/dist/esm/intl-05c9e0c9.js +174 -0
  152. package/dist/esm/loader.js +5 -14
  153. package/dist/esm/priv-chart-popover.entry.js +85 -85
  154. package/dist/esm/priv-datepicker.entry.js +637 -637
  155. package/dist/esm/priv-navigator-button.entry.js +18 -18
  156. package/dist/esm/priv-navigator-item.entry.js +21 -21
  157. package/dist/esm/ripple.js +5 -8
  158. package/dist/esm/wm-action-menu_2.entry.js +314 -314
  159. package/dist/esm/wm-button.entry.js +174 -174
  160. package/dist/esm/wm-chart-slice.entry.js +17 -17
  161. package/dist/esm/wm-chart.entry.js +164 -164
  162. package/dist/esm/wm-datepicker.entry.js +160 -160
  163. package/dist/esm/wm-file-list.entry.js +10 -10
  164. package/dist/esm/wm-file.entry.js +178 -178
  165. package/dist/esm/wm-input.entry.js +102 -102
  166. package/dist/esm/wm-line-chart.entry.js +462 -462
  167. package/dist/esm/wm-modal-footer.entry.js +27 -27
  168. package/dist/esm/wm-modal-header.entry.js +21 -21
  169. package/dist/esm/wm-modal.entry.js +92 -92
  170. package/dist/esm/wm-navigation_3.entry.js +179 -179
  171. package/dist/esm/wm-navigator.entry.js +255 -251
  172. package/dist/esm/wm-option_2.entry.js +710 -710
  173. package/dist/esm/wm-pagination.entry.js +169 -169
  174. package/dist/esm/wm-progress-indicator_3.entry.js +151 -151
  175. package/dist/esm/wm-search.entry.js +192 -192
  176. package/dist/esm/wm-snackbar.entry.js +114 -114
  177. package/dist/esm/wm-tab-item_3.entry.js +247 -247
  178. package/dist/esm/wm-tag-input.entry.js +849 -849
  179. package/dist/esm/wm-tag-option.entry.js +33 -33
  180. package/dist/esm/wm-timepicker.entry.js +270 -270
  181. package/dist/esm/wm-toggletip.entry.js +99 -99
  182. package/dist/esm/wm-uploader.entry.js +198 -198
  183. package/dist/esm/wm-wrapper.entry.js +12 -12
  184. package/dist/esm-es5/chartFunctions-23173fce.js +1 -0
  185. package/dist/esm-es5/functions-d0e70094.js +1 -0
  186. package/dist/esm-es5/global-4569c7b8.js +1 -0
  187. package/dist/esm-es5/index-f164fbca.js +2 -0
  188. package/dist/esm-es5/{intl-e2da750a.js → intl-05c9e0c9.js} +1 -1
  189. package/dist/esm-es5/loader.js +1 -1
  190. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  191. package/dist/esm-es5/priv-datepicker.entry.js +1 -1
  192. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  193. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  194. package/dist/esm-es5/ripple.js +1 -1
  195. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  196. package/dist/esm-es5/wm-button.entry.js +1 -1
  197. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  198. package/dist/esm-es5/wm-chart.entry.js +1 -1
  199. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  200. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  201. package/dist/esm-es5/wm-file.entry.js +1 -1
  202. package/dist/esm-es5/wm-input.entry.js +1 -1
  203. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  204. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  206. package/dist/esm-es5/wm-modal.entry.js +1 -1
  207. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  208. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  209. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  210. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  211. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  212. package/dist/esm-es5/wm-search.entry.js +1 -1
  213. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  214. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  215. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  216. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  217. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  218. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  219. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  220. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  221. package/dist/loader/index.d.ts +1 -1
  222. package/dist/ripple/p-028ef6db.system.entry.js +1 -0
  223. package/dist/ripple/{p-863e737a.js → p-05d4e49b.js} +1 -1
  224. package/dist/ripple/{p-a1e95b05.system.entry.js → p-06776596.system.entry.js} +1 -1
  225. package/dist/ripple/{p-622a7791.system.entry.js → p-067d7922.system.entry.js} +1 -1
  226. package/dist/ripple/p-09d62ddd.entry.js +1 -0
  227. package/dist/ripple/{p-f30839a1.system.entry.js → p-0ecbf569.system.entry.js} +1 -1
  228. package/dist/ripple/p-0fe97e85.system.js +2 -0
  229. package/dist/ripple/{p-24b08e1f.js → p-13ca30d8.js} +1 -1
  230. package/dist/ripple/{p-8f3f903f.system.js → p-1402cfa2.system.js} +1 -1
  231. package/dist/ripple/p-1453ea51.system.entry.js +1 -0
  232. package/dist/ripple/{p-6abb903c.entry.js → p-153701f9.entry.js} +1 -1
  233. package/dist/ripple/p-1cc91907.system.js +1 -0
  234. package/dist/ripple/{p-ad37cdfd.entry.js → p-1d8b0039.entry.js} +1 -1
  235. package/dist/ripple/{p-d0f1b8c4.system.entry.js → p-1fa2a756.system.entry.js} +1 -1
  236. package/dist/ripple/{p-a52c5a1c.entry.js → p-25446670.entry.js} +1 -1
  237. package/dist/ripple/{p-1283e85d.entry.js → p-27f47edc.entry.js} +1 -1
  238. package/dist/ripple/{p-32b1126c.system.entry.js → p-28e4583c.system.entry.js} +1 -1
  239. package/dist/ripple/{p-a5b23781.system.entry.js → p-2c4f312d.system.entry.js} +1 -1
  240. package/dist/ripple/p-30b17818.system.entry.js +1 -0
  241. package/dist/ripple/{p-0631be01.system.entry.js → p-3446852f.system.entry.js} +1 -1
  242. package/dist/ripple/{p-ae674a54.entry.js → p-350fe5da.entry.js} +1 -1
  243. package/dist/ripple/{p-d04ba5f8.system.entry.js → p-3583d113.system.entry.js} +1 -1
  244. package/dist/ripple/{p-cbd8a60b.system.entry.js → p-361cc8fc.system.entry.js} +1 -1
  245. package/dist/ripple/{p-7529706d.entry.js → p-372faf33.entry.js} +1 -1
  246. package/dist/ripple/{p-19773c40.entry.js → p-3a070f35.entry.js} +1 -1
  247. package/dist/ripple/{p-c7b5ac39.js → p-3af72848.js} +1 -1
  248. package/dist/ripple/{p-c41603e6.entry.js → p-42ebfcfa.entry.js} +1 -1
  249. package/dist/ripple/{p-13594c2e.entry.js → p-43e2a49a.entry.js} +1 -1
  250. package/dist/ripple/{p-ed942b42.entry.js → p-49118468.entry.js} +1 -1
  251. package/dist/ripple/p-49c85d1a.system.js +1 -0
  252. package/dist/ripple/p-4de51706.js +2 -0
  253. package/dist/ripple/{p-3c80bf67.entry.js → p-58174f4e.entry.js} +1 -1
  254. package/dist/ripple/{p-c5e8f8a5.system.entry.js → p-5a4d9897.system.entry.js} +1 -1
  255. package/dist/ripple/{p-e3f0b57f.system.entry.js → p-5ac980e2.system.entry.js} +1 -1
  256. package/dist/ripple/{p-3becce62.system.entry.js → p-633cd89a.system.entry.js} +1 -1
  257. package/dist/ripple/{p-1205fdc1.entry.js → p-63f75d43.entry.js} +1 -1
  258. package/dist/ripple/{p-90ea7e3a.system.entry.js → p-67d48c33.system.entry.js} +1 -1
  259. package/dist/ripple/{p-8ef87907.entry.js → p-6caaf85f.entry.js} +1 -1
  260. package/dist/ripple/{p-935513f8.entry.js → p-6cf7a34a.entry.js} +1 -1
  261. package/dist/ripple/p-73289c2c.system.js +1 -0
  262. package/dist/ripple/{p-c76bbedf.system.entry.js → p-7a8816d9.system.entry.js} +1 -1
  263. package/dist/ripple/{p-8ea68cb3.system.entry.js → p-7e56da2e.system.entry.js} +1 -1
  264. package/dist/ripple/{p-deb4f5a2.entry.js → p-7e8daaac.entry.js} +1 -1
  265. package/dist/ripple/p-88406560.system.entry.js +1 -0
  266. package/dist/ripple/{p-84a7e757.entry.js → p-8cace32f.entry.js} +1 -1
  267. package/dist/ripple/{p-80aef387.entry.js → p-8d4734ad.entry.js} +1 -1
  268. package/dist/ripple/p-8f76a838.system.entry.js +1 -0
  269. package/dist/ripple/p-934c1b6b.js +1 -0
  270. package/dist/ripple/{p-85f744ed.system.js → p-9fecbc8a.system.js} +1 -1
  271. package/dist/ripple/{p-b71a83e3.entry.js → p-a69c37e0.entry.js} +1 -1
  272. package/dist/ripple/{p-9288659b.entry.js → p-a82a8931.entry.js} +1 -1
  273. package/dist/ripple/p-a99b05de.system.entry.js +1 -0
  274. package/dist/ripple/{p-36049d2f.entry.js → p-aadf8c59.entry.js} +1 -1
  275. package/dist/ripple/{p-676c1089.system.entry.js → p-aba5a00e.system.entry.js} +1 -1
  276. package/dist/ripple/{p-0aecac86.entry.js → p-ad6dc751.entry.js} +1 -1
  277. package/dist/ripple/{p-0f1ff645.entry.js → p-b253d2fc.entry.js} +1 -1
  278. package/dist/ripple/p-b2ff4723.system.entry.js +1 -0
  279. package/dist/ripple/{p-a0bf5eef.entry.js → p-b452d1d7.entry.js} +1 -1
  280. package/dist/ripple/{p-1cde16a7.system.entry.js → p-b4d862e1.system.entry.js} +1 -1
  281. package/dist/ripple/{p-d496bc44.system.entry.js → p-bdd4f919.system.entry.js} +1 -1
  282. package/dist/ripple/p-c18b398c.system.js +1 -0
  283. package/dist/ripple/{p-8f8c3705.entry.js → p-c249063c.entry.js} +1 -1
  284. package/dist/ripple/p-c344a69c.entry.js +1 -0
  285. package/dist/ripple/{p-0d9f70ab.entry.js → p-c717d895.entry.js} +1 -1
  286. package/dist/ripple/{p-2e773564.system.entry.js → p-c96a5c94.system.entry.js} +1 -1
  287. package/dist/ripple/{p-15497721.system.entry.js → p-ceced3d9.system.entry.js} +1 -1
  288. package/dist/ripple/{p-d428e9bb.system.entry.js → p-d16f91e9.system.entry.js} +1 -1
  289. package/dist/ripple/{p-ff14e4ec.system.entry.js → p-d3f9d028.system.entry.js} +1 -1
  290. package/dist/ripple/{p-7962f562.entry.js → p-de349bee.entry.js} +1 -1
  291. package/dist/ripple/{p-b3c73bc9.entry.js → p-e24ddae1.entry.js} +1 -1
  292. package/dist/ripple/{p-b3e08b14.system.entry.js → p-e8b58666.system.entry.js} +1 -1
  293. package/dist/ripple/{p-a9c096b5.entry.js → p-fa87bce3.entry.js} +1 -1
  294. package/dist/ripple/ripple.esm.js +1 -1
  295. package/dist/ripple/ripple.js +16 -20
  296. package/dist/types/components/charts/chartFunctions.d.ts +13 -13
  297. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +24 -24
  298. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +8 -8
  299. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +39 -39
  300. package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +74 -74
  301. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +26 -26
  302. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +17 -17
  303. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +7 -7
  304. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +43 -43
  305. package/dist/types/components/wm-button/wm-button.d.ts +40 -40
  306. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +76 -76
  307. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +31 -31
  308. package/dist/types/components/wm-file/wm-file.d.ts +40 -40
  309. package/dist/types/components/wm-file-list/wm-file-list.d.ts +3 -3
  310. package/dist/types/components/wm-input/wm-input.d.ts +46 -46
  311. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +31 -31
  312. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +11 -11
  313. package/dist/types/components/wm-modal/wm-modal-header.d.ts +7 -7
  314. package/dist/types/components/wm-modal/wm-modal.d.ts +24 -24
  315. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +13 -13
  316. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +10 -10
  317. package/dist/types/components/wm-navigation/wm-navigation.d.ts +23 -23
  318. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +7 -7
  319. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +10 -10
  320. package/dist/types/components/wm-navigator/wm-navigator.d.ts +57 -57
  321. package/dist/types/components/wm-option/wm-option.d.ts +36 -36
  322. package/dist/types/components/wm-pagination/wm-pagination.d.ts +27 -27
  323. package/dist/types/components/wm-search/wm-search.d.ts +73 -73
  324. package/dist/types/components/wm-select/wm-select.d.ts +99 -99
  325. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +24 -24
  326. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +30 -30
  327. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +41 -41
  328. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +16 -16
  329. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +114 -114
  330. package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +15 -15
  331. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +48 -48
  332. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +20 -20
  333. package/dist/types/components/wm-uploader/wm-uploader.d.ts +47 -47
  334. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +4 -4
  335. package/dist/types/components.d.ts +382 -0
  336. package/dist/types/global/__mocks__/functions.d.ts +1 -1
  337. package/dist/types/global/functions.d.ts +4 -4
  338. package/dist/types/global/interfaces.d.ts +49 -49
  339. package/dist/types/global/intl.d.ts +31 -31
  340. package/dist/types/global/services/__mocks__/http-service.d.ts +1 -1
  341. package/dist/types/stencil-public-runtime.d.ts +46 -5
  342. package/package.json +1 -1
  343. package/dist/cjs/chartFunctions-2c3e010e.js +0 -600
  344. package/dist/cjs/interfaces-245d7bff.js +0 -38
  345. package/dist/cjs/intl-fa3bb4ae.js +0 -179
  346. package/dist/esm/chartFunctions-36634c04.js +0 -584
  347. package/dist/esm/interfaces-89cad2fc.js +0 -35
  348. package/dist/esm/intl-e2da750a.js +0 -174
  349. package/dist/esm/polyfills/css-shim.js +0 -1
  350. package/dist/esm-es5/chartFunctions-36634c04.js +0 -1
  351. package/dist/esm-es5/functions-5afd09f4.js +0 -1
  352. package/dist/esm-es5/global-d4a9e80e.js +0 -1
  353. package/dist/esm-es5/index-7e11ea42.js +0 -2
  354. package/dist/ripple/p-00acacbe.system.entry.js +0 -1
  355. package/dist/ripple/p-0f889b84.system.js +0 -1
  356. package/dist/ripple/p-13af8346.entry.js +0 -1
  357. package/dist/ripple/p-16363e1c.system.entry.js +0 -1
  358. package/dist/ripple/p-2a95b63f.system.entry.js +0 -1
  359. package/dist/ripple/p-30bf24f8.system.js +0 -2
  360. package/dist/ripple/p-3248c0fa.system.entry.js +0 -1
  361. package/dist/ripple/p-47c20b05.entry.js +0 -1
  362. package/dist/ripple/p-56d64283.system.entry.js +0 -1
  363. package/dist/ripple/p-5e85967a.system.js +0 -1
  364. package/dist/ripple/p-9b2034f6.js +0 -1
  365. package/dist/ripple/p-a3d07be5.system.js +0 -1
  366. package/dist/ripple/p-a6be3cca.system.entry.js +0 -1
  367. package/dist/ripple/p-aafa111a.system.js +0 -1
  368. package/dist/ripple/p-b5bedd63.js +0 -2
  369. package/dist/ripple/p-bd537299.system.entry.js +0 -1
  370. /package/dist/esm-es5/{interfaces-89cad2fc.js → interfaces-9b75fb61.js} +0 -0
  371. /package/dist/ripple/{p-c0c111fd.js → p-196eb2f3.js} +0 -0
@@ -1,545 +1,545 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { checkForActiveElInShadow, debounce, findParentWithScrollbar, getPosition, intl } from "../../global/functions";
3
3
  const colors = {
4
- salmon: "#ff5f4e",
5
- cyan: "#19a1a9",
6
- forest: "#088000",
7
- sleet: "#7f97ad",
8
- midnight: "#2e1b46",
9
- lavender: "#8b86ca",
10
- periwinkle: "#575195",
11
- gray: "#6b6b6b",
4
+ salmon: "#ff5f4e",
5
+ cyan: "#19a1a9",
6
+ forest: "#088000",
7
+ sleet: "#7f97ad",
8
+ midnight: "#2e1b46",
9
+ lavender: "#8b86ca",
10
+ periwinkle: "#575195",
11
+ gray: "#6b6b6b",
12
12
  };
13
13
  export const allChartsDetails = {
14
- // for progress monitor
15
- doughnut: {
16
- size: 155,
17
- colors: [colors.forest, colors.gray],
18
- thickness: 0.73,
19
- padding: 25,
20
- category: "doughnut",
21
- },
22
- doughnut1: {
23
- size: 130,
24
- colors: [colors.lavender, colors.midnight, colors.gray],
25
- thickness: 0.5,
26
- padding: 90,
27
- category: "doughnut",
28
- },
29
- doughnut2: {
30
- size: 130,
31
- colors: [colors.cyan, colors.salmon, colors.gray],
32
- thickness: 0.5,
33
- padding: 90,
34
- category: "doughnut",
35
- },
36
- // an internal type only for use when doughnut 2 is populated with 4 slices
37
- // in this case, the first slice is colored purple
38
- doughnut2b: {
39
- size: 130,
40
- colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],
41
- thickness: 0.5,
42
- padding: 90,
43
- category: "doughnut",
44
- },
45
- doughnut3: {
46
- size: 130,
47
- colors: [colors.lavender, colors.midnight, "#0089e4", colors.forest, "#ea8500", "#d54f41", "#146ca9"],
48
- thickness: 0.5,
49
- padding: 90,
50
- category: "doughnut",
51
- },
52
- // for progress monitor
53
- bar: {
54
- size: 350,
55
- colors: [colors.forest, colors.gray],
56
- padding: 0,
57
- category: "stackedBar",
58
- },
59
- bar2: {
60
- size: 400,
61
- colors: [colors.gray, colors.periwinkle, colors.cyan, colors.salmon],
62
- padding: 0,
63
- category: "stackedBar",
64
- },
65
- bar2b: {
66
- size: 400,
67
- colors: [colors.gray, colors.periwinkle, colors.midnight, colors.cyan, colors.salmon],
68
- padding: 0,
69
- category: "stackedBar",
70
- },
71
- bar3: {
72
- size: 300,
73
- colors: ["#0d696e", colors.cyan, "#8e4129", colors.salmon],
74
- padding: 0,
75
- category: "stackedBar",
76
- },
77
- bar4: {
78
- size: 400,
79
- colors: [colors.salmon, colors.cyan, colors.periwinkle],
80
- padding: 0,
81
- category: "stackedBar",
82
- },
83
- bar5: {
84
- size: 400,
85
- colors: [
86
- colors.gray,
87
- colors.lavender,
88
- colors.midnight,
89
- "#0089e4",
90
- colors.forest,
91
- "#ea8500",
92
- "#d54f41",
93
- "#146ca9",
94
- ],
95
- padding: 0,
96
- category: "stackedBar",
97
- },
98
- bar6: {
99
- size: 400,
100
- colors: [colors.lavender],
101
- padding: 0,
102
- category: "simpleBar",
103
- },
104
- bar7: {
105
- size: 400,
106
- colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],
107
- padding: 0,
108
- category: "simpleBar",
109
- },
14
+ // for progress monitor
15
+ doughnut: {
16
+ size: 155,
17
+ colors: [colors.forest, colors.gray],
18
+ thickness: 0.73,
19
+ padding: 25,
20
+ category: "doughnut",
21
+ },
22
+ doughnut1: {
23
+ size: 130,
24
+ colors: [colors.lavender, colors.midnight, colors.gray],
25
+ thickness: 0.5,
26
+ padding: 90,
27
+ category: "doughnut",
28
+ },
29
+ doughnut2: {
30
+ size: 130,
31
+ colors: [colors.cyan, colors.salmon, colors.gray],
32
+ thickness: 0.5,
33
+ padding: 90,
34
+ category: "doughnut",
35
+ },
36
+ // an internal type only for use when doughnut 2 is populated with 4 slices
37
+ // in this case, the first slice is colored purple
38
+ doughnut2b: {
39
+ size: 130,
40
+ colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],
41
+ thickness: 0.5,
42
+ padding: 90,
43
+ category: "doughnut",
44
+ },
45
+ doughnut3: {
46
+ size: 130,
47
+ colors: [colors.lavender, colors.midnight, "#0089e4", colors.forest, "#ea8500", "#d54f41", "#146ca9"],
48
+ thickness: 0.5,
49
+ padding: 90,
50
+ category: "doughnut",
51
+ },
52
+ // for progress monitor
53
+ bar: {
54
+ size: 350,
55
+ colors: [colors.forest, colors.gray],
56
+ padding: 0,
57
+ category: "stackedBar",
58
+ },
59
+ bar2: {
60
+ size: 400,
61
+ colors: [colors.gray, colors.periwinkle, colors.cyan, colors.salmon],
62
+ padding: 0,
63
+ category: "stackedBar",
64
+ },
65
+ bar2b: {
66
+ size: 400,
67
+ colors: [colors.gray, colors.periwinkle, colors.midnight, colors.cyan, colors.salmon],
68
+ padding: 0,
69
+ category: "stackedBar",
70
+ },
71
+ bar3: {
72
+ size: 300,
73
+ colors: ["#0d696e", colors.cyan, "#8e4129", colors.salmon],
74
+ padding: 0,
75
+ category: "stackedBar",
76
+ },
77
+ bar4: {
78
+ size: 400,
79
+ colors: [colors.salmon, colors.cyan, colors.periwinkle],
80
+ padding: 0,
81
+ category: "stackedBar",
82
+ },
83
+ bar5: {
84
+ size: 400,
85
+ colors: [
86
+ colors.gray,
87
+ colors.lavender,
88
+ colors.midnight,
89
+ "#0089e4",
90
+ colors.forest,
91
+ "#ea8500",
92
+ "#d54f41",
93
+ "#146ca9",
94
+ ],
95
+ padding: 0,
96
+ category: "stackedBar",
97
+ },
98
+ bar6: {
99
+ size: 400,
100
+ colors: [colors.lavender],
101
+ padding: 0,
102
+ category: "simpleBar",
103
+ },
104
+ bar7: {
105
+ size: 400,
106
+ colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],
107
+ padding: 0,
108
+ category: "simpleBar",
109
+ },
110
110
  };
111
111
  function showValue(valueFormat) {
112
- return valueFormat === "percentage" || valueFormat === "amount" ? "show-values" : "";
112
+ return valueFormat === "percentage" || valueFormat === "amount" ? "show-values" : "";
113
113
  }
114
114
  export const textHiddenMessage = intl.formatMessage({
115
- id: "chart.hiddenValues",
116
- defaultMessage: "Values are hidden when too close together.",
117
- description: "Text displayed when a chart has some values hidden",
115
+ id: "chart.hiddenValues",
116
+ defaultMessage: "Values are hidden when too close together.",
117
+ description: "Text displayed when a chart has some values hidden",
118
118
  });
119
119
  export const seeDetailsMessage = intl.formatMessage({
120
- id: "chart.clickToSeeDetails",
121
- defaultMessage: "Click or use arrow keys to see details.",
122
- description: "Text displayed, guiding user to interact to see more details.",
120
+ id: "chart.clickToSeeDetails",
121
+ defaultMessage: "Click or use arrow keys to see details.",
122
+ description: "Text displayed, guiding user to interact to see more details.",
123
123
  });
124
124
  export function abbrNumber(num) {
125
- return num > 999 || num < -999 ? Math.round(num / 100) / 10 + "K" : num;
125
+ return num > 999 || num < -999 ? Math.round(num / 100) / 10 + "K" : num;
126
126
  }
127
127
  export function amountToPercent(val, total, asInt) {
128
- return asInt ? Math.round((val * 100) / total) : Math.round((val * 10000) / total) / 100; // with 2 decimals
128
+ return asInt ? Math.round((val * 100) / total) : Math.round((val * 10000) / total) / 100; // with 2 decimals
129
129
  }
130
130
  export function amountToDegree(val, total) {
131
- // In a circle of {total}, determine degrees of slice {val}
132
- return (val * 360) / total;
131
+ // In a circle of {total}, determine degrees of slice {val}
132
+ return (val * 360) / total;
133
133
  }
134
134
  export function toFixed(number) {
135
- return parseFloat((Math.floor(number * 100) / 100).toFixed(2));
135
+ return parseFloat((Math.floor(number * 100) / 100).toFixed(2));
136
136
  }
137
137
  export function polarToCartesian(half, radius, startAngle, endAngle) {
138
- var x = toFixed(half + half * radius * Math.cos((Math.PI * startAngle) / 180));
139
- var y = toFixed(half + half * radius * Math.sin((Math.PI * startAngle) / 180));
140
- if (endAngle !== undefined) {
141
- // if a 2nd angle value was passed, return 2 pairs of coords
142
- var x2 = toFixed(half + half * radius * Math.cos((Math.PI * endAngle) / 180));
143
- var y2 = toFixed(half + half * radius * Math.sin((Math.PI * endAngle) / 180));
144
- return { x1: x, y1: y, x2, y2 };
145
- }
146
- return { x, y };
138
+ var x = toFixed(half + half * radius * Math.cos((Math.PI * startAngle) / 180));
139
+ var y = toFixed(half + half * radius * Math.sin((Math.PI * startAngle) / 180));
140
+ if (endAngle !== undefined) {
141
+ // if a 2nd angle value was passed, return 2 pairs of coords
142
+ var x2 = toFixed(half + half * radius * Math.cos((Math.PI * endAngle) / 180));
143
+ var y2 = toFixed(half + half * radius * Math.sin((Math.PI * endAngle) / 180));
144
+ return { x1: x, y1: y, x2, y2 };
145
+ }
146
+ return { x, y };
147
147
  }
148
148
  function getArc(radius, largeArcFlag, x, y, chartSize) {
149
- var z = toFixed((chartSize / 2) * radius);
150
- return `A ${z}, ${z} 0 ${largeArcFlag} ${toFixed(x)}, ${toFixed(y)}`;
149
+ var z = toFixed((chartSize / 2) * radius);
150
+ return `A ${z}, ${z} 0 ${largeArcFlag} ${toFixed(x)}, ${toFixed(y)}`;
151
151
  }
152
152
  function scale(val, inMin, inMax, outMin, outMax) {
153
- let scaled = ((val - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;
154
- // clip the values so that whatever is passed in the output is never smaller than outMin or greater than outMax
155
- return scaled < outMin ? outMin : scaled > outMax ? outMax : scaled;
153
+ let scaled = ((val - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;
154
+ // clip the values so that whatever is passed in the output is never smaller than outMin or greater than outMax
155
+ return scaled < outMin ? outMin : scaled > outMax ? outMax : scaled;
156
156
  }
157
157
  function minSpacing(width) {
158
- // minimum spacing between 2 ticks, in px
159
- return scale(width, 300, 900, 70, 150);
158
+ // minimum spacing between 2 ticks, in px
159
+ return scale(width, 300, 900, 70, 150);
160
160
  }
161
161
  function getMaxTicks(width) {
162
- return Math.round(width / minSpacing(width));
162
+ return Math.round(width / minSpacing(width));
163
163
  }
164
164
  export function getInterval(largest, maxticks) {
165
- const minimum = largest / maxticks;
166
- const magnitude = 10 ** Math.floor(Math.log10(minimum));
167
- const residual = minimum / magnitude;
168
- let interval;
169
- if (residual > 5) {
170
- interval = 10 * magnitude;
171
- }
172
- else if (residual > 3) {
173
- interval = 5 * magnitude;
174
- }
175
- else if (residual > 2) {
176
- interval = 3 * magnitude;
177
- }
178
- else if (residual > 1.5) {
179
- interval = 2 * magnitude;
180
- }
181
- else if (residual > 1) {
182
- interval = 1.5 * magnitude;
183
- }
184
- else {
185
- interval = magnitude;
186
- }
187
- return interval;
165
+ const minimum = largest / maxticks;
166
+ const magnitude = 10 ** Math.floor(Math.log10(minimum));
167
+ const residual = minimum / magnitude;
168
+ let interval;
169
+ if (residual > 5) {
170
+ interval = 10 * magnitude;
171
+ }
172
+ else if (residual > 3) {
173
+ interval = 5 * magnitude;
174
+ }
175
+ else if (residual > 2) {
176
+ interval = 3 * magnitude;
177
+ }
178
+ else if (residual > 1.5) {
179
+ interval = 2 * magnitude;
180
+ }
181
+ else if (residual > 1) {
182
+ interval = 1.5 * magnitude;
183
+ }
184
+ else {
185
+ interval = magnitude;
186
+ }
187
+ return interval;
188
188
  }
189
189
  function handleSliceKeyDown(ev) {
190
- if (this.popoverEl && this.popoverEl.open && ev.key === "Enter") {
191
- const popoverBtn = this.popoverEl.querySelector("button");
192
- popoverBtn && popoverBtn.click();
193
- }
190
+ if (this.popoverEl && this.popoverEl.open && ev.key === "Enter") {
191
+ const popoverBtn = this.popoverEl.querySelector("button");
192
+ popoverBtn && popoverBtn.click();
193
+ }
194
194
  }
195
195
  export function handleSliceClick(ev, s) {
196
- if (this.popoverEl && !this.isTabbing) {
197
- s.coords = { x: ev.clientX, y: ev.clientY };
198
- openPopover.call(this, s);
199
- }
196
+ if (this.popoverEl && !this.isTabbing) {
197
+ s.coords = { x: ev.clientX, y: ev.clientY };
198
+ openPopover.call(this, s);
199
+ }
200
200
  }
201
201
  function handleSliceFocus(ev, s) {
202
- if (this.popoverEl && this.isTabbing) {
203
- s.coords = getPosition(ev.target);
204
- openPopover.call(this, s);
205
- }
202
+ if (this.popoverEl && this.isTabbing) {
203
+ s.coords = getPosition(ev.target);
204
+ openPopover.call(this, s);
205
+ }
206
206
  }
207
207
  export function handleChartKeydown(ev) {
208
- switch (ev.key) {
209
- // arrow up / left
210
- case "ArrowUp":
211
- case "ArrowLeft":
212
- ev.preventDefault();
213
- this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key
214
- focusPrevious.call(this);
215
- break;
216
- // arrow right / down
217
- case "ArrowRight":
218
- case "ArrowDown":
219
- ev.preventDefault();
220
- this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key
221
- focusNext.call(this);
222
- break;
223
- // tab
224
- case "Tab":
225
- exitChart.call(this);
226
- break;
227
- case "Escape":
228
- this.popoverEl.open = false;
229
- this.userIsNavigating = false;
230
- break;
231
- }
208
+ switch (ev.key) {
209
+ // arrow up / left
210
+ case "ArrowUp":
211
+ case "ArrowLeft":
212
+ ev.preventDefault();
213
+ this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key
214
+ focusPrevious.call(this);
215
+ break;
216
+ // arrow right / down
217
+ case "ArrowRight":
218
+ case "ArrowDown":
219
+ ev.preventDefault();
220
+ this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key
221
+ focusNext.call(this);
222
+ break;
223
+ // tab
224
+ case "Tab":
225
+ exitChart.call(this);
226
+ break;
227
+ case "Escape":
228
+ this.popoverEl.open = false;
229
+ this.userIsNavigating = false;
230
+ break;
231
+ }
232
232
  }
233
233
  export function openPopover(s) {
234
- if (!!this.popoverEl && !!s.title && !!s.text) {
235
- this.popoverEl.popoverTitle = s.title;
236
- this.popoverEl.popoverText = s.text;
237
- this.popoverEl.buttonText = s.buttonText;
238
- this.popoverEl.coords = s.coords;
239
- this.popoverEl.sliceRef = s.sliceRef;
240
- window.setTimeout(() => {
241
- if (this.popoverEl) {
242
- this.popoverEl.open = true;
243
- }
244
- }, 30);
245
- const debouncedClosePopover = debounce(async () => {
246
- this.popoverEl.open = false;
247
- }, 10);
248
- // set up event listeners for scrolling
249
- // to close popover on page scroll
250
- document.addEventListener("scroll", () => {
251
- debouncedClosePopover();
252
- });
253
- // ... and on parent scroll
254
- const scrollableParent = findParentWithScrollbar(this.el);
255
- if (!!scrollableParent) {
256
- scrollableParent.addEventListener("scroll", () => {
257
- debouncedClosePopover();
258
- });
234
+ if (!!this.popoverEl && !!s.title && !!s.text) {
235
+ this.popoverEl.popoverTitle = s.title;
236
+ this.popoverEl.popoverText = s.text;
237
+ this.popoverEl.buttonText = s.buttonText;
238
+ this.popoverEl.coords = s.coords;
239
+ this.popoverEl.sliceRef = s.sliceRef;
240
+ window.setTimeout(() => {
241
+ if (this.popoverEl) {
242
+ this.popoverEl.open = true;
243
+ }
244
+ }, 30);
245
+ const debouncedClosePopover = debounce(async () => {
246
+ this.popoverEl.open = false;
247
+ }, 10);
248
+ // set up event listeners for scrolling
249
+ // to close popover on page scroll
250
+ document.addEventListener("scroll", () => {
251
+ debouncedClosePopover();
252
+ });
253
+ // ... and on parent scroll
254
+ const scrollableParent = findParentWithScrollbar(this.el);
255
+ if (!!scrollableParent) {
256
+ scrollableParent.addEventListener("scroll", () => {
257
+ debouncedClosePopover();
258
+ });
259
+ }
259
260
  }
260
- }
261
261
  }
262
262
  function focusNext() {
263
- const activeEl = checkForActiveElInShadow(document.activeElement);
264
- const index =
265
- // if the active el is not in the array the first element gets focused
266
- (this.sliceEls.indexOf(activeEl) + 1) % this.sliceEls.length;
267
- focusSlice.call(this, index);
263
+ const activeEl = checkForActiveElInShadow(document.activeElement);
264
+ const index =
265
+ // if the active el is not in the array the first element gets focused
266
+ (this.sliceEls.indexOf(activeEl) + 1) % this.sliceEls.length;
267
+ focusSlice.call(this, index);
268
268
  }
269
269
  function focusPrevious() {
270
- if (this.sliceEls) {
271
- const activeEl = checkForActiveElInShadow(document.activeElement);
272
- let index = this.sliceEls.indexOf(activeEl);
273
- if (index === -1) {
274
- // not in the array : focus the first slice
275
- index = 0;
276
- }
277
- else if (index === 0) {
278
- // first slice : focus the last slice
279
- index = this.sliceEls.length - 1;
270
+ if (this.sliceEls) {
271
+ const activeEl = checkForActiveElInShadow(document.activeElement);
272
+ let index = this.sliceEls.indexOf(activeEl);
273
+ if (index === -1) {
274
+ // not in the array : focus the first slice
275
+ index = 0;
276
+ }
277
+ else if (index === 0) {
278
+ // first slice : focus the last slice
279
+ index = this.sliceEls.length - 1;
280
+ }
281
+ else {
282
+ // anything else: focus previous
283
+ index -= 1;
284
+ }
285
+ focusSlice.call(this, index);
280
286
  }
281
- else {
282
- // anything else: focus previous
283
- index -= 1;
284
- }
285
- focusSlice.call(this, index);
286
- }
287
287
  }
288
288
  function focusSlice(index) {
289
- if (this.sliceEls && this.el) {
290
- this.userIsNavigating = true;
291
- if (this.popoverEl) {
292
- this.popoverEl.open = false;
289
+ if (this.sliceEls && this.el) {
290
+ this.userIsNavigating = true;
291
+ if (this.popoverEl) {
292
+ this.popoverEl.open = false;
293
+ }
294
+ // set tabindex of the wrapper to -1 while slices are being focused, to allow for shft-tabbing out of the component directly
295
+ this.componentWrapperEl.tabIndex = -1;
296
+ // @ts-ignore
297
+ this.el.focusable = false; // for Edge
298
+ this.sliceEls.map((p) => {
299
+ p.tabIndex = -1;
300
+ // @ts-ignore
301
+ p.focusable = false; // for Edge
302
+ });
303
+ this.sliceEls[index].tabIndex = 0;
304
+ // @ts-ignore
305
+ this.sliceEls[index].focusable = true; // for Edge
306
+ this.sliceEls[index].focus();
307
+ window.setTimeout(() => {
308
+ if (this.popoverEl) {
309
+ this.popoverEl.open = true;
310
+ }
311
+ }, 10);
293
312
  }
294
- // set tabindex of the wrapper to -1 while slices are being focused, to allow for shft-tabbing out of the component directly
295
- this.componentWrapperEl.tabIndex = -1;
296
- // @ts-ignore
297
- this.el.focusable = false; // for Edge
298
- this.sliceEls.map((p) => {
299
- p.tabIndex = -1;
300
- // @ts-ignore
301
- p.focusable = false; // for Edge
302
- });
303
- this.sliceEls[index].tabIndex = 0;
304
- // @ts-ignore
305
- this.sliceEls[index].focusable = true; // for Edge
306
- this.sliceEls[index].focus();
307
- window.setTimeout(() => {
308
- if (this.popoverEl) {
309
- this.popoverEl.open = true;
310
- }
311
- }, 10);
312
- }
313
313
  }
314
314
  export function exitChart() {
315
- this.sliceEls &&
316
- this.sliceEls.map((p) => {
317
- p.tabIndex = -1;
318
- // @ts-ignore
319
- p.focusable = false; // for Edge
320
- });
321
- this.userIsNavigating = false;
322
- // delay so that we can tab out of component before chart becomes focusable again
323
- // and in case user was still pressing an arrow key when they pressed tab
324
- window.setTimeout(() => {
325
- this.componentWrapperEl.tabIndex = 0;
326
- // @ts-ignore
327
- this.el.focusable = true; // for Edge
328
- if (this.popoverEl) {
329
- this.popoverEl.open = false;
330
- }
331
- }, 100);
315
+ this.sliceEls &&
316
+ this.sliceEls.map((p) => {
317
+ p.tabIndex = -1;
318
+ // @ts-ignore
319
+ p.focusable = false; // for Edge
320
+ });
321
+ this.userIsNavigating = false;
322
+ // delay so that we can tab out of component before chart becomes focusable again
323
+ // and in case user was still pressing an arrow key when they pressed tab
324
+ window.setTimeout(() => {
325
+ this.componentWrapperEl.tabIndex = 0;
326
+ // @ts-ignore
327
+ this.el.focusable = true; // for Edge
328
+ if (this.popoverEl) {
329
+ this.popoverEl.open = false;
330
+ }
331
+ }, 100);
332
332
  }
333
333
  export async function getDetails(chartType) {
334
- this.slicesDetails = [];
335
- let acc = 0;
336
- const children = Array.from(this.el.children);
337
- this.total = children.reduce((total, slice) => (total += parseInt(slice.getAttribute("amount") || "0")), 0);
338
- children.forEach((c, i) => {
339
- const amount = parseInt(c.getAttribute("amount") || "0");
340
- const perc = amountToPercent(amount, this.total, true);
341
- let colorIndex = i;
342
- // for bar5, first color should be skipped unless notStartedColor is set to true
343
- if (chartType === "bar5") {
344
- colorIndex = this.notStartedColor ? i : i + 1;
345
- }
346
- // bars in bar6 are all the same color
347
- if (chartType === "bar6") {
348
- colorIndex = 0;
349
- }
350
- const color = allChartsDetails[chartType].colors[colorIndex];
351
- const sliceDetails = {
352
- amount: amount,
353
- perc: perc,
354
- legend: c.getAttribute("legend"),
355
- color: color || colors.gray,
356
- offset: acc,
357
- id: `${this.uid}-${i + 1}`,
358
- title: c.getAttribute("popover-title"),
359
- text: c.getAttribute("popover-text"),
360
- buttonText: c.getAttribute("popover-button-text"),
361
- sliceRef: c,
362
- inSmallCluster: false,
363
- };
364
- acc += amount;
365
- this.slicesDetails.push(sliceDetails);
366
- });
334
+ this.slicesDetails = [];
335
+ let acc = 0;
336
+ const children = Array.from(this.el.children);
337
+ this.total = children.reduce((total, slice) => (total += parseInt(slice.getAttribute("amount") || "0")), 0);
338
+ children.forEach((c, i) => {
339
+ const amount = parseInt(c.getAttribute("amount") || "0");
340
+ const perc = amountToPercent(amount, this.total, true);
341
+ let colorIndex = i;
342
+ // for bar5, first color should be skipped unless notStartedColor is set to true
343
+ if (chartType === "bar5") {
344
+ colorIndex = this.notStartedColor ? i : i + 1;
345
+ }
346
+ // bars in bar6 are all the same color
347
+ if (chartType === "bar6") {
348
+ colorIndex = 0;
349
+ }
350
+ const color = allChartsDetails[chartType].colors[colorIndex];
351
+ const sliceDetails = {
352
+ amount: amount,
353
+ perc: perc,
354
+ legend: c.getAttribute("legend"),
355
+ color: color || colors.gray,
356
+ offset: acc,
357
+ id: `${this.uid}-${i + 1}`,
358
+ title: c.getAttribute("popover-title"),
359
+ text: c.getAttribute("popover-text"),
360
+ buttonText: c.getAttribute("popover-button-text"),
361
+ sliceRef: c,
362
+ inSmallCluster: false,
363
+ };
364
+ acc += amount;
365
+ this.slicesDetails.push(sliceDetails);
366
+ });
367
367
  }
368
368
  function sortSlicesDetails(slicesDetails, total) {
369
- // sort slices by decreasing amount
370
- let sortedSlicesDetails = [...slicesDetails].sort((a, b) => a.amount === b.amount ? 0 : a.amount > b.amount ? -1 : 1);
371
- let acc = 0;
372
- sortedSlicesDetails.forEach((s, idx) => {
373
- const prev = sortedSlicesDetails[idx === 0 ? sortedSlicesDetails.length - 1 : idx - 1];
374
- const next = sortedSlicesDetails[idx === sortedSlicesDetails.length - 1 ? 0 : idx + 1];
375
- const prevPerc = amountToPercent(prev.amount, total, true);
376
- const nextPerc = amountToPercent(next.amount, total, true);
377
- s.offset = acc;
378
- acc += s.amount;
379
- s.inSmallCluster = isInSmallCluster(prevPerc, s.perc, s.amount, nextPerc);
380
- });
381
- return sortedSlicesDetails;
369
+ // sort slices by decreasing amount
370
+ let sortedSlicesDetails = [...slicesDetails].sort((a, b) => a.amount === b.amount ? 0 : a.amount > b.amount ? -1 : 1);
371
+ let acc = 0;
372
+ sortedSlicesDetails.forEach((s, idx) => {
373
+ const prev = sortedSlicesDetails[idx === 0 ? sortedSlicesDetails.length - 1 : idx - 1];
374
+ const next = sortedSlicesDetails[idx === sortedSlicesDetails.length - 1 ? 0 : idx + 1];
375
+ const prevPerc = amountToPercent(prev.amount, total, true);
376
+ const nextPerc = amountToPercent(next.amount, total, true);
377
+ s.offset = acc;
378
+ acc += s.amount;
379
+ s.inSmallCluster = isInSmallCluster(prevPerc, s.perc, s.amount, nextPerc);
380
+ });
381
+ return sortedSlicesDetails;
382
382
  }
383
383
  function isInSmallCluster(prevPerc, perc, amount, nextPerc) {
384
- // determine whether the slice is in a cluster of small values
385
- // to avoid percentage text overlap for small values
386
- const isSmall = perc < 4;
387
- const prevIsSmall = prevPerc < 5;
388
- const nextIsSmall = nextPerc < 5;
389
- let inSmallCluster = isSmall && (prevIsSmall || nextIsSmall);
390
- // because <1% slice percentage text has an additional character
391
- // the inSmallCluster threshold needs to be widened for that slice only
392
- const lessThanOnePerc = perc === 0 && amount > 0;
393
- if (lessThanOnePerc && (nextPerc < 8 || prevPerc < 8)) {
394
- inSmallCluster = true;
395
- }
396
- return inSmallCluster;
384
+ // determine whether the slice is in a cluster of small values
385
+ // to avoid percentage text overlap for small values
386
+ const isSmall = perc < 4;
387
+ const prevIsSmall = prevPerc < 5;
388
+ const nextIsSmall = nextPerc < 5;
389
+ let inSmallCluster = isSmall && (prevIsSmall || nextIsSmall);
390
+ // because <1% slice percentage text has an additional character
391
+ // the inSmallCluster threshold needs to be widened for that slice only
392
+ const lessThanOnePerc = perc === 0 && amount > 0;
393
+ if (lessThanOnePerc && (nextPerc < 8 || prevPerc < 8)) {
394
+ inSmallCluster = true;
395
+ }
396
+ return inSmallCluster;
397
397
  }
398
398
  function getPathData(amount, offset, chartType) {
399
- const startAngle = amountToDegree(offset, this.total) - 90; // start at noon, not at 3 o'clock
400
- const activeAngle = (amount / this.total) * 360;
401
- let endAngle = startAngle + activeAngle;
402
- const largeArcFlagOuter = activeAngle > 180 ? "1 1" : "0 1";
403
- const largeArcFlagInner = activeAngle > 180 ? "1 0" : "0 0";
404
- const half = this.chartDetails.size / 2;
405
- const innerRadius = this.chartDetails.thickness;
406
- const outerRadius = 1;
407
- const isHybridDoughnut = chartType === "doughnut";
408
- const outerSeparatorOffset = 1.5;
409
- const innerSeparatorOffset = isHybridDoughnut ? 2.25 : 3;
410
- if (activeAngle === 360) {
411
- // fix to avoid bad svg shape when the path goes all around (100%)
412
- endAngle -= 0.01;
413
- }
414
- const outerCoords = polarToCartesian(half, outerRadius, startAngle + outerSeparatorOffset, // Addition for slice separator
415
- endAngle);
416
- const innerCoords = polarToCartesian(half, innerRadius, startAngle + innerSeparatorOffset, // Addition for slice separator
417
- endAngle);
418
- const moveTo = `M ${outerCoords.x1}, ${outerCoords.y1} `;
419
- const arc1 = getArc(outerRadius, largeArcFlagOuter, outerCoords.x2, outerCoords.y2, this.chartDetails.size);
420
- const line = ` L ${innerCoords.x2}, ${innerCoords.y2} `;
421
- const arc2 = getArc(innerRadius, largeArcFlagInner, innerCoords.x1, innerCoords.y1, this.chartDetails.size);
422
- return moveTo + arc1 + line + arc2 + " z";
399
+ const startAngle = amountToDegree(offset, this.total) - 90; // start at noon, not at 3 o'clock
400
+ const activeAngle = (amount / this.total) * 360;
401
+ let endAngle = startAngle + activeAngle;
402
+ const largeArcFlagOuter = activeAngle > 180 ? "1 1" : "0 1";
403
+ const largeArcFlagInner = activeAngle > 180 ? "1 0" : "0 0";
404
+ const half = this.chartDetails.size / 2;
405
+ const innerRadius = this.chartDetails.thickness;
406
+ const outerRadius = 1;
407
+ const isHybridDoughnut = chartType === "doughnut";
408
+ const outerSeparatorOffset = 1.5;
409
+ const innerSeparatorOffset = isHybridDoughnut ? 2.25 : 3;
410
+ if (activeAngle === 360) {
411
+ // fix to avoid bad svg shape when the path goes all around (100%)
412
+ endAngle -= 0.01;
413
+ }
414
+ const outerCoords = polarToCartesian(half, outerRadius, startAngle + outerSeparatorOffset, // Addition for slice separator
415
+ endAngle);
416
+ const innerCoords = polarToCartesian(half, innerRadius, startAngle + innerSeparatorOffset, // Addition for slice separator
417
+ endAngle);
418
+ const moveTo = `M ${outerCoords.x1}, ${outerCoords.y1} `;
419
+ const arc1 = getArc(outerRadius, largeArcFlagOuter, outerCoords.x2, outerCoords.y2, this.chartDetails.size);
420
+ const line = ` L ${innerCoords.x2}, ${innerCoords.y2} `;
421
+ const arc2 = getArc(innerRadius, largeArcFlagInner, innerCoords.x1, innerCoords.y1, this.chartDetails.size);
422
+ return moveTo + arc1 + line + arc2 + " z";
423
423
  }
424
424
  export function renderInstructionsText() {
425
- const chartInstructions = intl.formatMessage({
426
- id: "chart.instructions",
427
- defaultMessage: "Use arrow keys to browse elements, press Tab to exit.",
428
- description: "For screen readers only, instructions on how to interact with the chart component",
429
- });
430
- return h("div", { id: "chart-instructions" }, chartInstructions);
425
+ const chartInstructions = intl.formatMessage({
426
+ id: "chart.instructions",
427
+ defaultMessage: "Use arrow keys to browse elements, press Tab to exit.",
428
+ description: "For screen readers only, instructions on how to interact with the chart component",
429
+ });
430
+ return h("div", { id: "chart-instructions" }, chartInstructions);
431
431
  }
432
432
  function renderFilter() {
433
- return (h("defs", null, h("filter", { id: "wmHoverDropShadow" }, h("feGaussianBlur", { stdDeviation: "3" }), h("feOffset", { result: "offsetblur" }), h("feFlood", { "flood-color": "#333" }), h("feComposite", { operator: "in", in2: "offsetblur" }), h("feMerge", null, h("feMergeNode", null), h("feMergeNode", { in: "SourceGraphic" })))));
433
+ return (h("defs", null, h("filter", { id: "wmHoverDropShadow" }, h("feGaussianBlur", { stdDeviation: "3" }), h("feOffset", { result: "offsetblur" }), h("feFlood", { "flood-color": "#333" }), h("feComposite", { operator: "in", in2: "offsetblur" }), h("feMerge", null, h("feMergeNode", null), h("feMergeNode", { in: "SourceGraphic" })))));
434
434
  }
435
435
  export function renderDoughnut(chartType) {
436
- const outerSize = this.chartDetails.size + this.chartDetails.padding;
437
- const isHybridDoughnut = chartType === "doughnut";
438
- // no sorting in progress indicators
439
- let slicesDetails = isHybridDoughnut ? this.slicesDetails : sortSlicesDetails(this.slicesDetails, this.total);
440
- return (h("div", { class: "chart-wrapper doughnut-wrapper" }, h("svg", { width: outerSize + "px", height: outerSize + "px", id: `graphic-${this.uid}`, class: "doughnut-svg" }, renderFilter(), slicesDetails.map((s) => renderPath.call(this, s, chartType)), isHybridDoughnut ? (h("text", { class: "value", x: "50%", y: "50%", "font-size": "1.5rem", "font-weight": "500", "text-anchor": "middle", "dominant-baseline": "middle" }, amountToPercent(slicesDetails[0].amount, this.total, true) + "%")) : (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`, "text-anchor": "middle", "dominant-baseline": "middle" }, slicesDetails.map((s) => s.amount > 0 && !s.inSmallCluster ? renderDoughnutText.call(this, s) : ""))))));
436
+ const outerSize = this.chartDetails.size + this.chartDetails.padding;
437
+ const isHybridDoughnut = chartType === "doughnut";
438
+ // no sorting in progress indicators
439
+ let slicesDetails = isHybridDoughnut ? this.slicesDetails : sortSlicesDetails(this.slicesDetails, this.total);
440
+ return (h("div", { class: "chart-wrapper doughnut-wrapper" }, h("svg", { width: outerSize + "px", height: outerSize + "px", id: `graphic-${this.uid}`, class: "doughnut-svg" }, renderFilter(), slicesDetails.map((s) => renderPath.call(this, s, chartType)), isHybridDoughnut ? (h("text", { class: "value", x: "50%", y: "50%", "font-size": "1.5rem", "font-weight": "500", "text-anchor": "middle", "dominant-baseline": "middle" }, amountToPercent(slicesDetails[0].amount, this.total, true) + "%")) : (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`, "text-anchor": "middle", "dominant-baseline": "middle" }, slicesDetails.map((s) => s.amount > 0 && !s.inSmallCluster ? renderDoughnutText.call(this, s) : ""))))));
441
441
  }
442
442
  function renderPath(s, chartType) {
443
- return (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})` }, h("path", { id: s.id, class: "segment doughnut-segment", fill: s.amount ? s.color : "transparent", d: getPathData.call(this, s.amount, s.offset, chartType), onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev), role: "img", "aria-label": s.legend })));
443
+ return (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})` }, h("path", { id: s.id, class: "segment doughnut-segment", fill: s.amount ? s.color : "transparent", d: getPathData.call(this, s.amount, s.offset, chartType), onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev), role: "img", "aria-label": s.legend })));
444
444
  }
445
445
  function renderDoughnutText(s) {
446
- const arcMiddle = amountToDegree(s.offset + s.amount / 2, this.total);
447
- let { x, y } = polarToCartesian(this.chartDetails.size / 2, 1.4, arcMiddle - 90);
448
- return (h("text", { class: "value", x: x + "px", y: y + "px" }, `${s.perc > 0 ? s.perc : "<1"}%`));
446
+ const arcMiddle = amountToDegree(s.offset + s.amount / 2, this.total);
447
+ let { x, y } = polarToCartesian(this.chartDetails.size / 2, 1.4, arcMiddle - 90);
448
+ return (h("text", { class: "value", x: x + "px", y: y + "px" }, `${s.perc > 0 ? s.perc : "<1"}%`));
449
449
  }
450
450
  export function renderStackedBar(chartType) {
451
- const isHybridBar = chartType === "bar";
452
- return (h("div", { class: "chart-wrapper bar-wrapper" }, isHybridBar ? (h("div", { class: "single-perc" }, amountToPercent(this.slicesDetails[0].amount, this.total, true) + "%")) : (""), this.chartType === "bar3" && this.drawAxis(), h("div", { class: `inner-stacked-bar-wrapper ${showValue(this.valueFormat)}` }, !isHybridBar ? (h("div", { class: "values" }, this.slicesDetails.map((s, idx) => this.renderBarText(s, idx)))) : (""), h("div", { class: "stacked-bar-segments-wrapper" }, this.slicesDetails.map((s, idx) => renderStackedBarSegment.call(this, s, idx))), isHybridBar ? renderCompletionMessage.call(this) : "")));
451
+ const isHybridBar = chartType === "bar";
452
+ return (h("div", { class: "chart-wrapper bar-wrapper" }, isHybridBar ? (h("div", { class: "single-perc" }, amountToPercent(this.slicesDetails[0].amount, this.total, true) + "%")) : (""), this.chartType === "bar3" && this.drawAxis(), h("div", { class: `inner-stacked-bar-wrapper ${showValue(this.valueFormat)}` }, !isHybridBar ? (h("div", { class: "values" }, this.slicesDetails.map((s, idx) => this.renderBarText(s, idx)))) : (""), h("div", { class: "stacked-bar-segments-wrapper" }, this.slicesDetails.map((s, idx) => renderStackedBarSegment.call(this, s, idx))), isHybridBar ? renderCompletionMessage.call(this) : "")));
453
453
  }
454
454
  function renderStackedBarSegment(s, idx) {
455
- const isLastSlice = idx !== this.slicesDetails.length - 1;
456
- const width = `calc(${amountToPercent(s.amount, this.total, false)}%${isLastSlice ? " - 2px" : ""})`;
457
- return (h("div", { class: `segment stacked-bar-segment ${amountToPercent(s.amount, this.total, false) === 0 ? "zero" : ""}`, style: {
458
- backgroundColor: s.color,
459
- width: width,
460
- }, onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev) }, h("span", { class: "sr-only" }, s.legend)));
455
+ const isLastSlice = idx !== this.slicesDetails.length - 1;
456
+ const width = `calc(${amountToPercent(s.amount, this.total, false)}%${isLastSlice ? " - 2px" : ""})`;
457
+ return (h("div", { class: `segment stacked-bar-segment ${amountToPercent(s.amount, this.total, false) === 0 ? "zero" : ""}`, style: {
458
+ backgroundColor: s.color,
459
+ width: width,
460
+ }, onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev) }, h("span", { class: "sr-only" }, s.legend)));
461
461
  }
462
462
  export function renderSimpleBar(chartType) {
463
- // find largest number and get interval, numTicks, chartMaxVal for all.
464
- const largest = this.slicesDetails
465
- .map((s) => s.amount)
466
- .reduce((a, b) => {
467
- return a > b ? a : b;
468
- });
469
- const labelWidth = parseInt(getComputedStyle(this.el).getPropertyValue("--labelWidth"), 10);
470
- const chartPadding = 48;
471
- const componentWidth = this.el.getBoundingClientRect().width;
472
- const chartWidth = componentWidth - labelWidth - chartPadding;
473
- let numTicks = getMaxTicks(chartWidth);
474
- let interval = getInterval(largest, numTicks);
475
- // after the algorithm finds an interval, remove extra ticks so that the greater number is always between the last tick and the one before that
476
- const lastTickVal = numTicks * interval;
477
- const extraTicks = Math.floor((lastTickVal - largest) / interval);
478
- numTicks -= extraTicks;
479
- this.el.style.setProperty("--backgroundSize", 100 / numTicks + "%");
480
- this.el.style.setProperty("--labelWidth", this.labelWidth);
481
- if (chartType === "bar7" && !this.showBarLegend) {
482
- this.el.style.setProperty("--labelWidth", "0px");
483
- }
484
- // we have to prep the data here rather than iterate directly in the return statement
485
- // because CSS grid needs a flat structure, and return functions must
486
- // have a single parent element
487
- const rows = [];
488
- this.slicesDetails.forEach((s) => {
489
- s.legend && rows.push(renderSimpleBarLegend(s.legend, this.showBarLegend, chartType));
490
- rows.push(renderSimpleBarItem.call(this, s, interval, numTicks, largest));
491
- });
492
- const ticks = [];
493
- for (let i = 1; i <= numTicks; i++) {
494
- const tickVal = abbrNumber(i * interval);
495
- ticks.push(h("div", { class: "tick" }, h("span", null, tickVal)));
496
- }
497
- const showGrid = chartType === "bar6" && this.showGrid && this.el.getBoundingClientRect().width > 300;
498
- return (h("div", { class: "chart-wrapper simple-bar-wrapper" }, h("div", { class: `chart ${showValue(this.valueFormat)}` }, showGrid && h("div", { class: "gridlines" }), h("div", { class: "rows" }, rows)), showGrid && (h("div", { class: "x-axis", "aria-hidden": "true" }, h("div", { class: "zero" }, h("span", null, "0")), ticks))));
463
+ // find largest number and get interval, numTicks, chartMaxVal for all.
464
+ const largest = this.slicesDetails
465
+ .map((s) => s.amount)
466
+ .reduce((a, b) => {
467
+ return a > b ? a : b;
468
+ });
469
+ const labelWidth = parseInt(getComputedStyle(this.el).getPropertyValue("--labelWidth"), 10);
470
+ const chartPadding = 48;
471
+ const componentWidth = this.el.getBoundingClientRect().width;
472
+ const chartWidth = componentWidth - labelWidth - chartPadding;
473
+ let numTicks = getMaxTicks(chartWidth);
474
+ let interval = getInterval(largest, numTicks);
475
+ // after the algorithm finds an interval, remove extra ticks so that the greater number is always between the last tick and the one before that
476
+ const lastTickVal = numTicks * interval;
477
+ const extraTicks = Math.floor((lastTickVal - largest) / interval);
478
+ numTicks -= extraTicks;
479
+ this.el.style.setProperty("--backgroundSize", 100 / numTicks + "%");
480
+ this.el.style.setProperty("--labelWidth", this.labelWidth);
481
+ if (chartType === "bar7" && !this.showBarLegend) {
482
+ this.el.style.setProperty("--labelWidth", "0px");
483
+ }
484
+ // we have to prep the data here rather than iterate directly in the return statement
485
+ // because CSS grid needs a flat structure, and return functions must
486
+ // have a single parent element
487
+ const rows = [];
488
+ this.slicesDetails.forEach((s) => {
489
+ s.legend && rows.push(renderSimpleBarLegend(s.legend, this.showBarLegend, chartType));
490
+ rows.push(renderSimpleBarItem.call(this, s, interval, numTicks, largest));
491
+ });
492
+ const ticks = [];
493
+ for (let i = 1; i <= numTicks; i++) {
494
+ const tickVal = abbrNumber(i * interval);
495
+ ticks.push(h("div", { class: "tick" }, h("span", null, tickVal)));
496
+ }
497
+ const showGrid = chartType === "bar6" && this.showGrid && this.el.getBoundingClientRect().width > 300;
498
+ return (h("div", { class: "chart-wrapper simple-bar-wrapper" }, h("div", { class: `chart ${showValue(this.valueFormat)}` }, showGrid && h("div", { class: "gridlines" }), h("div", { class: "rows" }, rows)), showGrid && (h("div", { class: "x-axis", "aria-hidden": "true" }, h("div", { class: "zero" }, h("span", null, "0")), ticks))));
499
499
  }
500
500
  function renderSimpleBarLegend(legend, show, chartType) {
501
- // not sure how to collapse the left column to 0 width with CSS grid. text should still be available to SR.
502
- const hidden = chartType === "bar7" && !show ? " hidden" : "";
503
- return h("label", { class: `label${hidden}` }, legend);
501
+ // not sure how to collapse the left column to 0 width with CSS grid. text should still be available to SR.
502
+ const hidden = chartType === "bar7" && !show ? " hidden" : "";
503
+ return h("label", { class: `label${hidden}` }, legend);
504
504
  }
505
505
  function renderSimpleBarItem(s, interval, ticks, largest) {
506
- const chartMaxVal = this.currentChartType === "bar6" ? interval * ticks : largest;
507
- const width = amountToPercent(s.amount, chartMaxVal, false);
508
- const cssWidth = width ? width + "%" : "1px";
509
- const amt = abbrNumber(s.amount);
510
- let displayValue = this.valueFormat === "amount" ? amt : "";
511
- if (this.currentChartType === "bar6" && this.valueFormat === "percentage") {
512
- displayValue = s.amount + "%";
513
- }
514
- else if (this.currentChartType === "bar7" && this.valueFormat === "percentage") {
515
- displayValue = (this.total === 0 ? "0" : amountToPercent(s.amount, this.total, true)) + "%";
516
- }
517
- return (h("div", { class: "bar segment", style: {
518
- backgroundColor: s.color,
519
- width: cssWidth,
520
- }, onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev) }, h("div", { class: "value" }, displayValue)));
506
+ const chartMaxVal = this.currentChartType === "bar6" ? interval * ticks : largest;
507
+ const width = amountToPercent(s.amount, chartMaxVal, false);
508
+ const cssWidth = width ? width + "%" : "1px";
509
+ const amt = abbrNumber(s.amount);
510
+ let displayValue = this.valueFormat === "amount" ? amt : "";
511
+ if (this.currentChartType === "bar6" && this.valueFormat === "percentage") {
512
+ displayValue = s.amount + "%";
513
+ }
514
+ else if (this.currentChartType === "bar7" && this.valueFormat === "percentage") {
515
+ displayValue = (this.total === 0 ? "0" : amountToPercent(s.amount, this.total, true)) + "%";
516
+ }
517
+ return (h("div", { class: "bar segment", style: {
518
+ backgroundColor: s.color,
519
+ width: cssWidth,
520
+ }, onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev) }, h("div", { class: "value" }, displayValue)));
521
521
  }
522
522
  export function renderLegend(chartType) {
523
- // legend is hidden for bar1 and bar6 types regardless of showLegend value
524
- if (this.showLegend) {
525
- const hasCluster = !this.chartDetails.isBar &&
526
- this.slicesDetails.reduce((hasCluster, cur) => (hasCluster = cur.inSmallCluster ? true : hasCluster), false);
527
- return (h("div", { class: "legend-wrapper" }, h("div", { class: `legend ${chartType} ${this.mode === "bar" ? "--top" : "--bottom"}`, "aria-hidden": "true" }, this.slicesDetails.map((s) => {
528
- // when both legend and amount are omitted, the legend is not shown for that particular option (it's been deactivated by the user)
529
- if (!!s.amount || !!s.legend) {
530
- return renderLegendItem({ key: s.legend, color: s.color });
531
- }
532
- })), hasCluster && renderHiddenValuesMessage()));
533
- }
523
+ // legend is hidden for bar1 and bar6 types regardless of showLegend value
524
+ if (this.showLegend) {
525
+ const hasCluster = !this.chartDetails.isBar &&
526
+ this.slicesDetails.reduce((hasCluster, cur) => (hasCluster = cur.inSmallCluster ? true : hasCluster), false);
527
+ return (h("div", { class: "legend-wrapper" }, h("div", { class: `legend ${chartType} ${this.mode === "bar" ? "--top" : "--bottom"}`, "aria-hidden": "true" }, this.slicesDetails.map((s) => {
528
+ // when both legend and amount are omitted, the legend is not shown for that particular option (it's been deactivated by the user)
529
+ if (!!s.amount || !!s.legend) {
530
+ return renderLegendItem({ key: s.legend, color: s.color });
531
+ }
532
+ })), hasCluster && renderHiddenValuesMessage()));
533
+ }
534
534
  }
535
535
  export function renderLegendItem(legendItem) {
536
- return (h("div", { class: "legend-item" }, h("div", { class: "legend-color", style: { backgroundColor: legendItem.color } }), h("div", { class: "legend-text" }, legendItem.key)));
536
+ return (h("div", { class: "legend-item" }, h("div", { class: "legend-color", style: { backgroundColor: legendItem.color } }), h("div", { class: "legend-text" }, legendItem.key)));
537
537
  }
538
538
  export function renderCompletionMessage() {
539
- if (this.completionMessage) {
540
- return h("div", { class: "completion-message" }, this.completionMessage);
541
- }
539
+ if (this.completionMessage) {
540
+ return h("div", { class: "completion-message" }, this.completionMessage);
541
+ }
542
542
  }
543
543
  export function renderHiddenValuesMessage() {
544
- return (h("div", { class: "hidden-values-warning" }, textHiddenMessage, h("br", null), seeDetailsMessage));
544
+ return (h("div", { class: "hidden-values-warning" }, textHiddenMessage, h("br", null), seeDetailsMessage));
545
545
  }