@mui/x-charts 7.2.0 → 7.3.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 (188) hide show
  1. package/BarChart/BarChart.js +32 -2
  2. package/BarChart/BarPlot.js +12 -5
  3. package/BarChart/getColor.d.ts +3 -0
  4. package/BarChart/getColor.js +33 -0
  5. package/CHANGELOG.md +125 -0
  6. package/ChartContainer/ChartContainer.js +35 -4
  7. package/ChartsAxis/ChartsAxis.js +4 -4
  8. package/ChartsClipPath/ChartsClipPath.js +2 -2
  9. package/ChartsLegend/ChartsLegend.js +2 -2
  10. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +4 -1
  11. package/ChartsTooltip/ChartsAxisTooltipContent.js +7 -2
  12. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +6 -0
  13. package/ChartsTooltip/ChartsItemTooltipContent.js +15 -1
  14. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +6 -3
  15. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +13 -4
  16. package/ChartsTooltip/utils.d.ts +5 -1
  17. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  18. package/ChartsXAxis/ChartsXAxis.js +2 -2
  19. package/ChartsYAxis/ChartsYAxis.js +2 -2
  20. package/Gauge/GaugeProvider.js +5 -5
  21. package/LineChart/AnimatedArea.js +6 -5
  22. package/LineChart/AnimatedLine.js +7 -5
  23. package/LineChart/AreaElement.d.ts +1 -0
  24. package/LineChart/AreaElement.js +4 -1
  25. package/LineChart/AreaPlot.js +7 -1
  26. package/LineChart/LineChart.js +32 -2
  27. package/LineChart/LineElement.d.ts +1 -0
  28. package/LineChart/LineElement.js +4 -1
  29. package/LineChart/LineHighlightPlot.js +4 -1
  30. package/LineChart/LinePlot.js +7 -1
  31. package/LineChart/MarkPlot.js +5 -5
  32. package/LineChart/getColor.d.ts +3 -0
  33. package/LineChart/getColor.js +31 -0
  34. package/PieChart/PieChart.js +32 -2
  35. package/PieChart/PiePlot.js +26 -6
  36. package/PieChart/formatter.js +4 -2
  37. package/PieChart/getColor.d.ts +2 -0
  38. package/PieChart/getColor.js +11 -0
  39. package/PieChart/getPieCoordinates.d.ts +7 -0
  40. package/PieChart/getPieCoordinates.js +25 -0
  41. package/PieChart/index.d.ts +1 -0
  42. package/PieChart/index.js +11 -0
  43. package/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -2
  44. package/ScatterChart/Scatter.d.ts +1 -0
  45. package/ScatterChart/Scatter.js +6 -3
  46. package/ScatterChart/ScatterChart.js +32 -2
  47. package/ScatterChart/ScatterPlot.js +3 -0
  48. package/ScatterChart/getColor.d.ts +3 -0
  49. package/ScatterChart/getColor.js +31 -0
  50. package/SparkLineChart/SparkLineChart.js +15 -0
  51. package/context/CartesianContextProvider.d.ts +2 -2
  52. package/context/CartesianContextProvider.js +23 -8
  53. package/esm/BarChart/BarChart.js +32 -2
  54. package/esm/BarChart/BarPlot.js +13 -5
  55. package/esm/BarChart/getColor.js +27 -0
  56. package/esm/ChartContainer/ChartContainer.js +36 -4
  57. package/esm/ChartsAxis/ChartsAxis.js +4 -4
  58. package/esm/ChartsClipPath/ChartsClipPath.js +2 -2
  59. package/esm/ChartsLegend/ChartsLegend.js +2 -2
  60. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +7 -2
  61. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -1
  62. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +6 -3
  63. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +13 -4
  64. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  65. package/esm/ChartsXAxis/ChartsXAxis.js +2 -2
  66. package/esm/ChartsYAxis/ChartsYAxis.js +2 -2
  67. package/esm/Gauge/GaugeProvider.js +5 -5
  68. package/esm/LineChart/AnimatedArea.js +6 -5
  69. package/esm/LineChart/AnimatedLine.js +7 -5
  70. package/esm/LineChart/AreaElement.js +4 -1
  71. package/esm/LineChart/AreaPlot.js +7 -1
  72. package/esm/LineChart/LineChart.js +32 -2
  73. package/esm/LineChart/LineElement.js +4 -1
  74. package/esm/LineChart/LineHighlightPlot.js +4 -1
  75. package/esm/LineChart/LinePlot.js +7 -1
  76. package/esm/LineChart/MarkPlot.js +5 -5
  77. package/esm/LineChart/getColor.js +25 -0
  78. package/esm/PieChart/PieChart.js +32 -2
  79. package/esm/PieChart/PiePlot.js +26 -6
  80. package/esm/PieChart/formatter.js +4 -2
  81. package/esm/PieChart/getColor.js +5 -0
  82. package/esm/PieChart/getPieCoordinates.js +19 -0
  83. package/esm/PieChart/index.js +2 -1
  84. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -2
  85. package/esm/ScatterChart/Scatter.js +6 -3
  86. package/esm/ScatterChart/ScatterChart.js +32 -2
  87. package/esm/ScatterChart/ScatterPlot.js +3 -0
  88. package/esm/ScatterChart/getColor.js +25 -0
  89. package/esm/SparkLineChart/SparkLineChart.js +15 -0
  90. package/esm/context/CartesianContextProvider.js +23 -8
  91. package/esm/hooks/index.js +4 -1
  92. package/esm/hooks/useAxisEvents.js +7 -6
  93. package/esm/hooks/useChartId.js +8 -0
  94. package/esm/hooks/useSeries.js +64 -0
  95. package/esm/hooks/useSvgRef.js +9 -0
  96. package/esm/internals/colorGetter.js +22 -0
  97. package/esm/internals/colorScale.js +16 -0
  98. package/esm/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +96 -0
  99. package/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +55 -0
  100. package/esm/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +41 -0
  101. package/esm/internals/components/ChartsAxesGradients/index.js +1 -0
  102. package/esm/models/colorMapping.js +1 -0
  103. package/esm/models/seriesType/index.js +6 -1
  104. package/hooks/index.d.ts +3 -0
  105. package/hooks/index.js +65 -1
  106. package/hooks/useAxisEvents.js +7 -6
  107. package/hooks/useChartId.d.ts +1 -0
  108. package/hooks/useChartId.js +16 -0
  109. package/hooks/useSeries.d.ts +45 -0
  110. package/hooks/useSeries.js +75 -0
  111. package/hooks/useSvgRef.d.ts +2 -0
  112. package/hooks/useSvgRef.js +17 -0
  113. package/index.js +1 -1
  114. package/internals/colorGetter.d.ts +5 -0
  115. package/internals/colorGetter.js +29 -0
  116. package/internals/colorScale.d.ts +5 -0
  117. package/internals/colorScale.js +24 -0
  118. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.d.ts +3 -0
  119. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +105 -0
  120. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.d.ts +13 -0
  121. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +63 -0
  122. package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.d.ts +12 -0
  123. package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +48 -0
  124. package/internals/components/ChartsAxesGradients/index.d.ts +1 -0
  125. package/internals/components/ChartsAxesGradients/index.js +16 -0
  126. package/internals/defaultizeColor.d.ts +4 -4
  127. package/internals/defaultizeValueFormatter.d.ts +5 -5
  128. package/internals/getScale.d.ts +2 -2
  129. package/models/axis.d.ts +44 -4
  130. package/models/colorMapping.d.ts +45 -0
  131. package/models/colorMapping.js +5 -0
  132. package/models/index.d.ts +1 -1
  133. package/models/seriesType/common.d.ts +10 -2
  134. package/models/seriesType/index.d.ts +2 -0
  135. package/models/seriesType/index.js +17 -1
  136. package/modern/BarChart/BarChart.js +32 -2
  137. package/modern/BarChart/BarPlot.js +13 -5
  138. package/modern/BarChart/getColor.js +27 -0
  139. package/modern/ChartContainer/ChartContainer.js +36 -4
  140. package/modern/ChartsAxis/ChartsAxis.js +4 -4
  141. package/modern/ChartsClipPath/ChartsClipPath.js +2 -2
  142. package/modern/ChartsLegend/ChartsLegend.js +2 -2
  143. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +7 -2
  144. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -1
  145. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +6 -3
  146. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +13 -4
  147. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  148. package/modern/ChartsXAxis/ChartsXAxis.js +2 -2
  149. package/modern/ChartsYAxis/ChartsYAxis.js +2 -2
  150. package/modern/Gauge/GaugeProvider.js +5 -5
  151. package/modern/LineChart/AnimatedArea.js +6 -5
  152. package/modern/LineChart/AnimatedLine.js +7 -5
  153. package/modern/LineChart/AreaElement.js +4 -1
  154. package/modern/LineChart/AreaPlot.js +7 -1
  155. package/modern/LineChart/LineChart.js +32 -2
  156. package/modern/LineChart/LineElement.js +4 -1
  157. package/modern/LineChart/LineHighlightPlot.js +4 -1
  158. package/modern/LineChart/LinePlot.js +7 -1
  159. package/modern/LineChart/MarkPlot.js +5 -5
  160. package/modern/LineChart/getColor.js +25 -0
  161. package/modern/PieChart/PieChart.js +32 -2
  162. package/modern/PieChart/PiePlot.js +26 -6
  163. package/modern/PieChart/formatter.js +4 -2
  164. package/modern/PieChart/getColor.js +5 -0
  165. package/modern/PieChart/getPieCoordinates.js +19 -0
  166. package/modern/PieChart/index.js +2 -1
  167. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -2
  168. package/modern/ScatterChart/Scatter.js +6 -3
  169. package/modern/ScatterChart/ScatterChart.js +32 -2
  170. package/modern/ScatterChart/ScatterPlot.js +3 -0
  171. package/modern/ScatterChart/getColor.js +25 -0
  172. package/modern/SparkLineChart/SparkLineChart.js +15 -0
  173. package/modern/context/CartesianContextProvider.js +23 -8
  174. package/modern/hooks/index.js +4 -1
  175. package/modern/hooks/useAxisEvents.js +7 -6
  176. package/modern/hooks/useChartId.js +8 -0
  177. package/modern/hooks/useSeries.js +64 -0
  178. package/modern/hooks/useSvgRef.js +9 -0
  179. package/modern/index.js +1 -1
  180. package/modern/internals/colorGetter.js +22 -0
  181. package/modern/internals/colorScale.js +16 -0
  182. package/modern/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +96 -0
  183. package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +55 -0
  184. package/modern/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +41 -0
  185. package/modern/internals/components/ChartsAxesGradients/index.js +1 -0
  186. package/modern/models/colorMapping.js +1 -0
  187. package/modern/models/seriesType/index.js +6 -1
  188. package/package.json +1 -1
