@watermarkinsights/ripple 3.0.1-0 → 3.0.2-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 (224) hide show
  1. package/dist/{ripple/functions-316c1b23.js → cjs/functions-e3f5ae65.js} +188 -2391
  2. package/dist/cjs/global-1e540de6.js +38 -0
  3. package/dist/cjs/http-service-9e8c4dd5.js +57 -0
  4. package/dist/cjs/index-d930307d.js +1392 -0
  5. package/dist/cjs/index.cjs.js +2 -0
  6. package/dist/cjs/interfaces-30a74c1f.js +35 -0
  7. package/dist/cjs/loader.cjs.js +22 -0
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +89 -0
  9. package/dist/cjs/priv-datepicker.cjs.entry.js +672 -0
  10. package/dist/cjs/priv-navigator-button.cjs.entry.js +29 -0
  11. package/dist/cjs/priv-navigator-item.cjs.entry.js +34 -0
  12. package/dist/cjs/ripple.cjs.js +20 -0
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +318 -0
  14. package/dist/cjs/wm-button.cjs.entry.js +152 -0
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +22 -0
  16. package/dist/cjs/wm-chart.cjs.entry.js +508 -0
  17. package/dist/cjs/wm-datepicker.cjs.entry.js +257 -0
  18. package/dist/cjs/wm-input.cjs.entry.js +110 -0
  19. package/dist/cjs/wm-modal-footer.cjs.entry.js +43 -0
  20. package/dist/cjs/wm-modal-header.cjs.entry.js +45 -0
  21. package/dist/cjs/wm-modal.cjs.entry.js +149 -0
  22. package/dist/cjs/wm-navigator.cjs.entry.js +279 -0
  23. package/dist/cjs/wm-network-uploader.cjs.entry.js +431 -0
  24. package/dist/cjs/wm-option_2.cjs.entry.js +483 -0
  25. package/dist/cjs/wm-pagination.cjs.entry.js +176 -0
  26. package/dist/cjs/wm-search.cjs.entry.js +231 -0
  27. package/dist/cjs/wm-snackbar.cjs.entry.js +160 -0
  28. package/dist/cjs/wm-tab-item_3.cjs.entry.js +316 -0
  29. package/dist/cjs/wm-tag-input.cjs.entry.js +538 -0
  30. package/dist/cjs/wm-timepicker.cjs.entry.js +386 -0
  31. package/dist/cjs/wm-toggletip.cjs.entry.js +128 -0
  32. package/dist/cjs/wm-uploader.cjs.entry.js +342 -0
  33. package/dist/cjs/wm-wrapper.cjs.entry.js +21 -0
  34. package/dist/collection/collection-manifest.json +131 -0
  35. package/dist/{ripple/ripple.css → collection/components/wm-action-menu/wm-action-menu.css} +80 -42
  36. package/dist/collection/components/wm-action-menu/wm-action-menu.js +392 -0
  37. package/dist/collection/components/wm-button/wm-button.css +572 -0
  38. package/dist/collection/components/wm-button/wm-button.js +365 -0
  39. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.css +132 -0
  40. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.js +232 -0
  41. package/dist/collection/components/wm-chart/wm-chart-slice.js +64 -0
  42. package/dist/collection/components/wm-chart/wm-chart.css +337 -0
  43. package/dist/collection/components/wm-chart/wm-chart.js +710 -0
  44. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.css +374 -0
  45. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +1003 -0
  46. package/dist/collection/components/wm-datepicker/wm-datepicker.css +211 -0
  47. package/dist/collection/components/wm-datepicker/wm-datepicker.js +439 -0
  48. package/dist/collection/components/wm-input/wm-input.css +220 -0
  49. package/dist/collection/components/wm-input/wm-input.js +302 -0
  50. package/dist/collection/components/wm-menuitem/wm-menuitem.css +118 -0
  51. package/dist/collection/components/wm-menuitem/wm-menuitem.js +411 -0
  52. package/dist/collection/components/wm-modal/wm-modal-footer.css +84 -0
  53. package/dist/collection/components/wm-modal/wm-modal-footer.js +159 -0
  54. package/dist/collection/components/wm-modal/wm-modal-header.css +78 -0
  55. package/dist/collection/components/wm-modal/wm-modal-header.js +109 -0
  56. package/dist/collection/components/wm-modal/wm-modal.css +155 -0
  57. package/dist/collection/components/wm-modal/wm-modal.js +356 -0
  58. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +94 -0
  59. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +97 -0
  60. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.css +67 -0
  61. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +114 -0
  62. package/dist/collection/components/wm-navigator/wm-navigator.css +137 -0
  63. package/dist/collection/components/wm-navigator/wm-navigator.js +468 -0
  64. package/dist/collection/components/wm-option/wm-option.css +162 -0
  65. package/dist/collection/components/wm-option/wm-option.js +394 -0
  66. package/dist/collection/components/wm-pagination/wm-pagination.css +217 -0
  67. package/dist/collection/components/wm-pagination/wm-pagination.js +348 -0
  68. package/dist/collection/components/wm-search/wm-search.css +155 -0
  69. package/dist/collection/components/wm-search/wm-search.js +439 -0
  70. package/dist/collection/components/wm-select/wm-select.css +315 -0
  71. package/dist/collection/components/wm-select/wm-select.js +676 -0
  72. package/dist/collection/components/wm-snackbar/wm-snackbar.css +331 -0
  73. package/dist/collection/components/wm-snackbar/wm-snackbar.js +240 -0
  74. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.css +104 -0
  75. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +202 -0
  76. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.css +73 -0
  77. package/dist/{ripple/wm-tab-list.entry.js → collection/components/wm-tabs/wm-tab-list/wm-tab-list.js} +131 -17
  78. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.css +57 -0
  79. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -0
  80. package/dist/collection/components/wm-tag-input/wm-tag-input.css +431 -0
  81. package/dist/collection/components/wm-tag-input/wm-tag-input.js +754 -0
  82. package/dist/collection/components/wm-timepicker/wm-timepicker.css +370 -0
  83. package/dist/collection/components/wm-timepicker/wm-timepicker.js +567 -0
  84. package/dist/collection/components/wm-toggletip/wm-toggletip.css +350 -0
  85. package/dist/collection/components/wm-toggletip/wm-toggletip.js +217 -0
  86. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.css +642 -0
  87. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +753 -0
  88. package/dist/collection/components/wm-uploader/wm-uploader.css +666 -0
  89. package/dist/collection/components/wm-uploader/wm-uploader.js +673 -0
  90. package/dist/collection/components/wm-wrapper/wm-wrapper.js +27 -0
  91. package/dist/collection/dev/scripts.js +20 -0
  92. package/dist/collection/global/__mocks__/functions.js +5 -0
  93. package/dist/collection/global/functions.js +420 -0
  94. package/dist/{ripple/app-globals-b5693c90.js → collection/global/global.js} +3 -8
  95. package/dist/{ripple/interfaces-50753346.js → collection/global/interfaces.js} +4 -6
  96. package/dist/collection/global/services/__mocks__/http-service.js +130 -0
  97. package/dist/collection/global/services/http-service.js +50 -0
  98. package/dist/collection/lang/lang.js +5 -0
  99. package/dist/collection/lang/piglatin.js +93 -0
  100. package/dist/esm/functions-0deb7f8e.js +6117 -0
  101. package/dist/esm/global-d6b49e98.js +36 -0
  102. package/dist/{ripple → esm}/http-service-5d037e16.js +0 -0
  103. package/dist/esm/index-5a842e48.js +1363 -0
  104. package/dist/esm/index.js +1 -0
  105. package/dist/esm/interfaces-61c6305b.js +32 -0
  106. package/dist/esm/loader.js +18 -0
  107. package/dist/esm/polyfills/core-js.js +11 -0
  108. package/dist/esm/polyfills/css-shim.js +1 -0
  109. package/dist/esm/polyfills/dom.js +79 -0
  110. package/dist/esm/polyfills/es5-html-element.js +1 -0
  111. package/dist/esm/polyfills/index.js +34 -0
  112. package/dist/esm/polyfills/system.js +6 -0
  113. package/dist/{ripple → esm}/priv-chart-popover.entry.js +2 -2
  114. package/dist/{ripple → esm}/priv-datepicker.entry.js +3 -3
  115. package/dist/{ripple → esm}/priv-navigator-button.entry.js +1 -1
  116. package/dist/{ripple → esm}/priv-navigator-item.entry.js +1 -1
  117. package/dist/esm/ripple.js +18 -0
  118. package/dist/{ripple/wm-action-menu.entry.js → esm/wm-action-menu_2.entry.js} +114 -3
  119. package/dist/{ripple → esm}/wm-button.entry.js +3 -3
  120. package/dist/{ripple → esm}/wm-chart-slice.entry.js +1 -1
  121. package/dist/{ripple → esm}/wm-chart.entry.js +2 -2
  122. package/dist/{ripple → esm}/wm-datepicker.entry.js +27 -32
  123. package/dist/{ripple → esm}/wm-input.entry.js +2 -2
  124. package/dist/{ripple → esm}/wm-modal-footer.entry.js +2 -2
  125. package/dist/{ripple → esm}/wm-modal-header.entry.js +2 -2
  126. package/dist/{ripple → esm}/wm-modal.entry.js +2 -2
  127. package/dist/{ripple → esm}/wm-navigator.entry.js +3 -3
  128. package/dist/{ripple → esm}/wm-network-uploader.entry.js +2 -2
  129. package/dist/{ripple/wm-select.entry.js → esm/wm-option_2.entry.js} +119 -3
  130. package/dist/{ripple → esm}/wm-pagination.entry.js +2 -2
  131. package/dist/{ripple → esm}/wm-search.entry.js +2 -2
  132. package/dist/{ripple → esm}/wm-snackbar.entry.js +2 -2
  133. package/dist/esm/wm-tab-item_3.entry.js +310 -0
  134. package/dist/{ripple → esm}/wm-tag-input.entry.js +2 -2
  135. package/dist/{ripple → esm}/wm-timepicker.entry.js +2 -2
  136. package/dist/{ripple → esm}/wm-toggletip.entry.js +2 -2
  137. package/dist/{ripple → esm}/wm-uploader.entry.js +2 -2
  138. package/dist/{ripple → esm}/wm-wrapper.entry.js +1 -1
  139. package/dist/index.cjs.js +1 -0
  140. package/dist/index.js +1 -0
  141. package/dist/loader/cdn.js +3 -0
  142. package/dist/loader/index.cjs.js +3 -0
  143. package/dist/loader/index.d.ts +13 -0
  144. package/dist/loader/index.es2017.js +3 -0
  145. package/dist/loader/index.js +4 -0
  146. package/dist/loader/package.json +10 -0
  147. package/dist/ripple/index.esm.js +0 -1
  148. package/dist/ripple/p-103f8cae.entry.js +1 -0
  149. package/dist/ripple/p-129d94fa.entry.js +1 -0
  150. package/dist/ripple/p-139fe143.entry.js +1 -0
  151. package/dist/ripple/p-16367805.entry.js +1 -0
  152. package/dist/ripple/p-1d334060.entry.js +1 -0
  153. package/dist/ripple/p-2562f330.entry.js +1 -0
  154. package/dist/ripple/p-278b26ef.entry.js +1 -0
  155. package/dist/ripple/p-2c21bb72.entry.js +1 -0
  156. package/dist/ripple/p-2f5fda71.entry.js +1 -0
  157. package/dist/ripple/p-3e6f04d5.entry.js +1 -0
  158. package/dist/ripple/p-7185de7f.entry.js +1 -0
  159. package/dist/ripple/p-770d0798.entry.js +1 -0
  160. package/dist/ripple/p-846b4c5f.entry.js +1 -0
  161. package/dist/ripple/p-888bec42.js +1 -0
  162. package/dist/ripple/p-90779d53.entry.js +1 -0
  163. package/dist/ripple/p-934543f2.js +1 -0
  164. package/dist/ripple/p-9a087fee.entry.js +1 -0
  165. package/dist/ripple/p-a6d6eae7.js +1 -0
  166. package/dist/ripple/p-a942ad10.entry.js +1 -0
  167. package/dist/ripple/p-bfb4652d.entry.js +1 -0
  168. package/dist/ripple/p-c0fe5201.entry.js +1 -0
  169. package/dist/ripple/p-c2e27acc.entry.js +1 -0
  170. package/dist/ripple/p-c2edda64.entry.js +1 -0
  171. package/dist/ripple/p-d1fdcbcf.entry.js +1 -0
  172. package/dist/ripple/p-d40b6afb.entry.js +1 -0
  173. package/dist/ripple/p-da73db1c.entry.js +1 -0
  174. package/dist/ripple/p-e3843249.js +1 -0
  175. package/dist/ripple/p-ea5cd8b8.js +16 -0
  176. package/dist/ripple/p-ed0f43f4.entry.js +1 -0
  177. package/dist/ripple/p-ffafd363.entry.js +1 -0
  178. package/dist/ripple/ripple.esm.js +1 -125
  179. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +43 -0
  180. package/dist/types/components/wm-button/wm-button.d.ts +36 -0
  181. package/dist/types/components/wm-chart/priv-chart-popover/priv-chart-popover.d.ts +23 -0
  182. package/dist/types/components/wm-chart/wm-chart-slice.d.ts +8 -0
  183. package/dist/types/components/wm-chart/wm-chart.d.ts +77 -0
  184. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +75 -0
  185. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +39 -0
  186. package/dist/types/components/wm-input/wm-input.d.ts +30 -0
  187. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +30 -0
  188. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +15 -0
  189. package/dist/types/components/wm-modal/wm-modal-header.d.ts +12 -0
  190. package/dist/types/components/wm-modal/wm-modal.d.ts +34 -0
  191. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -0
  192. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -0
  193. package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -0
  194. package/dist/types/components/wm-option/wm-option.d.ts +28 -0
  195. package/dist/types/components/wm-pagination/wm-pagination.d.ts +31 -0
  196. package/dist/types/components/wm-search/wm-search.d.ts +78 -0
  197. package/dist/types/components/wm-select/wm-select.d.ts +63 -0
  198. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +32 -0
  199. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +35 -0
  200. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +50 -0
  201. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -0
  202. package/dist/types/components/wm-tag-input/{wm-tag-input.d.ts~ds312_tagInputMaxTags → wm-tag-input.d.ts} +1 -1
  203. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +59 -0
  204. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +25 -0
  205. package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -0
  206. package/dist/types/components/wm-uploader/wm-uploader.d.ts +75 -0
  207. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -0
  208. package/dist/types/{components.d.ts~ds312_tagInputMaxTags → components.d.ts} +0 -0
  209. package/dist/types/global/__mocks__/functions.d.ts +5 -0
  210. package/dist/types/global/global.d.ts +1 -0
  211. package/dist/types/global/interfaces.d.ts +33 -0
  212. package/dist/types/global/services/__mocks__/http-service.d.ts +6 -0
  213. package/dist/types/global/services/http-service.d.ts +4 -0
  214. package/dist/types/lang/lang.d.ts +5 -0
  215. package/dist/types/{stencil-public-runtime.d.ts~ds312_tagInputMaxTags → stencil-public-runtime.d.ts} +190 -182
  216. package/package.json +1 -1
  217. package/dist/ripple/css-shim-bbdf0cc6.js +0 -4
  218. package/dist/ripple/dom-1f98a75f.js +0 -73
  219. package/dist/ripple/index-20b65f86.js +0 -2938
  220. package/dist/ripple/shadow-css-67b66845.js +0 -389
  221. package/dist/ripple/wm-menuitem.entry.js +0 -114
  222. package/dist/ripple/wm-option.entry.js +0 -119
  223. package/dist/ripple/wm-tab-item.entry.js +0 -78
  224. package/dist/ripple/wm-tab-panel.entry.js +0 -38
