@mui/x-charts 7.0.0-beta.0 → 7.0.0-beta.2

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 (258) hide show
  1. package/BarChart/BarChart.d.ts +2 -1
  2. package/BarChart/BarChart.js +33 -12
  3. package/BarChart/BarElement.d.ts +20 -13
  4. package/BarChart/BarElement.js +7 -3
  5. package/BarChart/BarPlot.d.ts +11 -6
  6. package/BarChart/BarPlot.js +28 -15
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +406 -1
  9. package/ChartContainer/ChartContainer.js +6 -4
  10. package/ChartsAxis/ChartsAxis.js +4 -4
  11. package/ChartsLegend/ChartsLegend.d.ts +5 -54
  12. package/ChartsLegend/ChartsLegend.js +2 -307
  13. package/ChartsLegend/DefaultChartsLegend.d.ts +60 -0
  14. package/ChartsLegend/DefaultChartsLegend.js +294 -0
  15. package/ChartsLegend/index.d.ts +1 -0
  16. package/ChartsLegend/index.js +11 -0
  17. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +20 -0
  18. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +83 -0
  19. package/ChartsOnAxisClickHandler/index.d.ts +1 -0
  20. package/ChartsOnAxisClickHandler/index.js +16 -0
  21. package/ChartsOnAxisClickHandler/package.json +6 -0
  22. package/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  23. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  24. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  25. package/ChartsReferenceLine/common.d.ts +2 -1
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  27. package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  28. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  29. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  30. package/ChartsTooltip/utils.d.ts +4 -1
  31. package/ChartsTooltip/utils.js +15 -0
  32. package/ChartsVoronoiHandler/ChartsVoronoiHandler.d.ts +7 -0
  33. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  34. package/ChartsXAxis/ChartsXAxis.js +13 -9
  35. package/ChartsYAxis/ChartsYAxis.js +1 -1
  36. package/LineChart/AnimatedArea.d.ts +1361 -0
  37. package/LineChart/AnimatedArea.js +111 -0
  38. package/LineChart/AnimatedLine.d.ts +1361 -0
  39. package/LineChart/AnimatedLine.js +113 -0
  40. package/LineChart/AreaElement.d.ts +19 -18
  41. package/LineChart/AreaElement.js +17 -34
  42. package/LineChart/AreaPlot.d.ts +12 -7
  43. package/LineChart/AreaPlot.js +91 -58
  44. package/LineChart/LineChart.d.ts +13 -4
  45. package/LineChart/LineChart.js +45 -14
  46. package/LineChart/LineElement.d.ts +19 -18
  47. package/LineChart/LineElement.js +16 -36
  48. package/LineChart/LineHighlightElement.d.ts +3 -2
  49. package/LineChart/LineHighlightElement.js +5 -3
  50. package/LineChart/LinePlot.d.ts +12 -7
  51. package/LineChart/LinePlot.js +89 -56
  52. package/LineChart/MarkElement.d.ts +8 -4
  53. package/LineChart/MarkElement.js +27 -13
  54. package/LineChart/MarkPlot.d.ts +8 -1
  55. package/LineChart/MarkPlot.js +80 -51
  56. package/LineChart/formatter.js +1 -1
  57. package/LineChart/index.d.ts +2 -0
  58. package/LineChart/index.js +22 -0
  59. package/PieChart/PieArc.d.ts +3 -2
  60. package/PieChart/PieArc.js +1 -0
  61. package/PieChart/PieArcLabel.d.ts +3 -2
  62. package/PieChart/PieArcLabel.js +1 -0
  63. package/PieChart/PieArcLabelPlot.d.ts +1 -1
  64. package/PieChart/PieArcLabelPlot.js +2 -2
  65. package/PieChart/PieArcPlot.d.ts +2 -2
  66. package/PieChart/PieArcPlot.js +7 -7
  67. package/PieChart/PieChart.d.ts +1 -1
  68. package/PieChart/PieChart.js +14 -12
  69. package/PieChart/PiePlot.d.ts +1 -1
  70. package/PieChart/PiePlot.js +4 -4
  71. package/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  72. package/ScatterChart/Scatter.d.ts +7 -1
  73. package/ScatterChart/Scatter.js +17 -3
  74. package/ScatterChart/ScatterChart.d.ts +8 -2
  75. package/ScatterChart/ScatterChart.js +21 -10
  76. package/ScatterChart/ScatterPlot.d.ts +1 -1
  77. package/ScatterChart/ScatterPlot.js +10 -2
  78. package/SparkLineChart/SparkLineChart.d.ts +1 -1
  79. package/SparkLineChart/SparkLineChart.js +7 -4
  80. package/context/CartesianContextProvider.js +8 -6
  81. package/context/DrawingProvider.d.ts +6 -1
  82. package/context/DrawingProvider.js +9 -2
  83. package/context/InteractionProvider.d.ts +3 -3
  84. package/esm/BarChart/BarChart.js +33 -12
  85. package/esm/BarChart/BarElement.js +7 -3
  86. package/esm/BarChart/BarPlot.js +27 -15
  87. package/esm/BarChart/formatter.js +1 -1
  88. package/esm/ChartContainer/ChartContainer.js +6 -4
  89. package/esm/ChartsAxis/ChartsAxis.js +4 -4
  90. package/esm/ChartsLegend/ChartsLegend.js +2 -307
  91. package/esm/ChartsLegend/DefaultChartsLegend.js +286 -0
  92. package/esm/ChartsLegend/index.js +1 -0
  93. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +77 -0
  94. package/esm/ChartsOnAxisClickHandler/index.js +1 -0
  95. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  96. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  97. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  98. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  99. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  100. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -5
  101. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  102. package/esm/ChartsTooltip/utils.js +12 -0
  103. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  104. package/esm/ChartsXAxis/ChartsXAxis.js +13 -9
  105. package/esm/ChartsYAxis/ChartsYAxis.js +1 -1
  106. package/esm/LineChart/AnimatedArea.js +103 -0
  107. package/esm/LineChart/AnimatedLine.js +105 -0
  108. package/esm/LineChart/AreaElement.js +16 -33
  109. package/esm/LineChart/AreaPlot.js +92 -59
  110. package/esm/LineChart/LineChart.js +45 -14
  111. package/esm/LineChart/LineElement.js +16 -35
  112. package/esm/LineChart/LineHighlightElement.js +5 -3
  113. package/esm/LineChart/LinePlot.js +90 -57
  114. package/esm/LineChart/MarkElement.js +27 -13
  115. package/esm/LineChart/MarkPlot.js +80 -51
  116. package/esm/LineChart/formatter.js +1 -1
  117. package/esm/LineChart/index.js +2 -0
  118. package/esm/PieChart/PieArc.js +1 -0
  119. package/esm/PieChart/PieArcLabel.js +1 -0
  120. package/esm/PieChart/PieArcLabelPlot.js +2 -2
  121. package/esm/PieChart/PieArcPlot.js +7 -7
  122. package/esm/PieChart/PieChart.js +14 -12
  123. package/esm/PieChart/PiePlot.js +4 -4
  124. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  125. package/esm/ScatterChart/Scatter.js +17 -3
  126. package/esm/ScatterChart/ScatterChart.js +21 -10
  127. package/esm/ScatterChart/ScatterPlot.js +10 -2
  128. package/esm/SparkLineChart/SparkLineChart.js +7 -4
  129. package/esm/context/CartesianContextProvider.js +8 -6
  130. package/esm/context/DrawingProvider.js +9 -2
  131. package/esm/hooks/useDrawingArea.js +7 -3
  132. package/esm/index.js +1 -0
  133. package/esm/internals/geometry.js +1 -1
  134. package/esm/internals/useAnimatedPath.js +29 -0
  135. package/esm/internals/utils.js +7 -0
  136. package/hooks/useDrawingArea.d.ts +2 -0
  137. package/hooks/useDrawingArea.js +7 -3
  138. package/index.d.ts +1 -0
  139. package/index.js +12 -1
  140. package/internals/defaultizeColor.d.ts +16 -16
  141. package/internals/defaultizeValueFormatter.d.ts +4 -7
  142. package/internals/geometry.js +1 -1
  143. package/internals/stackSeries.d.ts +4 -7
  144. package/internals/useAnimatedPath.d.ts +1 -0
  145. package/internals/useAnimatedPath.js +38 -0
  146. package/internals/utils.d.ts +4 -0
  147. package/internals/utils.js +8 -0
  148. package/legacy/BarChart/BarChart.js +33 -12
  149. package/legacy/BarChart/BarElement.js +6 -2
  150. package/legacy/BarChart/BarPlot.js +28 -14
  151. package/legacy/BarChart/formatter.js +1 -1
  152. package/legacy/ChartContainer/ChartContainer.js +6 -4
  153. package/legacy/ChartsAxis/ChartsAxis.js +4 -4
  154. package/legacy/ChartsLegend/ChartsLegend.js +2 -323
  155. package/legacy/ChartsLegend/DefaultChartsLegend.js +302 -0
  156. package/legacy/ChartsLegend/index.js +1 -0
  157. package/legacy/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  158. package/legacy/ChartsOnAxisClickHandler/index.js +1 -0
  159. package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  160. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  161. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  162. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +6 -7
  163. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  164. package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -5
  165. package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  166. package/legacy/ChartsTooltip/utils.js +12 -0
  167. package/legacy/ChartsVoronoiHandler/ChartsVoronoiHandler.js +88 -44
  168. package/legacy/ChartsXAxis/ChartsXAxis.js +12 -8
  169. package/legacy/ChartsYAxis/ChartsYAxis.js +1 -1
  170. package/legacy/LineChart/AnimatedArea.js +102 -0
  171. package/legacy/LineChart/AnimatedLine.js +104 -0
  172. package/legacy/LineChart/AreaElement.js +15 -35
  173. package/legacy/LineChart/AreaPlot.js +102 -66
  174. package/legacy/LineChart/LineChart.js +45 -14
  175. package/legacy/LineChart/LineElement.js +15 -37
  176. package/legacy/LineChart/LineHighlightElement.js +5 -3
  177. package/legacy/LineChart/LinePlot.js +97 -63
  178. package/legacy/LineChart/MarkElement.js +30 -12
  179. package/legacy/LineChart/MarkPlot.js +83 -53
  180. package/legacy/LineChart/formatter.js +1 -1
  181. package/legacy/LineChart/index.js +2 -0
  182. package/legacy/PieChart/PieArc.js +1 -0
  183. package/legacy/PieChart/PieArcLabel.js +1 -0
  184. package/legacy/PieChart/PieArcLabelPlot.js +2 -2
  185. package/legacy/PieChart/PieArcPlot.js +7 -7
  186. package/legacy/PieChart/PieChart.js +14 -12
  187. package/legacy/PieChart/PiePlot.js +4 -4
  188. package/legacy/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  189. package/legacy/ScatterChart/Scatter.js +19 -3
  190. package/legacy/ScatterChart/ScatterChart.js +21 -10
  191. package/legacy/ScatterChart/ScatterPlot.js +10 -2
  192. package/legacy/SparkLineChart/SparkLineChart.js +8 -5
  193. package/legacy/context/CartesianContextProvider.js +8 -6
  194. package/legacy/context/DrawingProvider.js +11 -2
  195. package/legacy/hooks/useDrawingArea.js +7 -3
  196. package/legacy/index.js +2 -1
  197. package/legacy/internals/geometry.js +1 -1
  198. package/legacy/internals/useAnimatedPath.js +32 -0
  199. package/legacy/internals/utils.js +7 -0
  200. package/models/axis.d.ts +7 -2
  201. package/models/seriesType/common.d.ts +2 -1
  202. package/models/seriesType/config.d.ts +7 -12
  203. package/models/seriesType/line.d.ts +2 -2
  204. package/models/seriesType/pie.d.ts +7 -3
  205. package/models/seriesType/scatter.d.ts +5 -2
  206. package/modern/BarChart/BarChart.js +33 -12
  207. package/modern/BarChart/BarElement.js +7 -3
  208. package/modern/BarChart/BarPlot.js +27 -15
  209. package/modern/BarChart/formatter.js +1 -1
  210. package/modern/ChartContainer/ChartContainer.js +6 -4
  211. package/modern/ChartsAxis/ChartsAxis.js +4 -4
  212. package/modern/ChartsLegend/ChartsLegend.js +2 -307
  213. package/modern/ChartsLegend/DefaultChartsLegend.js +286 -0
  214. package/modern/ChartsLegend/index.js +1 -0
  215. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  216. package/modern/ChartsOnAxisClickHandler/index.js +1 -0
  217. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  218. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  219. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  220. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  221. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  222. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  223. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  224. package/modern/ChartsTooltip/utils.js +12 -0
  225. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  226. package/modern/ChartsXAxis/ChartsXAxis.js +13 -9
  227. package/modern/ChartsYAxis/ChartsYAxis.js +1 -1
  228. package/modern/LineChart/AnimatedArea.js +103 -0
  229. package/modern/LineChart/AnimatedLine.js +105 -0
  230. package/modern/LineChart/AreaElement.js +16 -33
  231. package/modern/LineChart/AreaPlot.js +91 -58
  232. package/modern/LineChart/LineChart.js +45 -14
  233. package/modern/LineChart/LineElement.js +16 -35
  234. package/modern/LineChart/LineHighlightElement.js +5 -3
  235. package/modern/LineChart/LinePlot.js +89 -56
  236. package/modern/LineChart/MarkElement.js +27 -13
  237. package/modern/LineChart/MarkPlot.js +80 -51
  238. package/modern/LineChart/formatter.js +1 -1
  239. package/modern/LineChart/index.js +2 -0
  240. package/modern/PieChart/PieArc.js +1 -0
  241. package/modern/PieChart/PieArcLabel.js +1 -0
  242. package/modern/PieChart/PieArcLabelPlot.js +2 -2
  243. package/modern/PieChart/PieArcPlot.js +7 -7
  244. package/modern/PieChart/PieChart.js +14 -12
  245. package/modern/PieChart/PiePlot.js +4 -4
  246. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  247. package/modern/ScatterChart/Scatter.js +17 -3
  248. package/modern/ScatterChart/ScatterChart.js +21 -10
  249. package/modern/ScatterChart/ScatterPlot.js +10 -2
  250. package/modern/SparkLineChart/SparkLineChart.js +7 -4
  251. package/modern/context/CartesianContextProvider.js +8 -6
  252. package/modern/context/DrawingProvider.js +9 -2
  253. package/modern/hooks/useDrawingArea.js +7 -3
  254. package/modern/index.js +2 -1
  255. package/modern/internals/geometry.js +1 -1
  256. package/modern/internals/useAnimatedPath.js +29 -0
  257. package/modern/internals/utils.js +7 -0
  258. package/package.json +6 -5
