@fluentui/react-charting 5.16.36 → 5.16.38

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 (403) hide show
  1. package/CHANGELOG.json +43 -1
  2. package/CHANGELOG.md +22 -2
  3. package/dist/react-charting.js +1 -1
  4. package/dist/react-charting.min.js +1 -1
  5. package/lib/components/AreaChart/AreaChart.base.d.ts +1 -0
  6. package/lib/components/AreaChart/AreaChart.base.js +38 -27
  7. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  8. package/lib/components/CommonComponents/CartesianChart.base.js +2 -1
  9. package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
  10. package/lib/components/DonutChart/DonutChart.base.d.ts +1 -0
  11. package/lib/components/DonutChart/DonutChart.base.js +9 -2
  12. package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
  13. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +2 -0
  14. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +11 -2
  15. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  16. package/lib/components/HeatMapChart/HeatMapChart.base.d.ts +5 -0
  17. package/lib/components/HeatMapChart/HeatMapChart.base.js +10 -3
  18. package/lib/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  19. package/lib/components/HorizontalBarChart/HorizontalBarChart.base.d.ts +2 -0
  20. package/lib/components/HorizontalBarChart/HorizontalBarChart.base.js +9 -2
  21. package/lib/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
  22. package/lib/components/LineChart/LineChart.base.d.ts +2 -0
  23. package/lib/components/LineChart/LineChart.base.js +12 -2
  24. package/lib/components/LineChart/LineChart.base.js.map +1 -1
  25. package/lib/components/PieChart/PieChart.base.d.ts +6 -1
  26. package/lib/components/PieChart/PieChart.base.js +17 -5
  27. package/lib/components/PieChart/PieChart.base.js.map +1 -1
  28. package/lib/components/SankeyChart/SankeyChart.base.d.ts +1 -0
  29. package/lib/components/SankeyChart/SankeyChart.base.js +48 -41
  30. package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
  31. package/lib/components/Sparkline/Sparkline.base.d.ts +1 -0
  32. package/lib/components/Sparkline/Sparkline.base.js +40 -30
  33. package/lib/components/Sparkline/Sparkline.base.js.map +1 -1
  34. package/lib/components/StackedBarChart/MultiStackedBarChart.base.d.ts +2 -0
  35. package/lib/components/StackedBarChart/MultiStackedBarChart.base.js +37 -25
  36. package/lib/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  37. package/lib/components/StackedBarChart/StackedBarChart.base.d.ts +2 -0
  38. package/lib/components/StackedBarChart/StackedBarChart.base.js +68 -54
  39. package/lib/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  40. package/lib/components/TreeChart/TreeChart.base.js +2 -1
  41. package/lib/components/TreeChart/TreeChart.base.js.map +1 -1
  42. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +1 -0
  43. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +39 -26
  44. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  45. package/lib/version.js +1 -1
  46. package/lib/version.js.map +1 -1
  47. package/lib-amd/AreaChart.js +1 -1
  48. package/lib-amd/AreaChart.js.map +1 -1
  49. package/lib-amd/CartesianChart.js +1 -1
  50. package/lib-amd/CartesianChart.js.map +1 -1
  51. package/lib-amd/DonutChart.js +1 -1
  52. package/lib-amd/DonutChart.js.map +1 -1
  53. package/lib-amd/GroupedVerticalBarChart.js +1 -1
  54. package/lib-amd/GroupedVerticalBarChart.js.map +1 -1
  55. package/lib-amd/HeatMapChart.js +1 -1
  56. package/lib-amd/HeatMapChart.js.map +1 -1
  57. package/lib-amd/HorizontalBarChart.js +1 -1
  58. package/lib-amd/HorizontalBarChart.js.map +1 -1
  59. package/lib-amd/HorizontalBarChartWithAxis.js +1 -1
  60. package/lib-amd/HorizontalBarChartWithAxis.js.map +1 -1
  61. package/lib-amd/Legends.js +1 -1
  62. package/lib-amd/Legends.js.map +1 -1
  63. package/lib-amd/LineChart.js +1 -1
  64. package/lib-amd/LineChart.js.map +1 -1
  65. package/lib-amd/PieChart.js +1 -1
  66. package/lib-amd/PieChart.js.map +1 -1
  67. package/lib-amd/SankeyChart.js +1 -1
  68. package/lib-amd/SankeyChart.js.map +1 -1
  69. package/lib-amd/Sparkline.js +1 -1
  70. package/lib-amd/Sparkline.js.map +1 -1
  71. package/lib-amd/StackedBarChart.js +1 -1
  72. package/lib-amd/StackedBarChart.js.map +1 -1
  73. package/lib-amd/TreeChart.js +1 -1
  74. package/lib-amd/TreeChart.js.map +1 -1
  75. package/lib-amd/VerticalBarChart.js +1 -1
  76. package/lib-amd/VerticalBarChart.js.map +1 -1
  77. package/lib-amd/VerticalStackedBarChart.js +1 -1
  78. package/lib-amd/VerticalStackedBarChart.js.map +1 -1
  79. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +1 -0
  80. package/lib-amd/components/AreaChart/AreaChart.base.js +46 -35
  81. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  82. package/lib-amd/components/AreaChart/AreaChart.styles.js +1 -1
  83. package/lib-amd/components/AreaChart/AreaChart.styles.js.map +1 -1
  84. package/lib-amd/components/AreaChart/index.js +2 -2
  85. package/lib-amd/components/AreaChart/index.js.map +1 -1
  86. package/lib-amd/components/CommonComponents/CartesianChart.base.js +13 -12
  87. package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
  88. package/lib-amd/components/CommonComponents/CartesianChart.styles.js +3 -3
  89. package/lib-amd/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  90. package/lib-amd/components/CommonComponents/index.js +2 -2
  91. package/lib-amd/components/CommonComponents/index.js.map +1 -1
  92. package/lib-amd/components/DonutChart/Arc/Arc.js +1 -1
  93. package/lib-amd/components/DonutChart/Arc/Arc.js.map +1 -1
  94. package/lib-amd/components/DonutChart/Arc/index.js +2 -2
  95. package/lib-amd/components/DonutChart/Arc/index.js.map +1 -1
  96. package/lib-amd/components/DonutChart/DonutChart.base.d.ts +1 -0
  97. package/lib-amd/components/DonutChart/DonutChart.base.js +13 -6
  98. package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
  99. package/lib-amd/components/DonutChart/Pie/Pie.js +1 -1
  100. package/lib-amd/components/DonutChart/Pie/Pie.js.map +1 -1
  101. package/lib-amd/components/DonutChart/Pie/index.js +2 -2
  102. package/lib-amd/components/DonutChart/Pie/index.js.map +1 -1
  103. package/lib-amd/components/DonutChart/index.js +3 -3
  104. package/lib-amd/components/DonutChart/index.js.map +1 -1
  105. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +2 -0
  106. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +16 -7
  107. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  108. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.styles.js +1 -1
  109. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.styles.js.map +1 -1
  110. package/lib-amd/components/GroupedVerticalBarChart/index.js +2 -2
  111. package/lib-amd/components/GroupedVerticalBarChart/index.js.map +1 -1
  112. package/lib-amd/components/HeatMapChart/HeatMapChart.base.d.ts +5 -0
  113. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js +15 -8
  114. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  115. package/lib-amd/components/HeatMapChart/index.js +2 -2
  116. package/lib-amd/components/HeatMapChart/index.js.map +1 -1
  117. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.base.d.ts +2 -0
  118. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.base.js +14 -7
  119. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
  120. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.styles.js +2 -2
  121. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.styles.js.map +1 -1
  122. package/lib-amd/components/HorizontalBarChart/index.js +3 -3
  123. package/lib-amd/components/HorizontalBarChart/index.js.map +1 -1
  124. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +6 -6
  125. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  126. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js +1 -1
  127. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js.map +1 -1
  128. package/lib-amd/components/HorizontalBarChartWithAxis/index.js +2 -2
  129. package/lib-amd/components/HorizontalBarChartWithAxis/index.js.map +1 -1
  130. package/lib-amd/components/Legends/Legends.base.js +11 -11
  131. package/lib-amd/components/Legends/Legends.base.js.map +1 -1
  132. package/lib-amd/components/Legends/Legends.styles.js +2 -2
  133. package/lib-amd/components/Legends/Legends.styles.js.map +1 -1
  134. package/lib-amd/components/Legends/index.js +3 -3
  135. package/lib-amd/components/Legends/index.js.map +1 -1
  136. package/lib-amd/components/Legends/shape.js +2 -2
  137. package/lib-amd/components/Legends/shape.js.map +1 -1
  138. package/lib-amd/components/LineChart/LineChart.base.d.ts +2 -0
  139. package/lib-amd/components/LineChart/LineChart.base.js +26 -16
  140. package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
  141. package/lib-amd/components/LineChart/LineChart.styles.js +1 -1
  142. package/lib-amd/components/LineChart/LineChart.styles.js.map +1 -1
  143. package/lib-amd/components/LineChart/eventAnnotation/EventAnnotation.js +2 -2
  144. package/lib-amd/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  145. package/lib-amd/components/LineChart/eventAnnotation/Textbox.js +2 -2
  146. package/lib-amd/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  147. package/lib-amd/components/LineChart/index.js +3 -3
  148. package/lib-amd/components/LineChart/index.js.map +1 -1
  149. package/lib-amd/components/PieChart/Arc/Arc.js +2 -2
  150. package/lib-amd/components/PieChart/Arc/Arc.js.map +1 -1
  151. package/lib-amd/components/PieChart/Arc/index.js +2 -2
  152. package/lib-amd/components/PieChart/Arc/index.js.map +1 -1
  153. package/lib-amd/components/PieChart/Pie/Pie.js +1 -1
  154. package/lib-amd/components/PieChart/Pie/Pie.js.map +1 -1
  155. package/lib-amd/components/PieChart/Pie/index.js +2 -2
  156. package/lib-amd/components/PieChart/Pie/index.js.map +1 -1
  157. package/lib-amd/components/PieChart/PieChart.base.d.ts +6 -1
  158. package/lib-amd/components/PieChart/PieChart.base.js +17 -5
  159. package/lib-amd/components/PieChart/PieChart.base.js.map +1 -1
  160. package/lib-amd/components/PieChart/PieChart.styles.js +1 -1
  161. package/lib-amd/components/PieChart/PieChart.styles.js.map +1 -1
  162. package/lib-amd/components/PieChart/index.js +2 -2
  163. package/lib-amd/components/PieChart/index.js.map +1 -1
  164. package/lib-amd/components/SankeyChart/SankeyChart.base.d.ts +1 -0
  165. package/lib-amd/components/SankeyChart/SankeyChart.base.js +49 -42
  166. package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
  167. package/lib-amd/components/SankeyChart/SankeyChart.styles.js +1 -1
  168. package/lib-amd/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  169. package/lib-amd/components/SankeyChart/index.js +2 -2
  170. package/lib-amd/components/SankeyChart/index.js.map +1 -1
  171. package/lib-amd/components/Sparkline/Sparkline.base.d.ts +1 -0
  172. package/lib-amd/components/Sparkline/Sparkline.base.js +40 -30
  173. package/lib-amd/components/Sparkline/Sparkline.base.js.map +1 -1
  174. package/lib-amd/components/Sparkline/Sparkline.styles.js +1 -1
  175. package/lib-amd/components/Sparkline/Sparkline.styles.js.map +1 -1
  176. package/lib-amd/components/Sparkline/index.js +2 -2
  177. package/lib-amd/components/Sparkline/index.js.map +1 -1
  178. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.d.ts +2 -0
  179. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js +41 -29
  180. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  181. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.styles.js +1 -1
  182. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.styles.js.map +1 -1
  183. package/lib-amd/components/StackedBarChart/StackedBarChart.base.d.ts +2 -0
  184. package/lib-amd/components/StackedBarChart/StackedBarChart.base.js +70 -56
  185. package/lib-amd/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  186. package/lib-amd/components/StackedBarChart/StackedBarChart.styles.js +1 -1
  187. package/lib-amd/components/StackedBarChart/StackedBarChart.styles.js.map +1 -1
  188. package/lib-amd/components/StackedBarChart/index.js +5 -5
  189. package/lib-amd/components/StackedBarChart/index.js.map +1 -1
  190. package/lib-amd/components/TreeChart/TreeChart.base.js +4 -3
  191. package/lib-amd/components/TreeChart/TreeChart.base.js.map +1 -1
  192. package/lib-amd/components/TreeChart/TreeChart.styles.js +4 -4
  193. package/lib-amd/components/TreeChart/TreeChart.styles.js.map +1 -1
  194. package/lib-amd/components/TreeChart/index.js +2 -2
  195. package/lib-amd/components/TreeChart/index.js.map +1 -1
  196. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +6 -6
  197. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  198. package/lib-amd/components/VerticalBarChart/VerticalBarChart.styles.js +1 -1
  199. package/lib-amd/components/VerticalBarChart/VerticalBarChart.styles.js.map +1 -1
  200. package/lib-amd/components/VerticalBarChart/index.js +2 -2
  201. package/lib-amd/components/VerticalBarChart/index.js.map +1 -1
  202. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +1 -0
  203. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +49 -36
  204. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  205. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.styles.js +1 -1
  206. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.styles.js.map +1 -1
  207. package/lib-amd/components/VerticalStackedBarChart/index.js +2 -2
  208. package/lib-amd/components/VerticalStackedBarChart/index.js.map +1 -1
  209. package/lib-amd/index.js +19 -19
  210. package/lib-amd/index.js.map +1 -1
  211. package/lib-amd/types/index.js +2 -2
  212. package/lib-amd/types/index.js.map +1 -1
  213. package/lib-amd/utilities/ChartHoverCard/ChartHoverCard.base.js +1 -1
  214. package/lib-amd/utilities/ChartHoverCard/ChartHoverCard.base.js.map +1 -1
  215. package/lib-amd/utilities/ChartHoverCard/index.js +3 -3
  216. package/lib-amd/utilities/ChartHoverCard/index.js.map +1 -1
  217. package/lib-amd/utilities/FocusableTooltipText.js +2 -2
  218. package/lib-amd/utilities/FocusableTooltipText.js.map +1 -1
  219. package/lib-amd/utilities/index.js +3 -3
  220. package/lib-amd/utilities/index.js.map +1 -1
  221. package/lib-amd/utilities/utilities.js +4 -4
  222. package/lib-amd/utilities/utilities.js.map +1 -1
  223. package/lib-amd/version.js +1 -1
  224. package/lib-amd/version.js.map +1 -1
  225. package/lib-commonjs/AreaChart.js +1 -1
  226. package/lib-commonjs/AreaChart.js.map +1 -1
  227. package/lib-commonjs/CartesianChart.js +1 -1
  228. package/lib-commonjs/CartesianChart.js.map +1 -1
  229. package/lib-commonjs/DonutChart.js +1 -1
  230. package/lib-commonjs/DonutChart.js.map +1 -1
  231. package/lib-commonjs/GroupedVerticalBarChart.js +1 -1
  232. package/lib-commonjs/GroupedVerticalBarChart.js.map +1 -1
  233. package/lib-commonjs/HeatMapChart.js +1 -1
  234. package/lib-commonjs/HeatMapChart.js.map +1 -1
  235. package/lib-commonjs/HorizontalBarChart.js +1 -1
  236. package/lib-commonjs/HorizontalBarChart.js.map +1 -1
  237. package/lib-commonjs/HorizontalBarChartWithAxis.js +1 -1
  238. package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -1
  239. package/lib-commonjs/Legends.js +1 -1
  240. package/lib-commonjs/Legends.js.map +1 -1
  241. package/lib-commonjs/LineChart.js +1 -1
  242. package/lib-commonjs/LineChart.js.map +1 -1
  243. package/lib-commonjs/PieChart.js +1 -1
  244. package/lib-commonjs/PieChart.js.map +1 -1
  245. package/lib-commonjs/SankeyChart.js +1 -1
  246. package/lib-commonjs/SankeyChart.js.map +1 -1
  247. package/lib-commonjs/Sparkline.js +1 -1
  248. package/lib-commonjs/Sparkline.js.map +1 -1
  249. package/lib-commonjs/StackedBarChart.js +1 -1
  250. package/lib-commonjs/StackedBarChart.js.map +1 -1
  251. package/lib-commonjs/TreeChart.js +1 -1
  252. package/lib-commonjs/TreeChart.js.map +1 -1
  253. package/lib-commonjs/VerticalBarChart.js +1 -1
  254. package/lib-commonjs/VerticalBarChart.js.map +1 -1
  255. package/lib-commonjs/VerticalStackedBarChart.js +1 -1
  256. package/lib-commonjs/VerticalStackedBarChart.js.map +1 -1
  257. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +1 -0
  258. package/lib-commonjs/components/AreaChart/AreaChart.base.js +46 -35
  259. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  260. package/lib-commonjs/components/AreaChart/AreaChart.styles.js +1 -1
  261. package/lib-commonjs/components/AreaChart/AreaChart.styles.js.map +1 -1
  262. package/lib-commonjs/components/AreaChart/index.js +2 -2
  263. package/lib-commonjs/components/AreaChart/index.js.map +1 -1
  264. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +13 -12
  265. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
  266. package/lib-commonjs/components/CommonComponents/CartesianChart.styles.js +3 -3
  267. package/lib-commonjs/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  268. package/lib-commonjs/components/CommonComponents/index.js +2 -2
  269. package/lib-commonjs/components/CommonComponents/index.js.map +1 -1
  270. package/lib-commonjs/components/DonutChart/Arc/Arc.js +1 -1
  271. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  272. package/lib-commonjs/components/DonutChart/Arc/index.js +2 -2
  273. package/lib-commonjs/components/DonutChart/Arc/index.js.map +1 -1
  274. package/lib-commonjs/components/DonutChart/DonutChart.base.d.ts +1 -0
  275. package/lib-commonjs/components/DonutChart/DonutChart.base.js +13 -6
  276. package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
  277. package/lib-commonjs/components/DonutChart/Pie/Pie.js +1 -1
  278. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  279. package/lib-commonjs/components/DonutChart/Pie/index.js +2 -2
  280. package/lib-commonjs/components/DonutChart/Pie/index.js.map +1 -1
  281. package/lib-commonjs/components/DonutChart/index.js +3 -3
  282. package/lib-commonjs/components/DonutChart/index.js.map +1 -1
  283. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +2 -0
  284. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +16 -7
  285. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  286. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.styles.js +1 -1
  287. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.styles.js.map +1 -1
  288. package/lib-commonjs/components/GroupedVerticalBarChart/index.js +2 -2
  289. package/lib-commonjs/components/GroupedVerticalBarChart/index.js.map +1 -1
  290. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.d.ts +5 -0
  291. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js +15 -8
  292. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  293. package/lib-commonjs/components/HeatMapChart/index.js +2 -2
  294. package/lib-commonjs/components/HeatMapChart/index.js.map +1 -1
  295. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.base.d.ts +2 -0
  296. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.base.js +14 -7
  297. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
  298. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.styles.js +2 -2
  299. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.styles.js.map +1 -1
  300. package/lib-commonjs/components/HorizontalBarChart/index.js +3 -3
  301. package/lib-commonjs/components/HorizontalBarChart/index.js.map +1 -1
  302. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +6 -6
  303. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  304. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js +1 -1
  305. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js.map +1 -1
  306. package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js +2 -2
  307. package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -1
  308. package/lib-commonjs/components/Legends/Legends.base.js +11 -11
  309. package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
  310. package/lib-commonjs/components/Legends/Legends.styles.js +2 -2
  311. package/lib-commonjs/components/Legends/Legends.styles.js.map +1 -1
  312. package/lib-commonjs/components/Legends/index.js +3 -3
  313. package/lib-commonjs/components/Legends/index.js.map +1 -1
  314. package/lib-commonjs/components/Legends/shape.js +2 -2
  315. package/lib-commonjs/components/Legends/shape.js.map +1 -1
  316. package/lib-commonjs/components/LineChart/LineChart.base.d.ts +2 -0
  317. package/lib-commonjs/components/LineChart/LineChart.base.js +26 -16
  318. package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
  319. package/lib-commonjs/components/LineChart/LineChart.styles.js +1 -1
  320. package/lib-commonjs/components/LineChart/LineChart.styles.js.map +1 -1
  321. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +2 -2
  322. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  323. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +2 -2
  324. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  325. package/lib-commonjs/components/LineChart/index.js +3 -3
  326. package/lib-commonjs/components/LineChart/index.js.map +1 -1
  327. package/lib-commonjs/components/PieChart/Arc/Arc.js +2 -2
  328. package/lib-commonjs/components/PieChart/Arc/Arc.js.map +1 -1
  329. package/lib-commonjs/components/PieChart/Arc/index.js +2 -2
  330. package/lib-commonjs/components/PieChart/Arc/index.js.map +1 -1
  331. package/lib-commonjs/components/PieChart/Pie/Pie.js +1 -1
  332. package/lib-commonjs/components/PieChart/Pie/Pie.js.map +1 -1
  333. package/lib-commonjs/components/PieChart/Pie/index.js +2 -2
  334. package/lib-commonjs/components/PieChart/Pie/index.js.map +1 -1
  335. package/lib-commonjs/components/PieChart/PieChart.base.d.ts +6 -1
  336. package/lib-commonjs/components/PieChart/PieChart.base.js +17 -5
  337. package/lib-commonjs/components/PieChart/PieChart.base.js.map +1 -1
  338. package/lib-commonjs/components/PieChart/PieChart.styles.js +1 -1
  339. package/lib-commonjs/components/PieChart/PieChart.styles.js.map +1 -1
  340. package/lib-commonjs/components/PieChart/index.js +2 -2
  341. package/lib-commonjs/components/PieChart/index.js.map +1 -1
  342. package/lib-commonjs/components/SankeyChart/SankeyChart.base.d.ts +1 -0
  343. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +49 -42
  344. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
  345. package/lib-commonjs/components/SankeyChart/SankeyChart.styles.js +1 -1
  346. package/lib-commonjs/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  347. package/lib-commonjs/components/SankeyChart/index.js +2 -2
  348. package/lib-commonjs/components/SankeyChart/index.js.map +1 -1
  349. package/lib-commonjs/components/Sparkline/Sparkline.base.d.ts +1 -0
  350. package/lib-commonjs/components/Sparkline/Sparkline.base.js +40 -30
  351. package/lib-commonjs/components/Sparkline/Sparkline.base.js.map +1 -1
  352. package/lib-commonjs/components/Sparkline/Sparkline.styles.js +1 -1
  353. package/lib-commonjs/components/Sparkline/Sparkline.styles.js.map +1 -1
  354. package/lib-commonjs/components/Sparkline/index.js +2 -2
  355. package/lib-commonjs/components/Sparkline/index.js.map +1 -1
  356. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.d.ts +2 -0
  357. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js +41 -29
  358. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  359. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.styles.js +1 -1
  360. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.styles.js.map +1 -1
  361. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.d.ts +2 -0
  362. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js +70 -56
  363. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  364. package/lib-commonjs/components/StackedBarChart/StackedBarChart.styles.js +1 -1
  365. package/lib-commonjs/components/StackedBarChart/StackedBarChart.styles.js.map +1 -1
  366. package/lib-commonjs/components/StackedBarChart/index.js +5 -5
  367. package/lib-commonjs/components/StackedBarChart/index.js.map +1 -1
  368. package/lib-commonjs/components/TreeChart/TreeChart.base.js +4 -3
  369. package/lib-commonjs/components/TreeChart/TreeChart.base.js.map +1 -1
  370. package/lib-commonjs/components/TreeChart/TreeChart.styles.js +4 -4
  371. package/lib-commonjs/components/TreeChart/TreeChart.styles.js.map +1 -1
  372. package/lib-commonjs/components/TreeChart/index.js +2 -2
  373. package/lib-commonjs/components/TreeChart/index.js.map +1 -1
  374. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +6 -6
  375. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  376. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.styles.js +1 -1
  377. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.styles.js.map +1 -1
  378. package/lib-commonjs/components/VerticalBarChart/index.js +2 -2
  379. package/lib-commonjs/components/VerticalBarChart/index.js.map +1 -1
  380. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +1 -0
  381. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +49 -36
  382. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  383. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.styles.js +1 -1
  384. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.styles.js.map +1 -1
  385. package/lib-commonjs/components/VerticalStackedBarChart/index.js +2 -2
  386. package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -1
  387. package/lib-commonjs/index.js +19 -19
  388. package/lib-commonjs/index.js.map +1 -1
  389. package/lib-commonjs/types/index.js +2 -2
  390. package/lib-commonjs/types/index.js.map +1 -1
  391. package/lib-commonjs/utilities/ChartHoverCard/ChartHoverCard.base.js +1 -1
  392. package/lib-commonjs/utilities/ChartHoverCard/ChartHoverCard.base.js.map +1 -1
  393. package/lib-commonjs/utilities/ChartHoverCard/index.js +3 -3
  394. package/lib-commonjs/utilities/ChartHoverCard/index.js.map +1 -1
  395. package/lib-commonjs/utilities/FocusableTooltipText.js +2 -2
  396. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  397. package/lib-commonjs/utilities/index.js +3 -3
  398. package/lib-commonjs/utilities/index.js.map +1 -1
  399. package/lib-commonjs/utilities/utilities.js +4 -4
  400. package/lib-commonjs/utilities/utilities.js.map +1 -1
  401. package/lib-commonjs/version.js +1 -1
  402. package/lib-commonjs/version.js.map +1 -1
  403. package/package.json +5 -5
