@mui/x-charts 7.0.0-alpha.9 → 7.0.0-beta.1

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 (214) hide show
  1. package/BarChart/BarChart.d.ts +2 -1
  2. package/BarChart/BarChart.js +24 -23
  3. package/BarChart/BarElement.d.ts +1 -1
  4. package/BarChart/BarElement.js +6 -3
  5. package/BarChart/BarPlot.d.ts +8 -1
  6. package/BarChart/BarPlot.js +19 -5
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +386 -38
  9. package/ChartContainer/ChartContainer.d.ts +12 -0
  10. package/ChartContainer/ChartContainer.js +197 -0
  11. package/ChartContainer/index.d.ts +1 -11
  12. package/ChartContainer/index.js +9 -63
  13. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +20 -0
  14. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +83 -0
  15. package/ChartsOnAxisClickHandler/index.d.ts +1 -0
  16. package/ChartsOnAxisClickHandler/index.js +16 -0
  17. package/ChartsOnAxisClickHandler/package.json +6 -0
  18. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  19. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  20. package/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
  21. package/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  22. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -58
  23. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  24. package/ChartsTooltip/utils.d.ts +3 -1
  25. package/ChartsTooltip/utils.js +8 -0
  26. package/ChartsVoronoiHandler/ChartsVoronoiHandler.d.ts +7 -0
  27. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  28. package/LineChart/AnimatedArea.d.ts +1361 -0
  29. package/LineChart/AnimatedArea.js +111 -0
  30. package/LineChart/AnimatedLine.d.ts +1361 -0
  31. package/LineChart/AnimatedLine.js +113 -0
  32. package/LineChart/AreaElement.d.ts +17 -17
  33. package/LineChart/AreaElement.js +17 -34
  34. package/LineChart/AreaPlot.d.ts +12 -7
  35. package/LineChart/AreaPlot.js +91 -58
  36. package/LineChart/LineChart.d.ts +13 -4
  37. package/LineChart/LineChart.js +36 -29
  38. package/LineChart/LineElement.d.ts +17 -17
  39. package/LineChart/LineElement.js +16 -36
  40. package/LineChart/LineHighlightElement.js +3 -2
  41. package/LineChart/LinePlot.d.ts +12 -7
  42. package/LineChart/LinePlot.js +89 -56
  43. package/LineChart/MarkElement.d.ts +5 -2
  44. package/LineChart/MarkElement.js +26 -13
  45. package/LineChart/MarkPlot.d.ts +8 -1
  46. package/LineChart/MarkPlot.js +80 -51
  47. package/LineChart/formatter.js +1 -1
  48. package/LineChart/index.d.ts +2 -0
  49. package/LineChart/index.js +22 -0
  50. package/PieChart/PieArcLabelPlot.d.ts +1 -1
  51. package/PieChart/PieArcLabelPlot.js +1 -1
  52. package/PieChart/PieArcPlot.d.ts +2 -2
  53. package/PieChart/PieArcPlot.js +6 -6
  54. package/PieChart/PieChart.d.ts +1 -1
  55. package/PieChart/PieChart.js +5 -50
  56. package/PieChart/PiePlot.d.ts +1 -1
  57. package/PieChart/PiePlot.js +4 -4
  58. package/README.md +2 -2
  59. package/ResponsiveChartContainer/ResponsiveChartContainer.d.ts +16 -0
  60. package/ResponsiveChartContainer/ResponsiveChartContainer.js +250 -0
  61. package/ResponsiveChartContainer/index.d.ts +1 -15
  62. package/ResponsiveChartContainer/index.js +8 -113
  63. package/ScatterChart/Scatter.d.ts +7 -1
  64. package/ScatterChart/Scatter.js +18 -23
  65. package/ScatterChart/ScatterChart.d.ts +8 -2
  66. package/ScatterChart/ScatterChart.js +12 -22
  67. package/ScatterChart/ScatterPlot.d.ts +1 -1
  68. package/ScatterChart/ScatterPlot.js +10 -2
  69. package/SparkLineChart/SparkLineChart.js +2 -0
  70. package/context/DrawingProvider.d.ts +6 -1
  71. package/context/DrawingProvider.js +9 -2
  72. package/context/InteractionProvider.d.ts +3 -3
  73. package/esm/BarChart/BarChart.js +24 -23
  74. package/esm/BarChart/BarElement.js +6 -3
  75. package/esm/BarChart/BarPlot.js +19 -5
  76. package/esm/BarChart/formatter.js +1 -1
  77. package/esm/ChartContainer/ChartContainer.js +189 -0
  78. package/esm/ChartContainer/index.js +1 -61
  79. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +77 -0
  80. package/esm/ChartsOnAxisClickHandler/index.js +1 -0
  81. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  82. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  83. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
  84. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  85. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +9 -58
  86. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  87. package/esm/ChartsTooltip/utils.js +6 -0
  88. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  89. package/esm/LineChart/AnimatedArea.js +103 -0
  90. package/esm/LineChart/AnimatedLine.js +105 -0
  91. package/esm/LineChart/AreaElement.js +16 -33
  92. package/esm/LineChart/AreaPlot.js +92 -59
  93. package/esm/LineChart/LineChart.js +36 -29
  94. package/esm/LineChart/LineElement.js +16 -35
  95. package/esm/LineChart/LineHighlightElement.js +3 -2
  96. package/esm/LineChart/LinePlot.js +90 -57
  97. package/esm/LineChart/MarkElement.js +26 -13
  98. package/esm/LineChart/MarkPlot.js +80 -51
  99. package/esm/LineChart/formatter.js +1 -1
  100. package/esm/LineChart/index.js +2 -0
  101. package/esm/PieChart/PieArcLabelPlot.js +1 -1
  102. package/esm/PieChart/PieArcPlot.js +6 -6
  103. package/esm/PieChart/PieChart.js +5 -50
  104. package/esm/PieChart/PiePlot.js +4 -4
  105. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +245 -0
  106. package/esm/ResponsiveChartContainer/index.js +1 -115
  107. package/esm/ScatterChart/Scatter.js +18 -23
  108. package/esm/ScatterChart/ScatterChart.js +12 -22
  109. package/esm/ScatterChart/ScatterPlot.js +10 -2
  110. package/esm/SparkLineChart/SparkLineChart.js +2 -0
  111. package/esm/context/DrawingProvider.js +9 -2
  112. package/esm/hooks/useDrawingArea.js +7 -3
  113. package/esm/index.js +1 -0
  114. package/esm/internals/geometry.js +1 -1
  115. package/esm/internals/useAnimatedPath.js +29 -0
  116. package/esm/internals/utils.js +7 -0
  117. package/hooks/useDrawingArea.d.ts +2 -0
  118. package/hooks/useDrawingArea.js +7 -3
  119. package/index.d.ts +1 -0
  120. package/index.js +12 -1
  121. package/internals/geometry.js +1 -1
  122. package/internals/useAnimatedPath.d.ts +1 -0
  123. package/internals/useAnimatedPath.js +38 -0
  124. package/internals/utils.d.ts +4 -0
  125. package/internals/utils.js +8 -0
  126. package/legacy/BarChart/BarChart.js +24 -23
  127. package/legacy/BarChart/BarElement.js +5 -2
  128. package/legacy/BarChart/BarPlot.js +18 -4
  129. package/legacy/BarChart/formatter.js +1 -1
  130. package/legacy/ChartContainer/ChartContainer.js +187 -0
  131. package/legacy/ChartContainer/index.js +1 -59
  132. package/legacy/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  133. package/legacy/ChartsOnAxisClickHandler/index.js +1 -0
  134. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  135. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  136. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +8 -61
  137. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  138. package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +9 -58
  139. package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  140. package/legacy/ChartsTooltip/utils.js +6 -0
  141. package/legacy/ChartsVoronoiHandler/ChartsVoronoiHandler.js +88 -44
  142. package/legacy/LineChart/AnimatedArea.js +102 -0
  143. package/legacy/LineChart/AnimatedLine.js +104 -0
  144. package/legacy/LineChart/AreaElement.js +15 -35
  145. package/legacy/LineChart/AreaPlot.js +102 -66
  146. package/legacy/LineChart/LineChart.js +36 -29
  147. package/legacy/LineChart/LineElement.js +15 -37
  148. package/legacy/LineChart/LineHighlightElement.js +3 -2
  149. package/legacy/LineChart/LinePlot.js +97 -63
  150. package/legacy/LineChart/MarkElement.js +29 -12
  151. package/legacy/LineChart/MarkPlot.js +83 -53
  152. package/legacy/LineChart/formatter.js +1 -1
  153. package/legacy/LineChart/index.js +2 -0
  154. package/legacy/PieChart/PieArcLabelPlot.js +1 -1
  155. package/legacy/PieChart/PieArcPlot.js +6 -6
  156. package/legacy/PieChart/PieChart.js +5 -50
  157. package/legacy/PieChart/PiePlot.js +4 -4
  158. package/legacy/ResponsiveChartContainer/ResponsiveChartContainer.js +253 -0
  159. package/legacy/ResponsiveChartContainer/index.js +1 -123
  160. package/legacy/ScatterChart/Scatter.js +20 -23
  161. package/legacy/ScatterChart/ScatterChart.js +12 -22
  162. package/legacy/ScatterChart/ScatterPlot.js +10 -2
  163. package/legacy/SparkLineChart/SparkLineChart.js +2 -0
  164. package/legacy/context/DrawingProvider.js +11 -2
  165. package/legacy/hooks/useDrawingArea.js +7 -3
  166. package/legacy/index.js +2 -1
  167. package/legacy/internals/geometry.js +1 -1
  168. package/legacy/internals/useAnimatedPath.js +32 -0
  169. package/legacy/internals/utils.js +7 -0
  170. package/modern/BarChart/BarChart.js +24 -23
  171. package/modern/BarChart/BarElement.js +6 -3
  172. package/modern/BarChart/BarPlot.js +19 -5
  173. package/modern/BarChart/formatter.js +1 -1
  174. package/modern/ChartContainer/ChartContainer.js +189 -0
  175. package/modern/ChartContainer/index.js +1 -61
  176. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  177. package/modern/ChartsOnAxisClickHandler/index.js +1 -0
  178. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  179. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  180. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
  181. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  182. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -58
  183. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  184. package/modern/ChartsTooltip/utils.js +6 -0
  185. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  186. package/modern/LineChart/AnimatedArea.js +103 -0
  187. package/modern/LineChart/AnimatedLine.js +105 -0
  188. package/modern/LineChart/AreaElement.js +16 -33
  189. package/modern/LineChart/AreaPlot.js +91 -58
  190. package/modern/LineChart/LineChart.js +36 -29
  191. package/modern/LineChart/LineElement.js +16 -35
  192. package/modern/LineChart/LineHighlightElement.js +3 -2
  193. package/modern/LineChart/LinePlot.js +89 -56
  194. package/modern/LineChart/MarkElement.js +26 -13
  195. package/modern/LineChart/MarkPlot.js +80 -51
  196. package/modern/LineChart/formatter.js +1 -1
  197. package/modern/LineChart/index.js +2 -0
  198. package/modern/PieChart/PieArcLabelPlot.js +1 -1
  199. package/modern/PieChart/PieArcPlot.js +6 -6
  200. package/modern/PieChart/PieChart.js +5 -50
  201. package/modern/PieChart/PiePlot.js +4 -4
  202. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +242 -0
  203. package/modern/ResponsiveChartContainer/index.js +1 -112
  204. package/modern/ScatterChart/Scatter.js +18 -23
  205. package/modern/ScatterChart/ScatterChart.js +12 -22
  206. package/modern/ScatterChart/ScatterPlot.js +10 -2
  207. package/modern/SparkLineChart/SparkLineChart.js +2 -0
  208. package/modern/context/DrawingProvider.js +9 -2
  209. package/modern/hooks/useDrawingArea.js +7 -3
  210. package/modern/index.js +2 -1
  211. package/modern/internals/geometry.js +1 -1
  212. package/modern/internals/useAnimatedPath.js +29 -0
  213. package/modern/internals/utils.js +7 -0
  214. 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,