@@ -8,11 +8,12 @@ import { ChartsTooltipProps, ChartsTooltipSlotProps, ChartsTooltipSlots } from '
8
8
  import { ChartsLegendProps, ChartsLegendSlots, ChartsLegendSlotProps } from '../ChartsLegend';
9
9
  import { ChartsAxisHighlightProps } from '../ChartsAxisHighlight';
10
10
  import { ChartsAxisSlots, ChartsAxisSlotProps } from '../models/axis';
11
+ import { ChartsOnAxisClickHandlerProps } from '../ChartsOnAxisClickHandler';
11
12
  export interface BarChartSlots extends ChartsAxisSlots, BarPlotSlots, ChartsLegendSlots, ChartsTooltipSlots {
12
13
  }
13
14
  export interface BarChartSlotProps extends ChartsAxisSlotProps, BarPlotSlotProps, ChartsLegendSlotProps, ChartsTooltipSlotProps {
14
15
  }
15
- export interface BarChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, Pick<BarPlotProps, 'skipAnimation'> {
16
+ export interface BarChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, Omit<BarPlotProps, 'slots' | 'slotProps'>, ChartsOnAxisClickHandlerProps {
16
17
  series: MakeOptional<BarSeriesType, 'type'>[];
17
18
  tooltip?: ChartsTooltipProps;
18
19
  /**
@@ -17,6 +17,7 @@ var _ChartsTooltip = require("../ChartsTooltip");
17
17
  var _ChartsLegend = require("../ChartsLegend");
18
18
  var _ChartsAxisHighlight = require("../ChartsAxisHighlight");
19
19
  var _ChartsClipPath = require("../ChartsClipPath");
20
+ var _ChartsOnAxisClickHandler = require("../ChartsOnAxisClickHandler");
20
21
  var _jsxRuntime = require("react/jsx-runtime");
21
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -51,6 +52,8 @@ const BarChart = exports.BarChart = /*#__PURE__*/React.forwardRef(function BarCh
51
52
  rightAxis,
52
53
  bottomAxis,
53
54
  skipAnimation,
55
+ onItemClick,
56
+ onAxisClick,
54
57
  children,
55
58
  slots,
56
59
  slotProps
@@ -88,13 +91,16 @@ const BarChart = exports.BarChart = /*#__PURE__*/React.forwardRef(function BarCh
88
91
  colors: colors,
89
92
  dataset: dataset,
90
93
  sx: sx,
91
- disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
92
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
94
+ disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none' && !onAxisClick,
95
+ children: [onAxisClick && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsOnAxisClickHandler.ChartsOnAxisClickHandler, {
96
+ onAxisClick: onAxisClick
97
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
93
98
  clipPath: `url(#${clipPathId})`,
94
99
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BarPlot.BarPlot, {
95
100
  slots: slots,
96
101
  slotProps: slotProps,
97
- skipAnimation: skipAnimation
102
+ skipAnimation: skipAnimation,
103
+ onItemClick: onItemClick
98
104
  })
99
105
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxis.ChartsAxis, {
100
106
  topAxis: topAxis,
@@ -136,7 +142,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
136
142
  * @default xAxisIds[0] The id of the first provided axis
137
143
  */
138
144
  bottomAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
139
- axisId: _propTypes.default.string,
145
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
140
146
  classes: _propTypes.default.object,
141
147
  disableLine: _propTypes.default.bool,
142
148
  disableTicks: _propTypes.default.bool,
@@ -187,7 +193,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
187
193
  * @default yAxisIds[0] The id of the first provided axis
188
194
  */
189
195
  leftAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
190
- axisId: _propTypes.default.string,
196
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
191
197
  classes: _propTypes.default.object,
192
198
  disableLine: _propTypes.default.bool,
193
199
  disableTicks: _propTypes.default.bool,
@@ -234,13 +240,26 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
234
240
  right: _propTypes.default.number,
235
241
  top: _propTypes.default.number
236
242
  }),
243
+ /**
244
+ * The function called for onClick events.
245
+ * The second argument contains information about all line/bar elements at the current mouse position.
246
+ * @param {MouseEvent} event The mouse event recorded on the `<svg/>` element.
247
+ * @param {null | AxisData} data The data about the clicked axis and items associated with it.
248
+ */
249
+ onAxisClick: _propTypes.default.func,
250
+ /**
251
+ * Callback fired when a bar item is clicked.
252
+ * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
253
+ * @param {BarItemIdentifier} barItemIdentifier The bar item identifier.
254
+ */
255
+ onItemClick: _propTypes.default.func,
237
256
  /**
238
257
  * Indicate which axis to display the right of the charts.
239
258
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
240
259
  * @default null
241
260
  */
242
261
  rightAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
243
- axisId: _propTypes.default.string,
262
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
244
263
  classes: _propTypes.default.object,
245
264
  disableLine: _propTypes.default.bool,
246
265
  disableTicks: _propTypes.default.bool,
@@ -263,7 +282,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
263
282
  }), _propTypes.default.string]),
