@mui/x-charts 7.16.0 → 7.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/BarChart/BarChart.js +3 -0
  2. package/BarChart/BarElement.js +2 -0
  3. package/BarChart/BarLabel/BarLabel.js +2 -0
  4. package/BarChart/BarPlot.js +2 -0
  5. package/BarChart/legend.js +3 -2
  6. package/BarChart/useBarChartProps.js +2 -0
  7. package/CHANGELOG.md +87 -0
  8. package/ChartContainer/ChartContainer.js +2 -0
  9. package/ChartContainer/useChartContainerProps.js +2 -0
  10. package/ChartContainer/useDefaultizeAxis.js +2 -0
  11. package/ChartsAxis/ChartsAxis.js +2 -0
  12. package/ChartsAxisHighlight/ChartsAxisHighlight.js +2 -0
  13. package/ChartsClipPath/ChartsClipPath.js +2 -0
  14. package/ChartsGrid/ChartsGrid.js +2 -0
  15. package/ChartsLegend/ChartsLegend.js +11 -1
  16. package/ChartsLegend/ChartsLegendItem.d.ts +26 -0
  17. package/ChartsLegend/ChartsLegendItem.js +65 -0
  18. package/ChartsLegend/ContinuousColorLegend.js +2 -0
  19. package/ChartsLegend/DefaultChartsLegend.d.ts +9 -1
  20. package/ChartsLegend/DefaultChartsLegend.js +26 -4
  21. package/ChartsLegend/LegendPerItem.d.ts +1 -0
  22. package/ChartsLegend/LegendPerItem.js +19 -28
  23. package/ChartsLegend/PiecewiseColorLegend.d.ts +9 -1
  24. package/ChartsLegend/PiecewiseColorLegend.js +28 -7
  25. package/ChartsLegend/chartsLegend.types.d.ts +39 -1
  26. package/ChartsLegend/chartsLegendClasses.d.ts +2 -0
  27. package/ChartsLegend/chartsLegendClasses.js +1 -1
  28. package/ChartsLegend/useAxis.js +2 -0
  29. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +3 -1
  30. package/ChartsOverlay/ChartsLoadingOverlay.js +2 -0
  31. package/ChartsOverlay/ChartsNoDataOverlay.js +2 -0
  32. package/ChartsOverlay/ChartsOverlay.js +2 -0
  33. package/ChartsReferenceLine/ChartsReferenceLine.js +2 -0
  34. package/ChartsReferenceLine/ChartsXReferenceLine.js +3 -1
  35. package/ChartsReferenceLine/ChartsYReferenceLine.js +3 -1
  36. package/ChartsSurface/ChartsSurface.js +2 -0
  37. package/ChartsText/ChartsText.js +2 -0
  38. package/ChartsTooltip/ChartsTooltip.js +2 -0
  39. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +2 -0
  40. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +2 -0
  41. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -0
  42. package/ChartsXAxis/ChartsXAxis.js +2 -0
  43. package/ChartsYAxis/ChartsYAxis.js +2 -0
  44. package/Gauge/Gauge.js +2 -0
  45. package/Gauge/GaugeContainer.js +2 -0
  46. package/Gauge/GaugeReferenceArc.js +2 -0
  47. package/Gauge/GaugeValueArc.js +2 -0
  48. package/Gauge/GaugeValueText.js +2 -0
  49. package/LineChart/AnimatedArea.js +2 -0
  50. package/LineChart/AnimatedLine.js +2 -0
  51. package/LineChart/AreaElement.js +2 -0
  52. package/LineChart/AreaPlot.js +2 -0
  53. package/LineChart/CircleMarkElement.d.ts +34 -0
  54. package/LineChart/CircleMarkElement.js +107 -0
  55. package/LineChart/LineChart.d.ts +4 -0
  56. package/LineChart/LineChart.js +7 -0
  57. package/LineChart/LineElement.js +2 -0
  58. package/LineChart/LineHighlightElement.js +2 -0
  59. package/LineChart/LineHighlightPlot.js +2 -0
  60. package/LineChart/LinePlot.js +2 -0
  61. package/LineChart/MarkElement.d.ts +1 -19
  62. package/LineChart/MarkElement.js +3 -19
  63. package/LineChart/MarkPlot.d.ts +6 -0
  64. package/LineChart/MarkPlot.js +13 -3
  65. package/LineChart/index.d.ts +2 -0
  66. package/LineChart/index.js +2 -1
  67. package/LineChart/legend.js +3 -2
  68. package/LineChart/markElementClasses.d.ts +20 -0
  69. package/LineChart/markElementClasses.js +19 -0
  70. package/LineChart/useLineChartProps.js +7 -3
  71. package/PieChart/PieArc.js +2 -0
  72. package/PieChart/PieArcLabel.js +2 -0
  73. package/PieChart/PieArcLabelPlot.js +2 -0
  74. package/PieChart/PieArcPlot.js +2 -0
  75. package/PieChart/PieChart.js +3 -0
  76. package/PieChart/PiePlot.js +2 -0
  77. package/PieChart/dataTransform/useTransformData.js +2 -0
  78. package/PieChart/legend.js +3 -1
  79. package/ResponsiveChartContainer/ResponsiveChartContainer.js +2 -0
  80. package/ResponsiveChartContainer/useChartContainerDimensions.js +3 -1
  81. package/ResponsiveChartContainer/useResponsiveChartContainerProps.js +2 -0
  82. package/ScatterChart/Scatter.js +2 -0
  83. package/ScatterChart/ScatterChart.js +3 -0
  84. package/ScatterChart/ScatterPlot.js +2 -0
  85. package/ScatterChart/legend.js +3 -2
  86. package/ScatterChart/useScatterChartProps.js +2 -0
  87. package/SparkLineChart/SparkLineChart.js +2 -0
  88. package/context/CartesianProvider/CartesianProvider.js +2 -0
  89. package/context/CartesianProvider/useCartesianContext.js +2 -0
  90. package/context/DrawingProvider.js +2 -0
  91. package/context/HighlightedProvider/HighlightedProvider.js +2 -0
  92. package/context/HighlightedProvider/useHighlighted.js +2 -0
  93. package/context/HighlightedProvider/useItemHighlighted.js +2 -0
  94. package/context/InteractionProvider.js +2 -0
  95. package/context/PluginProvider/PluginProvider.js +2 -0
  96. package/context/PluginProvider/useColorProcessor.js +2 -0
  97. package/context/PluginProvider/useSeriesFormatter.js +2 -0
  98. package/context/SeriesProvider/SeriesProvider.js +2 -0
  99. package/context/ZAxisContextProvider.js +2 -0
  100. package/hooks/useAxis.js +2 -0
  101. package/hooks/useAxisEvents.js +2 -0
  102. package/hooks/useChartDimensions.js +2 -0
  103. package/hooks/useChartId.js +2 -0
  104. package/hooks/useColorScale.js +2 -0
  105. package/hooks/useDrawingArea.js +2 -0
  106. package/hooks/useInteractionItemProps.js +2 -0
  107. package/hooks/useMounted.js +2 -0
  108. package/hooks/useReducedMotion.js +2 -0
  109. package/hooks/useScale.js +2 -0
  110. package/hooks/useSeries.js +2 -0
  111. package/hooks/useSvgRef.js +2 -0
  112. package/hooks/useTicks.js +2 -0
  113. package/index.js +1 -1
  114. package/modern/BarChart/BarChart.js +3 -0
  115. package/modern/BarChart/BarElement.js +2 -0
  116. package/modern/BarChart/BarLabel/BarLabel.js +2 -0
  117. package/modern/BarChart/BarPlot.js +2 -0
  118. package/modern/BarChart/legend.js +3 -2
  119. package/modern/BarChart/useBarChartProps.js +2 -0
  120. package/modern/ChartContainer/ChartContainer.js +2 -0
  121. package/modern/ChartContainer/useChartContainerProps.js +2 -0
  122. package/modern/ChartContainer/useDefaultizeAxis.js +2 -0
  123. package/modern/ChartsAxis/ChartsAxis.js +2 -0
  124. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +2 -0
  125. package/modern/ChartsClipPath/ChartsClipPath.js +2 -0
  126. package/modern/ChartsGrid/ChartsGrid.js +2 -0
  127. package/modern/ChartsLegend/ChartsLegend.js +11 -1
  128. package/modern/ChartsLegend/ChartsLegendItem.js +65 -0
  129. package/modern/ChartsLegend/ContinuousColorLegend.js +2 -0
  130. package/modern/ChartsLegend/DefaultChartsLegend.js +26 -4
  131. package/modern/ChartsLegend/LegendPerItem.js +19 -28
  132. package/modern/ChartsLegend/PiecewiseColorLegend.js +28 -7
  133. package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
  134. package/modern/ChartsLegend/useAxis.js +2 -0
  135. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +3 -1
  136. package/modern/ChartsOverlay/ChartsLoadingOverlay.js +2 -0
  137. package/modern/ChartsOverlay/ChartsNoDataOverlay.js +2 -0
  138. package/modern/ChartsOverlay/ChartsOverlay.js +2 -0
  139. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +2 -0
  140. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +3 -1
  141. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +3 -1
  142. package/modern/ChartsSurface/ChartsSurface.js +2 -0
  143. package/modern/ChartsText/ChartsText.js +2 -0
  144. package/modern/ChartsTooltip/ChartsTooltip.js +2 -0
  145. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +2 -0
  146. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +2 -0
  147. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -0
  148. package/modern/ChartsXAxis/ChartsXAxis.js +2 -0
  149. package/modern/ChartsYAxis/ChartsYAxis.js +2 -0
  150. package/modern/Gauge/Gauge.js +2 -0
  151. package/modern/Gauge/GaugeContainer.js +2 -0
  152. package/modern/Gauge/GaugeReferenceArc.js +2 -0
  153. package/modern/Gauge/GaugeValueArc.js +2 -0
  154. package/modern/Gauge/GaugeValueText.js +2 -0
  155. package/modern/LineChart/AnimatedArea.js +2 -0
  156. package/modern/LineChart/AnimatedLine.js +2 -0
  157. package/modern/LineChart/AreaElement.js +2 -0
  158. package/modern/LineChart/AreaPlot.js +2 -0
  159. package/modern/LineChart/CircleMarkElement.js +107 -0
  160. package/modern/LineChart/LineChart.js +7 -0
  161. package/modern/LineChart/LineElement.js +2 -0
  162. package/modern/LineChart/LineHighlightElement.js +2 -0
  163. package/modern/LineChart/LineHighlightPlot.js +2 -0
  164. package/modern/LineChart/LinePlot.js +2 -0
  165. package/modern/LineChart/MarkElement.js +3 -19
  166. package/modern/LineChart/MarkPlot.js +13 -3
  167. package/modern/LineChart/index.js +2 -1
  168. package/modern/LineChart/legend.js +3 -2
  169. package/modern/LineChart/markElementClasses.js +19 -0
  170. package/modern/LineChart/useLineChartProps.js +7 -3
  171. package/modern/PieChart/PieArc.js +2 -0
  172. package/modern/PieChart/PieArcLabel.js +2 -0
  173. package/modern/PieChart/PieArcLabelPlot.js +2 -0
  174. package/modern/PieChart/PieArcPlot.js +2 -0
  175. package/modern/PieChart/PieChart.js +3 -0
  176. package/modern/PieChart/PiePlot.js +2 -0
  177. package/modern/PieChart/dataTransform/useTransformData.js +2 -0
  178. package/modern/PieChart/legend.js +3 -1
  179. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +2 -0
  180. package/modern/ResponsiveChartContainer/useChartContainerDimensions.js +3 -1
  181. package/modern/ResponsiveChartContainer/useResponsiveChartContainerProps.js +2 -0
  182. package/modern/ScatterChart/Scatter.js +2 -0
  183. package/modern/ScatterChart/ScatterChart.js +3 -0
  184. package/modern/ScatterChart/ScatterPlot.js +2 -0
  185. package/modern/ScatterChart/legend.js +3 -2
  186. package/modern/ScatterChart/useScatterChartProps.js +2 -0
  187. package/modern/SparkLineChart/SparkLineChart.js +2 -0
  188. package/modern/context/CartesianProvider/CartesianProvider.js +2 -0
  189. package/modern/context/CartesianProvider/useCartesianContext.js +2 -0
  190. package/modern/context/DrawingProvider.js +2 -0
  191. package/modern/context/HighlightedProvider/HighlightedProvider.js +2 -0
  192. package/modern/context/HighlightedProvider/useHighlighted.js +2 -0
  193. package/modern/context/HighlightedProvider/useItemHighlighted.js +2 -0
  194. package/modern/context/InteractionProvider.js +2 -0
  195. package/modern/context/PluginProvider/PluginProvider.js +2 -0
  196. package/modern/context/PluginProvider/useColorProcessor.js +2 -0
  197. package/modern/context/PluginProvider/useSeriesFormatter.js +2 -0
  198. package/modern/context/SeriesProvider/SeriesProvider.js +2 -0
  199. package/modern/context/ZAxisContextProvider.js +2 -0
  200. package/modern/hooks/useAxis.js +2 -0
  201. package/modern/hooks/useAxisEvents.js +2 -0
  202. package/modern/hooks/useChartDimensions.js +2 -0
  203. package/modern/hooks/useChartId.js +2 -0
  204. package/modern/hooks/useColorScale.js +2 -0
  205. package/modern/hooks/useDrawingArea.js +2 -0
  206. package/modern/hooks/useInteractionItemProps.js +2 -0
  207. package/modern/hooks/useMounted.js +2 -0
  208. package/modern/hooks/useReducedMotion.js +2 -0
  209. package/modern/hooks/useScale.js +2 -0
  210. package/modern/hooks/useSeries.js +2 -0
  211. package/modern/hooks/useSvgRef.js +2 -0
  212. package/modern/hooks/useTicks.js +2 -0
  213. package/modern/index.js +1 -1
  214. package/node/BarChart/BarChart.js +2 -0
  215. package/node/BarChart/BarElement.js +1 -0
  216. package/node/BarChart/BarLabel/BarLabel.js +1 -0
  217. package/node/BarChart/BarPlot.js +1 -0
  218. package/node/BarChart/legend.js +3 -2
  219. package/node/BarChart/useBarChartProps.js +1 -0
  220. package/node/ChartContainer/ChartContainer.js +1 -0
  221. package/node/ChartContainer/useChartContainerProps.js +1 -0
  222. package/node/ChartContainer/useDefaultizeAxis.js +1 -0
  223. package/node/ChartsAxis/ChartsAxis.js +1 -0
  224. package/node/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -0
  225. package/node/ChartsClipPath/ChartsClipPath.js +1 -0
  226. package/node/ChartsGrid/ChartsGrid.js +1 -0
  227. package/node/ChartsLegend/ChartsLegend.js +10 -1
  228. package/node/ChartsLegend/ChartsLegendItem.js +72 -0
  229. package/node/ChartsLegend/ContinuousColorLegend.js +1 -0
  230. package/node/ChartsLegend/DefaultChartsLegend.js +25 -4
  231. package/node/ChartsLegend/LegendPerItem.js +18 -28
  232. package/node/ChartsLegend/PiecewiseColorLegend.js +27 -7
  233. package/node/ChartsLegend/chartsLegendClasses.js +1 -1
  234. package/node/ChartsLegend/useAxis.js +1 -0
  235. package/node/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +2 -1
  236. package/node/ChartsOverlay/ChartsLoadingOverlay.js +1 -0
  237. package/node/ChartsOverlay/ChartsNoDataOverlay.js +1 -0
  238. package/node/ChartsOverlay/ChartsOverlay.js +1 -0
  239. package/node/ChartsReferenceLine/ChartsReferenceLine.js +1 -0
  240. package/node/ChartsReferenceLine/ChartsXReferenceLine.js +2 -1
  241. package/node/ChartsReferenceLine/ChartsYReferenceLine.js +2 -1
  242. package/node/ChartsSurface/ChartsSurface.js +1 -0
  243. package/node/ChartsText/ChartsText.js +1 -0
  244. package/node/ChartsTooltip/ChartsTooltip.js +1 -0
  245. package/node/ChartsTooltip/DefaultChartsAxisTooltipContent.js +1 -0
  246. package/node/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -0
  247. package/node/ChartsVoronoiHandler/ChartsVoronoiHandler.js +1 -0
  248. package/node/ChartsXAxis/ChartsXAxis.js +1 -0
  249. package/node/ChartsYAxis/ChartsYAxis.js +1 -0
  250. package/node/Gauge/Gauge.js +1 -0
  251. package/node/Gauge/GaugeContainer.js +1 -0
  252. package/node/Gauge/GaugeReferenceArc.js +1 -0
  253. package/node/Gauge/GaugeValueArc.js +1 -0
  254. package/node/Gauge/GaugeValueText.js +1 -0
  255. package/node/LineChart/AnimatedArea.js +1 -0
  256. package/node/LineChart/AnimatedLine.js +1 -0
  257. package/node/LineChart/AreaElement.js +1 -0
  258. package/node/LineChart/AreaPlot.js +1 -0
  259. package/node/LineChart/CircleMarkElement.js +113 -0
  260. package/node/LineChart/LineChart.js +6 -0
  261. package/node/LineChart/LineElement.js +1 -0
  262. package/node/LineChart/LineHighlightElement.js +1 -0
  263. package/node/LineChart/LineHighlightPlot.js +1 -0
  264. package/node/LineChart/LinePlot.js +1 -0
  265. package/node/LineChart/MarkElement.js +3 -22
  266. package/node/LineChart/MarkPlot.js +12 -3
  267. package/node/LineChart/index.js +29 -1
  268. package/node/LineChart/legend.js +3 -2
  269. package/node/LineChart/markElementClasses.js +28 -0
  270. package/node/LineChart/useLineChartProps.js +6 -3
  271. package/node/PieChart/PieArc.js +1 -0
  272. package/node/PieChart/PieArcLabel.js +1 -0
  273. package/node/PieChart/PieArcLabelPlot.js +1 -0
  274. package/node/PieChart/PieArcPlot.js +1 -0
  275. package/node/PieChart/PieChart.js +2 -0
  276. package/node/PieChart/PiePlot.js +1 -0
  277. package/node/PieChart/dataTransform/useTransformData.js +1 -0
  278. package/node/PieChart/legend.js +3 -1
  279. package/node/ResponsiveChartContainer/ResponsiveChartContainer.js +1 -0
  280. package/node/ResponsiveChartContainer/useChartContainerDimensions.js +2 -1
  281. package/node/ResponsiveChartContainer/useResponsiveChartContainerProps.js +1 -0
  282. package/node/ScatterChart/Scatter.js +1 -0
  283. package/node/ScatterChart/ScatterChart.js +2 -0
  284. package/node/ScatterChart/ScatterPlot.js +1 -0
  285. package/node/ScatterChart/legend.js +3 -2
  286. package/node/ScatterChart/useScatterChartProps.js +1 -0
  287. package/node/SparkLineChart/SparkLineChart.js +1 -0
  288. package/node/context/CartesianProvider/CartesianProvider.js +1 -0
  289. package/node/context/CartesianProvider/useCartesianContext.js +1 -0
  290. package/node/context/DrawingProvider.js +1 -0
  291. package/node/context/HighlightedProvider/HighlightedProvider.js +1 -0
  292. package/node/context/HighlightedProvider/useHighlighted.js +1 -0
  293. package/node/context/HighlightedProvider/useItemHighlighted.js +1 -0
  294. package/node/context/InteractionProvider.js +1 -0
  295. package/node/context/PluginProvider/PluginProvider.js +1 -0
  296. package/node/context/PluginProvider/useColorProcessor.js +1 -0
  297. package/node/context/PluginProvider/useSeriesFormatter.js +1 -0
  298. package/node/context/SeriesProvider/SeriesProvider.js +1 -0
  299. package/node/context/ZAxisContextProvider.js +1 -0
  300. package/node/hooks/useAxis.js +1 -0
  301. package/node/hooks/useAxisEvents.js +1 -0
  302. package/node/hooks/useChartDimensions.js +1 -0
  303. package/node/hooks/useChartId.js +1 -0
  304. package/node/hooks/useColorScale.js +1 -0
  305. package/node/hooks/useDrawingArea.js +1 -0
  306. package/node/hooks/useInteractionItemProps.js +1 -0
  307. package/node/hooks/useMounted.js +1 -0
  308. package/node/hooks/useReducedMotion.js +1 -0
  309. package/node/hooks/useScale.js +1 -0
  310. package/node/hooks/useSeries.js +1 -0
  311. package/node/hooks/useSvgRef.js +1 -0
  312. package/node/hooks/useTicks.js +1 -0
  313. package/node/index.js +1 -1
  314. package/package.json +3 -3
  315. package/internals/warning.d.ts +0 -2
  316. package/internals/warning.js +0 -21
  317. package/modern/internals/warning.js +0 -21
  318. package/node/internals/warning.js +0 -28
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -144,6 +146,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
144
146
  itemMarkWidth: PropTypes.number,