@@ -374,11 +374,26 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
374
374
  width: _propTypes.default.number,
375
375
  /**
376
376
  * The configuration of the x-axes.
377
- * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
377
+ * If not provided, a default axis config is used.
378
378
  */
379
379
  xAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
380
380
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
381
381
  classes: _propTypes.default.object,
382
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
383
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
384
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
385
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
386
+ type: _propTypes.default.oneOf(['continuous']).isRequired
387
+ }), _propTypes.default.shape({
388
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
389
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
390
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
391
+ }), _propTypes.default.shape({
392
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
393
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
394
+ unknownColor: _propTypes.default.string,
395
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
396
+ })]),
382
397
  data: _propTypes.default.array,
383
398
  dataKey: _propTypes.default.string,
384
399
  disableLine: _propTypes.default.bool,
@@ -411,11 +426,26 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
411
426
  })),
412
427
  /**
413
428
  * The configuration of the y-axes.
414
- * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
429
+ * If not provided, a default axis config is used.
415
430
  */
416
431
  yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
417
432
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
418
433
  classes: _propTypes.default.object,
434
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
435
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
436
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
437
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
438
+ type: _propTypes.default.oneOf(['continuous']).isRequired
439
+ }), _propTypes.default.shape({
440
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
441
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
442
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
443
+ }), _propTypes.default.shape({
444
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
445
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
446
+ unknownColor: _propTypes.default.string,
447
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
448
+ })]),
419
449
  data: _propTypes.default.array,