264
283
  series: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
265
284
  /**
266
- * If `true`, animations are skiped.
285
+ * If `true`, animations are skipped.
267
286
  * @default false
268
287
  */
269
288
  skipAnimation: _propTypes.default.bool,
@@ -293,7 +312,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
293
312
  * @default null
294
313
  */
295
314
  topAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
296
- axisId: _propTypes.default.string,
315
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
297
316
  classes: _propTypes.default.object,
298
317
  disableLine: _propTypes.default.bool,
299
318
  disableTicks: _propTypes.default.bool,
@@ -330,7 +349,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
330
349
  * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
331
350
  */
332
351
  xAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
333
- axisId: _propTypes.default.string,
352
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
334
353
  classes: _propTypes.default.object,
335
354
  data: _propTypes.default.array,
336
355
  dataKey: _propTypes.default.string,
@@ -338,13 +357,14 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
338
357
  disableTicks: _propTypes.default.bool,
339
358
  fill: _propTypes.default.string,
340
359
  hideTooltip: _propTypes.default.bool,
341
- id: _propTypes.default.string,
360
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
342
361
  label: _propTypes.default.string,
343
362
  labelFontSize: _propTypes.default.number,
344
363
  labelStyle: _propTypes.default.object,
345
364
  max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
346
365
  min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