@@ -4,7 +4,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
4
4
  exports.MultiStackedBarChartBase = void 0;
5
5
  var getClassNames = (0, Utilities_1.classNamesFunction)();
6
6
  var MultiStackedBarChartBase = /** @class */ (function (_super) {
7
- (0, tslib_1.__extends)(MultiStackedBarChartBase, _super);
7
+ tslib_1.__extends(MultiStackedBarChartBase, _super);
8
8
  function MultiStackedBarChartBase(props) {
9
9
  var _this = _super.call(this, props) || this;
10
10
  _this._isRTL = (0, Utilities_1.getRTL)();
@@ -75,7 +75,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
75
75
  });
76
76
  }
77
77
  });
78
- return (React.createElement(index_1.Legends, (0, tslib_1.__assign)({ legends: actions, overflowProps: _this.props.legendsOverflowProps, focusZonePropsInHoverCard: _this.props.focusZonePropsForLegendsInHoverCard, overflowText: _this.props.legendsOverflowText }, _this.props.legendProps)));
78
+ return (React.createElement(index_1.Legends, tslib_1.__assign({ legends: actions, overflowProps: _this.props.legendsOverflowProps, focusZonePropsInHoverCard: _this.props.focusZonePropsForLegendsInHoverCard, overflowText: _this.props.legendsOverflowText }, _this.props.legendProps)));
79
79
  };