420
450
  dataKey: _propTypes.default.string,
421
451
  disableLine: _propTypes.default.bool,
@@ -15,10 +15,9 @@ var _CartesianContextProvider = require("../context/CartesianContextProvider");
15
15
  var _BarElement = require("./BarElement");
16
16
  var _axis = require("../models/axis");
17
17
  var _constants = require("../constants");
18
+ var _getColor = _interopRequireDefault(require("./getColor"));
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  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; }
22
21
  /**
23
22
  * Solution of the equations
24
23
  * W = barWidth * N + offset * (N-1)
@@ -28,6 +27,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
28
27
  * @param gapRatio The ratio of the gap between bars over the bar width.
29
28
  * @returns The bar width and the offset between bars.
30
29
  */
30
+ 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); }
31
+ 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
32
  function getBandSize({
32
33
  bandWidth: W,
33
34
  numberOfGroups: N,
@@ -83,6 +84,9 @@ const useAggregatedData = () => {
83
84
  throw new Error(`MUI X Charts: ${xAxisKey === _constants.DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} shoud have data property.`);
84
85
  }
85
86
  baseScaleConfig = xAxisConfig;
87
+ if ((0, _axis.isBandScaleConfig)(yAxisConfig) || (0, _axis.isPointScaleConfig)(yAxisConfig)) {
88
+ throw new Error(`MUI X Charts: ${yAxisKey === _constants.DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"`} shoud be a continuous type to display the bar series of id "${seriesId}".`);
89
+ }
86
90
  } else {
87
91
  if (!(0, _axis.isBandScaleConfig)(yAxisConfig)) {
88
92
  throw new Error(`MUI X Charts: ${yAxisKey === _constants.DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"`} shoud be of type "band" to display the bar series of id "${seriesId}".`);
@@ -91,9 +95,13 @@ const useAggregatedData = () => {
91
95
  throw new Error(`MUI X Charts: ${yAxisKey === _constants.DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"`} shoud have data property.`);
92
96
  }
93
97
  baseScaleConfig = yAxisConfig;
98
+ if ((0, _axis.isBandScaleConfig)(xAxisConfig) || (0, _axis.isPointScaleConfig)(xAxisConfig)) {
99
+ throw new Error(`MUI X Charts: ${xAxisKey === _constants.DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} shoud be a continuous type to display the bar series of id "${seriesId}".`);
100
+ }
94
101
  }
95
102
  const xScale = xAxisConfig.scale;
96
103
  const yScale = yAxisConfig.scale;
104
+ const colorGetter = (0, _getColor.default)(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]);
97
105
  const bandWidth = baseScaleConfig.scale.bandwidth();
98
106
  const {
99
107
  barWidth,
@@ -105,8 +113,7 @@ const useAggregatedData = () => {
105
113
  });
106
114
  const barOffset = groupIndex * (barWidth + offset);
107
115
  const {
108
- stackedData,
109
- color
116
+ stackedData
110
117
  } = series[seriesId];
111
118
  return stackedData.map((values, dataIndex) => {
112
119
  const valueCoordinates = values.map(v => verticalLayout ? yScale(v) : xScale(v));
@@ -122,7 +129,7 @@ const useAggregatedData = () => {
122
129
  yOrigin: yScale(0),
123
130
  height: verticalLayout ? maxValueCoord - minValueCoord : barWidth,
124
131
  width: verticalLayout ? barWidth : maxValueCoord - minValueCoord,
125
- color,
132
+ color: colorGetter(dataIndex),
126
133
  highlightScope: series[seriesId].highlightScope
127
134
  };
128
135
  });
@@ -0,0 +1,3 @@
1
+ import { AxisDefaultized } from '../models/axis';
2
+ import { DefaultizedBarSeriesType } from '../models/seriesType/bar';
3
+ export default function getColor(series: DefaultizedBarSeriesType, xAxis: AxisDefaultized, yAxis: AxisDefaultized): (dataIndex: number) => string;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getColor;
7
+ function getColor(series, xAxis, yAxis) {
8
+ const verticalLayout = series.layout === 'vertical';
9
+ const bandColorScale = verticalLayout ? xAxis.colorScale : yAxis.colorScale;
10
+ const valueColorScale = verticalLayout ? yAxis.colorScale : xAxis.colorScale;
11
+ const bandValues = verticalLayout ? xAxis.data : yAxis.data;
12
+ if (valueColorScale) {
13
+ return dataIndex => {
14
+ const value = series.data[dataIndex];
15
+ const color = value === null ? series.color : valueColorScale(value);
16
+ if (color === null) {
17
+ return series.color;
18
+ }
19
+ return color;
20
+ };
21
+ }
22
+ if (bandColorScale) {
23
+ return dataIndex => {
24
+ const value = bandValues[dataIndex];
25
+ const color = value === null ? series.color : bandColorScale(value);
26
+ if (color === null) {
27
+ return series.color;
28
+ }
29
+ return color;
30
+ };
31
+ }
32
+ return () => series.color;
33
+ }
package/CHANGELOG.md CHANGED
@@ -3,6 +3,81 @@
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.3.0
7
+
8
+ _Apr 18, 2024_
9
+
10
+ We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 📄 Support [unknown and estimated row count in server-side pagination](https://mui.com/x/react-data-grid/pagination/#index-based-pagination) (#12490) @MBilalShafi
13
+ - 🎨 Support color scales in Charts (#12490) @alexfauquette
14
+ Add a [`colorMap` configuration](https://mui.com/x/react-charts/styling/#values-color) to an axis, and the chart will use it to select colors.
15
+ Each impacted chart ([bar charts](https://mui.com/x/react-charts/bars/#color-scale), [line charts](https://mui.com/x/react-charts/lines/#color-scale), [scatter charts](https://mui.com/x/react-charts/scatter/#color-scale)) has a dedicated section explaining how this color map is impacting it.
16
+
17
+ <img src="https://github.com/mui/mui-x/assets/45398769/f0066606-3486-4c4e-b3be-7fdd56d763c3" alt="scatter chart with gradient along y-axis" />
18
+
19
+ - 🌍 Improve Danish (da-DK) locale on the Data Grid
20
+ - 🐞 Bugfixes
21
+ - 📚 Documentation improvements
22
+
23
+ ### Data Grid
24
+
25
+ #### `@mui/x-data-grid@7.3.0`
26
+
27
+ - [DataGrid] Fix calling `onCellEditStop` on error (#12747) @sai6855
28
+ - [DataGrid] Fix column resize (#12792) @romgrk
29
+ - [DataGrid] Fix column separators (#12808) @romgrk
30
+ - [DataGrid] Limit panel width to not exceed screen width (#12799) @cherniavskii
31
+ - [DataGrid] Support advanced server-side pagination use cases (#12474) @MBilalShafi
32
+ - [DataGrid] Support state export and restore on grid density (#12671) @MBilalShafi
33
+ - [l10n] Improve Danish (da-DK) locale (#12784) @EmilBahnsen
34
+
35
+ #### `@mui/x-data-grid-pro@7.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
36
+
37
+ Same changes as in `@mui/x-data-grid@7.3.0`, plus:
38
+
39
+ - [DataGridPro] Implement header filter height (#12666) @romgrk
40
+
41
+ #### `@mui/x-data-grid-premium@7.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
42
+
43
+ Same changes as in `@mui/x-data-grid-pro@7.3.0`.
44
+
45
+ ### Charts
46
+
47
+ #### Breaking change
48
+
49
+ A typo fix:
50
+
51
+ ```diff
52
+ - ContinuouseScaleName
53
+ + ContinuousScaleName
54
+ ```
55
+
56
+ #### `@mui/x-charts@7.3.0`
57
+
58
+ - [charts] Add `dataIndex` to series `valueFormatter` (#12745) @JCQuintas
59
+ - [charts] Add color scale (#12490) @alexfauquette
60
+ - [charts] Do not document the usage of `DEFAULT_X_AXIS_KEY` and `DEFAULT_Y_AXIS_KEY` (#12780) @alexfauquette
61
+ - [charts] Export more utils (#12744) @alexfauquette
62
+ - [charts] Fix passing slot props down to `PieArcLabel` (#12806) @JCQuintas
63
+
64
+ ### Tree View
65
+
66
+ #### `@mui/x-tree-view@7.3.0`
67
+
68
+ - [TreeView] Support `defaultMuiPrevented` on the `onFocus` prop of the root slot (#12813) @flaviendelangle
69
+
70
+ ### Docs
71
+
72
+ - [docs] Add grid cell display example to the migration guide (#12793) @romgrk
73
+ - [docs] Use charts classes objects (#12781) @alexfauquette
74
+ - [docs] Fix layout shift on demos (#12816) @zanivan
75
+ - [test] Increase timeout for test that sometimes fail on `DateTimeRangePicker` (#12786) @LukasTy
76
+
77
+ ### Core
78
+
79
+ - [docs-infra] Prepare infra to document charts interfaces (#12653) @alexfauquette
80
+
6
81
  ## 7.2.0
7
82
 
8
83
  _Apr 12, 2024_
@@ -3058,6 +3133,56 @@ Here is an example of the renaming for the `<ChartsTooltip />` component.
3058
3133
  - [core] Update release instructions as per v7 configuration (#10962) @MBilalShafi
3059
3134
  - [license] Correctly throw errors (#10924) @oliviertassinari
3060
3135
 
3136
+ ## 6.19.11
3137
+
3138
+ _Apr 18, 2024_
3139
+
3140
+ We'd like to offer a big thanks to the 1 contributor who made this release possible. Here are some highlights ✨:
3141
+
3142
+ - 🐞 Bugfixes
3143
+
3144
+ ### Data Grid
3145
+
3146
+ #### `@mui/x-data-grid@6.19.11`
3147
+
3148
+ - [DataGrid] Fix virtualization memory leak (#12812) @romgrk
3149
+
3150
+ #### `@mui/x-data-grid-pro@6.19.11` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
3151
+
3152
+ Same changes as in `@mui/x-data-grid@6.19.11`.
3153
+
3154
+ #### `@mui/x-data-grid-premium@6.19.11` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
3155
+
3156
+ Same changes as in `@mui/x-data-grid-pro@6.19.11`.
3157
+
3158
+ ## 6.19.10
3159
+
3160
+ _Apr 12, 2024_
3161
+
3162
+ We'd like to offer a big thanks to the 2 contributors who made this release possible. Here are some highlights ✨:
3163
+
3164
+ - 🐞 Bugfixes
3165
+ - 📚 Documentation improvements
3166
+
3167
+ ### Data Grid
3168
+
3169
+ #### `@mui/x-data-grid@6.19.10`
3170
+
3171
+ - [DataGrid] Do not escape double quotes when copying to clipboard (#12734) @cherniavskii
3172
+ - [DataGrid] Fix bug in suspense (#12754) @cherniavskii
3173
+
3174
+ #### `@mui/x-data-grid-pro@6.19.10` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
3175
+
3176
+ Same changes as in `@mui/x-data-grid@6.19.10`.
3177
+
3178
+ #### `@mui/x-data-grid-premium@6.19.10` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
3179
+
3180
+ Same changes as in `@mui/x-data-grid-pro@6.19.10`.
3181
+
3182
+ ### Core
3183
+
3184
+ - [core] Update the docs release source branch (#12685) @LukasTy
3185
+
3061
3186
  ## 6.19.9
3062
3187
 
3063
3188
  _Apr 5, 2024_
@@ -15,6 +15,7 @@ var _useReducedMotion = require("../hooks/useReducedMotion");
15
15
  var _ChartsSurface = require("../ChartsSurface");
16
16
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
17
17
  var _HighlightProvider = require("../context/HighlightProvider");
18
+ var _ChartsAxesGradients = require("../internals/components/ChartsAxesGradients");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
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); }
20
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; }
@@ -53,7 +54,7 @@ const ChartContainer = exports.ChartContainer = /*#__PURE__*/React.forwardRef(fu
53
54
  dataset: dataset,
54
55
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_InteractionProvider.InteractionProvider, {
55
56
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_HighlightProvider.HighlightProvider, {
56
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsSurface.ChartsSurface, {
57
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsSurface.ChartsSurface, {
57
58
  width: width,
58
59
  height: height,
59
60
  ref: handleRef,
@@ -61,7 +62,7 @@ const ChartContainer = exports.ChartContainer = /*#__PURE__*/React.forwardRef(fu
61
62
  title: title,
62
63
  desc: desc,
63
64
  disableAxisListener: disableAxisListener,
64
- children: children
65
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxesGradients.ChartsAxesGradients, {}), children]
65
66
  })
66
67
  })
67
68
  })
@@ -128,11 +129,26 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
128
129
  width: _propTypes.default.number.isRequired,
129
130
  /**
130
131
  * The configuration of the x-axes.
131
- * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
132
+ * If not provided, a default axis config is used.
132
133
  */
133
134
  xAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
134
135
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
135
136
  classes: _propTypes.default.object,
137
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
138
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
139
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
140
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
141
+ type: _propTypes.default.oneOf(['continuous']).isRequired
142
+ }), _propTypes.default.shape({
143
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
144
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
145
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
146
+ }), _propTypes.default.shape({
147
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
148
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
149
+ unknownColor: _propTypes.default.string,
150
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
151
+ })]),
136
152
  data: _propTypes.default.array,
137
153
  dataKey: _propTypes.default.string,
138
154
  disableLine: _propTypes.default.bool,
@@ -165,11 +181,26 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
165
181
  })),
166
182
  /**
167
183
  * The configuration of the y-axes.
168
- * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
184
+ * If not provided, a default axis config is used.
169
185
  */
170
186
  yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
171
187
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
172
188
  classes: _propTypes.default.object,
189
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
190
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
191
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
192
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
193
+ type: _propTypes.default.oneOf(['continuous']).isRequired
194
+ }), _propTypes.default.shape({
195
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
196
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
197
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
198
+ }), _propTypes.default.shape({
199
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
200
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
201
+ unknownColor: _propTypes.default.string,
202
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
203
+ })]),
173
204
  data: _propTypes.default.array,
174
205
  dataKey: _propTypes.default.string,
175
206
  disableLine: _propTypes.default.bool,
@@ -14,12 +14,12 @@ var _ChartsYAxis = require("../ChartsYAxis");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
15
  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); }
16
16
  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; }
17
- const getAxisId = propsValue => {
17
+ const getAxisId = (propsValue, defaultAxisId) => {
18
18
  if (propsValue == null) {
19
19
  return null;
20
20
  }
21
21
  if (typeof propsValue === 'object') {
22
- return propsValue.axisId ?? null;
22
+ return propsValue.axisId ?? defaultAxisId ?? null;
23
23
  }
24
24
  return propsValue;
25
25
  };
@@ -63,8 +63,8 @@ function ChartsAxis(props) {
63
63
 
64
64
  const leftId = getAxisId(leftAxis === undefined ? yAxisIds[0] : leftAxis);
65
65
  const bottomId = getAxisId(bottomAxis === undefined ? xAxisIds[0] : bottomAxis);
66
- const topId = getAxisId(topAxis);
67
- const rightId = getAxisId(rightAxis);
66
+ const topId = getAxisId(topAxis, xAxisIds[0]);
67
+ const rightId = getAxisId(rightAxis, yAxisIds[0]);
68
68
  if (topId !== null && !xAxis[topId]) {
69
69
  throw Error([`MUI X Charts: id used for top axis "${topId}" is not defined.`, `Available ids are: ${xAxisIds.join(', ')}.`].join('\n'));
70
70
  }
@@ -8,7 +8,7 @@ exports.ChartsClipPath = ChartsClipPath;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _DrawingProvider = require("../context/DrawingProvider");
11
+ var _useDrawingArea = require("../hooks/useDrawingArea");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  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); }
14
14
  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,7 +27,7 @@ function ChartsClipPath(props) {
27
27
  top,
28
28
  width,
29
29
  height
30
- } = React.useContext(_DrawingProvider.DrawingContext);
30
+ } = (0, _useDrawingArea.useDrawingArea)();
31
31
  const offset = (0, _extends2.default)({
32
32
  top: 0,
33
33
  right: 0,
@@ -11,11 +11,11 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _utils = require("@mui/base/utils");
12
12
  var _utils2 = require("@mui/utils");
13
13
  var _styles = require("@mui/material/styles");
14
- var _DrawingProvider = require("../context/DrawingProvider");
15
14
  var _utils3 = require("./utils");
16
15
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
17
16
  var _chartsLegendClasses = require("./chartsLegendClasses");
18
17
  var _DefaultChartsLegend = require("./DefaultChartsLegend");
18
+ var _hooks = require("../hooks");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
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
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; }
@@ -55,7 +55,7 @@ function ChartsLegend(inProps) {
55
55
  const classes = useUtilityClasses((0, _extends2.default)({}, props, {
56
56
  theme
57
57
  }));
58
- const drawingArea = React.useContext(_DrawingProvider.DrawingContext);
58
+ const drawingArea = (0, _hooks.useDrawingArea)();
59
59
  const series = React.useContext(_SeriesContextProvider.SeriesContext);
60
60
  const seriesToDisplay = (0, _utils3.getSeriesToDisplay)(series);
61
61
  const ChartLegendRender = slots?.legend ?? _DefaultChartsLegend.DefaultChartsLegend;
@@ -4,6 +4,9 @@ import { AxisInteractionData } from '../context/InteractionProvider';
4
4
  import { ChartSeriesDefaultized, ChartSeriesType } from '../models/seriesType/config';
5
5
  import { AxisDefaultized } from '../models/axis';
6
6
  import { ChartsTooltipClasses } from './chartsTooltipClasses';
7
+ type ChartSeriesDefaultizedWithColorGetter = ChartSeriesDefaultized<ChartSeriesType> & {
8
+ getColor: (dataIndex: number) => string;
9
+ };
7
10
  export type ChartsAxisContentProps = {
8
11
  /**
9
12
  * Data identifying the triggered axis.
@@ -12,7 +15,7 @@ export type ChartsAxisContentProps = {
12
15
  /**
13
16
  * The series linked to the triggered axis.
14
17
  */
15
- series: ChartSeriesDefaultized<ChartSeriesType>[];
18
+ series: ChartSeriesDefaultizedWithColorGetter[];
16
19
  /**
17
20
  * The properties of the triggered axis.
18
21
  */
@@ -13,6 +13,7 @@ var _SeriesContextProvider = require("../context/SeriesContextProvider");
13
13
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
14
14
  var _DefaultChartsAxisTooltipContent = require("./DefaultChartsAxisTooltipContent");
15
15
  var _utils2 = require("./utils");
16
+ var _colorGetter = _interopRequireDefault(require("../internals/colorGetter"));
16
17
  var _jsxRuntime = require("react/jsx-runtime");
17
18
  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); }
18
19
  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; }
@@ -42,12 +43,16 @@ function ChartsAxisTooltipContent(props) {
42
43
  const item = series[seriesType].series[seriesId];
43
44
  const axisKey = isXaxis ? item.xAxisKey : item.yAxisKey;
44
45
  if (axisKey === undefined || axisKey === USED_AXIS_ID) {
45
- rep.push(series[seriesType].series[seriesId]);
46
+ const seriesToAdd = series[seriesType].series[seriesId];
47
+ const color = (0, _colorGetter.default)(seriesToAdd, xAxis[seriesToAdd.xAxisKey ?? xAxisIds[0]], yAxis[seriesToAdd.yAxisKey ?? yAxisIds[0]]);
48
+ rep.push((0, _extends2.default)({}, seriesToAdd, {
49
+ getColor: color
50
+ }));
46
51
  }
47
52
  });
48
53
  });