347
366
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
367
+ reverse: _propTypes.default.bool,
348
368
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
349
369
  slotProps: _propTypes.default.object,
350
370
  slots: _propTypes.default.object,
@@ -364,7 +384,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
364
384
  * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
365
385
  */
366
386
  yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
367
- axisId: _propTypes.default.string,
387
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
368
388
  classes: _propTypes.default.object,
369
389
  data: _propTypes.default.array,
370
390
  dataKey: _propTypes.default.string,
@@ -372,13 +392,14 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
372
392
  disableTicks: _propTypes.default.bool,
373
393
  fill: _propTypes.default.string,
374
394
  hideTooltip: _propTypes.default.bool,
375
- id: _propTypes.default.string,
395
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
376
396
  label: _propTypes.default.string,
377
397
  labelFontSize: _propTypes.default.number,
378
398
  labelStyle: _propTypes.default.object,
379
399
  max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
380
400
  min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
381
401
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
402
+ reverse: _propTypes.default.bool,
382
403
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
383
404
  slotProps: _propTypes.default.object,
384
405
  slots: _propTypes.default.object,
@@ -1,13 +1,13 @@
1
1
  import * as React from 'react';
2
- import { SlotComponentProps } from '@mui/base/utils';
3
2
  import { HighlightScope } from '../context/HighlightProvider';