145
147
  labelStyle: PropTypes.object,
146
148
  markGap: PropTypes.number,
149
+ onItemClick: PropTypes.func,
147
150
  padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
148
151
  bottom: PropTypes.number,
149
152
  left: PropTypes.number,
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["id", "dataIndex", "classes", "color", "slots", "slotProps", "style", "onClick"];
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["seriesId", "dataIndex", "color", "isFaded", "isHighlighted", "classes"];
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["skipAnimation", "onItemClick", "borderRadius", "barLabel"];
@@ -10,9 +10,10 @@ const legendGetter = params => {
10
10
  return acc;
11
11
  }
12
12
  acc.push({
13
+ id: seriesId,
14
+ seriesId,
13
15
  color: series[seriesId].color,
14
- label: formattedLabel,
15
- id: seriesId
16
+ label: formattedLabel
16
17
  });
17
18
  return acc;
18
19
  }, []);
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["xAxis", "yAxis", "series", "width", "height", "margin", "colors", "dataset", "sx", "tooltip", "onAxisClick", "axisHighlight", "legend", "grid", "topAxis", "leftAxis", "rightAxis", "bottomAxis", "children", "slots", "slotProps", "skipAnimation", "loading", "layout", "onItemClick", "highlightedItem", "onHighlightChange", "borderRadius", "barLabel", "className"];
package/CHANGELOG.md CHANGED
@@ -3,6 +3,93 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 7.17.0
7
+
8
+ _Sep 13, 2024_
9
+
10
+ We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 📊 Charts performance improvement
13
+ - 🧑‍💻 New Data Grid [custom columns demo](https://mui.com/x/react-data-grid/custom-columns/#full-example)
14
+ - 🐞 Bugfixes
15
+ - 📚 Documentation improvements
16
+ - 🌍 Improve Hungarian (hu-HU) locale on the Data Grid
17
+
18
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
19
+
20
+ ### Data Grid
21
+
22
+ #### `@mui/x-data-grid@7.17.0`
23
+
24
+ - [DataGrid] Add "does not equal" and "does not contain" filter operators (#14489) @KenanYusuf
25
+ - [DataGrid] Add demo to the "Custom columns" page that does not use generator (#13695) @arminmeh
26
+ - [DataGrid] Fix Voice Over reading the column name twice (#14482) @arminmeh
27
+ - [DataGrid] Fix bug in CRUD example (#14513) @michelengelen
28
+ - [DataGrid] Fix failing jsdom tests caused by `:has()` selectors (#14559) @KenanYusuf
29
+ - [DataGrid] Refactor string operator filter functions (#14564) @KenanYusuf
30
+ - [l10n] Improve Hungarian (hu-HU) locale (#14506) @ntamas
31
+
32
+ #### `@mui/x-data-grid-pro@7.17.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
33
+
34
+ Same changes as in `@mui/x-data-grid@7.17.0`.
35
+
36
+ #### `@mui/x-data-grid-premium@7.17.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
37
+
38
+ Same changes as in `@mui/x-data-grid-pro@7.17.0`.
39
+
40
+ ### Date and Time Pickers
41
+
42
+ #### `@mui/x-date-pickers@7.17.0`
43
+
44
+ - [fields] Improve `useSplitFieldProps` and make it public (#14514) @flaviendelangle
45
+ - [pickers] Improve clear action label (#14243) @oliviertassinari
46
+ - [pickers] Add `"use client"` directive to every public component and hook (#14562) @flaviendelangle
47
+ - [pickers] Allow custom fields to validate the value (#14486) @flaviendelangle
48
+ - [pickers] Stop using utils in locales (#14505) @flaviendelangle
49
+
50
+ #### `@mui/x-date-pickers-pro@7.17.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
51
+
52
+ Same changes as in `@mui/x-date-pickers@7.17.0`, plus:
53
+
54
+ - [DateRangePicker] Fix `currentMonthCalendarPosition` not scrolling to future sibling (#14442) @GMchris
55
+
56
+ ### Charts
57
+
58
+ #### `@mui/x-charts@7.17.0`
59
+
60
+ - [charts] Add `"use client"` directive to every public component and hook (#14578) @flaviendelangle
61
+ - [charts] Allow `onItemClick` on the `Legend` component (#14231) @JCQuintas
62
+ - [charts] Fix `onAxisClick` with `layout='horizontal'` (#14547) @alexfauquette
63
+ - [charts] Replace `path` with `circle` for performance improvement (#14518) @alexfauquette
64
+
65
+ #### `@mui/x-charts-pro@7.0.0-beta.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
66
+
67
+ Same changes as in `@mui/x-charts@7.17.0`.
68
+
69
+ ### Tree View
70
+
71
+ #### `@mui/x-tree-view@7.17.0`
72
+
73
+ - [TreeView] Make `useTreeItem2` stable (#14498) @flaviendelangle
74
+
75
+ ### Docs
76
+
77
+ - [docs] Add missing callout on "Imperative API" tree view sections (#14503) @flaviendelangle
78
+ - [docs] Fix broken redirection to MUI X v5 @oliviertassinari
79
+ - [docs] Fix multiple `console.error` messages on `charts` docs (#14554) @JCQuintas
80
+ - [docs] Fixed typo in Row Grouping recipes (#14549) @Miodini
81
+ - [docs] Match title with blog posts @oliviertassinari
82
+
83
+ ### Core
84
+
85
+ - [core] Move warning methods to `@mui/x-internals` (#14528) @k-rajat19
86
+ - [core] Sync with core release flow @oliviertassinari
87
+ - [code-infra] Fix charts benchmark workflow (#14573) @JCQuintas
88
+ - [docs-infra] Type interface API pages (#14138) @alexfauquette
89
+ - [infra] Create `ESLint plugins` renovate group (#14574) @LukasTy
90
+ - [license] Clean-up terminology to match codebase (#14531) @oliviertassinari
91
+ - [test] Remove dead `act()` logic (#14529) @oliviertassinari
92
+
6
93
  ## 7.16.0
7
94
 
8
95
  _Sep 5, 2024_
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["width", "height", "series", "margin", "xAxis", "yAxis", "zAxis", "colors", "dataset", "sx", "title", "desc", "disableAxisListener", "highlightedItem", "onHighlightChange", "plugins", "children"];
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from "../constants/index.js";
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["vertical", "horizontal"];
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["slots", "slotProps"];
@@ -21,7 +23,8 @@ const useUtilityClasses = ownerState => {
21
23
  root: ['root', direction],
22
24
  mark: ['mark'],
23
25
  label: ['label'],
24
- series: ['series']
26
+ series: ['series'],
27
+ itemBackground: ['itemBackground']
25
28
  };
26
29
  return composeClasses(slots, getLegendUtilityClass, classes);
27
30
  };
@@ -108,6 +111,13 @@ process.env.NODE_ENV !== "production" ? ChartsLegend.propTypes = {
108
111
  * @default 5
109
112
  */
110
113
  markGap: PropTypes.number,
114
+ /**
115
+ * Callback fired when a legend item is clicked.
116
+ * @param {React.MouseEvent<SVGRectElement, MouseEvent>} event The click event.
117
+ * @param {SeriesLegendItemContext} legendItem The legend item data.
118
+ * @param {number} index The index of the clicked legend item.
119
+ */
120
+ onItemClick: PropTypes.func,
111
121
  /**
112
122
  * Legend padding (in px).
113
123
  * Can either be a single number, or an object with top, left, bottom, right properties.
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ import { ChartsTextStyle } from '../ChartsText';
3
+ import { LegendItemParams } from './chartsLegend.types';
4
+ import { ChartsLegendClasses } from './chartsLegendClasses';
5
+ export interface ChartsLegendItemProps extends LegendItemParams {
6
+ positionY: number;
7
+ label: string;
8
+ positionX: number;
9
+ innerHeight: number;
10
+ innerWidth: number;
11
+ color: string;
12
+ gapX: number;
13
+ gapY: number;
14
+ legendWidth: number;
15
+ itemMarkHeight: number;
16
+ itemMarkWidth: number;
17
+ markGap: number;
18
+ labelStyle: ChartsTextStyle;
19
+ classes?: Omit<Partial<ChartsLegendClasses>, 'column' | 'row' | 'label'>;
20
+ onClick?: (event: React.MouseEvent<SVGRectElement, MouseEvent>) => void;
21
+ }
22
+ /**
23
+ * @ignore - internal component.
24
+ */
25
+ declare function ChartsLegendItem(props: ChartsLegendItemProps): React.JSX.Element;
26
+ export { ChartsLegendItem };
@@ -0,0 +1,65 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import clsx from 'clsx';
4
+ import { useRtl } from '@mui/system/RtlProvider';
5
+ import { ChartsText } from "../ChartsText/index.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ /**
8
+ * @ignore - internal component.
9
+ */
10
+ function ChartsLegendItem(props) {
11
+ const isRTL = useRtl();
12
+ const {
13
+ id,
14
+ positionY,
15
+ label,
16
+ positionX,
17
+ innerHeight,
18
+ innerWidth,
19
+ legendWidth,
20
+ color,
21
+ gapX,
22
+ gapY,
23
+ itemMarkHeight,
24
+ itemMarkWidth,
25
+ markGap,
26
+ labelStyle,
27
+ classes,
28
+ onClick
29
+ } = props;
30
+ return /*#__PURE__*/_jsxs("g", {
31
+ className: clsx(classes?.series, `${classes?.series}-${id}`),
32
+ transform: `translate(${gapX + (isRTL ? legendWidth - positionX : positionX)} ${gapY + positionY})`,
33
+ children: [/*#__PURE__*/_jsx("rect", {
34
+ x: isRTL ? -(innerWidth + 2) : -2,
35
+ y: -itemMarkHeight / 2 - 2,
36
+ width: innerWidth + 4,
37
+ height: innerHeight + 4,
38
+ fill: "transparent",
39
+ className: classes?.itemBackground,
40
+ onClick: onClick,
41
+ style: {
42
+ pointerEvents: onClick ? 'all' : 'none',
43
+ cursor: onClick ? 'pointer' : 'unset'
44
+ }
45
+ }), /*#__PURE__*/_jsx("rect", {
46
+ className: classes?.mark,
47
+ x: isRTL ? -itemMarkWidth : 0,
48
+ y: -itemMarkHeight / 2,
49
+ width: itemMarkWidth,
50
+ height: itemMarkHeight,
51
+ fill: color,
52
+ style: {
53
+ pointerEvents: 'none'
54
+ }
55
+ }), /*#__PURE__*/_jsx(ChartsText, {
56
+ style: _extends({
57
+ pointerEvents: 'none'
58
+ }, labelStyle),
59
+ text: label,
60
+ x: (isRTL ? -1 : 1) * (itemMarkWidth + markGap),
61
+ y: 0
62
+ })]
63
+ });
64
+ }
65
+ export { ChartsLegendItem };
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -2,13 +2,21 @@ import * as React from 'react';
2
2
  import { FormattedSeries } from '../context/SeriesProvider';
3
3
  import { LegendPerItemProps } from './LegendPerItem';
4
4
  import { DrawingArea } from '../context/DrawingProvider';
5
- export interface LegendRendererProps extends Omit<LegendPerItemProps, 'itemsToDisplay'> {
5
+ import { SeriesLegendItemContext } from './chartsLegend.types';
6
+ export interface LegendRendererProps extends Omit<LegendPerItemProps, 'itemsToDisplay' | 'onItemClick'> {
6
7
  series: FormattedSeries;
7
8
  seriesToDisplay: LegendPerItemProps['itemsToDisplay'];
8
9
  /**
9
10
  * @deprecated Use the `useDrawingArea` hook instead.
10
11
  */
11
12
  drawingArea: Omit<DrawingArea, 'isPointInside'>;
13
+ /**
14
+ * Callback fired when a legend item is clicked.
15
+ * @param {React.MouseEvent<SVGRectElement, MouseEvent>} event The click event.
16
+ * @param {SeriesLegendItemContext} legendItem The legend item data.
17
+ * @param {number} index The index of the clicked legend item.
18
+ */
19
+ onItemClick?: (event: React.MouseEvent<SVGRectElement, MouseEvent>, legendItem: SeriesLegendItemContext, index: number) => void;
12
20
  /**
13
21
  * Set to true to hide the legend.
14
22
  * @default false
@@ -1,21 +1,32 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["drawingArea", "seriesToDisplay", "hidden"];
5
+ const _excluded = ["drawingArea", "seriesToDisplay", "hidden", "onItemClick"];
4
6
  import * as React from 'react';
5
7
  import PropTypes from 'prop-types';
6
8
  import { LegendPerItem } from "./LegendPerItem.js";
7
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
+ const seriesContextBuilder = context => ({
11
+ type: 'series',
12
+ color: context.color,
13
+ label: context.label,
14
+ seriesId: context.seriesId,
15
+ itemId: context.itemId
16
+ });
8
17
  function DefaultChartsLegend(props) {
9
18
  const {
10
19
  seriesToDisplay,
11
- hidden
20
+ hidden,
21
+ onItemClick
12
22
  } = props,
13
23
  other = _objectWithoutPropertiesLoose(props, _excluded);
14
24
  if (hidden) {
15
25
  return null;
16
26
  }
17
27
  return /*#__PURE__*/_jsx(LegendPerItem, _extends({}, other, {
18
- itemsToDisplay: seriesToDisplay
28
+ itemsToDisplay: seriesToDisplay,
29
+ onItemClick: onItemClick ? (e, i) => onItemClick(e, seriesContextBuilder(seriesToDisplay[i]), i) : undefined
19
30
  }));
20
31
  }
21
32
  process.env.NODE_ENV !== "production" ? DefaultChartsLegend.propTypes = {
@@ -73,6 +84,13 @@ process.env.NODE_ENV !== "production" ? DefaultChartsLegend.propTypes = {
73
84
  * @default 5
74
85
  */
75
86
  markGap: PropTypes.number,
87
+ /**
88
+ * Callback fired when a legend item is clicked.
89
+ * @param {React.MouseEvent<SVGRectElement, MouseEvent>} event The click event.
90
+ * @param {SeriesLegendItemContext} legendItem The legend item data.
91
+ * @param {number} index The index of the clicked legend item.
92
+ */
93
+ onItemClick: PropTypes.func,
76
94
  /**
77
95
  * Legend padding (in px).
78
96
  * Can either be a single number, or an object with top, left, bottom, right properties.
@@ -95,7 +113,11 @@ process.env.NODE_ENV !== "production" ? DefaultChartsLegend.propTypes = {
95
113
  seriesToDisplay: PropTypes.arrayOf(PropTypes.shape({
96
114
  color: PropTypes.string.isRequired,
97
115
  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
98
- label: PropTypes.string.isRequired
116
+ itemId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
117
+ label: PropTypes.string.isRequired,
118
+ maxValue: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
119
+ minValue: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
120
+ seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
99
121
  })).isRequired
100
122
  } : void 0;
101
123
  export { DefaultChartsLegend };
@@ -55,6 +55,7 @@ export interface LegendPerItemProps extends DefaultizedProps<LegendPlacement, ke
55
55
  * @default 10
56
56
  */
57
57
  padding?: number | Partial<CardinalDirections<number>>;
58
+ onItemClick?: (event: React.MouseEvent<SVGRectElement, MouseEvent>, index: number) => void;
58
59
  }
59
60
  /**
60
61
  * Internal component to display an array of items as a legend.
@@ -1,15 +1,17 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["rotate", "dominantBaseline"];
4
6
  import * as React from 'react';
5
7
  import NoSsr from '@mui/material/NoSsr';
6
8
  import { useTheme, styled } from '@mui/material/styles';
7
- import { useRtl } from '@mui/system/RtlProvider';
8
- import { ChartsText } from "../ChartsText/index.js";
9
9
  import { getWordsByLines } from "../internals/getWordsByLines.js";
10
10
  import { legendItemPlacements } from "./legendItemsPlacement.js";
11
11
  import { useDrawingArea } from "../hooks/useDrawingArea.js";
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { ChartsLegendItem } from "./ChartsLegendItem.js";
13
+ import { createElement as _createElement } from "react";
14
+ import { jsx as _jsx } from "react/jsx-runtime";
13
15
  export const ChartsLegendRoot = styled('g', {
14
16
  name: 'MuiChartsLegend',
15
17
  slot: 'Root',
@@ -51,10 +53,10 @@ export function LegendPerItem(props) {
51
53
  markGap = 5,
52
54
  itemGap = 10,
53
55
  padding: paddingProps = 10,
54
- labelStyle: inLabelStyle
56
+ labelStyle: inLabelStyle,
57
+ onItemClick
55
58
  } = props;
56
59
  const theme = useTheme();
57
- const isRtl = useRtl();
58
60
  const drawingArea = useDrawingArea();
59
61
  const labelStyle = React.useMemo(() => _extends({}, theme.typography.subtitle1, {
60
62
  color: 'inherit',
@@ -110,29 +112,18 @@ export function LegendPerItem(props) {
110
112
  return /*#__PURE__*/_jsx(NoSsr, {
111
113
  children: /*#__PURE__*/_jsx(ChartsLegendRoot, {
112
114
  className: classes?.root,
113
- children: itemsWithPosition.map(({
114
- id,
115
- label,
116
- color,
117
- positionX,
118
- positionY
119
- }) => /*#__PURE__*/_jsxs("g", {
120
- className: classes?.series,
121
- transform: `translate(${gapX + (isRtl ? legendWidth - positionX : positionX)} ${gapY + positionY})`,
122
- children: [/*#__PURE__*/_jsx("rect", {
123
- className: classes?.mark,
124
- x: isRtl ? -itemMarkWidth : 0,
125
- y: -itemMarkHeight / 2,
126
- width: itemMarkWidth,
127
- height: itemMarkHeight,
128
- fill: color
129
- }), /*#__PURE__*/_jsx(ChartsText, {
130
- style: labelStyle,
131
- text: label,
132
- x: (isRtl ? -1 : 1) * (itemMarkWidth + markGap),
133
- y: 0
134
- })]
135
- }, id))
115
+ children: itemsWithPosition.map((item, i) => /*#__PURE__*/_createElement(ChartsLegendItem, _extends({}, item, {
116
+ key: item.id,
117
+ gapX: gapX,
118
+ gapY: gapY,
119
+ legendWidth: legendWidth,
120
+ itemMarkHeight: itemMarkHeight,
121
+ itemMarkWidth: itemMarkWidth,
122
+ markGap: markGap,
123
+ labelStyle: labelStyle,
124
+ classes: classes,
125
+ onClick: onItemClick ? e => onItemClick(e, i) : undefined
126
+ })))
136
127
  })
137
128
  });
138
129
  }
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { ColorLegendSelector, PiecewiseLabelFormatterParams } from './legend.types';
3
3
  import { LegendPerItemProps } from './LegendPerItem';
4
- export interface PiecewiseColorLegendProps extends ColorLegendSelector, Omit<LegendPerItemProps, 'itemsToDisplay'> {
4
+ import { PiecewiseColorLegendItemContext } from './chartsLegend.types';
5
+ export interface PiecewiseColorLegendProps extends ColorLegendSelector, Omit<LegendPerItemProps, 'itemsToDisplay' | 'onItemClick'> {
5
6
  /**
6
7
  * Hide the first item of the legend, corresponding to the [-infinity, min] piece.
7
8
  * @default false
@@ -18,6 +19,13 @@ export interface PiecewiseColorLegendProps extends ColorLegendSelector, Omit<Leg
18
19
  * @returns {string|null} The displayed label, or `null` to skip the item.
19
20
  */
20
21
  labelFormatter?: (params: PiecewiseLabelFormatterParams) => string | null;
22
+ /**
23
+ * Callback fired when a legend item is clicked.
24
+ * @param {React.MouseEvent<SVGRectElement, MouseEvent>} event The click event.
25
+ * @param {PiecewiseColorLegendItemContext} legendItem The legend item data.
26
+ * @param {number} index The index of the clicked legend item.
27
+ */
28
+ onItemClick?: (event: React.MouseEvent<SVGRectElement, MouseEvent>, legendItem: PiecewiseColorLegendItemContext, index: number) => void;
21
29
  }
22
30
  declare function PiecewiseColorLegend(props: PiecewiseColorLegendProps): React.JSX.Element | null;
23
31
  declare namespace PiecewiseColorLegend {
@@ -1,6 +1,8 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["axisDirection", "axisId", "hideFirst", "hideLast", "labelFormatter"];
5
+ const _excluded = ["axisDirection", "axisId", "hideFirst", "hideLast", "labelFormatter", "onItemClick"];
4
6
  import * as React from 'react';
5
7
  import PropTypes from 'prop-types';
6
8
  import { useAxis } from "./useAxis.js";
@@ -16,13 +18,21 @@ function defaultLabelFormatter(params) {
16
18
  }
17
19
  return `${params.formattedMin}-${params.formattedMax}`;
18
20
  }
21
+ const piecewiseColorContextBuilder = context => ({
22
+ type: 'piecewiseColor',
23
+ color: context.color,
24
+ label: context.label,
25
+ maxValue: context.maxValue,
26
+ minValue: context.minValue
27
+ });
19
28
  function PiecewiseColorLegend(props) {
20
29
  const {
21
30
  axisDirection,
22
31
  axisId,
23
32
  hideFirst,
24
33
  hideLast,
25
- labelFormatter = defaultLabelFormatter
34
+ labelFormatter = defaultLabelFormatter,
35
+ onItemClick
26
36
  } = props,
27
37
  other = _objectWithoutPropertiesLoose(props, _excluded);
28
38
  const axisItem = useAxis({
@@ -43,30 +53,34 @@ function PiecewiseColorLegend(props) {
43
53
  if (hideFirst && isFirst || hideLast && isLast) {
44
54
  return null;
45
55
  }
46
- const label = labelFormatter(_extends({}, index === 0 ? {
56
+ const data = _extends({}, isFirst ? {
47
57
  min: null,
48
58
  formattedMin: null
49
59
  } : {
50
60
  min: colorMap.thresholds[index - 1],
51
61
  formattedMin: formattedLabels[index - 1]
52
- }, index === colorMap.colors.length - 1 ? {
62
+ }, isLast ? {
53
63
  max: null,
54
64
  formattedMax: null
55
65
  } : {
56
66
  max: colorMap.thresholds[index],
57
67
  formattedMax: formattedLabels[index]
58
- }));
68
+ });
69
+ const label = labelFormatter(data);
59
70
  if (label === null) {
60
71
  return null;
61
72
  }
62
73
  return {
63
74
  id: label,
64
75
  color,
65
- label
76
+ label,
77
+ minValue: data.min,
78
+ maxValue: data.max
66
79
  };
67
80
  }).filter(notNull);
68
81
  return /*#__PURE__*/_jsx(LegendPerItem, _extends({}, other, {
69
- itemsToDisplay: itemsToDisplay
82
+ itemsToDisplay: itemsToDisplay,
83
+ onItemClick: onItemClick ? (e, i) => onItemClick(e, piecewiseColorContextBuilder(itemsToDisplay[i]), i) : undefined
70
84
  }));
71
85
  }
72
86
  process.env.NODE_ENV !== "production" ? PiecewiseColorLegend.propTypes = {
@@ -134,6 +148,13 @@ process.env.NODE_ENV !== "production" ? PiecewiseColorLegend.propTypes = {
134
148
  * @default 5
135
149
  */
136
150
  markGap: PropTypes.number,
151
+ /**
152
+ * Callback fired when a legend item is clicked.
153
+ * @param {React.MouseEvent<SVGRectElement, MouseEvent>} event The click event.
154
+ * @param {PiecewiseColorLegendItemContext} legendItem The legend item data.
155
+ * @param {number} index The index of the clicked legend item.
156
+ */
157
+ onItemClick: PropTypes.func,
137
158
  /**
138
159
  * Legend padding (in px).
139
160
  * Can either be a single number, or an object with top, left, bottom, right properties.