49
54
  return rep;
50
- }, [USED_AXIS_ID, isXaxis, series]);
55
+ }, [USED_AXIS_ID, isXaxis, series, xAxis, xAxisIds, yAxis, yAxisIds]);
51
56
  const relevantAxis = React.useMemo(() => {
52
57
  return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID];
53
58
  }, [USED_AXIS_ID, isXaxis, xAxis, yAxis]);
@@ -16,6 +16,12 @@ export type ChartsItemContentProps<T extends ChartSeriesType = ChartSeriesType>
16
16
  * Override or extend the styles applied to the component.
17
17
  */
18
18
  classes: ChartsTooltipClasses;
19
+ /**
20
+ * Get the color of the item with index `dataIndex`.
21
+ * @param {number} dataIndex The data index of the item.
22
+ * @returns {string} The color to display.
23
+ */
24
+ getColor: (dataIndex: number) => string;
19
25
  sx?: SxProps<Theme>;
20
26
  };
21
27
  declare function ChartsItemTooltipContent<T extends ChartSeriesType>(props: {
@@ -11,6 +11,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _utils = require("@mui/base/utils");
12
12
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
13
13
  var _DefaultChartsItemTooltipContent = require("./DefaultChartsItemTooltipContent");
14
+ var _CartesianContextProvider = require("../context/CartesianContextProvider");
15
+ var _colorGetter = _interopRequireDefault(require("../internals/colorGetter"));
14
16
  var _jsxRuntime = require("react/jsx-runtime");
15
17
  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); }