3
+ import { SeriesId } from '../models/seriesType/common';
4
4
  export interface BarElementClasses {
5
5
  /** Styles applied to the root element. */
6
6
  root: string;
7
7
  }
8
8
  export type BarElementClassKey = keyof BarElementClasses;
9
9
  export interface BarElementOwnerState {
10
- id: string;
10
+ id: SeriesId;
11
11
  dataIndex: number;
12
12
  color: string;
13
13
  isFaded: boolean;
@@ -1351,26 +1351,33 @@ export declare const BarElementPath: import("@emotion/styled").StyledComponent<P
1351
1351
  }, "string" | "end" | "accumulate" | "local" | "color" | "clip" | "style" | "unicode" | "fill" | "stroke" | "x" | "y" | "clipPath" | "cursor" | "direction" | "display" | "filter" | "fontFamily" | "fontSize" | "fontSizeAdjust" | "fontStretch" | "fontStyle" | "fontVariant" | "fontWeight" | "height" | "imageRendering" | "letterSpacing" | "opacity" | "order" | "paintOrder" | "pointerEvents" | "rotate" | "scale" | "textRendering" | "transform" | "unicodeBidi" | "visibility" | "width" | "wordSpacing" | "writingMode" | "alphabetic" | "hanging" | "ideographic" | "mathematical" | "mask" | "offset" | "overflow" | "textDecoration" | "azimuth" | "alignmentBaseline" | "baselineShift" | "clipRule" | "colorInterpolation" | "colorRendering" | "dominantBaseline" | "fillOpacity" | "fillRule" | "floodColor" | "floodOpacity" | "glyphOrientationVertical" | "lightingColor" | "markerEnd" | "markerMid" | "markerStart" | "shapeRendering" | "stopColor" | "stopOpacity" | "strokeDasharray" | "strokeDashoffset" | "strokeLinecap" | "strokeLinejoin" | "strokeMiterlimit" | "strokeOpacity" | "strokeWidth" | "textAnchor" | "vectorEffect" | "additive" | "path" | "ref" | "key" | "crossOrigin" | "href" | "max" | "media" | "method" | "min" | "name" | "target" | "type" | "suppressHydrationWarning" | "className" | "id" | "lang" | "tabIndex" | "role" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "accentHeight" | "allowReorder" | "amplitude" | "arabicForm" | "ascent" | "attributeName" | "attributeType" | "autoReverse" | "baseFrequency" | "baseProfile" | "bbox" | "begin" | "bias" | "by" | "calcMode" | "capHeight" | "clipPathUnits" | "colorInterpolationFilters" | "colorProfile" | "contentScriptType" | "contentStyleType" | "cx" | "cy" | "d" | "decelerate" | "descent" | "diffuseConstant" | "divisor" | "dur" | "dx" | "dy" | "edgeMode" | "elevation" | "enableBackground" | "exponent" | "externalResourcesRequired" | "filterRes" | "filterUnits" | "focusable" | "format" | "fr" | "from" | "fx" | "fy" | "g1" | "g2" | "glyphName" | "glyphOrientationHorizontal" | "glyphRef" | "gradientTransform" | "gradientUnits" | "horizAdvX" | "horizOriginX" | "in2" | "in" | "intercept" | "k1" | "k2" | "k3" | "k4" | "k" | "kernelMatrix" | "kernelUnitLength" | "kerning" | "keyPoints" | "keySplines" | "keyTimes" | "lengthAdjust" | "limitingConeAngle" | "markerHeight" | "markerUnits" | "markerWidth" | "maskContentUnits" | "maskUnits" | "mode" | "numOctaves" | "operator" | "orient" | "orientation" | "origin" | "overlinePosition" | "overlineThickness" | "panose1" | "pathLength" | "patternContentUnits" | "patternTransform" | "patternUnits" | "points" | "pointsAtX" | "pointsAtY" | "pointsAtZ" | "preserveAlpha" | "preserveAspectRatio" | "primitiveUnits" | "r" | "radius" | "refX" | "refY" | "renderingIntent" | "repeatCount" | "repeatDur" | "requiredExtensions" | "requiredFeatures" | "restart" | "result" | "rx" | "ry" | "seed" | "slope" | "spacing" | "specularConstant" | "specularExponent" | "speed" | "spreadMethod" | "startOffset" | "stdDeviation" | "stemh" | "stemv" | "stitchTiles" | "strikethroughPosition" | "strikethroughThickness" | "surfaceScale" | "systemLanguage" | "tableValues" | "targetX" | "targetY" | "textLength" | "to" | "u1" | "u2" | "underlinePosition" | "underlineThickness" | "unicodeRange" | "unitsPerEm" | "vAlphabetic" | "values" | "version" | "vertAdvY" | "vertOriginX" | "vertOriginY" | "vHanging" | "vIdeographic" | "viewBox" | "viewTarget" | "vMathematical" | "widths" | "x1" | "x2" | "xChannelSelector" | "xHeight" | "xlinkActuate" | "xlinkArcrole" | "xlinkHref" | "xlinkRole" | "xlinkShow" | "xlinkTitle" | "xlinkType" | "xmlBase" | "xmlLang" | "xmlns" | "xmlnsXlink" | "xmlSpace" | "y1" | "y2" | "yChannelSelector" | "z" | "zoomAndPan" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "scrollTop" | "scrollLeft"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