80
80
  _this._handleChartMouseLeave = function () {
81
81
  _this._calloutAnchorPoint = null;
@@ -130,39 +130,51 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
130
130
  xCalloutValue: '',
131
131
  yCalloutValue: '',
132
132
  calloutLegend: '',
133
+ emptyChart: false,
133
134
  };
134
135
  _this._onLeave = _this._onLeave.bind(_this);
135
136
  _this._onBarLeave = _this._onBarLeave.bind(_this);
136
137
  _this._calloutId = (0, Utilities_1.getId)('callout');
137
138
  return _this;
138
139
  }
140
+ MultiStackedBarChartBase.prototype.componentDidMount = function () {
141
+ var isChartEmpty = !(this.props.data &&
142
+ this.props.data.length > 0 &&
143
+ this.props.data.filter(function (item) { return item.chartData && item.chartData.length === 0; }).length === 0);
144
+ if (this.state.emptyChart !== isChartEmpty) {
145
+ this.setState({ emptyChart: isChartEmpty });
146
+ }
147
+ };
139
148
  MultiStackedBarChartBase.prototype.render = function () {
140
149
  var _this = this;
141
- var _a = this.props, data = _a.data, theme = _a.theme, culture = _a.culture;
142
- this._adjustProps();
143
- var palette = theme.palette;
144
- var legends = this._getLegendData(data, this.props.hideRatio, palette);
145
- var isCalloutVisible = this.state.isCalloutVisible;
146
- this._classNames = getClassNames(this.props.styles, {
147
- legendColor: this.state.color,
148
- theme: theme,
149
- variant: this.props.variant,
150
- hideLabels: this.props.hideLabels,
151
- });
152
- var legendName = this.state.xCalloutValue ? this.state.xCalloutValue : this.state.calloutLegend;
153
- var calloutYVal = this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard;
154
- this._longestBarTotalValue = this._computeLongestBarTotalValue();
155
- var bars = data.map(function (singleChartData, index) {
156
- var singleChartBars = _this._createBarsAndLegends(singleChartData, _this.props.barHeight, palette, _this.props.hideRatio[index], _this.props.hideDenominator[index], _this.props.href);
157
- return React.createElement("div", { key: index }, singleChartBars);
158
- });
159
- return (React.createElement("div", { className: this._classNames.root, onMouseLeave: this._handleChartMouseLeave },
160
- bars,
161
- !this.props.hideLegend && React.createElement("div", { className: this._classNames.legendContainer }, legends),
162
- React.createElement(Callout_1.Callout, (0, tslib_1.__assign)({ gapSpace: 15, isBeakVisible: false, target: this.state.refSelected, setInitialFocus: true, hidden: !(!this.props.hideTooltip && isCalloutVisible), directionalHint: Callout_1.DirectionalHint.topAutoEdge, id: this._calloutId, onDismiss: this._closeCallout, preventDismissOnLostFocus: true,
163
- /** Keep the callout updated with details of focused/hovered bar */
164
- shouldUpdateWhenHidden: true }, this.props.calloutProps, (0, index_3.getAccessibleDataObject)(this.state.callOutAccessibilityData, 'text', false)),
165
- React.createElement(React.Fragment, null, this.props.onRenderCalloutPerDataPoint ? (this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)) : (React.createElement(index_3.ChartHoverCard, { Legend: legendName, YValue: calloutYVal, color: this.state.color, culture: culture }))))));
150
+ if (!this.state.emptyChart) {
151
+ var _a = this.props, data = _a.data, theme = _a.theme, culture = _a.culture;
152
+ this._adjustProps();
153
+ var palette_1 = theme.palette;
154
+ var legends = this._getLegendData(data, this.props.hideRatio, palette_1);
155
+ var isCalloutVisible = this.state.isCalloutVisible;
156
+ this._classNames = getClassNames(this.props.styles, {
157
+ legendColor: this.state.color,
158
+ theme: theme,
159
+ variant: this.props.variant,
160
+ hideLabels: this.props.hideLabels,
161
+ });
162
+ var legendName = this.state.xCalloutValue ? this.state.xCalloutValue : this.state.calloutLegend;
163
+ var calloutYVal = this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard;
164
+ this._longestBarTotalValue = this._computeLongestBarTotalValue();
165
+ var bars = data.map(function (singleChartData, index) {
166
+ var singleChartBars = _this._createBarsAndLegends(singleChartData, _this.props.barHeight, palette_1, _this.props.hideRatio[index], _this.props.hideDenominator[index], _this.props.href);
167
+ return React.createElement("div", { key: index }, singleChartBars);
168
+ });
169
+ return (React.createElement("div", { className: this._classNames.root, onMouseLeave: this._handleChartMouseLeave },
170
+ bars,
171
+ !this.props.hideLegend && React.createElement("div", { className: this._classNames.legendContainer }, legends),
172
+ React.createElement(Callout_1.Callout, tslib_1.__assign({ gapSpace: 15, isBeakVisible: false, target: this.state.refSelected, setInitialFocus: true, hidden: !(!this.props.hideTooltip && isCalloutVisible), directionalHint: Callout_1.DirectionalHint.topAutoEdge, id: this._calloutId, onDismiss: this._closeCallout, preventDismissOnLostFocus: true,
173
+ /** Keep the callout updated with details of focused/hovered bar */
174
+ shouldUpdateWhenHidden: true }, this.props.calloutProps, (0, index_3.getAccessibleDataObject)(this.state.callOutAccessibilityData, 'text', false)),
175
+ React.createElement(React.Fragment, null, this.props.onRenderCalloutPerDataPoint ? (this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)) : (React.createElement(index_3.ChartHoverCard, { Legend: legendName, YValue: calloutYVal, color: this.state.color, culture: culture }))))));
176
+ }
177
+ return (React.createElement("div", { id: (0, Utilities_1.getId)('_MSBC_'), role: 'alert', style: { opacity: '0' }, "aria-label": 'Graph has no data to display' }));
166
178
  };