16
18
  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; }
@@ -23,6 +25,16 @@ function ChartsItemTooltipContent(props) {
23
25
  contentProps
24
26
  } = props;
25
27
  const series = React.useContext(_SeriesContextProvider.SeriesContext)[itemData.type].series[itemData.seriesId];
28
+ const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
29
+ const {
30
+ xAxis,
31
+ yAxis,
32
+ xAxisIds,
33
+ yAxisIds
34
+ } = axisData;
35
+ const defaultXAxisId = xAxisIds[0];
36
+ const defaultYAxisId = yAxisIds[0];
37
+ const getColor = series.type === 'pie' ? (0, _colorGetter.default)(series) : (0, _colorGetter.default)(series, xAxis[series.xAxisKey ?? defaultXAxisId], yAxis[series.yAxisKey ?? defaultYAxisId]);
26
38
  const Content = content ?? _DefaultChartsItemTooltipContent.DefaultChartsItemTooltipContent;
27
39
  const chartTooltipContentProps = (0, _utils.useSlotProps)({
28
40
  elementType: Content,
@@ -31,7 +43,8 @@ function ChartsItemTooltipContent(props) {
31
43
  itemData,
32
44
  series,
33
45
  sx,
34
- classes
46
+ classes,
47
+ getColor
35
48
  },
36
49
  ownerState: {}
37
50
  });