1352
1352
  ownerState: BarElementOwnerState;
1353
1353
  }, {}, {}>;
1354
- export type BarElementProps = Omit<BarElementOwnerState, 'isFaded' | 'isHighlighted'> & React.ComponentPropsWithoutRef<'path'> & {
1354
+ interface BarProps extends Omit<React.ComponentPropsWithoutRef<'path'>, 'id' | 'color'> {
1355
+ highlightScope?: Partial<HighlightScope>;
1356
+ onClick?: (event: React.MouseEvent<SVGPathElement, MouseEvent>) => void;
1357
+ ownerState: BarElementOwnerState;
1358
+ }
1359
+ export interface BarElementSlots {
1360
+ /**
1361
+ * The component that renders the bar.
1362
+ * @default BarElementPath
1363
+ */
1364
+ bar?: React.JSXElementConstructor<BarProps>;
1365
+ }
1366
+ export interface BarElementSlotProps {
1367
+ bar?: Partial<BarProps>;
1368
+ }
1369
+ export type BarElementProps = Omit<BarElementOwnerState, 'isFaded' | 'isHighlighted'> & Omit<React.ComponentPropsWithoutRef<'path'>, 'id'> & {
1355
1370
  highlightScope?: Partial<HighlightScope>;
1356
1371
  /**
1357
1372
  * The props used for each component slot.
1358
1373
  * @default {}
1359
1374
  */
1360
- slotProps?: {
1361
- bar?: SlotComponentProps<'path', {}, BarElementOwnerState>;
1362
- };
1375
+ slotProps?: BarElementSlotProps;
1363
1376
  /**
1364
1377
  * Overridable component slots.
1365
1378
  * @default {}
1366
1379
  */
1367
- slots?: {
1368
- /**
1369
- * The component that renders the root.
1370
- * @default BarElementPath
1371
- */
1372
- bar?: React.ElementType;
1373
- };
1380
+ slots?: BarElementSlots;
1374
1381
  };
1375
1382
  declare function BarElement(props: BarElementProps): React.JSX.Element;
1376
1383
  declare namespace BarElement {
@@ -21,7 +21,7 @@ var _web = require("@react-spring/web");
21
21
  var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
22
22
  var _InteractionProvider = require("../context/InteractionProvider");
23
23
  var _jsxRuntime = require("react/jsx-runtime");
24
- const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps", "style"];
24
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps", "style", "onClick"];
25
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
26
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
27
  function getBarElementUtilityClass(slot) {
@@ -60,7 +60,8 @@ function BarElement(props) {
60
60
  highlightScope,
61
61
  slots,
62
62
  slotProps,
63
- style
63
+ style,
64
+ onClick
64
65
  } = props,
65
66
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
66
67
  const getInteractionItemProps = (0, _useInteractionItemProps.useInteractionItemProps)(highlightScope);
@@ -96,7 +97,9 @@ function BarElement(props) {
96
97
  dataIndex
97
98
  }), {
98
99
  style,
99
- className: classes.root
100
+ className: classes.root,
101
+ onClick,
102
+ cursor: onClick ? 'pointer' : 'unset'
100
103
  }),
101
104
  ownerState
102
105
  });