@@ -0,0 +1,508 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-d930307d.js');
6
+ const functions = require('./functions-e3f5ae65.js');
7
+
8
+ const wmChartCss = ".component-wrapper{display:flex;flex-direction:column;align-items:center;font-size:0.875rem;position:relative;}.component-wrapper .label{display:block;margin:0;padding-bottom:0.25rem;font-weight:500;position:relative}.component-wrapper .label .subinfo{display:block;font-weight:normal;font-style:italic;bottom:0.25rem;width:100%;color:#6b6b6b}.component-wrapper .legend-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.component-wrapper .legend-wrapper .legend{display:flex;align-items:center;flex-wrap:wrap;text-align:center;padding-top:0.25rem;padding-bottom:0.75rem;box-sizing:border-box}.component-wrapper .legend-wrapper .legend.--top{margin-top:-0.75rem}.component-wrapper .legend-wrapper .legend.--top .legend-item{padding-top:0.75rem}.component-wrapper .legend-wrapper .legend.--top .legend-color{top:0.75rem}.component-wrapper .legend-wrapper .legend.--bottom{margin-bottom:-0.75rem}.component-wrapper .legend-wrapper .legend.--bottom .legend-item{padding-bottom:0.75rem}.component-wrapper .legend-wrapper .legend.--bottom .legend-color{top:-0.75rem}.component-wrapper .legend-wrapper .legend .legend-item{position:relative}.component-wrapper .legend-wrapper .legend .legend-item:not(:last-of-type){padding-right:1.25rem}.component-wrapper .legend-wrapper .legend .legend-text{padding-left:1rem;line-height:1}.component-wrapper .legend-wrapper .legend .legend-color{position:absolute;left:0;bottom:0;margin:auto;width:0.6875rem;height:0.6875rem}.component-wrapper .legend-wrapper .cluster-warning{font-size:0.75rem;font-style:italic;max-width:100%}.component-wrapper .chart-svg{overflow:visible}.component-wrapper .chart-svg:active,.component-wrapper .chart-svg:hover,.component-wrapper .chart-svg:focus{outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.component-wrapper .chart-svg::-moz-focus-inner{border:0;outline:none}.component-wrapper .chart-svg path:active,.component-wrapper .chart-svg path:hover,.component-wrapper .chart-svg path:focus,.component-wrapper .chart-svg rect:active,.component-wrapper .chart-svg rect:hover,.component-wrapper .chart-svg rect:focus{outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:url(#wmHoverDropShadow)}.component-wrapper .chart-svg path::-moz-focus-inner,.component-wrapper .chart-svg rect::-moz-focus-inner{border:0;outline:none}.component-wrapper .bar-wrapper{flex-grow:1;width:100%}.component-wrapper .bar-wrapper rect{height:30px}.component-wrapper .doughnut-wrapper .chart-svg{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;border-radius:4px}.component-wrapper.doughnut1 label,.component-wrapper.doughnut1 .label-text,.component-wrapper.doughnut2 label,.component-wrapper.doughnut2 .label-text,.component-wrapper.doughnut3 label,.component-wrapper.doughnut3 .label-text{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}.component-wrapper.doughnut0{align-items:center}.component-wrapper.doughnut0 label{text-align:center;width:100%;padding-bottom:1.5rem}.component-wrapper.doughnut0 label .subinfo{position:absolute}.component-wrapper.doughnut0 .legend{display:flex}.component-wrapper.doughnut0 .completion-message{padding-top:0.625rem}.component-wrapper .bar-svg{width:100%}.component-wrapper .bar-svg foreignObject{width:100%;height:30px;overflow:visible}.component-wrapper.bar1{padding:1.25rem;position:relative;align-items:flex-start}.component-wrapper.bar1 label{display:flex;flex-direction:column}.component-wrapper.bar1 label .subinfo{position:initial}.component-wrapper.bar1 .legend{display:none}.component-wrapper.bar1 .completion-message{position:absolute;right:1.25rem;bottom:0}.component-wrapper.bar1 .bar-wrapper{display:flex;align-items:center}.component-wrapper.bar1 .bar-wrapper .single-perc{width:4rem}.component-wrapper.bar1 .bar-wrapper .chart-svg{flex:1;height:30px}@media screen and (min-width: 768px){.component-wrapper.bar1{flex-direction:row;align-items:center}.component-wrapper.bar1 label{width:12rem;text-align:left;padding-right:1.25rem;padding-bottom:0}.component-wrapper.bar1 .completion-message{right:5.75rem}.component-wrapper.bar1 .bar-wrapper{flex-direction:row-reverse}.component-wrapper.bar1 .bar-wrapper .single-perc{text-align:center;padding-left:0.5rem}}.component-wrapper.bar2,.component-wrapper.bar3,.component-wrapper.bar4,.component-wrapper.bar5{align-items:flex-start}.component-wrapper.bar2 .legend,.component-wrapper.bar4 .legend,.component-wrapper.bar5 .legend{padding-bottom:0}.component-wrapper.bar2 .chart-svg,.component-wrapper.bar4 .chart-svg,.component-wrapper.bar5 .chart-svg{height:30px;margin-top:20px;margin-bottom:0}.component-wrapper.bar2 .chart-svg.show-values,.component-wrapper.bar4 .chart-svg.show-values,.component-wrapper.bar5 .chart-svg.show-values{height:60px;margin-top:0;margin-bottom:0}.component-wrapper.bar2 .chart-svg .percs,.component-wrapper.bar4 .chart-svg .percs,.component-wrapper.bar5 .chart-svg .percs{transform:translateY(24px);text-anchor:middle}.component-wrapper.bar3 .legend{padding-bottom:1.25rem}.component-wrapper.bar3 .svg-wrapper{position:relative;height:100px}.component-wrapper.bar3 .svg-wrapper .chart-svg{position:absolute;top:35px;left:0;right:0;bottom:0;height:30px}.component-wrapper.bar3 .svg-wrapper .chart-svg text{fill:#4a4a4a}.component-wrapper.bar3 .svg-wrapper .chart-svg .percs{transform:translateY(-4px);text-anchor:middle}.component-wrapper.bar3 .svg-wrapper .axis{position:absolute;top:0;left:0;height:90px;width:100%;overflow:visible;transform:translateY(90px)}.component-wrapper.bar3 .svg-wrapper .axis line{stroke:#eeedf4;stroke-width:1px}.component-wrapper.bar3 .svg-wrapper .axis text{transform:translate(4px, 24px);text-anchor:middle}:host(:focus){outline:none}:host(:focus) .chart-svg.user-is-tabbing:not(.show-values){-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e}:host(:focus) .chart-svg.user-is-tabbing:not(.show-values)::-moz-focus-inner{border:0}:host(:focus) .chart-svg.user-is-tabbing.show-values .tabbing-focus{-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;width:100%;height:30px}:host(:focus) .chart-svg.user-is-tabbing.show-values .tabbing-focus::-moz-focus-inner{border:0}:host(:focus) .chart-svg.user-is-tabbing.show-values .focus-offset{transform:translateY(30px)}";
9
+
10
+ const Chart = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ this.chartType = "doughnut1";
14
+ this.showLegend = true;
15
+ this.notStartedColor = false;
16
+ this.isTabbing = false;
17
+ this.uid = functions.generateId();
18
+ this.slicesData = [];
19
+ this.colors = {
20
+ salmon: "#ff5f4e",
21
+ cyan: "#19a1a9",
22
+ sleet: "#7f97ad",
23
+ midnight: "#2e1b46",
24
+ lavender: "#8b86ca",
25
+ };
26
+ this.types = {
27
+ doughnut0: {
28
+ size: 155,
29
+ colors: [this.colors.cyan, "#bfbfbf"],
30
+ thickness: 0.73,
31
+ padding: 25,
32
+ isBar: false,
33
+ },
34
+ doughnut1: {
35
+ size: 130,
36
+ colors: [this.colors.lavender, this.colors.midnight, "#d4d4d4"],
37
+ thickness: 0.5,
38
+ padding: 90,
39
+ isBar: false,
40
+ },
41
+ doughnut2: {
42
+ size: 130,
43
+ colors: [this.colors.cyan, this.colors.salmon, "#d4d4d4"],
44
+ thickness: 0.5,
45
+ padding: 90,
46
+ isBar: false,
47
+ },
48
+ doughnut3: {
49
+ size: 130,
50
+ colors: [this.colors.lavender, this.colors.midnight, "#919834", "#c177cf", "#c16e00", "#029af2", "#2a6993"],
51
+ thickness: 0.5,
52
+ padding: 90,
53
+ isBar: false,
54
+ },
55
+ bar1: {
56
+ size: 350,
57
+ colors: [this.colors.cyan, "#bfbfbf"],
58
+ padding: 0,
59
+ isBar: true,
60
+ },
61
+ bar2: {
62
+ size: 400,
63
+ colors: ["#d4d4d4", this.colors.sleet, this.colors.cyan, this.colors.salmon],
64
+ padding: 0,
65
+ isBar: true,
66
+ },
67
+ bar3: {
68
+ size: 300,
69
+ colors: ["#0d696e", this.colors.cyan, "#8e4129", this.colors.salmon],
70
+ padding: 0,
71
+ isBar: true,
72
+ },
73
+ bar4: {
74
+ size: 400,
75
+ colors: ["#d4d4d4", this.colors.sleet, "#33a919"],
76
+ padding: 0,
77
+ isBar: true,
78
+ },
79
+ bar5: {
80
+ size: 400,
81
+ colors: [
82
+ "#d4d4d4",
83
+ this.colors.lavender,
84
+ this.colors.midnight,
85
+ "#919834",
86
+ "#c177cf",
87
+ "#c16e00",
88
+ "#029af2",
89
+ "#2a6993",
90
+ ],
91
+ padding: 0,
92
+ isBar: true,
93
+ },
94
+ };
95
+ /* LIFECYCLE METHODS + EVENTS FROM THE CHILDREN */
96
+ this.debouncedUpdate = functions.debounce(async () => {
97
+ this.setHybridType();
98
+ await this.getData();
99
+ index.forceUpdate(this.el);
100
+ }, 30);
101
+ this.debouncedSliceUpdate = functions.debounce(async () => {
102
+ await this.getData();
103
+ index.forceUpdate(this.el);
104
+ }, 100);
105
+ }
106
+ toggleTabbingOn() {
107
+ this.isTabbing = true;
108
+ }
109
+ toggleTabbingOff() {
110
+ this.isTabbing = false;
111
+ }
112
+ handleKeydown(ev) {
113
+ switch (ev.keyCode) {
114
+ // arrow up / left
115
+ case 37:
116
+ case 38:
117
+ ev.preventDefault();
118
+ this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key
119
+ this.focusPrevious();
120
+ break;
121
+ // arrow right / down
122
+ case 39:
123
+ case 40:
124
+ ev.preventDefault();
125
+ this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key
126
+ this.focusNext();
127
+ break;
128
+ // tab
129
+ case 9:
130
+ this.exitChart();
131
+ break;
132
+ case 27:
133
+ this.popoverEl.open = false;
134
+ break;
135
+ }
136
+ }
137
+ focusNext() {
138
+ const activeEl = functions.checkForActiveElInShadow(document.activeElement);
139
+ const index =
140
+ // if the active el is not in the array the first element gets focused
141
+ (this.sliceEls.indexOf(activeEl) + 1) % this.sliceEls.length;
142
+ this.focusSlice(index);
143
+ }
144
+ focusPrevious() {
145
+ if (this.sliceEls) {
146
+ const activeEl = functions.checkForActiveElInShadow(document.activeElement);
147
+ let index = this.sliceEls.indexOf(activeEl);
148
+ if (index === -1) {
149
+ // not in the array : focus the first slice
150
+ index = 0;
151
+ }
152
+ else if (index === 0) {
153
+ // first slice : focus the last slice
154
+ index = this.sliceEls.length - 1;
155
+ }
156
+ else {
157
+ // anything else: focus previous
158
+ index -= 1;
159
+ }
160
+ this.focusSlice(index);
161
+ }
162
+ }
163
+ focusSlice(index) {
164
+ if (this.sliceEls && this.el) {
165
+ if (this.popoverEl) {
166
+ this.popoverEl.open = false;
167
+ }
168
+ this.el.tabIndex = -1;
169
+ // @ts-ignore
170
+ this.el.focusable = false; // for Edge
171
+ this.sliceEls.map((p) => {
172
+ p.tabIndex = -1;
173
+ // @ts-ignore
174
+ p.focusable = false; // for Edge
175
+ });
176
+ this.sliceEls[index].tabIndex = 0;
177
+ // @ts-ignore
178
+ this.sliceEls[index].focusable = true; // for Edge
179
+ this.sliceEls[index].focus();
180
+ window.setTimeout(() => {
181
+ if (this.popoverEl) {
182
+ this.popoverEl.open = true;
183
+ }
184
+ }, 10);
185
+ }
186
+ }
187
+ exitChart() {
188
+ this.sliceEls &&
189
+ this.sliceEls.map((p) => {
190
+ p.tabIndex = -1;
191
+ // @ts-ignore
192
+ p.focusable = false; // for Edge
193
+ });
194
+ // delay so that we can tab out of component before chart becomes focusable again
195
+ // and in case user was still pressing an arrow key when they pressed tab
196
+ window.setTimeout(() => {
197
+ if (this.el) {
198
+ this.el.tabIndex = 0;
199
+ // @ts-ignore
200
+ this.el.focusable = true; // for Edge
201
+ if (this.popoverEl) {
202
+ this.popoverEl.open = false;
203
+ }
204
+ }
205
+ }, 100);
206
+ }
207
+ openPopover(s) {
208
+ if (!!this.popoverEl && !!s.title && !!s.text) {
209
+ this.popoverEl.popoverTitle = s.title;
210
+ this.popoverEl.popoverText = s.text;
211
+ this.popoverEl.buttonText = s.buttonText;
212
+ this.popoverEl.coords = s.coords;
213
+ this.popoverEl.sliceRef = s.sliceRef;
214
+ window.setTimeout(() => {
215
+ if (this.popoverEl) {
216
+ this.popoverEl.open = true;
217
+ }
218
+ }, 30);
219
+ const debouncedClosePopover = functions.debounce(async () => {
220
+ this.popoverEl.open = false;
221
+ }, 10);
222
+ // set up event listeners for scrolling
223
+ // to close popover on page scroll
224
+ document.addEventListener("scroll", () => {
225
+ debouncedClosePopover();
226
+ });
227
+ // ... and on parent scroll
228
+ const scrollableParent = functions.findParentWithScrollbar(this.el);
229
+ if (!!scrollableParent) {
230
+ scrollableParent.addEventListener("scroll", () => {
231
+ debouncedClosePopover();
232
+ });
233
+ }
234
+ }
235
+ }
236
+ /* UTILS */
237
+ amountToPercent(val, asInt) {
238
+ return asInt ? Math.round((val * 100) / this.total) : Math.round((val * 10000) / this.total) / 100; // with 2 decimals
239
+ }
240
+ amountToDegree(val) {
241
+ return (val * 360) / this.total;
242
+ }
243
+ toFixed(number) {
244
+ var val = parseFloat((Math.floor(number * 100) / 100).toFixed(2));
245
+ return val;
246
+ }
247
+ polarToCartesian(half, radius, startAngle, endAngle) {
248
+ var x = this.toFixed(half + half * radius * Math.cos((Math.PI * startAngle) / 180));
249
+ var y = this.toFixed(half + half * radius * Math.sin((Math.PI * startAngle) / 180));
250
+ if (endAngle !== undefined) {
251
+ // if a 2nd angle value was passed, return 2 pairs of coords
252
+ var x2 = this.toFixed(half + half * radius * Math.cos((Math.PI * endAngle) / 180));
253
+ var y2 = this.toFixed(half + half * radius * Math.sin((Math.PI * endAngle) / 180));
254
+ return { x1: x, y1: y, x2, y2 };
255
+ }
256
+ return { x, y };
257
+ }
258
+ /* CRUNCH THE NUMBERS */
259
+ getPathData(amount, offset) {
260
+ var startAngle = this.amountToDegree(offset) - 90; // start at noon, not at 3 o'clock
261
+ var activeAngle = (amount / this.total) * 360;
262
+ var endAngle = startAngle + activeAngle;
263
+ var largeArcFlagOuter = activeAngle > 180 ? "1 1" : "0 1";
264
+ var largeArcFlagInner = activeAngle > 180 ? "1 0" : "0 0";
265
+ var half = this.chartData.size / 2;
266
+ var innerRadius = this.chartData.thickness;
267
+ var outerRadius = 1;
268
+ if (activeAngle === 360) {
269
+ // fix to avoid bad svg shape when the path goes all around (100%)
270
+ endAngle -= 0.01;
271
+ }
272
+ var outerCoords = this.polarToCartesian(half, outerRadius, startAngle + 1.5, // 1.5 for slice separator
273
+ endAngle);
274
+ var innerCoords = this.polarToCartesian(half, innerRadius, startAngle + 3, // 3 for slice separator
275
+ endAngle);
276
+ const moveTo = `M ${outerCoords.x1}, ${outerCoords.y1} `;
277
+ const arc1 = this.getArc(outerRadius, largeArcFlagOuter, outerCoords.x2, outerCoords.y2);
278
+ const line = ` L ${innerCoords.x2}, ${innerCoords.y2} `;
279
+ const arc2 = this.getArc(innerRadius, largeArcFlagInner, innerCoords.x1, innerCoords.y1);
280
+ return moveTo + arc1 + line + arc2 + " z";
281
+ }
282
+ getArc(radius, largeArcFlag, x, y) {
283
+ var z = this.toFixed((this.chartData.size / 2) * radius);
284
+ return `A ${z}, ${z} 0 ${largeArcFlag} ${this.toFixed(x)}, ${this.toFixed(y)}`;
285
+ }
286
+ setHybridType() {
287
+ this.hybridType = window.innerWidth > 1340 ? "doughnut0" : "bar1";
288
+ }
289
+ getType() {
290
+ return this.chartType === "hybrid" ? this.hybridType : this.chartType;
291
+ }
292
+ /* GET THE DATA */
293
+ async getData() {
294
+ this.slicesData = [];
295
+ let acc = 0;
296
+ const children = this.el.querySelectorAll("wm-chart-slice");
297
+ this.total = Array.from(children).reduce((total, slice) => (total += parseInt(slice.getAttribute("amount") || "0")), 0);
298
+ children.forEach((c, i) => {
299
+ const amount = parseInt(c.getAttribute("amount") || "0");
300
+ const perc = this.amountToPercent(amount, true);
301
+ // determine whether the slice is in a cluster of small values
302
+ // to avoid percentage text overlap for small values
303
+ const prev = children[i === 0 ? children.length - 1 : i - 1];
304
+ const prevPerc = this.amountToPercent(parseInt(prev.getAttribute("amount") || "0"), true);
305
+ const next = children[i === children.length - 1 ? 0 : i + 1];
306
+ const nextPerc = this.amountToPercent(parseInt(next.getAttribute("amount") || "0"), true);
307
+ const isSmall = perc < 4;
308
+ const prevIsSmall = prevPerc < 5;
309
+ const nextIsSmall = nextPerc < 5;
310
+ let inSmallCluster = isSmall && (prevIsSmall || nextIsSmall);
311
+ // because <1% slice percentage text has an additional character
312
+ // the inSmallCluster threshold needs to be widened for that slice only
313
+ const lessThanOnePerc = perc === 0 && amount > 0;
314
+ if (lessThanOnePerc && (nextPerc < 8 || prevPerc < 8)) {
315
+ inSmallCluster = true;
316
+ }
317
+ // for bar5, first color should be skipped unless notStartedColor is set to true
318
+ const ind = this.getType() === "bar5" ? (this.notStartedColor ? i : i + 1) : i;
319
+ const color = this.types[this.getType()].colors[ind];
320
+ const sliceData = {
321
+ amount: amount,
322
+ perc: perc,
323
+ legend: c.getAttribute("legend"),
324
+ color: color || "#d4d4d4",
325
+ offset: acc,
326
+ id: `${this.uid}-${i + 1}`,
327
+ title: c.getAttribute("popover-title"),
328
+ text: c.getAttribute("popover-text"),
329
+ buttonText: c.getAttribute("popover-button-text"),
330
+ sliceRef: c,
331
+ inSmallCluster: inSmallCluster,
332
+ };
333
+ acc += amount;
334
+ this.slicesData.push(sliceData);
335
+ });
336
+ this.chartData = this.types[this.getType()];
337
+ }
338
+ getSliceEls() {
339
+ if (this.svgEl) {
340
+ this.sliceEls = Array.from(this.svgEl.querySelectorAll(this.chartData.isBar ? "rect" : "path"));
341
+ }
342
+ }
343
+ handleResize() {
344
+ if (this.chartType === "hybrid") {
345
+ this.debouncedUpdate();
346
+ }
347
+ }
348
+ async componentWillLoad() {
349
+ if (!this.label) {
350
+ throw new Error("For accessibility purposes, you must provide a label for the chart. See https://components.watermarkinsights.com/chart for more information.");
351
+ }
352
+ if (this.chartType === "hybrid") {
353
+ this.setHybridType();
354
+ }
355
+ await this.getData();
356
+ }
357
+ componentDidLoad() {
358
+ this.getSliceEls();
359
+ }
360
+ componentDidUpdate() {
361
+ this.getSliceEls();
362
+ }
363
+ handleSliceUpdate() {
364
+ this.debouncedSliceUpdate();
365
+ }
366
+ /* RENDERING */
367
+ renderFilter() {
368
+ return (index.h("defs", null, index.h("filter", { id: "wmHoverDropShadow" }, index.h("feGaussianBlur", { stdDeviation: "3" }), index.h("feOffset", { result: "offsetblur" }), index.h("feFlood", { "flood-color": "#333" }), index.h("feComposite", { operator: "in", in2: "offsetblur" }), index.h("feMerge", null, index.h("feMergeNode", null), index.h("feMergeNode", { in: "SourceGraphic" })))));
369
+ }
370
+ // DOUGHNUT
371
+ renderDoughnut() {
372
+ const outerSize = this.chartData.size + this.chartData.padding;
373
+ return (index.h("div", { class: "svg-wrapper doughnut-wrapper" }, index.h("svg", { width: outerSize + "px", height: outerSize + "px", ref: (el) => (this.svgEl = el), id: `graphic-${this.uid}`, class: `chart-svg doughnut-svg ${this.isTabbing ? "user-is-tabbing" : ""}` }, this.renderFilter(), this.slicesData.map((s) => this.renderPath(s)), this.getType() === "doughnut0" ? (index.h("text", { class: "value", x: "50%", y: "50%", "font-size": "1.5rem", "font-weight": "500", "text-anchor": "middle", "dominant-baseline": "middle" }, this.amountToPercent(this.slicesData[0].amount, true) + "%")) : (index.h("g", { transform: `translate(${this.chartData.padding / 2}, ${this.chartData.padding / 2})`, "text-anchor": "middle", "dominant-baseline": "middle" }, this.slicesData.map((s) => (s.amount > 0 ? this.renderDoughnutText(s) : "")))))));
374
+ }
375
+ renderPath(s) {
376
+ return (index.h("g", { transform: `translate(${this.chartData.padding / 2}, ${this.chartData.padding / 2})` }, index.h("path", { id: s.id, fill: s.amount ? s.color : "transparent", d: this.getPathData(s.amount, s.offset), onClick: (ev) => {
377
+ if (this.popoverEl) {
378
+ if (!this.isTabbing) {
379
+ s.coords = { x: ev.clientX, y: ev.clientY };
380
+ this.openPopover(s);
381
+ }
382
+ }
383
+ }, onFocus: (ev) => {
384
+ if (this.popoverEl) {
385
+ if (this.isTabbing) {
386
+ s.coords = functions.getPosition(ev.target);
387
+ this.openPopover(s);
388
+ }
389
+ }
390
+ }, onKeyDown: (ev) => {
391
+ if (this.popoverEl && this.popoverEl.open && ev.keyCode === 13) {
392
+ const popoverBtn = this.popoverEl.querySelector("button");
393
+ popoverBtn && popoverBtn.click();
394
+ }
395
+ } }), index.h("text", { class: "sr-only" }, s.legend)));
396
+ }
397
+ renderDoughnutText(s) {
398
+ if (!s.inSmallCluster) {
399
+ const arcMiddle = this.amountToDegree(s.offset + s.amount / 2);
400
+ let { x, y } = this.polarToCartesian(this.chartData.size / 2, 1.4, arcMiddle - 90);
401
+ return (index.h("text", { class: "value", x: x + "px", y: y + "px" }, `${s.perc > 0 ? s.perc : "<1"}%`));
402
+ }
403
+ }
404
+ // BAR
405
+ renderBar() {
406
+ return (index.h("div", { class: "svg-wrapper bar-wrapper" }, this.getType() === "bar1" ? (index.h("div", { class: "single-perc" }, this.amountToPercent(this.slicesData[0].amount, true) + "%")) : (""), this.drawAxis(), index.h("svg", { ref: (el) => (this.svgEl = el), id: `graphic-${this.uid}`, class: {
407
+ "chart-svg bar-svg": true,
408
+ "user-is-tabbing": this.isTabbing,
409
+ "show-values": this.showValues === "percentage" || this.showValues === "amount",
410
+ } }, this.renderFilter(), index.h("foreignObject", { class: this.getType() === "bar2" || this.getType() === "bar4" || this.getType() === "bar5" ? "focus-offset" : "" }, index.h("div", {
411
+ // @ts-ignore
412
+ xmlns: "http://www.w3.org/1999/xhtml", class: "tabbing-focus"
413
+ })), this.slicesData.map((s, idx) => this.renderRect(s, idx)), this.getType() !== "bar1" ? (index.h("g", { class: "percs" }, this.slicesData.map((s) => (s.perc > 0 ? this.renderBarText(s) : "")))) : (""))));
414
+ }
415
+ renderRect(s, idx) {
416
+ let y;
417
+ switch (this.getType()) {
418
+ case "bar2":
419
+ case "bar4":
420
+ case "bar5":
421
+ y = this.showValues === "percentage" || this.showValues === "amount" ? "30px" : "0";
422
+ break;
423
+ default:
424
+ y = "0";
425
+ }
426
+ return (index.h("g", { class: "barcontainer" }, index.h("style", null, ` #${s.id} {
427
+ fill:${s.color};
428
+ x: ${`${this.amountToPercent(s.offset, false)}%`};
429
+ y: ${y};
430
+ height: 30px;
431
+ width: calc(${this.amountToPercent(s.amount, false)}%${idx !== this.slicesData.length - 1 ? " - 2px" : ""});
432
+ }`), index.h("rect", { id: s.id, onClick: (ev) => {
433
+ if (this.popoverEl) {
434
+ if (!this.isTabbing) {
435
+ s.coords = { x: ev.clientX, y: ev.clientY };
436
+ this.openPopover(s);
437
+ }
438
+ }
439
+ }, onFocus: (ev) => {
440
+ if (this.popoverEl) {
441
+ if (this.isTabbing) {
442
+ s.coords = functions.getPosition(ev.target);
443
+ this.openPopover(s);
444
+ }
445
+ }
446
+ }, onKeyDown: (ev) => {
447
+ if (this.popoverEl && this.popoverEl.open && ev.keyCode === 13) {
448
+ const popoverBtn = this.popoverEl.querySelector("button");
449
+ popoverBtn && popoverBtn.click();
450
+ }
451
+ } }), index.h("text", { class: "sr-only" }, s.legend)));
452
+ }
453
+ renderBarText(s) {
454
+ let val;
455
+ if (this.showValues === "percentage") {
456
+ val = s.perc + "%";
457
+ }
458
+ else if (this.showValues === "amount") {
459
+ val = s.amount;
460
+ }
461
+ else {
462
+ return;
463
+ }
464
+ return (index.h("text", { class: "value", x: `${this.amountToPercent(s.offset, false) + this.amountToPercent(s.amount, false) / 2}%` }, val));
465
+ }
466
+ drawAxis() {
467
+ if (this.getType() === "bar3") {
468
+ return (index.h("svg", { class: "axis" }, index.h("line", { x1: "0", x2: "100%", y1: "0", y2: "0" }), index.h("line", { x1: "0", x2: "0", y1: "0", y2: "-85px" }), index.h("line", { class: "tick", x1: "0.5", x2: "0.5", y1: "0", y2: "6" }), index.h("text", { x: "0.5", y: "-6" }, "0%"), index.h("line", { class: "tick", x1: "100%", x2: "100%", y1: "0", y2: "6" }), index.h("text", { x: "100%", y: "-6" }, "100%")));
469
+ }
470
+ }
471
+ renderCompletionMessage() {
472
+ if (this.chartType === "hybrid" && this.completionMessage) {
473
+ return index.h("span", { class: "completion-message" }, this.completionMessage);
474
+ }
475
+ }
476
+ renderLegend() {
477
+ // legend is hidden for bar1 type regardless of showLegend value
478
+ if (this.showLegend) {
479
+ const hasCluster = this.slicesData.reduce((hasCluster, cur) => (hasCluster = cur.inSmallCluster ? true : hasCluster), false);
480
+ return (index.h("div", { class: "legend-wrapper" }, index.h("div", { class: `legend ${this.chartData.isBar ? "--top" : "--bottom"}`, "aria-hidden": "true" }, this.total > 0
481
+ ? this.slicesData.map((s) => {
482
+ // when both legend and amount are omitted, the legend is not shown for that particular option (it's been deactivated by the user)
483
+ if (!!s.amount || !!s.legend) {
484
+ return (index.h("div", { class: "legend-item" }, index.h("div", { class: "legend-color", style: { "background-color": s.color } }), index.h("div", { class: "legend-text" }, s.legend)));
485
+ }
486
+ })
487
+ : ""), !this.chartData.isBar && hasCluster ? (index.h("div", { class: "cluster-warning" }, functions.intl.formatMessage({
488
+ id: "chart.hiddenPercentages",
489
+ defaultMessage: "Percentages smaller than 5% are not shown when too close to each other.",
490
+ }), index.h("br", null), functions.intl.formatMessage({
491
+ id: "chart.clickToSeeDetails",
492
+ defaultMessage: "Click or use arrow keys to see details.",
493
+ }))) : ("")));
494
+ }
495
+ }
496
+ render() {
497
+ return (index.h(index.Host, { role: "application", "aria-label": this.label +
498
+ ", " +
499
+ functions.intl.formatMessage({
500
+ id: "chart.interactiveChart",
501
+ defaultMessage: "Interactive chart. Use arrow keys to browse elements, press Tab to exit.",
502
+ }), tabindex: "0" }, index.h("div", { class: `component-wrapper ${this.getType()}` }, index.h("label", { class: "label", id: `label-${this.uid}`, htmlFor: `graphic-${this.uid}` }, index.h("span", { class: "label-text" }, this.label), this.subinfo ? index.h("span", { class: "subinfo" }, this.subinfo) : ""), this.chartData.isBar ? this.renderLegend() : "", this.total > 0 && this.chartData.isBar ? this.renderBar() : this.renderDoughnut(), !this.chartData.isBar ? this.renderLegend() : "", index.h("priv-chart-popover", { class: this.isTabbing ? "user-is-tabbing" : "", ref: (el) => (this.popoverEl = el) }), this.renderCompletionMessage())));
503
+ }
504
+ get el() { return index.getElement(this); }
505
+ };
506
+ Chart.style = wmChartCss;
507
+
508
+ exports.wm_chart = Chart;