167
179
  MultiStackedBarChartBase.prototype._createBarsAndLegends = function (data, barHeight, palette, hideRatio, hideDenominator, href) {
168
180
  var _this = this;
@@ -263,10 +275,10 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
263
275
  React.createElement(react_focus_1.FocusZone, { direction: react_focus_1.FocusZoneDirection.horizontal },
264
276
  React.createElement("div", { className: this._classNames.chartTitle },
265
277
  data.chartTitle && (React.createElement(FocusableTooltipText_1.FocusableTooltipText, { className: this._classNames.chartTitleLeft, content: data.chartTitle, accessibilityData: data.chartTitleAccessibilityData })),
266
- showRatio && (React.createElement("div", (0, tslib_1.__assign)({}, (0, index_3.getAccessibleDataObject)(data.chartDataAccessibilityData, 'text', false)),
278
+ showRatio && (React.createElement("div", tslib_1.__assign({}, (0, index_3.getAccessibleDataObject)(data.chartDataAccessibilityData, 'text', false)),
267
279
  React.createElement("span", { className: this._classNames.ratioNumerator }, getChartData()),
268
280
  !hideDenominator && (React.createElement("span", { className: this._classNames.ratioDenominator }, ' / ' + (0, index_3.convertToLocaleString)(barTotalValue, culture))))),
269
- showNumber && (React.createElement("div", (0, tslib_1.__assign)({ className: this._classNames.ratioNumerator }, (0, index_3.getAccessibleDataObject)(data.chartDataAccessibilityData, 'text', false)), getChartData())))),
281
+ showNumber && (React.createElement("div", tslib_1.__assign({ className: this._classNames.ratioNumerator }, (0, index_3.getAccessibleDataObject)(data.chartDataAccessibilityData, 'text', false)), getChartData())))),
270
282
  React.createElement(react_focus_1.FocusZone, { direction: react_focus_1.FocusZoneDirection.horizontal },
271
283
  React.createElement("div", { className: this._classNames.chartWrapper },
272
284
  React.createElement("svg", { className: this._classNames.chart, "aria-label": data === null || data === void 0 ? void 0 : data.chartTitle }, bars)))));