@@ -113,6 +116,7 @@ process.env.NODE_ENV !== "production" ? BarElement.propTypes = {
113
116
  faded: _propTypes.default.oneOf(['global', 'none', 'series']),
114
117
  highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
115
118
  }),
119
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
116
120
  /**
117
121
  * The props used for each component slot.
118
122
  * @default {}
@@ -1,17 +1,22 @@
1
1
  import * as React from 'react';
2
- import { BarElementProps } from './BarElement';
3
- export interface BarPlotSlots {
4
- bar?: React.JSXElementConstructor<BarElementProps>;
2
+ import { BarElementProps, BarElementSlotProps, BarElementSlots } from './BarElement';
3
+ import { BarItemIdentifier } from '../models';
4
+ export interface BarPlotSlots extends BarElementSlots {
5
5
  }
6
- export interface BarPlotSlotProps {
7
- bar?: Partial<BarElementProps>;
6
+ export interface BarPlotSlotProps extends BarElementSlotProps {
8
7
  }
9
8
  export interface BarPlotProps extends Pick<BarElementProps, 'slots' | 'slotProps'> {
10
9
  /**
11
- * If `true`, animations are skiped.
10
+ * If `true`, animations are skipped.
12
11
  * @default false
13
12
  */
14
13
  skipAnimation?: boolean;
14
+ /**
15
+ * Callback fired when a bar item is clicked.
16
+ * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
17
+ * @param {BarItemIdentifier} barItemIdentifier The bar item identifier.
18
+ */
19
+ onItemClick?: (event: React.MouseEvent<SVGElement, MouseEvent>, barItemIdentifier: BarItemIdentifier) => void;
15
20
  }