@@ -46,6 +59,7 @@ process.env.NODE_ENV !== "production" ? ChartsItemTooltipContent.propTypes = {
46
59
  content: _propTypes.default.elementType,
47
60
  contentProps: _propTypes.default.shape({
48
61
  classes: _propTypes.default.object,
62
+ getColor: _propTypes.default.func,
49
63
  itemData: _propTypes.default.shape({
50
64
  dataIndex: _propTypes.default.number,
51
65
  seriesId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
@@ -49,10 +49,13 @@ function DefaultChartsAxisTooltipContent(props) {
49
49
  id,
50
50
  label,
51
51
  valueFormatter,
52
- data
52
+ data,
53
+ getColor
53
54
  }) => {
54
55
  // @ts-ignore
55
- const formattedValue = valueFormatter(data[dataIndex] ?? null);
56
+ const formattedValue = valueFormatter(data[dataIndex] ?? null, {
57
+ dataIndex
58
+ });
56
59
  if (formattedValue == null) {
57
60
  return null;
58
61
  }
@@ -62,7 +65,7 @@ function DefaultChartsAxisTooltipContent(props) {
62
65
  className: (0, _clsx.default)(classes.markCell, classes.cell),
63
66
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipTable.ChartsTooltipMark, {
64
67
  ownerState: {
65
- color
68
+ color: getColor(dataIndex) ?? color
66
69
  },
67
70
  boxShadow: 1,
68
71
  className: classes.mark
@@ -17,7 +17,8 @@ function DefaultChartsItemTooltipContent(props) {
17
17
  series,
18
18
  itemData,
19
19
  sx,
20
- classes
20
+ classes,
21
+ getColor
21
22
  } = props;
22
23
  if (itemData.dataIndex === undefined || !series.data[itemData.dataIndex]) {
23
24
  return null;
@@ -26,14 +27,16 @@ function DefaultChartsItemTooltipContent(props) {
26
27
  displayedLabel,
27
28
  color
28
29
  } = series.type === 'pie' ? {
29
- color: series.data[itemData.dataIndex].color,
30
+ color: getColor(itemData.dataIndex),
30
31
  displayedLabel: series.data[itemData.dataIndex].label
31
32
  } : {
32
- color: series.color,
33
+ color: getColor(itemData.dataIndex) ?? series.color,
33
34
  displayedLabel: series.label
34
35
  };
35
36
  const value = series.data[itemData.dataIndex];
36
- const formattedValue = series.valueFormatter?.(value);
37
+ const formattedValue = series.valueFormatter?.(value, {
38
+ dataIndex: itemData.dataIndex
39
+ });
37
40
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipTable.ChartsTooltipPaper, {
38
41
  sx: sx,
39
42
  className: classes.root,
@@ -71,6 +74,12 @@ process.env.NODE_ENV !== "production" ? DefaultChartsItemTooltipContent.propType
71
74
  * Override or extend the styles applied to the component.
72
75
  */
73
76
  classes: _propTypes.default.object.isRequired,
77
+ /**
78
+ * Get the color of the item with index `dataIndex`.
79
+ * @param {number} dataIndex The data index of the item.
80
+ * @returns {string} The color to display.
81
+ */
82
+ getColor: _propTypes.default.func.isRequired,
74
83
  /**
75
84
  * The data used to identify the triggered item.
76
85
  */
@@ -23,5 +23,9 @@ export declare function useMouseTracker(): {
23
23
  export type TriggerOptions = 'item' | 'axis' | 'none';
24
24
  export declare function getTooltipHasData(trigger: TriggerOptions, displayedData: null | AxisInteractionData | ItemInteractionData<ChartSeriesType>): boolean;
25
25
  export declare function isCartesianSeriesType(seriesType: string): seriesType is CartesianChartSeriesType;
26
- export declare function isCartesianSeries(series: ChartSeriesDefaultized<ChartSeriesType>): series is ChartSeriesDefaultized<CartesianChartSeriesType>;
26
+ export declare function isCartesianSeries(series: ChartSeriesDefaultized<ChartSeriesType> & {
27
+ getColor: (dataIndex: number) => string;
28
+ }): series is ChartSeriesDefaultized<CartesianChartSeriesType> & {
29
+ getColor: (dataIndex: number) => string;
30
+ };
27
31
  export declare function utcFormatter(v: string | number | Date): string;