@@ -1 +1 @@
1
- {"version":3,"file":"MultiStackedBarChart.base.js","sourceRoot":"../src/","sources":["components/StackedBarChart/MultiStackedBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNamesFunction, getId, getRTL } from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet, IPalette } from '@fluentui/react/lib/Styling';\nimport { ILegend, Legends } from '../Legends/index';\nimport {\n IAccessibilityProps,\n IChartDataPoint,\n IChartProps,\n IMultiStackedBarChartProps,\n IMultiStackedBarChartStyles,\n IMultiStackedBarChartStyleProps,\n MultiStackedBarChartVariant,\n} from './index';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react-focus';\nimport { ChartHoverCard, convertToLocaleString, getAccessibleDataObject } from '../../utilities/index';\nimport { formatPrefix as d3FormatPrefix } from 'd3-format';\nimport { FocusableTooltipText } from '../../utilities/FocusableTooltipText';\n\nconst getClassNames = classNamesFunction<IMultiStackedBarChartStyleProps, IMultiStackedBarChartStyles>();\n\nexport interface IRefArrayData {\n legendText?: string;\n refElement?: SVGGElement;\n}\n\nexport interface IMultiStackedBarChartState {\n isCalloutVisible: boolean;\n refArray: IRefArrayData[];\n selectedLegend: string;\n activeLegend: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected: any;\n dataForHoverCard: number;\n color: string;\n xCalloutValue?: string;\n yCalloutValue?: string;\n dataPointCalloutProps?: IChartDataPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n}\n\nexport class MultiStackedBarChartBase extends React.Component<IMultiStackedBarChartProps, IMultiStackedBarChartState> {\n public static defaultProps: Partial<IMultiStackedBarChartProps> = {\n barHeight: 12,\n hideRatio: [],\n hideDenominator: [],\n };\n\n private _classNames: IProcessedStyleSet<IMultiStackedBarChartStyles>;\n private _calloutId: string;\n private _calloutAnchorPoint: IChartDataPoint | null;\n private _longestBarTotalValue: number;\n private _isRTL: boolean = getRTL();\n\n public constructor(props: IMultiStackedBarChartProps) {\n super(props);\n this.state = {\n isCalloutVisible: false,\n refArray: [],\n selectedLegend: '',\n activeLegend: '',\n refSelected: null,\n dataForHoverCard: 0,\n color: '',\n xCalloutValue: '',\n yCalloutValue: '',\n calloutLegend: '',\n };\n this._onLeave = this._onLeave.bind(this);\n this._onBarLeave = this._onBarLeave.bind(this);\n this._calloutId = getId('callout');\n }\n\n public render(): JSX.Element {\n const { data, theme, culture } = this.props;\n this._adjustProps();\n const { palette } = theme!;\n const legends = this._getLegendData(data!, this.props.hideRatio!, palette);\n const { isCalloutVisible } = this.state;\n\n this._classNames = getClassNames(this.props.styles!, {\n legendColor: this.state.color,\n theme: theme!,\n variant: this.props.variant,\n hideLabels: this.props.hideLabels,\n });\n\n const legendName = this.state.xCalloutValue ? this.state.xCalloutValue : this.state.calloutLegend;\n const calloutYVal = this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard;\n\n this._longestBarTotalValue = this._computeLongestBarTotalValue();\n const bars: JSX.Element[] = data!.map((singleChartData: IChartProps, index: number) => {\n const singleChartBars = this._createBarsAndLegends(\n singleChartData!,\n this.props.barHeight!,\n palette,\n this.props.hideRatio![index],\n this.props.hideDenominator![index],\n this.props.href,\n );\n return <div key={index}>{singleChartBars}</div>;\n });\n\n return (\n <div className={this._classNames.root} onMouseLeave={this._handleChartMouseLeave}>\n {bars}\n {!this.props.hideLegend && <div className={this._classNames.legendContainer}>{legends}</div>}\n <Callout\n gapSpace={15}\n isBeakVisible={false}\n target={this.state.refSelected}\n setInitialFocus={true}\n hidden={!(!this.props.hideTooltip && isCalloutVisible)}\n directionalHint={DirectionalHint.topAutoEdge}\n id={this._calloutId}\n onDismiss={this._closeCallout}\n preventDismissOnLostFocus={true}\n /** Keep the callout updated with details of focused/hovered bar */\n shouldUpdateWhenHidden={true}\n {...this.props.calloutProps!}\n {...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false)}\n >\n <>\n {this.props.onRenderCalloutPerDataPoint ? (\n this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n ) : (\n <ChartHoverCard Legend={legendName} YValue={calloutYVal} color={this.state.color} culture={culture} />\n )}\n </>\n </Callout>\n </div>\n );\n }\n\n private _createBarsAndLegends(\n data: IChartProps,\n barHeight: number,\n palette: IPalette,\n hideRatio: boolean,\n hideDenominator: boolean,\n href?: string,\n ): JSX.Element {\n const { culture } = this.props;\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n // calculating starting point of each bar and it's range\n const startingPoint: number[] = [];\n const barTotalValue = data.chartData!.reduce(\n (acc: number, point: IChartDataPoint) => acc + (point.data ? point.data : 0),\n 0,\n );\n const total =\n this.props.variant === MultiStackedBarChartVariant.AbsoluteScale ? this._longestBarTotalValue : barTotalValue;\n\n let sumOfPercent = 0;\n data.chartData!.map((point: IChartDataPoint, index: number) => {\n const pointData = point.data ? point.data : 0;\n value = (pointData / total) * 100 ? (pointData / total) * 100 : 0;\n if (value < 1 && value !== 0) {\n value = 1;\n } else if (value > 99 && value !== 100) {\n value = 99;\n }\n sumOfPercent += value;\n\n return sumOfPercent;\n });\n\n // Include an imaginary placeholder bar with value equal to\n // the difference between longestBarTotalValue and barTotalValue\n // while calculating sumOfPercent to get correct scalingRatio for absolute-scale variant\n if (this.props.variant === MultiStackedBarChartVariant.AbsoluteScale) {\n let value = total === 0 ? 0 : ((total - barTotalValue) / total) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n } else if (value > 99 && value !== 100) {\n value = 99;\n }\n sumOfPercent += value;\n }\n\n const scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n\n let prevPosition = 0;\n let value = 0;\n\n const bars = data.chartData!.map((point: IChartDataPoint, index: number) => {\n const color: string = point.color\n ? point.color\n : point.placeHolder\n ? palette.neutralLight\n : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const pointData = point.data ? point.data : 0;\n if (index > 0) {\n prevPosition += value;\n }\n value = (pointData / total) * 100 ? (pointData / total) * 100 : 0;\n if (value < 1 && value !== 0) {\n value = 1 / scalingRatio;\n } else if (value > 99 && value !== 100) {\n value = 99 / scalingRatio;\n } else {\n value = value / scalingRatio;\n }\n\n startingPoint.push(prevPosition);\n\n const styles = this.props.styles;\n const shouldHighlight = this._legendHighlighted(point.legend!) || this._noLegendHighlighted() ? true : false;\n\n this._classNames = getClassNames(styles!, {\n theme: this.props.theme!,\n shouldHighlight: shouldHighlight,\n href: href,\n variant: this.props.variant,\n hideLabels: this.props.hideLabels,\n });\n\n return (\n <g\n key={index}\n className={point.placeHolder ? this._classNames.placeHolderOnHover : this._classNames.opacityChangeOnHover}\n ref={(e: SVGGElement) => {\n this._refCallback(e, point.legend!);\n }}\n data-is-focusable={!this.props.hideTooltip}\n onFocus={this._onBarFocus.bind(this, pointData, color, point)}\n onBlur={this._onBarLeave}\n role=\"img\"\n aria-label={this._getAriaLabel(point)}\n onMouseOver={point.placeHolder ? undefined : this._onBarHover.bind(this, pointData, color, point)}\n onMouseMove={point.placeHolder ? undefined : this._onBarHover.bind(this, pointData, color, point)}\n onMouseLeave={point.placeHolder ? undefined : this._onBarLeave}\n onClick={href ? (point.placeHolder ? undefined : this._redirectToUrl.bind(this, href)) : point.onClick}\n >\n <rect\n key={index}\n x={`${this._isRTL ? 100 - startingPoint[index] - value : startingPoint[index]}%`}\n y={0}\n width={value + '%'}\n height={barHeight}\n fill={color}\n />\n </g>\n );\n });\n if (this.props.variant === MultiStackedBarChartVariant.AbsoluteScale) {\n if (!this.props.hideLabels) {\n bars.push(\n <text\n key=\"text\"\n x={`${\n this._isRTL\n ? 100 - (startingPoint[startingPoint.length - 1] || 0) - value\n : (startingPoint[startingPoint.length - 1] || 0) + value\n }%`}\n y={barHeight / 2}\n dominantBaseline=\"central\"\n transform={`translate(${this._isRTL ? -4 : 4})`}\n className={this._classNames.barLabel}\n aria-label={`Total: ${barTotalValue}`}\n role=\"img\"\n >\n {d3FormatPrefix(barTotalValue < 1000 ? '.2~' : '.1', barTotalValue)(barTotalValue)}\n </text>,\n );\n }\n } else {\n // Render placeholder bars only for part-to-whole variant\n if (data.chartData!.length === 0) {\n bars.push(\n <g key={0} className={this._classNames.noData} onClick={this._redirectToUrl.bind(this, href)}>\n <rect key={0} x={'0%'} y={0} width={'100%'} height={barHeight} fill={palette.neutralLight} />\n </g>,\n );\n }\n if (barTotalValue === 0) {\n bars.push(\n <g key={'empty'} className={this._classNames.noData} onClick={this._redirectToUrl.bind(this, href)}>\n <rect key={0} x={'0%'} y={0} width={'100%'} height={barHeight} fill={palette.neutralLight} />\n </g>,\n );\n }\n }\n const hideNumber = hideRatio === undefined ? false : hideRatio;\n\n // Hide right side text of chart title for absolute-scale variant\n const showRatio =\n this.props.variant !== MultiStackedBarChartVariant.AbsoluteScale && !hideNumber && data!.chartData!.length === 2;\n const showNumber =\n this.props.variant !== MultiStackedBarChartVariant.AbsoluteScale && !hideNumber && data!.chartData!.length === 1;\n\n const getChartData = () => convertToLocaleString(data!.chartData![0].data ? data!.chartData![0].data : 0, culture);\n return (\n <div className={this._classNames.singleChartRoot}>\n <FocusZone direction={FocusZoneDirection.horizontal}>\n <div className={this._classNames.chartTitle}>\n {data!.chartTitle && (\n <FocusableTooltipText\n className={this._classNames.chartTitleLeft}\n content={data!.chartTitle}\n accessibilityData={data!.chartTitleAccessibilityData}\n />\n )}\n {showRatio && (\n <div {...getAccessibleDataObject(data!.chartDataAccessibilityData, 'text', false)}>\n <span className={this._classNames.ratioNumerator}>{getChartData()}</span>\n {!hideDenominator && (\n <span className={this._classNames.ratioDenominator}>\n {' / ' + convertToLocaleString(barTotalValue, culture)}\n </span>\n )}\n </div>\n )}\n {showNumber && (\n <div\n className={this._classNames.ratioNumerator}\n {...getAccessibleDataObject(data!.chartDataAccessibilityData, 'text', false)}\n >\n {getChartData()}\n </div>\n )}\n </div>\n </FocusZone>\n <FocusZone direction={FocusZoneDirection.horizontal}>\n <div className={this._classNames.chartWrapper}>\n <svg className={this._classNames.chart} aria-label={data?.chartTitle}>\n {bars}\n </svg>\n </div>\n </FocusZone>\n </div>\n );\n }\n\n private _onBarFocus(pointData: number, color: string, point: IChartDataPoint): void {\n this.state.refArray.forEach((obj: IRefArrayData) => {\n if (obj.legendText === point.legend!) {\n this.setState({\n refSelected: obj.refElement,\n /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend!,\n calloutLegend: point.legend!,\n dataForHoverCard: pointData,\n color: color,\n xCalloutValue: point.xAxisCalloutData!,\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n callOutAccessibilityData: point.callOutAccessibilityData!,\n });\n }\n });\n }\n\n private _refCallback(element: SVGGElement, legendTitle: string): void {\n this.state.refArray.push({ legendText: legendTitle, refElement: element });\n }\n\n private _adjustProps = (): void => {\n const { theme, className, styles, width, barHeight } = this.props;\n this._classNames = getClassNames(styles!, {\n legendColor: this.state.color,\n theme: theme!,\n width: width,\n className,\n barHeight: barHeight,\n });\n };\n\n private _onHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _getLegendData = (data: IChartProps[], hideRatio: boolean[], palette: IPalette): JSX.Element => {\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n const actions: ILegend[] = [];\n data.forEach((singleChartData: IChartProps, index: number) => {\n const validChartData = singleChartData.chartData!.filter((_: IChartDataPoint) => !_.placeHolder);\n if (validChartData!.length < 3) {\n const hideNumber = hideRatio[index] === undefined ? false : hideRatio[index];\n if (hideNumber) {\n validChartData!.forEach((point: IChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter(\n (leg: ILegend) => leg.title === point.legend! && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: ILegend = {\n title: point.legend!,\n color: color,\n action: () => {\n this._onClick(point.legend!);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onHover(point.legend!);\n },\n onMouseOutAction: () => {\n this._onLeave();\n },\n };\n actions.push(legend);\n });\n }\n } else {\n validChartData!.forEach((point: IChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter(\n (leg: ILegend) => leg.title === point.legend! && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: ILegend = {\n title: point.legend!,\n color: color,\n action: () => {\n this._onClick(point.legend!);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onHover(point.legend!);\n },\n onMouseOutAction: () => {\n this._onLeave();\n },\n };\n actions.push(legend);\n });\n }\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n overflowText={this.props.legendsOverflowText}\n {...this.props.legendProps}\n />\n );\n };\n\n private _onClick(legendTitle: string): void {\n if (this.state.selectedLegend === legendTitle) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legendTitle,\n });\n }\n }\n\n private _onLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _onBarHover(\n pointData: number,\n color: string,\n point: IChartDataPoint,\n mouseEvent: React.MouseEvent<SVGPathElement>,\n ): void {\n mouseEvent.persist();\n\n if (this._calloutAnchorPoint !== point) {\n this._calloutAnchorPoint = point;\n this.setState({\n refSelected: mouseEvent,\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend!,\n calloutLegend: point.legend!,\n dataForHoverCard: pointData,\n color: color,\n xCalloutValue: point.xAxisCalloutData!,\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n callOutAccessibilityData: point.callOutAccessibilityData!,\n });\n }\n }\n\n private _onBarLeave(): void {\n /**/\n }\n\n private _handleChartMouseLeave = () => {\n this._calloutAnchorPoint = null;\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _redirectToUrl(href: string | undefined): void {\n href ? (window.location.href = href) : '';\n }\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return (\n this.state.selectedLegend === legendTitle ||\n (this.state.selectedLegend === '' && this.state.activeLegend === legendTitle)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n\n private _getAriaLabel = (point: IChartDataPoint): string => {\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n private _computeLongestBarTotalValue = () => {\n let longestBarTotalValue = 0;\n this.props.data!.forEach(({ chartData }) => {\n const barTotalValue = chartData!.reduce(\n (acc: number, point: IChartDataPoint) => acc + (point.data ? point.data : 0),\n 0,\n );\n longestBarTotalValue = Math.max(longestBarTotalValue, barTotalValue);\n });\n return longestBarTotalValue;\n };\n}\n"]}
1
+ {"version":3,"file":"MultiStackedBarChart.base.js","sourceRoot":"../src/","sources":["components/StackedBarChart/MultiStackedBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNamesFunction, getId, getRTL } from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet, IPalette } from '@fluentui/react/lib/Styling';\nimport { ILegend, Legends } from '../Legends/index';\nimport {\n IAccessibilityProps,\n IChartDataPoint,\n IChartProps,\n IMultiStackedBarChartProps,\n IMultiStackedBarChartStyles,\n IMultiStackedBarChartStyleProps,\n MultiStackedBarChartVariant,\n} from './index';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react-focus';\nimport { ChartHoverCard, convertToLocaleString, getAccessibleDataObject } from '../../utilities/index';\nimport { formatPrefix as d3FormatPrefix } from 'd3-format';\nimport { FocusableTooltipText } from '../../utilities/FocusableTooltipText';\n\nconst getClassNames = classNamesFunction<IMultiStackedBarChartStyleProps, IMultiStackedBarChartStyles>();\n\nexport interface IRefArrayData {\n legendText?: string;\n refElement?: SVGGElement;\n}\n\nexport interface IMultiStackedBarChartState {\n isCalloutVisible: boolean;\n refArray: IRefArrayData[];\n selectedLegend: string;\n activeLegend: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected: any;\n dataForHoverCard: number;\n color: string;\n xCalloutValue?: string;\n yCalloutValue?: string;\n dataPointCalloutProps?: IChartDataPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n emptyChart?: boolean;\n}\n\nexport class MultiStackedBarChartBase extends React.Component<IMultiStackedBarChartProps, IMultiStackedBarChartState> {\n public static defaultProps: Partial<IMultiStackedBarChartProps> = {\n barHeight: 12,\n hideRatio: [],\n hideDenominator: [],\n };\n\n private _classNames: IProcessedStyleSet<IMultiStackedBarChartStyles>;\n private _calloutId: string;\n private _calloutAnchorPoint: IChartDataPoint | null;\n private _longestBarTotalValue: number;\n private _isRTL: boolean = getRTL();\n\n public constructor(props: IMultiStackedBarChartProps) {\n super(props);\n this.state = {\n isCalloutVisible: false,\n refArray: [],\n selectedLegend: '',\n activeLegend: '',\n refSelected: null,\n dataForHoverCard: 0,\n color: '',\n xCalloutValue: '',\n yCalloutValue: '',\n calloutLegend: '',\n emptyChart: false,\n };\n this._onLeave = this._onLeave.bind(this);\n this._onBarLeave = this._onBarLeave.bind(this);\n this._calloutId = getId('callout');\n }\n\n public componentDidMount(): void {\n const isChartEmpty: boolean = !(\n this.props.data &&\n this.props.data.length > 0 &&\n this.props.data.filter(item => item.chartData && item.chartData.length === 0).length === 0\n );\n if (this.state.emptyChart !== isChartEmpty) {\n this.setState({ emptyChart: isChartEmpty });\n }\n }\n\n public render(): JSX.Element {\n if (!this.state.emptyChart) {\n const { data, theme, culture } = this.props;\n this._adjustProps();\n const { palette } = theme!;\n const legends = this._getLegendData(data!, this.props.hideRatio!, palette);\n const { isCalloutVisible } = this.state;\n\n this._classNames = getClassNames(this.props.styles!, {\n legendColor: this.state.color,\n theme: theme!,\n variant: this.props.variant,\n hideLabels: this.props.hideLabels,\n });\n\n const legendName = this.state.xCalloutValue ? this.state.xCalloutValue : this.state.calloutLegend;\n const calloutYVal = this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard;\n\n this._longestBarTotalValue = this._computeLongestBarTotalValue();\n const bars: JSX.Element[] = data!.map((singleChartData: IChartProps, index: number) => {\n const singleChartBars = this._createBarsAndLegends(\n singleChartData!,\n this.props.barHeight!,\n palette,\n this.props.hideRatio![index],\n this.props.hideDenominator![index],\n this.props.href,\n );\n return <div key={index}>{singleChartBars}</div>;\n });\n\n return (\n <div className={this._classNames.root} onMouseLeave={this._handleChartMouseLeave}>\n {bars}\n {!this.props.hideLegend && <div className={this._classNames.legendContainer}>{legends}</div>}\n <Callout\n gapSpace={15}\n isBeakVisible={false}\n target={this.state.refSelected}\n setInitialFocus={true}\n hidden={!(!this.props.hideTooltip && isCalloutVisible)}\n directionalHint={DirectionalHint.topAutoEdge}\n id={this._calloutId}\n onDismiss={this._closeCallout}\n preventDismissOnLostFocus={true}\n /** Keep the callout updated with details of focused/hovered bar */\n shouldUpdateWhenHidden={true}\n {...this.props.calloutProps!}\n {...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false)}\n >\n <>\n {this.props.onRenderCalloutPerDataPoint ? (\n this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n ) : (\n <ChartHoverCard Legend={legendName} YValue={calloutYVal} color={this.state.color} culture={culture} />\n )}\n </>\n </Callout>\n </div>\n );\n }\n return (\n <div id={getId('_MSBC_')} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n\n private _createBarsAndLegends(\n data: IChartProps,\n barHeight: number,\n palette: IPalette,\n hideRatio: boolean,\n hideDenominator: boolean,\n href?: string,\n ): JSX.Element {\n const { culture } = this.props;\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n // calculating starting point of each bar and it's range\n const startingPoint: number[] = [];\n const barTotalValue = data.chartData!.reduce(\n (acc: number, point: IChartDataPoint) => acc + (point.data ? point.data : 0),\n 0,\n );\n const total =\n this.props.variant === MultiStackedBarChartVariant.AbsoluteScale ? this._longestBarTotalValue : barTotalValue;\n\n let sumOfPercent = 0;\n data.chartData!.map((point: IChartDataPoint, index: number) => {\n const pointData = point.data ? point.data : 0;\n value = (pointData / total) * 100 ? (pointData / total) * 100 : 0;\n if (value < 1 && value !== 0) {\n value = 1;\n } else if (value > 99 && value !== 100) {\n value = 99;\n }\n sumOfPercent += value;\n\n return sumOfPercent;\n });\n\n // Include an imaginary placeholder bar with value equal to\n // the difference between longestBarTotalValue and barTotalValue\n // while calculating sumOfPercent to get correct scalingRatio for absolute-scale variant\n if (this.props.variant === MultiStackedBarChartVariant.AbsoluteScale) {\n let value = total === 0 ? 0 : ((total - barTotalValue) / total) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n } else if (value > 99 && value !== 100) {\n value = 99;\n }\n sumOfPercent += value;\n }\n\n const scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n\n let prevPosition = 0;\n let value = 0;\n\n const bars = data.chartData!.map((point: IChartDataPoint, index: number) => {\n const color: string = point.color\n ? point.color\n : point.placeHolder\n ? palette.neutralLight\n : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const pointData = point.data ? point.data : 0;\n if (index > 0) {\n prevPosition += value;\n }\n value = (pointData / total) * 100 ? (pointData / total) * 100 : 0;\n if (value < 1 && value !== 0) {\n value = 1 / scalingRatio;\n } else if (value > 99 && value !== 100) {\n value = 99 / scalingRatio;\n } else {\n value = value / scalingRatio;\n }\n\n startingPoint.push(prevPosition);\n\n const styles = this.props.styles;\n const shouldHighlight = this._legendHighlighted(point.legend!) || this._noLegendHighlighted() ? true : false;\n\n this._classNames = getClassNames(styles!, {\n theme: this.props.theme!,\n shouldHighlight: shouldHighlight,\n href: href,\n variant: this.props.variant,\n hideLabels: this.props.hideLabels,\n });\n\n return (\n <g\n key={index}\n className={point.placeHolder ? this._classNames.placeHolderOnHover : this._classNames.opacityChangeOnHover}\n ref={(e: SVGGElement) => {\n this._refCallback(e, point.legend!);\n }}\n data-is-focusable={!this.props.hideTooltip}\n onFocus={this._onBarFocus.bind(this, pointData, color, point)}\n onBlur={this._onBarLeave}\n role=\"img\"\n aria-label={this._getAriaLabel(point)}\n onMouseOver={point.placeHolder ? undefined : this._onBarHover.bind(this, pointData, color, point)}\n onMouseMove={point.placeHolder ? undefined : this._onBarHover.bind(this, pointData, color, point)}\n onMouseLeave={point.placeHolder ? undefined : this._onBarLeave}\n onClick={href ? (point.placeHolder ? undefined : this._redirectToUrl.bind(this, href)) : point.onClick}\n >\n <rect\n key={index}\n x={`${this._isRTL ? 100 - startingPoint[index] - value : startingPoint[index]}%`}\n y={0}\n width={value + '%'}\n height={barHeight}\n fill={color}\n />\n </g>\n );\n });\n if (this.props.variant === MultiStackedBarChartVariant.AbsoluteScale) {\n if (!this.props.hideLabels) {\n bars.push(\n <text\n key=\"text\"\n x={`${\n this._isRTL\n ? 100 - (startingPoint[startingPoint.length - 1] || 0) - value\n : (startingPoint[startingPoint.length - 1] || 0) + value\n }%`}\n y={barHeight / 2}\n dominantBaseline=\"central\"\n transform={`translate(${this._isRTL ? -4 : 4})`}\n className={this._classNames.barLabel}\n aria-label={`Total: ${barTotalValue}`}\n role=\"img\"\n >\n {d3FormatPrefix(barTotalValue < 1000 ? '.2~' : '.1', barTotalValue)(barTotalValue)}\n </text>,\n );\n }\n } else {\n // Render placeholder bars only for part-to-whole variant\n if (data.chartData!.length === 0) {\n bars.push(\n <g key={0} className={this._classNames.noData} onClick={this._redirectToUrl.bind(this, href)}>\n <rect key={0} x={'0%'} y={0} width={'100%'} height={barHeight} fill={palette.neutralLight} />\n </g>,\n );\n }\n if (barTotalValue === 0) {\n bars.push(\n <g key={'empty'} className={this._classNames.noData} onClick={this._redirectToUrl.bind(this, href)}>\n <rect key={0} x={'0%'} y={0} width={'100%'} height={barHeight} fill={palette.neutralLight} />\n </g>,\n );\n }\n }\n const hideNumber = hideRatio === undefined ? false : hideRatio;\n\n // Hide right side text of chart title for absolute-scale variant\n const showRatio =\n this.props.variant !== MultiStackedBarChartVariant.AbsoluteScale && !hideNumber && data!.chartData!.length === 2;\n const showNumber =\n this.props.variant !== MultiStackedBarChartVariant.AbsoluteScale && !hideNumber && data!.chartData!.length === 1;\n\n const getChartData = () => convertToLocaleString(data!.chartData![0].data ? data!.chartData![0].data : 0, culture);\n return (\n <div className={this._classNames.singleChartRoot}>\n <FocusZone direction={FocusZoneDirection.horizontal}>\n <div className={this._classNames.chartTitle}>\n {data!.chartTitle && (\n <FocusableTooltipText\n className={this._classNames.chartTitleLeft}\n content={data!.chartTitle}\n accessibilityData={data!.chartTitleAccessibilityData}\n />\n )}\n {showRatio && (\n <div {...getAccessibleDataObject(data!.chartDataAccessibilityData, 'text', false)}>\n <span className={this._classNames.ratioNumerator}>{getChartData()}</span>\n {!hideDenominator && (\n <span className={this._classNames.ratioDenominator}>\n {' / ' + convertToLocaleString(barTotalValue, culture)}\n </span>\n )}\n </div>\n )}\n {showNumber && (\n <div\n className={this._classNames.ratioNumerator}\n {...getAccessibleDataObject(data!.chartDataAccessibilityData, 'text', false)}\n >\n {getChartData()}\n </div>\n )}\n </div>\n </FocusZone>\n <FocusZone direction={FocusZoneDirection.horizontal}>\n <div className={this._classNames.chartWrapper}>\n <svg className={this._classNames.chart} aria-label={data?.chartTitle}>\n {bars}\n </svg>\n </div>\n </FocusZone>\n </div>\n );\n }\n\n private _onBarFocus(pointData: number, color: string, point: IChartDataPoint): void {\n this.state.refArray.forEach((obj: IRefArrayData) => {\n if (obj.legendText === point.legend!) {\n this.setState({\n refSelected: obj.refElement,\n /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend!,\n calloutLegend: point.legend!,\n dataForHoverCard: pointData,\n color: color,\n xCalloutValue: point.xAxisCalloutData!,\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n callOutAccessibilityData: point.callOutAccessibilityData!,\n });\n }\n });\n }\n\n private _refCallback(element: SVGGElement, legendTitle: string): void {\n this.state.refArray.push({ legendText: legendTitle, refElement: element });\n }\n\n private _adjustProps = (): void => {\n const { theme, className, styles, width, barHeight } = this.props;\n this._classNames = getClassNames(styles!, {\n legendColor: this.state.color,\n theme: theme!,\n width: width,\n className,\n barHeight: barHeight,\n });\n };\n\n private _onHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _getLegendData = (data: IChartProps[], hideRatio: boolean[], palette: IPalette): JSX.Element => {\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n const actions: ILegend[] = [];\n data.forEach((singleChartData: IChartProps, index: number) => {\n const validChartData = singleChartData.chartData!.filter((_: IChartDataPoint) => !_.placeHolder);\n if (validChartData!.length < 3) {\n const hideNumber = hideRatio[index] === undefined ? false : hideRatio[index];\n if (hideNumber) {\n validChartData!.forEach((point: IChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter(\n (leg: ILegend) => leg.title === point.legend! && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: ILegend = {\n title: point.legend!,\n color: color,\n action: () => {\n this._onClick(point.legend!);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onHover(point.legend!);\n },\n onMouseOutAction: () => {\n this._onLeave();\n },\n };\n actions.push(legend);\n });\n }\n } else {\n validChartData!.forEach((point: IChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter(\n (leg: ILegend) => leg.title === point.legend! && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: ILegend = {\n title: point.legend!,\n color: color,\n action: () => {\n this._onClick(point.legend!);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onHover(point.legend!);\n },\n onMouseOutAction: () => {\n this._onLeave();\n },\n };\n actions.push(legend);\n });\n }\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n overflowText={this.props.legendsOverflowText}\n {...this.props.legendProps}\n />\n );\n };\n\n private _onClick(legendTitle: string): void {\n if (this.state.selectedLegend === legendTitle) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legendTitle,\n });\n }\n }\n\n private _onLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _onBarHover(\n pointData: number,\n color: string,\n point: IChartDataPoint,\n mouseEvent: React.MouseEvent<SVGPathElement>,\n ): void {\n mouseEvent.persist();\n\n if (this._calloutAnchorPoint !== point) {\n this._calloutAnchorPoint = point;\n this.setState({\n refSelected: mouseEvent,\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend!,\n calloutLegend: point.legend!,\n dataForHoverCard: pointData,\n color: color,\n xCalloutValue: point.xAxisCalloutData!,\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n callOutAccessibilityData: point.callOutAccessibilityData!,\n });\n }\n }\n\n private _onBarLeave(): void {\n /**/\n }\n\n private _handleChartMouseLeave = () => {\n this._calloutAnchorPoint = null;\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _redirectToUrl(href: string | undefined): void {\n href ? (window.location.href = href) : '';\n }\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return (\n this.state.selectedLegend === legendTitle ||\n (this.state.selectedLegend === '' && this.state.activeLegend === legendTitle)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n\n private _getAriaLabel = (point: IChartDataPoint): string => {\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n private _computeLongestBarTotalValue = () => {\n let longestBarTotalValue = 0;\n this.props.data!.forEach(({ chartData }) => {\n const barTotalValue = chartData!.reduce(\n (acc: number, point: IChartDataPoint) => acc + (point.data ? point.data : 0),\n 0,\n );\n longestBarTotalValue = Math.max(longestBarTotalValue, barTotalValue);\n });\n return longestBarTotalValue;\n };\n}\n"]}
@@ -24,7 +24,7 @@ define(["require", "exports", "tslib", "./MultiStackedBarChart.types", "@fluentu
24
24
  display: 'block',
25
25
  overflow: 'visible',
26
26
  },
27
- chartTitle: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, theme.fonts.small), { display: 'flex', justifyContent: 'space-between' }),
27
+ chartTitle: tslib_1.__assign(tslib_1.__assign({}, theme.fonts.small), { display: 'flex', justifyContent: 'space-between' }),
28
28
  chartTitleLeft: {
29
29
  textOverflow: 'ellipsis',
30
30
  overflow: 'hidden',
@@ -1 +1 @@
1
- {"version":3,"file":"MultiStackedBarChart.styles.js","sourceRoot":"../src/","sources":["components/StackedBarChart/MultiStackedBarChart.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n IMultiStackedBarChartStyleProps,\n IMultiStackedBarChartStyles,\n MultiStackedBarChartVariant,\n} from './MultiStackedBarChart.types';\nimport { FontSizes, FontWeights } from '@fluentui/react/lib/Styling';\n\nexport const getMultiStackedBarChartStyles = (props: IMultiStackedBarChartStyleProps): IMultiStackedBarChartStyles => {\n const { className, width, barHeight, shouldHighlight, theme, href, variant, hideLabels } = props;\n return {\n root: [\n theme.fonts.medium,\n 'ms-StackedBarChart',\n {\n display: 'flex',\n flexDirection: 'column',\n width: width ? width : '100%',\n },\n className,\n ],\n items: {\n marginBottom: '11px',\n },\n chart: {\n width: '100%',\n height: barHeight ? barHeight : 12,\n display: 'block',\n overflow: 'visible',\n },\n chartTitle: {\n ...theme.fonts.small,\n display: 'flex',\n justifyContent: 'space-between',\n },\n chartTitleLeft: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'block',\n color: theme.palette.neutralPrimary,\n marginBottom: variant === MultiStackedBarChartVariant.AbsoluteScale ? '4px' : '5px',\n },\n singleChartRoot: {\n width: width ? width : '100%',\n display: 'flex',\n flexDirection: 'column',\n marginBottom: variant === MultiStackedBarChartVariant.AbsoluteScale ? '16px' : '10px',\n },\n opacityChangeOnHover: {\n opacity: shouldHighlight ? '' : '0.1',\n cursor: href ? 'pointer' : 'default',\n stroke: theme.palette.white,\n strokeWidth: 2,\n selectors: {\n '&:focus': {\n stroke: theme.palette.black,\n strokeWidth: '2px',\n },\n },\n },\n ratioNumerator: {\n fontSize: FontSizes.medium,\n fontWeight: FontWeights.semibold,\n color: theme.palette.neutralPrimary,\n },\n ratioDenominator: {\n fontSize: FontSizes.medium,\n color: theme.palette.neutralPrimary,\n },\n placeHolderOnHover: {\n opacity: shouldHighlight ? '' : '0.1',\n cursor: 'default',\n stroke: theme.palette.white,\n strokeWidth: '2',\n selectors: {\n '&:focus': {\n stroke: theme.palette.black,\n strokeWidth: '2px',\n },\n },\n },\n legendContainer: {\n margin: '5px 0px 0px 4px',\n },\n noData: {\n cursor: href ? 'pointer' : 'default',\n },\n barLabel: {\n fontSize: FontSizes.small,\n fontWeight: FontWeights.semibold,\n fill: theme.palette.neutralPrimary,\n },\n chartWrapper: {\n paddingRight: variant === MultiStackedBarChartVariant.AbsoluteScale && !hideLabels ? 40 : 0,\n },\n };\n};\n"]}
1
+ {"version":3,"file":"MultiStackedBarChart.styles.js","sourceRoot":"../src/","sources":["components/StackedBarChart/MultiStackedBarChart.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n IMultiStackedBarChartStyleProps,\n IMultiStackedBarChartStyles,\n MultiStackedBarChartVariant,\n} from './MultiStackedBarChart.types';\nimport { FontSizes, FontWeights } from '@fluentui/react/lib/Styling';\n\nexport const getMultiStackedBarChartStyles = (props: IMultiStackedBarChartStyleProps): IMultiStackedBarChartStyles => {\n const { className, width, barHeight, shouldHighlight, theme, href, variant, hideLabels } = props;\n return {\n root: [\n theme.fonts.medium,\n 'ms-StackedBarChart',\n {\n display: 'flex',\n flexDirection: 'column',\n width: width ? width : '100%',\n },\n className,\n ],\n items: {\n marginBottom: '11px',\n },\n chart: {\n width: '100%',\n height: barHeight ? barHeight : 12,\n display: 'block',\n overflow: 'visible',\n },\n chartTitle: {\n ...theme.fonts.small,\n display: 'flex',\n justifyContent: 'space-between',\n },\n chartTitleLeft: {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'block',\n color: theme.palette.neutralPrimary,\n marginBottom: variant === MultiStackedBarChartVariant.AbsoluteScale ? '4px' : '5px',\n },\n singleChartRoot: {\n width: width ? width : '100%',\n display: 'flex',\n flexDirection: 'column',\n marginBottom: variant === MultiStackedBarChartVariant.AbsoluteScale ? '16px' : '10px',\n },\n opacityChangeOnHover: {\n opacity: shouldHighlight ? '' : '0.1',\n cursor: href ? 'pointer' : 'default',\n stroke: theme.palette.white,\n strokeWidth: 2,\n selectors: {\n '&:focus': {\n stroke: theme.palette.black,\n strokeWidth: '2px',\n },\n },\n },\n ratioNumerator: {\n fontSize: FontSizes.medium,\n fontWeight: FontWeights.semibold,\n color: theme.palette.neutralPrimary,\n },\n ratioDenominator: {\n fontSize: FontSizes.medium,\n color: theme.palette.neutralPrimary,\n },\n placeHolderOnHover: {\n opacity: shouldHighlight ? '' : '0.1',\n cursor: 'default',\n stroke: theme.palette.white,\n strokeWidth: '2',\n selectors: {\n '&:focus': {\n stroke: theme.palette.black,\n strokeWidth: '2px',\n },\n },\n },\n legendContainer: {\n margin: '5px 0px 0px 4px',\n },\n noData: {\n cursor: href ? 'pointer' : 'default',\n },\n barLabel: {\n fontSize: FontSizes.small,\n fontWeight: FontWeights.semibold,\n fill: theme.palette.neutralPrimary,\n },\n chartWrapper: {\n paddingRight: variant === MultiStackedBarChartVariant.AbsoluteScale && !hideLabels ? 40 : 0,\n },\n };\n};\n"]}
@@ -13,6 +13,7 @@ export interface IStackedBarChartState {
13
13
  dataPointCalloutProps?: IChartDataPoint;
14
14
  callOutAccessibilityData?: IAccessibilityProps;
15
15
  calloutLegend: string;
16
+ emptyChart?: boolean;
16
17
  }
17
18
  export declare class StackedBarChartBase extends React.Component<IStackedBarChartProps, IStackedBarChartState> {
18
19
  static defaultProps: Partial<IStackedBarChartProps>;
@@ -21,6 +22,7 @@ export declare class StackedBarChartBase extends React.Component<IStackedBarChar
21
22
  private _refArray;
22
23
  private _calloutAnchorPoint;
23
24
  constructor(props: IStackedBarChartProps);
25
+ componentDidMount(): void;
24
26
  render(): JSX.Element;
25
27
  private _adjustProps;
26
28
  private _createBarsAndLegends;
@@ -4,7 +4,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
4
4
  exports.StackedBarChartBase = void 0;
5
5
  var getClassNames = (0, Utilities_1.classNamesFunction)();
6
6
  var StackedBarChartBase = /** @class */ (function (_super) {
7
- (0, tslib_1.__extends)(StackedBarChartBase, _super);
7
+ tslib_1.__extends(StackedBarChartBase, _super);
8
8
  function StackedBarChartBase(props) {
9
9
  var _this = _super.call(this, props) || this;
10
10
  _this._handleChartMouseLeave = function () {
@@ -50,6 +50,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
50
50
  xCalloutValue: '',
51
51
  yCalloutValue: '',
52
52
  calloutLegend: '',
53
+ emptyChart: false,
53
54
  };
54
55
  _this._refArray = [];
55
56
  _this._onLeave = _this._onLeave.bind(_this);
@@ -58,62 +59,75 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
58
59
  _this._calloutId = (0, Utilities_1.getId)('callout');
59
60
  return _this;
60
61
  }
61
- StackedBarChartBase.prototype.render = function () {
62
- this._adjustProps();
63
- var _a = this.props, data = _a.data, benchmarkData = _a.benchmarkData, targetData = _a.targetData, hideNumberDisplay = _a.hideNumberDisplay, ignoreFixStyle = _a.ignoreFixStyle, culture = _a.culture;
64
- var palette = this.props.theme.palette;
65
- var barHeight = ignoreFixStyle || data.chartData.length > 2 ? this.props.barHeight : 12;
66
- if (benchmarkData) {
67
- // benchmark color is used to render color for benchmark triangle and benchmark legend
68
- benchmarkData.color = benchmarkData.color || palette.neutralTertiary;
69
- }
70
- if (targetData) {
71
- // target color is used to render color for target triangle and target legend
72
- targetData.color = targetData.color || palette.neutralSecondary;
62
+ StackedBarChartBase.prototype.componentDidMount = function () {
63
+ var isChartEmpty = !(this.props.data &&
64
+ this.props.data.chartData &&
65
+ this.props.data.chartData.length > 0);
66
+ if (this.state.emptyChart !== isChartEmpty) {
67
+ this.setState({ emptyChart: isChartEmpty });
73
68
  }
74
- var bars = this._createBarsAndLegends(data, barHeight, palette, benchmarkData, targetData);
75
- var showRatio = hideNumberDisplay === false && !ignoreFixStyle && data.chartData.length === 2;
76
- var showNumber = hideNumberDisplay === false && !ignoreFixStyle && data.chartData.length === 1;
77
- var total = data.chartData.reduce(function (acc, value) { return acc + (value.data ? value.data : 0); }, 0);
78
- var benchmarkRatio = 0;
79
- if (benchmarkData && total) {
80
- benchmarkRatio = (benchmarkData.data / total) * 100;
81
- }
82
- var targetRatio = 0;
83
- if (targetData && total) {
84
- targetRatio = (targetData.data / total) * 100;
69
+ };
70
+ StackedBarChartBase.prototype.render = function () {
71
+ if (!this.state.emptyChart) {
72
+ this._adjustProps();
73
+ var _a = this.props, data_1 = _a.data, benchmarkData = _a.benchmarkData, targetData = _a.targetData, hideNumberDisplay = _a.hideNumberDisplay, ignoreFixStyle = _a.ignoreFixStyle, culture_1 = _a.culture;
74
+ var palette = this.props.theme.palette;
75
+ var barHeight = ignoreFixStyle || data_1.chartData.length > 2 ? this.props.barHeight : 12;
76
+ if (benchmarkData) {
77
+ // benchmark color is used to render color for benchmark triangle and benchmark legend
78
+ benchmarkData.color = benchmarkData.color || palette.neutralTertiary;
79
+ }
80
+ if (targetData) {
81
+ // target color is used to render color for target triangle and target legend
82
+ targetData.color = targetData.color || palette.neutralSecondary;
83
+ }
84
+ var bars = this._createBarsAndLegends(data_1, barHeight, palette, benchmarkData, targetData);
85
+ var showRatio = hideNumberDisplay === false && !ignoreFixStyle && data_1.chartData.length === 2;
86
+ var showNumber = hideNumberDisplay === false && !ignoreFixStyle && data_1.chartData.length === 1;
87
+ var total = data_1.chartData.reduce(function (acc, value) { return acc + (value.data ? value.data : 0); }, 0);
88
+ var benchmarkRatio = 0;
89
+ if (benchmarkData && total) {
90
+ benchmarkRatio = (benchmarkData.data / total) * 100;
91
+ }
92
+ var targetRatio = 0;
93
+ if (targetData && total) {
94
+ targetRatio = (targetData.data / total) * 100;
95
+ }
96
+ var showLegend = this.props.hideLegend === false && (ignoreFixStyle || data_1.chartData.length > 2);
97
+ this._classNames = getClassNames(this.props.styles, {
98
+ legendColor: this.state.color,
99
+ theme: this.props.theme,
100
+ benchmarkColor: benchmarkData ? benchmarkData.color : '',
101
+ benchmarkRatio: benchmarkRatio,
102
+ targetColor: targetData ? targetData.color : '',
103
+ targetRatio: targetRatio,
104
+ showTriangle: !!(benchmarkData || targetData),
105
+ });
106
+ var getChartData = function () {
107
+ return (0, index_2.convertToLocaleString)(data_1.chartData[0].data ? data_1.chartData[0].data : 0, culture_1);
108
+ };
109
+ return (React.createElement("div", { className: this._classNames.root, onMouseLeave: this._handleChartMouseLeave },
110
+ React.createElement(react_focus_1.FocusZone, { direction: react_focus_1.FocusZoneDirection.horizontal },
111
+ React.createElement("div", { className: this._classNames.chartTitle },
112
+ data_1.chartTitle && (React.createElement(FocusableTooltipText_1.FocusableTooltipText, { className: this._classNames.chartTitleLeft, content: data_1.chartTitle, accessibilityData: data_1.chartTitleAccessibilityData })),
113
+ showRatio && (React.createElement("div", tslib_1.__assign({}, (0, index_2.getAccessibleDataObject)(data_1.chartDataAccessibilityData, 'text', false)),
114
+ React.createElement("span", { className: this._classNames.ratioNumerator }, getChartData()),
115
+ !this.props.hideDenominator && (React.createElement("span", { className: this._classNames.ratioDenominator }, ' / ' + (0, index_2.convertToLocaleString)(total, culture_1))))),
116
+ showNumber && (React.createElement("div", tslib_1.__assign({ className: this._classNames.ratioNumerator }, (0, index_2.getAccessibleDataObject)(data_1.chartDataAccessibilityData, 'text', false)), getChartData()))),
117
+ (benchmarkData || targetData) && (React.createElement("div", { className: this._classNames.benchmarkContainer },
118
+ benchmarkData && React.createElement("div", { className: this._classNames.benchmark, role: "text" }),
119
+ targetData && React.createElement("div", { className: this._classNames.target, role: "text" })))),
120
+ React.createElement(react_focus_1.FocusZone, { direction: react_focus_1.FocusZoneDirection.horizontal },
121
+ React.createElement("div", null,
122
+ React.createElement("svg", { className: this._classNames.chart, "aria-label": data_1 === null || data_1 === void 0 ? void 0 : data_1.chartTitle },
123
+ React.createElement("g", null, bars[0]),
124
+ React.createElement(Callout_1.Callout, tslib_1.__assign({ gapSpace: 15, isBeakVisible: false, target: this.state.refSelected, setInitialFocus: true, hidden: !(!this.props.hideTooltip && this.state.isCalloutVisible), directionalHint: Callout_1.DirectionalHint.topAutoEdge, id: this._calloutId, onDismiss: this._closeCallout, preventDismissOnLostFocus: true,
125
+ /** Keep the callout updated with details of focused/hovered bar */
126
+ shouldUpdateWhenHidden: true }, this.props.calloutProps, (0, index_2.getAccessibleDataObject)(this.state.callOutAccessibilityData, 'text', false)),
127
+ React.createElement(React.Fragment, null, this.props.onRenderCalloutPerDataPoint ? (this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)) : (React.createElement(index_2.ChartHoverCard, { Legend: this.state.xCalloutValue ? this.state.xCalloutValue : this.state.calloutLegend, YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard, color: this.state.color, culture: culture_1 }))))))),
128
+ showLegend && React.createElement("div", { className: this._classNames.legendContainer }, bars[1])));
85
129
  }
86
- var showLegend = this.props.hideLegend === false && (ignoreFixStyle || data.chartData.length > 2);
87
- this._classNames = getClassNames(this.props.styles, {
88
- legendColor: this.state.color,
89
- theme: this.props.theme,
90
- benchmarkColor: benchmarkData ? benchmarkData.color : '',
91
- benchmarkRatio: benchmarkRatio,
92
- targetColor: targetData ? targetData.color : '',
93
- targetRatio: targetRatio,
94
- showTriangle: !!(benchmarkData || targetData),
95
- });
96
- var getChartData = function () { return (0, index_2.convertToLocaleString)(data.chartData[0].data ? data.chartData[0].data : 0, culture); };
97
- return (React.createElement("div", { className: this._classNames.root, onMouseLeave: this._handleChartMouseLeave },
98
- React.createElement(react_focus_1.FocusZone, { direction: react_focus_1.FocusZoneDirection.horizontal },
99
- React.createElement("div", { className: this._classNames.chartTitle },
100
- data.chartTitle && (React.createElement(FocusableTooltipText_1.FocusableTooltipText, { className: this._classNames.chartTitleLeft, content: data.chartTitle, accessibilityData: data.chartTitleAccessibilityData })),
101
- showRatio && (React.createElement("div", (0, tslib_1.__assign)({}, (0, index_2.getAccessibleDataObject)(data.chartDataAccessibilityData, 'text', false)),
102
- React.createElement("span", { className: this._classNames.ratioNumerator }, getChartData()),
103
- !this.props.hideDenominator && (React.createElement("span", { className: this._classNames.ratioDenominator }, ' / ' + (0, index_2.convertToLocaleString)(total, culture))))),
104
- showNumber && (React.createElement("div", (0, tslib_1.__assign)({ className: this._classNames.ratioNumerator }, (0, index_2.getAccessibleDataObject)(data.chartDataAccessibilityData, 'text', false)), getChartData()))),
105
- (benchmarkData || targetData) && (React.createElement("div", { className: this._classNames.benchmarkContainer },
106
- benchmarkData && React.createElement("div", { className: this._classNames.benchmark, role: "text" }),
107
- targetData && React.createElement("div", { className: this._classNames.target, role: "text" })))),
108
- React.createElement(react_focus_1.FocusZone, { direction: react_focus_1.FocusZoneDirection.horizontal },
109
- React.createElement("div", null,
110
- React.createElement("svg", { className: this._classNames.chart, "aria-label": data === null || data === void 0 ? void 0 : data.chartTitle },
111
- React.createElement("g", null, bars[0]),
112
- React.createElement(Callout_1.Callout, (0, tslib_1.__assign)({ gapSpace: 15, isBeakVisible: false, target: this.state.refSelected, setInitialFocus: true, hidden: !(!this.props.hideTooltip && this.state.isCalloutVisible), directionalHint: Callout_1.DirectionalHint.topAutoEdge, id: this._calloutId, onDismiss: this._closeCallout, preventDismissOnLostFocus: true,
113
- /** Keep the callout updated with details of focused/hovered bar */
114
- shouldUpdateWhenHidden: true }, this.props.calloutProps, (0, index_2.getAccessibleDataObject)(this.state.callOutAccessibilityData, 'text', false)),
115
- React.createElement(React.Fragment, null, this.props.onRenderCalloutPerDataPoint ? (this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)) : (React.createElement(index_2.ChartHoverCard, { Legend: this.state.xCalloutValue ? this.state.xCalloutValue : this.state.calloutLegend, YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard, color: this.state.color, culture: culture }))))))),
116
- showLegend && React.createElement("div", { className: this._classNames.legendContainer }, bars[1])));
130
+ return (React.createElement("div", { id: (0, Utilities_1.getId)('_SBC_'), role: 'alert', style: { opacity: '0' }, "aria-label": 'Graph has no data to display' }));
117
131
  };
118
132
  StackedBarChartBase.prototype._adjustProps = function () {
119
133
  this._classNames = getClassNames(this.props.styles, {
@@ -203,7 +217,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
203
217
  // add benchmark legends
204
218
  this._addLegend(legendDataItems, benchmarkData);
205
219
  this._addLegend(legendDataItems, targetData);
206
- var legends = (React.createElement(index_1.Legends, (0, tslib_1.__assign)({ legends: legendDataItems, enabledWrapLines: this.props.enabledLegendsWrapLines, overflowProps: this.props.legendsOverflowProps, focusZonePropsInHoverCard: this.props.focusZonePropsForLegendsInHoverCard, overflowText: this.props.legendsOverflowText }, this.props.legendProps)));
220
+ var legends = (React.createElement(index_1.Legends, tslib_1.__assign({ legends: legendDataItems, enabledWrapLines: this.props.enabledLegendsWrapLines, overflowProps: this.props.legendsOverflowProps, focusZonePropsInHoverCard: this.props.focusZonePropsForLegendsInHoverCard, overflowText: this.props.legendsOverflowText }, this.props.legendProps)));
207
221
  return [
208
222
  total === 0
209
223
  ? [