16
21
  /**
17
22
  * Demos:
@@ -16,7 +16,9 @@ var _BarElement = require("./BarElement");
16
16
  var _axis = require("../models/axis");
17
17
  var _constants = require("../constants");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
- const _excluded = ["skipAnimation"];
19
+ const _excluded = ["skipAnimation", "onItemClick"];
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
22
  /**
21
23
  * Solution of the equations
22
24
  * W = barWidth * N + offset * (N-1)
@@ -26,8 +28,6 @@ const _excluded = ["skipAnimation"];
26
28
  * @param gapRatio The ratio of the gap between bars over the bar width.
27
29
  * @returns The bar width and the offset between bars.
28
30
  */
29
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
30
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
31
31
  function getBandSize({
32
32
  bandWidth: W,
33
33
  numberOfGroups: N,
@@ -46,7 +46,7 @@ function getBandSize({
46
46
  offset
47
47
  };
48
48
  }
49
- const useCompletedData = () => {
49
+ const useAggregatedData = () => {
50
50
  const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).bar ?? {
51
51
  series: {},
52
52
  stackingGroups: [],
@@ -109,20 +109,19 @@ const useCompletedData = () => {
109
109
  color
110
110
  } = series[seriesId];
111
111
  return stackedData.map((values, dataIndex) => {
112
- const bottom = Math.min(...values);
113
- const top = Math.max(...values);
112
+ const valueCoordinates = values.map(v => verticalLayout ? yScale(v) : xScale(v));
113
+ const minValueCoord = Math.min(...valueCoordinates);
114
+ const maxValueCoord = Math.max(...valueCoordinates);
114
115
  return {
115
- bottom,
116
- top,
117
116
  seriesId,
118
117
  dataIndex,
119
118
  layout: series[seriesId].layout,
120
- x: verticalLayout ? xScale(xAxis[xAxisKey].data?.[dataIndex]) + barOffset : xScale(bottom),
121
- y: verticalLayout ? yScale(top) : yScale(yAxis[yAxisKey].data?.[dataIndex]) + barOffset,
119
+ x: verticalLayout ? xScale(xAxis[xAxisKey].data?.[dataIndex]) + barOffset : minValueCoord,
120
+ y: verticalLayout ? minValueCoord : yScale(yAxis[yAxisKey].data?.[dataIndex]) + barOffset,
122
121
  xOrigin: xScale(0),
123
122
  yOrigin: yScale(0),
124
- height: verticalLayout ? Math.abs(yScale(bottom) - yScale(top)) : barWidth,
125
- width: verticalLayout ? barWidth : Math.abs(xScale(bottom) - xScale(top)),
123
+ height: verticalLayout ? maxValueCoord - minValueCoord : barWidth,
124
+ width: verticalLayout ? barWidth : maxValueCoord - minValueCoord,
126
125
  color,
127
126
  highlightScope: series[seriesId].highlightScope
128
127
  };
@@ -174,9 +173,10 @@ const getInStyle = ({
174
173
  * - [BarPlot API](https://mui.com/x/api/charts/bar-plot/)
175
174
  */
176
175
  function BarPlot(props) {
177
- const completedData = useCompletedData();
176
+ const completedData = useAggregatedData();
178
177
  const {
179
- skipAnimation
178
+ skipAnimation,
179
+ onItemClick
180
180
  } = props,
181
181
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
182
182
  const transition = (0, _web.useTransition)(completedData, {
@@ -199,6 +199,13 @@ function BarPlot(props) {
199
199
  highlightScope: highlightScope,
200
200
  color: color
201
201
  }, other, {
202
+ onClick: onItemClick && (event => {
203
+ onItemClick(event, {
204
+ type: 'bar',
205
+ seriesId,
206
+ dataIndex
207
+ });
208
+ }),
202
209
  style: style
203
210
  })))
204
211
  });
@@ -209,7 +216,13 @@ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
209
216
  // | To update them edit the TypeScript types and run "yarn proptypes" |
210
217
  // ----------------------------------------------------------------------
211
218
  /**
212
- * If `true`, animations are skiped.
219
+ * Callback fired when a bar item is clicked.
220
+ * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
221
+ * @param {BarItemIdentifier} barItemIdentifier The bar item identifier.
222
+ */
223
+ onItemClick: _propTypes.default.func,
224
+ /**
225
+ * If `true`, animations are skipped.
213
226
  * @default false
214
227
  */
215
228
  skipAnimation: _propTypes.default.bool,
@@ -72,7 +72,7 @@ const formatter = (params, dataset) => {
72
72
  return {
73
73
  seriesOrder,
74
74
  stackingGroups,
75
- series: (0, _defaultizeValueFormatter.default)(completedSeries, v => v === null ? '' : v.toLocaleString())
75
+ series: (0, _defaultizeValueFormatter.default)(completedSeries, v => v == null ? '' : v.toLocaleString())
76
76
  };
77
77
  };
78
78
  var _default = exports.default = formatter;