@@ -234,6 +240,19 @@ 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`.
@@ -261,27 +280,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
261
280
  tickNumber: _propTypes.default.number,
262
281
  tickSize: _propTypes.default.number
263
282
  }), _propTypes.default.string]),
264
- series: _propTypes.default.arrayOf(_propTypes.default.shape({
265
- color: _propTypes.default.string,
266
- data: _propTypes.default.arrayOf(_propTypes.default.number),
267
- dataKey: _propTypes.default.string,
268
- highlightScope: _propTypes.default.shape({
269
- faded: _propTypes.default.oneOf(['global', 'none', 'series']),
270
- highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
271
- }),
272
- id: _propTypes.default.string,
273
- label: _propTypes.default.string,
274
- layout: _propTypes.default.oneOf(['horizontal', 'vertical']),
275
- stack: _propTypes.default.string,
276
- stackOffset: _propTypes.default.oneOf(['diverging', 'expand', 'none', 'silhouette', 'wiggle']),
277
- stackOrder: _propTypes.default.oneOf(['appearance', 'ascending', 'descending', 'insideOut', 'none', 'reverse']),
278
- type: _propTypes.default.oneOf(['bar']),
279
- valueFormatter: _propTypes.default.func,
280
- xAxisKey: _propTypes.default.string,
281
- yAxisKey: _propTypes.default.string
282
- })).isRequired,
283
+ series: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
283
284
  /**
284
- * If `true`, animations are skiped.
285
+ * If `true`, animations are skipped.
285
286
  * @default false
286
287
  */
287
288
  skipAnimation: _propTypes.default.bool,
@@ -1366,7 +1366,7 @@ export type BarElementProps = Omit<BarElementOwnerState, 'isFaded' | 'isHighligh
1366
1366
  */
1367
1367
  slots?: {
1368
1368
  /**
1369
- * The component that renders the root.
1369
+ * The component that renders the bar.
1370
1370
  * @default BarElementPath
1371
1371
  */
1372
1372
  bar?: React.ElementType;
@@ -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
  });
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { BarElementProps } from './BarElement';
3
+ import { BarItemIdentifier } from '../models';
3
4
  export interface BarPlotSlots {
4
5
  bar?: React.JSXElementConstructor<BarElementProps>;
5
6
  }
@@ -8,10 +9,16 @@ export interface BarPlotSlotProps {
8
9
  }
9
10
  export interface BarPlotProps extends Pick<BarElementProps, 'slots' | 'slotProps'> {
10
11
  /**
11
- * If `true`, animations are skiped.
12
+ * If `true`, animations are skipped.
12
13
  * @default false
13
14
  */
14
15
  skipAnimation?: boolean;
16
+ /**
17
+ * Callback fired when a bar item is clicked.
18
+ * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
19
+ * @param {BarItemIdentifier} barItemIdentifier The bar item identifier.
20
+ */
21
+ onItemClick?: (event: React.MouseEvent<SVGElement, MouseEvent>, barItemIdentifier: BarItemIdentifier) => void;
15
22
  }
16
23
  /**
17
24
  * Demos:
@@ -16,7 +16,7 @@ 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
20
  /**
21
21
  * Solution of the equations
22
22
  * W = barWidth * N + offset * (N-1)
@@ -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: [],
@@ -174,9 +174,10 @@ const getInStyle = ({
174
174
  * - [BarPlot API](https://mui.com/x/api/charts/bar-plot/)
175
175
  */
176
176
  function BarPlot(props) {
177
- const completedData = useCompletedData();
177
+ const completedData = useAggregatedData();
178
178
  const {
179
- skipAnimation
179
+ skipAnimation,
180
+ onItemClick
180
181
  } = props,
181
182
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
182
183
  const transition = (0, _web.useTransition)(completedData, {
@@ -199,6 +200,13 @@ function BarPlot(props) {
199
200
  highlightScope: highlightScope,
200
201
  color: color
201
202
  }, other, {
203
+ onClick: onItemClick && (event => {
204
+ onItemClick(event, {
205
+ type: 'bar',
206
+ seriesId,
207
+ dataIndex
208
+ });
209
+ }),
202
210
  style: style
203
211
  })))
204
212
  });
@@ -209,7 +217,13 @@ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
209
217
  // | To update them edit the TypeScript types and run "yarn proptypes" |
210
218
  // ----------------------------------------------------------------------
211
219
  /**
212
- * If `true`, animations are skiped.
220
+ * Callback fired when a bar item is clicked.
221
+ * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
222
+ * @param {BarItemIdentifier} barItemIdentifier The bar item identifier.
223
+ */
224
+ onItemClick: _propTypes.default.func,
225
+ /**
226
+ * If `true`, animations are skipped.
213
227
  * @default false
214
228
  */
215
229
  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;