@mui/x-charts 9.2.0 → 9.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.
- package/BarChart/BarChart.js +10 -10
- package/BarChart/BarChart.mjs +10 -10
- package/BarChart/seriesConfig/bar/getColor.js +7 -53
- package/BarChart/seriesConfig/bar/getColor.mjs +7 -53
- package/BarChart/seriesConfig/bar/seriesProcessor.js +3 -1
- package/BarChart/seriesConfig/bar/seriesProcessor.mjs +3 -1
- package/BarChart/seriesConfig/bar/tooltip.js +4 -27
- package/BarChart/seriesConfig/bar/tooltip.mjs +4 -27
- package/CHANGELOG.md +118 -0
- package/ChartsContainer/ChartsContainer.js +9 -9
- package/ChartsContainer/ChartsContainer.mjs +9 -9
- package/ChartsLabel/ChartsLabelMark.js +0 -2
- package/ChartsLabel/ChartsLabelMark.mjs +0 -2
- package/ChartsLabel/labelMarkClasses.d.mts +0 -1
- package/ChartsLabel/labelMarkClasses.d.ts +0 -1
- package/ChartsLabel/labelMarkClasses.js +1 -2
- package/ChartsLabel/labelMarkClasses.mjs +2 -2
- package/ChartsLayerContainer/ChartsLayerContainer.js +36 -30
- package/ChartsLayerContainer/ChartsLayerContainer.mjs +36 -30
- package/ChartsXAxis/ChartsXAxis.js +3 -1
- package/ChartsXAxis/ChartsXAxis.mjs +3 -1
- package/ChartsYAxis/ChartsYAxis.js +3 -1
- package/ChartsYAxis/ChartsYAxis.mjs +3 -1
- package/LineChart/LineChart.js +6 -6
- package/LineChart/LineChart.mjs +6 -6
- package/LineChart/seriesConfig/curveEvaluation.js +12 -1
- package/LineChart/seriesConfig/curveEvaluation.mjs +12 -1
- package/LineChart/seriesConfig/getColor.js +7 -54
- package/LineChart/seriesConfig/getColor.mjs +7 -54
- package/LineChart/seriesConfig/seriesProcessor.d.mts +2 -4
- package/LineChart/seriesConfig/seriesProcessor.d.ts +2 -4
- package/LineChart/seriesConfig/seriesProcessor.js +2 -139
- package/LineChart/seriesConfig/seriesProcessor.mjs +2 -138
- package/LineChart/seriesConfig/tooltip.js +4 -25
- package/LineChart/seriesConfig/tooltip.mjs +4 -25
- package/PieChart/PieChart.js +6 -6
- package/PieChart/PieChart.mjs +6 -6
- package/RadarChart/RadarAxis/useRadarAxis.js +1 -1
- package/RadarChart/RadarAxis/useRadarAxis.mjs +1 -1
- package/RadarChart/RadarChart.js +8 -8
- package/RadarChart/RadarChart.mjs +8 -8
- package/RadarChart/RadarSeriesPlot/RadarSeriesArea.js +3 -1
- package/RadarChart/RadarSeriesPlot/RadarSeriesArea.mjs +3 -1
- package/RadarChart/RadarSeriesPlot/RadarSeriesMarks.js +1 -0
- package/RadarChart/RadarSeriesPlot/RadarSeriesMarks.mjs +1 -0
- package/RadarChart/RadarSeriesPlot/RadarSeriesPlot.js +1 -0
- package/RadarChart/RadarSeriesPlot/RadarSeriesPlot.mjs +1 -0
- package/ScatterChart/ScatterChart.js +11 -11
- package/ScatterChart/ScatterChart.mjs +11 -11
- package/ScatterChart/seriesConfig/tooltip.js +2 -24
- package/ScatterChart/seriesConfig/tooltip.mjs +2 -24
- package/SparkLineChart/SparkLineChart.js +27 -27
- package/SparkLineChart/SparkLineChart.mjs +27 -27
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/internals/components/ChartsAccessibilityProxy/ChartsAccessibilityProxy.js +1 -1
- package/internals/components/ChartsAccessibilityProxy/ChartsAccessibilityProxy.mjs +1 -1
- package/internals/getLineLikeTooltip.d.mts +9 -0
- package/internals/getLineLikeTooltip.d.ts +9 -0
- package/internals/getLineLikeTooltip.js +38 -0
- package/internals/getLineLikeTooltip.mjs +31 -0
- package/internals/index.d.mts +3 -0
- package/internals/index.d.ts +3 -0
- package/internals/index.js +24 -0
- package/internals/index.mjs +3 -0
- package/internals/plugins/corePlugins/useChartSeriesConfig/types/tooltipGetter.types.d.mts +4 -2
- package/internals/plugins/corePlugins/useChartSeriesConfig/types/tooltipGetter.types.d.ts +4 -2
- package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js +3 -0
- package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.mjs +3 -0
- package/internals/processLineLikeSeries.d.mts +6 -0
- package/internals/processLineLikeSeries.d.ts +6 -0
- package/internals/processLineLikeSeries.js +145 -0
- package/internals/processLineLikeSeries.mjs +138 -0
- package/internals/resolveColorProcessor.d.mts +11 -0
- package/internals/resolveColorProcessor.d.ts +11 -0
- package/internals/resolveColorProcessor.js +62 -0
- package/internals/resolveColorProcessor.mjs +56 -0
- package/package.json +3 -3
package/BarChart/BarChart.js
CHANGED
|
@@ -172,11 +172,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
172
172
|
hiddenItems: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({
|
|
173
173
|
dataIndex: _propTypes.default.number,
|
|
174
174
|
seriesId: _propTypes.default.string.isRequired,
|
|
175
|
-
type: _propTypes.default.oneOf(['bar'])
|
|
175
|
+
type: _propTypes.default.oneOf(['bar']).isRequired
|
|
176
176
|
}), _propTypes.default.shape({
|
|
177
177
|
dataIndex: _propTypes.default.number,
|
|
178
178
|
seriesId: _propTypes.default.string.isRequired,
|
|
179
|
-
type: _propTypes.default.oneOf(['bar'])
|
|
179
|
+
type: _propTypes.default.oneOf(['bar'])
|
|
180
180
|
})]).isRequired),
|
|
181
181
|
/**
|
|
182
182
|
* If `true`, the legend is not rendered.
|
|
@@ -196,11 +196,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
196
196
|
*/
|
|
197
197
|
highlightedItem: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
198
198
|
dataIndex: _propTypes.default.number,
|
|
199
|
-
seriesId: _propTypes.default.string.isRequired
|
|
200
|
-
type: _propTypes.default.oneOf(['bar']).isRequired
|
|
199
|
+
seriesId: _propTypes.default.string.isRequired
|
|
201
200
|
}), _propTypes.default.shape({
|
|
202
201
|
dataIndex: _propTypes.default.number,
|
|
203
|
-
seriesId: _propTypes.default.string.isRequired
|
|
202
|
+
seriesId: _propTypes.default.string.isRequired,
|
|
203
|
+
type: _propTypes.default.oneOf(['bar']).isRequired
|
|
204
204
|
})]),
|
|
205
205
|
/**
|
|
206
206
|
* This prop is used to help implement the accessibility logic.
|
|
@@ -231,11 +231,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
231
231
|
initialHiddenItems: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({
|
|
232
232
|
dataIndex: _propTypes.default.number,
|
|
233
233
|
seriesId: _propTypes.default.string.isRequired,
|
|
234
|
-
type: _propTypes.default.oneOf(['bar'])
|
|
234
|
+
type: _propTypes.default.oneOf(['bar']).isRequired
|
|
235
235
|
}), _propTypes.default.shape({
|
|
236
236
|
dataIndex: _propTypes.default.number,
|
|
237
237
|
seriesId: _propTypes.default.string.isRequired,
|
|
238
|
-
type: _propTypes.default.oneOf(['bar'])
|
|
238
|
+
type: _propTypes.default.oneOf(['bar'])
|
|
239
239
|
})]).isRequired),
|
|
240
240
|
/**
|
|
241
241
|
* The direction of the bar elements.
|
|
@@ -365,11 +365,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
365
365
|
*/
|
|
366
366
|
tooltipItem: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
367
367
|
dataIndex: _propTypes.default.number.isRequired,
|
|
368
|
-
seriesId: _propTypes.default.string.isRequired
|
|
369
|
-
type: _propTypes.default.oneOf(['bar']).isRequired
|
|
368
|
+
seriesId: _propTypes.default.string.isRequired
|
|
370
369
|
}), _propTypes.default.shape({
|
|
371
370
|
dataIndex: _propTypes.default.number.isRequired,
|
|
372
|
-
seriesId: _propTypes.default.string.isRequired
|
|
371
|
+
seriesId: _propTypes.default.string.isRequired,
|
|
372
|
+
type: _propTypes.default.oneOf(['bar']).isRequired
|
|
373
373
|
})]),
|
|
374
374
|
/**
|
|
375
375
|
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
package/BarChart/BarChart.mjs
CHANGED
|
@@ -165,11 +165,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
165
165
|
hiddenItems: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({
|
|
166
166
|
dataIndex: PropTypes.number,
|
|
167
167
|
seriesId: PropTypes.string.isRequired,
|
|
168
|
-
type: PropTypes.oneOf(['bar'])
|
|
168
|
+
type: PropTypes.oneOf(['bar']).isRequired
|
|
169
169
|
}), PropTypes.shape({
|
|
170
170
|
dataIndex: PropTypes.number,
|
|
171
171
|
seriesId: PropTypes.string.isRequired,
|
|
172
|
-
type: PropTypes.oneOf(['bar'])
|
|
172
|
+
type: PropTypes.oneOf(['bar'])
|
|
173
173
|
})]).isRequired),
|
|
174
174
|
/**
|
|
175
175
|
* If `true`, the legend is not rendered.
|
|
@@ -189,11 +189,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
189
189
|
*/
|
|
190
190
|
highlightedItem: PropTypes.oneOfType([PropTypes.shape({
|
|
191
191
|
dataIndex: PropTypes.number,
|
|
192
|
-
seriesId: PropTypes.string.isRequired
|
|
193
|
-
type: PropTypes.oneOf(['bar']).isRequired
|
|
192
|
+
seriesId: PropTypes.string.isRequired
|
|
194
193
|
}), PropTypes.shape({
|
|
195
194
|
dataIndex: PropTypes.number,
|
|
196
|
-
seriesId: PropTypes.string.isRequired
|
|
195
|
+
seriesId: PropTypes.string.isRequired,
|
|
196
|
+
type: PropTypes.oneOf(['bar']).isRequired
|
|
197
197
|
})]),
|
|
198
198
|
/**
|
|
199
199
|
* This prop is used to help implement the accessibility logic.
|
|
@@ -224,11 +224,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
224
224
|
initialHiddenItems: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({
|
|
225
225
|
dataIndex: PropTypes.number,
|
|
226
226
|
seriesId: PropTypes.string.isRequired,
|
|
227
|
-
type: PropTypes.oneOf(['bar'])
|
|
227
|
+
type: PropTypes.oneOf(['bar']).isRequired
|
|
228
228
|
}), PropTypes.shape({
|
|
229
229
|
dataIndex: PropTypes.number,
|
|
230
230
|
seriesId: PropTypes.string.isRequired,
|
|
231
|
-
type: PropTypes.oneOf(['bar'])
|
|
231
|
+
type: PropTypes.oneOf(['bar'])
|
|
232
232
|
})]).isRequired),
|
|
233
233
|
/**
|
|
234
234
|
* The direction of the bar elements.
|
|
@@ -358,11 +358,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
358
358
|
*/
|
|
359
359
|
tooltipItem: PropTypes.oneOfType([PropTypes.shape({
|
|
360
360
|
dataIndex: PropTypes.number.isRequired,
|
|
361
|
-
seriesId: PropTypes.string.isRequired
|
|
362
|
-
type: PropTypes.oneOf(['bar']).isRequired
|
|
361
|
+
seriesId: PropTypes.string.isRequired
|
|
363
362
|
}), PropTypes.shape({
|
|
364
363
|
dataIndex: PropTypes.number.isRequired,
|
|
365
|
-
seriesId: PropTypes.string.isRequired
|
|
364
|
+
seriesId: PropTypes.string.isRequired,
|
|
365
|
+
type: PropTypes.oneOf(['bar']).isRequired
|
|
366
366
|
})]),
|
|
367
367
|
/**
|
|
368
368
|
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
@@ -4,60 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _resolveColorProcessor = require("../../../internals/resolveColorProcessor");
|
|
8
8
|
const getColor = (series, xAxis, yAxis) => {
|
|
9
9
|
const verticalLayout = series.layout === 'vertical';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (dataIndex === undefined) {
|
|
17
|
-
return series.color;
|
|
18
|
-
}
|
|
19
|
-
const value = series.data[dataIndex];
|
|
20
|
-
const color = value === null ? getSeriesColor({
|
|
21
|
-
value,
|
|
22
|
-
dataIndex
|
|
23
|
-
}) : valueColorScale(value);
|
|
24
|
-
if (color === null) {
|
|
25
|
-
return getSeriesColor({
|
|
26
|
-
value,
|
|
27
|
-
dataIndex
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return color;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
if (bandColorScale && bandValues) {
|
|
34
|
-
return dataIndex => {
|
|
35
|
-
if (dataIndex === undefined) {
|
|
36
|
-
return series.color;
|
|
37
|
-
}
|
|
38
|
-
const value = bandValues[dataIndex];
|
|
39
|
-
const color = value === null ? getSeriesColor({
|
|
40
|
-
value,
|
|
41
|
-
dataIndex
|
|
42
|
-
}) : bandColorScale(value);
|
|
43
|
-
if (color === null) {
|
|
44
|
-
return getSeriesColor({
|
|
45
|
-
value,
|
|
46
|
-
dataIndex
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return color;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
return dataIndex => {
|
|
53
|
-
if (dataIndex === undefined) {
|
|
54
|
-
return series.color;
|
|
55
|
-
}
|
|
56
|
-
const value = series.data[dataIndex];
|
|
57
|
-
return getSeriesColor({
|
|
58
|
-
value,
|
|
59
|
-
dataIndex
|
|
60
|
-
});
|
|
61
|
-
};
|
|
10
|
+
return (0, _resolveColorProcessor.resolveColorProcessor)({
|
|
11
|
+
series,
|
|
12
|
+
valueColorScale: verticalLayout ? yAxis?.colorScale : xAxis?.colorScale,
|
|
13
|
+
categoryColorScale: verticalLayout ? xAxis?.colorScale : yAxis?.colorScale,
|
|
14
|
+
categoryValues: verticalLayout ? xAxis?.data : yAxis?.data
|
|
15
|
+
});
|
|
62
16
|
};
|
|
63
17
|
var _default = exports.default = getColor;
|
|
@@ -1,57 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveColorProcessor } from "../../../internals/resolveColorProcessor.mjs";
|
|
2
2
|
const getColor = (series, xAxis, yAxis) => {
|
|
3
3
|
const verticalLayout = series.layout === 'vertical';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (dataIndex === undefined) {
|
|
11
|
-
return series.color;
|
|
12
|
-
}
|
|
13
|
-
const value = series.data[dataIndex];
|
|
14
|
-
const color = value === null ? getSeriesColor({
|
|
15
|
-
value,
|
|
16
|
-
dataIndex
|
|
17
|
-
}) : valueColorScale(value);
|
|
18
|
-
if (color === null) {
|
|
19
|
-
return getSeriesColor({
|
|
20
|
-
value,
|
|
21
|
-
dataIndex
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
return color;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
if (bandColorScale && bandValues) {
|
|
28
|
-
return dataIndex => {
|
|
29
|
-
if (dataIndex === undefined) {
|
|
30
|
-
return series.color;
|
|
31
|
-
}
|
|
32
|
-
const value = bandValues[dataIndex];
|
|
33
|
-
const color = value === null ? getSeriesColor({
|
|
34
|
-
value,
|
|
35
|
-
dataIndex
|
|
36
|
-
}) : bandColorScale(value);
|
|
37
|
-
if (color === null) {
|
|
38
|
-
return getSeriesColor({
|
|
39
|
-
value,
|
|
40
|
-
dataIndex
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return color;
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return dataIndex => {
|
|
47
|
-
if (dataIndex === undefined) {
|
|
48
|
-
return series.color;
|
|
49
|
-
}
|
|
50
|
-
const value = series.data[dataIndex];
|
|
51
|
-
return getSeriesColor({
|
|
52
|
-
value,
|
|
53
|
-
dataIndex
|
|
54
|
-
});
|
|
55
|
-
};
|
|
4
|
+
return resolveColorProcessor({
|
|
5
|
+
series,
|
|
6
|
+
valueColorScale: verticalLayout ? yAxis?.colorScale : xAxis?.colorScale,
|
|
7
|
+
categoryColorScale: verticalLayout ? xAxis?.colorScale : yAxis?.colorScale,
|
|
8
|
+
categoryValues: verticalLayout ? xAxis?.data : yAxis?.data
|
|
9
|
+
});
|
|
56
10
|
};
|
|
57
11
|
export default getColor;
|
|
@@ -44,7 +44,9 @@ const seriesProcessor = (params, dataset, isItemVisible) => {
|
|
|
44
44
|
d3Dataset[index][id] = value;
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
|
-
} else if (dataset === undefined) {
|
|
47
|
+
} else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
|
|
48
|
+
// TODO: fix mui/no-guarded-throw
|
|
49
|
+
// eslint-disable-next-line mui/no-guarded-throw
|
|
48
50
|
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Charts: Bar series with id="${id}" has no data. ` + 'The chart cannot render this series without data. ' + 'Provide a data property to the series or use the dataset prop.' : (0, _formatErrorMessage2.default)(33, id));
|
|
49
51
|
}
|
|
50
52
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -37,7 +37,9 @@ const seriesProcessor = (params, dataset, isItemVisible) => {
|
|
|
37
37
|
d3Dataset[index][id] = value;
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
|
-
} else if (dataset === undefined) {
|
|
40
|
+
} else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
|
|
41
|
+
// TODO: fix mui/no-guarded-throw
|
|
42
|
+
// eslint-disable-next-line mui/no-guarded-throw
|
|
41
43
|
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Charts: Bar series with id="${id}" has no data. ` + 'The chart cannot render this series without data. ' + 'Provide a data property to the series or use the dataset prop.' : _formatErrorMessage(33, id));
|
|
42
44
|
}
|
|
43
45
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -4,33 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.axisTooltipGetter = void 0;
|
|
7
|
-
var
|
|
8
|
-
const tooltipGetter = params => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
getColor,
|
|
12
|
-
identifier
|
|
13
|
-
} = params;
|
|
14
|
-
if (!identifier || identifier.dataIndex === undefined) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
const label = (0, _getLabel.getLabel)(series.label, 'tooltip');
|
|
18
|
-
const value = series.data[identifier.dataIndex];
|
|
19
|
-
if (value == null) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
const formattedValue = series.valueFormatter(value, {
|
|
23
|
-
dataIndex: identifier.dataIndex
|
|
24
|
-
});
|
|
25
|
-
return {
|
|
26
|
-
identifier,
|
|
27
|
-
color: getColor(identifier.dataIndex),
|
|
28
|
-
label,
|
|
29
|
-
value,
|
|
30
|
-
formattedValue,
|
|
31
|
-
markType: series.labelMarkType
|
|
32
|
-
};
|
|
33
|
-
};
|
|
7
|
+
var _getLineLikeTooltip = require("../../../internals/getLineLikeTooltip");
|
|
8
|
+
const tooltipGetter = params => (0, _getLineLikeTooltip.getLineLikeTooltip)(params, {
|
|
9
|
+
skipNullValues: true
|
|
10
|
+
});
|
|
34
11
|
const axisTooltipGetter = series => {
|
|
35
12
|
return Object.values(series).map(s => s.layout === 'horizontal' ? {
|
|
36
13
|
direction: 'y',
|
|
@@ -1,30 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const tooltipGetter = params => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
getColor,
|
|
6
|
-
identifier
|
|
7
|
-
} = params;
|
|
8
|
-
if (!identifier || identifier.dataIndex === undefined) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
const label = getLabel(series.label, 'tooltip');
|
|
12
|
-
const value = series.data[identifier.dataIndex];
|
|
13
|
-
if (value == null) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
const formattedValue = series.valueFormatter(value, {
|
|
17
|
-
dataIndex: identifier.dataIndex
|
|
18
|
-
});
|
|
19
|
-
return {
|
|
20
|
-
identifier,
|
|
21
|
-
color: getColor(identifier.dataIndex),
|
|
22
|
-
label,
|
|
23
|
-
value,
|
|
24
|
-
formattedValue,
|
|
25
|
-
markType: series.labelMarkType
|
|
26
|
-
};
|
|
27
|
-
};
|
|
1
|
+
import { getLineLikeTooltip } from "../../../internals/getLineLikeTooltip.mjs";
|
|
2
|
+
const tooltipGetter = params => getLineLikeTooltip(params, {
|
|
3
|
+
skipNullValues: true
|
|
4
|
+
});
|
|
28
5
|
export const axisTooltipGetter = series => {
|
|
29
6
|
return Object.values(series).map(s => s.layout === 'horizontal' ? {
|
|
30
7
|
direction: 'y',
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,123 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.3.0
|
|
4
|
+
|
|
5
|
+
_May 21, 2026_
|
|
6
|
+
|
|
7
|
+
We'd like to extend a big thank you to the 16 contributors who made this release possible. Here are some highlights ✨:
|
|
8
|
+
|
|
9
|
+
- 📆 Refactor Calendar Range drag editing to use Pointer Events instead of drag and touch events combination (#22279)
|
|
10
|
+
- ✨ Apply lazy loading to `EventTimelinePremium` (#22308)
|
|
11
|
+
- 🐞 Bugfixes
|
|
12
|
+
- 📚 Documentation improvements
|
|
13
|
+
- 🌎 Added Norwegian bokmål (nb-NO) locale to the Scheduler
|
|
14
|
+
- 🌎 Improved Swedish (sv-SE) locale on the Data Grid
|
|
15
|
+
|
|
16
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
17
|
+
@Anexus5919, @jvskriubakken, @oscar-b, @rin, @viktormelin
|
|
18
|
+
|
|
19
|
+
The following team members contributed to this release:
|
|
20
|
+
@aemartos, @alexfauquette, @arminmeh, @Janpot, @JCQuintas, @LukasTy, @mj12albert, @oliviertassinari, @rita-codes, @romgrk, @sai6855
|
|
21
|
+
|
|
22
|
+
### Data Grid
|
|
23
|
+
|
|
24
|
+
#### `@mui/x-data-grid@9.3.0`
|
|
25
|
+
|
|
26
|
+
- [DataGrid] Fix scrollbar disappearing after multiple resizes (#22512) @LukasTy
|
|
27
|
+
- [DataGrid] Revert "Add support for pinned columns in `GridVirtualScroller`" (#22467) @oliviertassinari
|
|
28
|
+
- [l10n] Improve Swedish (svSE) locale (#21851) @viktormelin
|
|
29
|
+
|
|
30
|
+
#### `@mui/x-data-grid-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
31
|
+
|
|
32
|
+
Same changes as in `@mui/x-data-grid@9.3.0`.
|
|
33
|
+
|
|
34
|
+
#### `@mui/x-data-grid-premium@9.3.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
35
|
+
|
|
36
|
+
Same changes as in `@mui/x-data-grid-pro@9.3.0`.
|
|
37
|
+
|
|
38
|
+
### Date and Time Pickers
|
|
39
|
+
|
|
40
|
+
#### `@mui/x-date-pickers@9.3.0`
|
|
41
|
+
|
|
42
|
+
- [pickers] Fix disabled state styling for `PickersTextField` standard and filled variants (#22189) @LukasTy
|
|
43
|
+
- [pickers] Fix previous month disabled state calculation (#22524) @mj12albert
|
|
44
|
+
- [pickers] Merge `slotProps.sectionContent` in `PickersInputBase` (#22324) @rin
|
|
45
|
+
|
|
46
|
+
#### `@mui/x-date-pickers-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
47
|
+
|
|
48
|
+
Same changes as in `@mui/x-date-pickers@9.3.0`, plus:
|
|
49
|
+
|
|
50
|
+
- [DateRangeCalendar] Use Pointer Events for drag editing (#22279) @LukasTy
|
|
51
|
+
|
|
52
|
+
### Charts
|
|
53
|
+
|
|
54
|
+
#### `@mui/x-charts@9.3.0`
|
|
55
|
+
|
|
56
|
+
- [charts] Add `data-series` to elements of radar chart (#22523) @alexfauquette
|
|
57
|
+
- [charts] Add environment check for warning messages in axis and radar hooks (#22506) @sai6855
|
|
58
|
+
- [charts] Chart `seriesConfig` deduplication for lines and bars (#22257) @sai6855
|
|
59
|
+
- [charts] Fix highlighted item crash (#22539) @oscar-b
|
|
60
|
+
- [charts] Fix the line and mark class (#22526) @alexfauquette
|
|
61
|
+
- [charts] Fix use of deprecated API in docs (#22469) @oliviertassinari
|
|
62
|
+
- [charts] Improve performance of `evaluateCurveY` function (#22407) @sai6855
|
|
63
|
+
|
|
64
|
+
#### `@mui/x-charts-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
65
|
+
|
|
66
|
+
Same changes as in `@mui/x-charts@9.3.0`.
|
|
67
|
+
|
|
68
|
+
#### `@mui/x-charts-premium@9.3.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
69
|
+
|
|
70
|
+
Same changes as in `@mui/x-charts-pro@9.3.0`, plus:
|
|
71
|
+
|
|
72
|
+
- [charts-premium] Add `closePath` option to the radial line series (#22517) @alexfauquette
|
|
73
|
+
|
|
74
|
+
### Tree View
|
|
75
|
+
|
|
76
|
+
#### `@mui/x-tree-view-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
77
|
+
|
|
78
|
+
Internal changes.
|
|
79
|
+
|
|
80
|
+
### Scheduler
|
|
81
|
+
|
|
82
|
+
#### `@mui/x-scheduler@9.0.0-alpha.7`
|
|
83
|
+
|
|
84
|
+
- [I10n] Add Norwegian bokmål (nb-NO) locale (#22415) @jvskriubakken
|
|
85
|
+
|
|
86
|
+
#### `@mui/x-scheduler-premium@9.0.0-alpha.7` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
87
|
+
|
|
88
|
+
Same changes as in `@mui/x-scheduler@9.0.0-alpha.7`, plus:
|
|
89
|
+
|
|
90
|
+
- [scheduler] Apply lazy loading to `EventTimelinePremium` (#22308) @rita-codes
|
|
91
|
+
- [scheduler] Deduplicate staged ranges within the debounce window (#22476) @Anexus5919
|
|
92
|
+
- [scheduler] Pass full event objects to `dataSource.updateEvents` (#22462) @rita-codes
|
|
93
|
+
|
|
94
|
+
### Docs
|
|
95
|
+
|
|
96
|
+
- [docs] Automatically update supported versions (#21850) @arminmeh
|
|
97
|
+
- [docs] Fix `New` label on bar charts docs (#22473) @oliviertassinari
|
|
98
|
+
- [docs] Improve premium page header for charts (#22474) @oliviertassinari
|
|
99
|
+
- [docs] Sync `README` with licensing/licensing.md in scheduler (#22468) @oliviertassinari
|
|
100
|
+
|
|
101
|
+
### Core
|
|
102
|
+
|
|
103
|
+
- [code-infra] Cover docs overview composites with Argos (#22283) @LukasTy
|
|
104
|
+
- [code-infra] Enable `mui/no-presentation-role` lint rule (#22360) @Janpot
|
|
105
|
+
- [code-infra] Make generated `propTypes` union order deterministic (#22521) @JCQuintas
|
|
106
|
+
- [code-infra] Make screenshots stable across different ordering of the tests (#22449) @Janpot
|
|
107
|
+
- [code-infra] Optimize visual regression testing (#22447) @Janpot
|
|
108
|
+
- [code-infra] Replace markdownlint with remark from code-infra (#22255) @Janpot
|
|
109
|
+
|
|
110
|
+
### Miscellaneous
|
|
111
|
+
|
|
112
|
+
- [virtualizer] Improve `controlled` mode performance (#22123) @romgrk
|
|
113
|
+
- [data-grid-generator] Include `tree-data` params in `useDemoData` cache key (#22456) @Janpot
|
|
114
|
+
- [test] Fix flaky browser tests and optimize (#22431) @Janpot
|
|
115
|
+
- [test] Speed up `test_types` job (#22442) @Janpot
|
|
116
|
+
- [test] Trim ffmpeg install in `test_regressions` (#22459) @Janpot
|
|
117
|
+
- [test] Add WebGL performance benchmarks for charts (#22471) @JCQuintas
|
|
118
|
+
- [test] Expand chart performance benchmarks for charts (#22472) @JCQuintas
|
|
119
|
+
- [x-license] use workspace dep for v9 in cross-major compat tests (#22504) @aemartos
|
|
120
|
+
|
|
3
121
|
## 9.2.0
|
|
4
122
|
|
|
5
123
|
_May 13, 2026_
|
|
@@ -136,11 +136,11 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
136
136
|
hiddenItems: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({
|
|
137
137
|
dataIndex: _propTypes.default.number,
|
|
138
138
|
seriesId: _propTypes.default.string.isRequired,
|
|
139
|
-
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
139
|
+
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter']).isRequired
|
|
140
140
|
}), _propTypes.default.shape({
|
|
141
141
|
dataIndex: _propTypes.default.number,
|
|
142
142
|
seriesId: _propTypes.default.string.isRequired,
|
|
143
|
-
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
143
|
+
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
144
144
|
})]).isRequired),
|
|
145
145
|
/**
|
|
146
146
|
* The controlled axis highlight.
|
|
@@ -197,11 +197,11 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
197
197
|
initialHiddenItems: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({
|
|
198
198
|
dataIndex: _propTypes.default.number,
|
|
199
199
|
seriesId: _propTypes.default.string.isRequired,
|
|
200
|
-
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
200
|
+
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter']).isRequired
|
|
201
201
|
}), _propTypes.default.shape({
|
|
202
202
|
dataIndex: _propTypes.default.number,
|
|
203
203
|
seriesId: _propTypes.default.string.isRequired,
|
|
204
|
-
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
204
|
+
type: _propTypes.default.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
205
205
|
})]).isRequired),
|
|
206
206
|
/**
|
|
207
207
|
* Localized text for chart components.
|
|
@@ -345,11 +345,6 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
345
345
|
*/
|
|
346
346
|
zAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
347
347
|
colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
348
|
-
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
349
|
-
type: _propTypes.default.oneOf(['ordinal']).isRequired,
|
|
350
|
-
unknownColor: _propTypes.default.string,
|
|
351
|
-
values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
|
|
352
|
-
}), _propTypes.default.shape({
|
|
353
348
|
color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
|
|
354
349
|
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
355
350
|
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
@@ -358,6 +353,11 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
358
353
|
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
359
354
|
thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
|
|
360
355
|
type: _propTypes.default.oneOf(['piecewise']).isRequired
|
|
356
|
+
}), _propTypes.default.shape({
|
|
357
|
+
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
358
|
+
type: _propTypes.default.oneOf(['ordinal']).isRequired,
|
|
359
|
+
unknownColor: _propTypes.default.string,
|
|
360
|
+
values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
|
|
361
361
|
})]),
|
|
362
362
|
data: _propTypes.default.array,
|
|
363
363
|
dataKey: _propTypes.default.string,
|
|
@@ -129,11 +129,11 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
129
129
|
hiddenItems: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({
|
|
130
130
|
dataIndex: PropTypes.number,
|
|
131
131
|
seriesId: PropTypes.string.isRequired,
|
|
132
|
-
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
132
|
+
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter']).isRequired
|
|
133
133
|
}), PropTypes.shape({
|
|
134
134
|
dataIndex: PropTypes.number,
|
|
135
135
|
seriesId: PropTypes.string.isRequired,
|
|
136
|
-
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
136
|
+
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
137
137
|
})]).isRequired),
|
|
138
138
|
/**
|
|
139
139
|
* The controlled axis highlight.
|
|
@@ -190,11 +190,11 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
190
190
|
initialHiddenItems: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({
|
|
191
191
|
dataIndex: PropTypes.number,
|
|
192
192
|
seriesId: PropTypes.string.isRequired,
|
|
193
|
-
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
193
|
+
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter']).isRequired
|
|
194
194
|
}), PropTypes.shape({
|
|
195
195
|
dataIndex: PropTypes.number,
|
|
196
196
|
seriesId: PropTypes.string.isRequired,
|
|
197
|
-
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
197
|
+
type: PropTypes.oneOf(['bar', 'line', 'pie', 'radar', 'scatter'])
|
|
198
198
|
})]).isRequired),
|
|
199
199
|
/**
|
|
200
200
|
* Localized text for chart components.
|
|
@@ -338,11 +338,6 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
338
338
|
*/
|
|
339
339
|
zAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
340
340
|
colorMap: PropTypes.oneOfType([PropTypes.shape({
|
|
341
|
-
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
342
|
-
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
343
|
-
unknownColor: PropTypes.string,
|
|
344
|
-
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
345
|
-
}), PropTypes.shape({
|
|
346
341
|
color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
|
|
347
342
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
348
343
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
@@ -351,6 +346,11 @@ process.env.NODE_ENV !== "production" ? ChartsContainer.propTypes = {
|
|
|
351
346
|
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
352
347
|
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
353
348
|
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
349
|
+
}), PropTypes.shape({
|
|
350
|
+
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
351
|
+
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
352
|
+
unknownColor: PropTypes.string,
|
|
353
|
+
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
354
354
|
})]),
|
|
355
355
|
data: PropTypes.array,
|
|
356
356
|
dataKey: PropTypes.string,
|
|
@@ -13,6 +13,5 @@ export interface ChartsLabelMarkClasses {
|
|
|
13
13
|
/** Styles applied to the element with fill={color} attribute. */
|
|
14
14
|
fill: string;
|
|
15
15
|
}
|
|
16
|
-
export declare function getLabelMarkUtilityClass(slot: string): string;
|
|
17
16
|
export declare const labelMarkClasses: ChartsLabelMarkClasses;
|
|
18
17
|
export declare const useUtilityClasses: (props: ChartsLabelMarkProps) => Record<"root" | "fill", string>;
|
|
@@ -13,6 +13,5 @@ export interface ChartsLabelMarkClasses {
|
|
|
13
13
|
/** Styles applied to the element with fill={color} attribute. */
|
|
14
14
|
fill: string;
|
|
15
15
|
}
|
|
16
|
-
export declare function getLabelMarkUtilityClass(slot: string): string;
|
|
17
16
|
export declare const labelMarkClasses: ChartsLabelMarkClasses;
|
|
18
17
|
export declare const useUtilityClasses: (props: ChartsLabelMarkProps) => Record<"root" | "fill", string>;
|
|
@@ -4,7 +4,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.getLabelMarkUtilityClass = getLabelMarkUtilityClass;
|
|
8
7
|
exports.useUtilityClasses = exports.labelMarkClasses = void 0;
|
|
9
8
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
10
9
|
var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
|
|
@@ -18,7 +17,7 @@ const useUtilityClasses = props => {
|
|
|
18
17
|
type
|
|
19
18
|
} = props;
|
|
20
19
|
const slots = {
|
|
21
|
-
root: typeof type === 'function' ? ['root'] : ['root', type],
|
|
20
|
+
root: typeof type === 'function' ? ['root'] : ['root', type === 'line+mark' ? 'lineAndMark' : type],
|
|
22
21
|
fill: ['fill']
|
|
23
22
|
};
|
|
24
23
|
return (0, _composeClasses.default)(slots, getLabelMarkUtilityClass, props.classes);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import composeClasses from '@mui/utils/composeClasses';
|
|
2
2
|
import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
3
3
|
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
4
|
-
|
|
4
|
+
function getLabelMarkUtilityClass(slot) {
|
|
5
5
|
return generateUtilityClass('MuiChartsLabelMark', slot);
|
|
6
6
|
}
|
|
7
7
|
export const labelMarkClasses = generateUtilityClasses('MuiChartsLabelMark', ['root', 'line', 'lineAndMark', 'square', 'circle', 'fill']);
|
|
@@ -10,7 +10,7 @@ export const useUtilityClasses = props => {
|
|
|
10
10
|
type
|
|
11
11
|
} = props;
|
|
12
12
|
const slots = {
|
|
13
|
-
root: typeof type === 'function' ? ['root'] : ['root', type],
|
|
13
|
+
root: typeof type === 'function' ? ['root'] : ['root', type === 'line+mark' ? 'lineAndMark' : type],
|
|
14
14
|
fill: ['fill']
|
|
15
15
|
};
|
|
16
16
|
return composeClasses(slots, getLabelMarkUtilityClass, props.classes);
|