@mui/x-charts-pro 9.10.0 → 9.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,111 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.10.1
4
+
5
+ _Jul 23, 2026_
6
+
7
+ We'd like to extend a big thank you to the 11 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 🦮 Improve accessibility of the Charts and Pickers components.
10
+ - 🐞 Bugfixes
11
+ - 📚 Documentation improvements
12
+
13
+ Special thanks go out to these community members for their valuable contributions:
14
+ @kevincorizi-sbt, @mustafajw07, @SamanPandey-in
15
+
16
+ The following team members contributed to this release:
17
+ @brijeshb42, @hasdfa, @JCQuintas, @LukasTy, @michelengelen, @noraleonte, @rita-codes, @silviuaavram
18
+
19
+ ### Data Grid
20
+
21
+ #### `@mui/x-data-grid@9.10.1`
22
+
23
+ - [data grid] Fix `getColumn` return type not reflecting that it can return undefined (#23165) @JCQuintas
24
+
25
+ #### `@mui/x-data-grid-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
26
+
27
+ Same changes as in `@mui/x-data-grid@9.10.1`.
28
+
29
+ #### `@mui/x-data-grid-premium@9.10.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
30
+
31
+ Same changes as in `@mui/x-data-grid-pro@9.10.1`.
32
+
33
+ ### Date and Time Pickers
34
+
35
+ #### `@mui/x-date-pickers@9.10.1`
36
+
37
+ - [pickers] Fix format placeholder brightness with a start adornment (#23189) @LukasTy
38
+
39
+ #### `@mui/x-date-pickers-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
40
+
41
+ Same changes as in `@mui/x-date-pickers@9.10.1`, plus:
42
+
43
+ - [DateRangePicker] Fix broken active range position underline in single input range fields (#23166) @LukasTy
44
+
45
+ ### Charts
46
+
47
+ #### `@mui/x-charts@9.10.1`
48
+
49
+ - [charts] Fix pie chart disappearing when an arc spans almost the full circle (#23145) @JCQuintas
50
+ - [charts] Set `aria-hidden` on accessibility proxy divs at initialization (#23186) @kevincorizi-sbt
51
+ - [charts] Fix keyboard navigation on series with different lengths (#23182) @JCQuintas
52
+ - [charts] Fix out of bounds keyboard navigation (#23180) @silviuaavram
53
+
54
+ #### `@mui/x-charts-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
55
+
56
+ Same changes as in `@mui/x-charts@9.10.1`, plus:
57
+
58
+ - [charts-pro] Fix highlight shifting on sampled bar charts (#23190) @noraleonte
59
+ - [charts-pro] Sampled band highlight falls back to single-band width for Date/object values (#23024) @SamanPandey-in
60
+
61
+ #### `@mui/x-charts-premium@9.10.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
62
+
63
+ Same changes as in `@mui/x-charts-pro@9.10.1`.
64
+
65
+ ### Tree View
66
+
67
+ #### `@mui/x-tree-view@9.10.1`
68
+
69
+ - [TreeView] Fix selection propagation to exclude disabled items (#23012) @michelengelen
70
+
71
+ #### `@mui/x-tree-view-pro@9.10.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
72
+
73
+ Same changes as in `@mui/x-tree-view@9.10.1`.
74
+
75
+ ### Scheduler
76
+
77
+ #### `@mui/x-scheduler@9.0.0-beta.7`
78
+
79
+ - [scheduler] Polish `EventCalendar` rendering for multi-resource events (#23161) @mustafajw07
80
+ - [scheduler] Responsive header (#22954) @noraleonte
81
+
82
+ #### `@mui/x-scheduler-premium@9.0.0-beta.7` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
83
+
84
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.7`, plus:
85
+
86
+ - [scheduler-premium] Add the dependencies data model (#23117) @rita-codes
87
+ - [scheduler-premium] Dependencies - Render the FS arrow (#23162) @rita-codes
88
+
89
+ ### Codemod
90
+
91
+ #### `@mui/x-codemod@9.10.1`
92
+
93
+ Internal changes.
94
+
95
+ ### Docs
96
+
97
+ - [docs] Fix clearing, layout shift, and prop leak in Pickers demos (#23191) @LukasTy
98
+
99
+ ### Core
100
+
101
+ - [code-infra] Validate working of specific code-infra canary (#23207) @brijeshb42
102
+
103
+ ### Miscellaneous
104
+
105
+ - [chat] Normalize message part link URLs (#23187) @hasdfa
106
+ - [x-chat] Fix object URL leaks for submitted attachments (#23198) @hasdfa
107
+ - [internals] Make disposable types self-contained without `esnext.disposable` lib (#23164) @JCQuintas
108
+
3
109
  ## 9.10.0
4
110
 
5
111
  _Jul 17, 2026_
@@ -20,8 +20,8 @@ var _barSampler = require("../internals/plugins/useChartProSampling/barSampler")
20
20
  var _lineSampler = require("../internals/plugins/useChartProSampling/lineSampler");
21
21
  var _jsxRuntime = require("react/jsx-runtime");
22
22
  const packageInfo = {
23
- releaseDate: "MTc4NDI0NjQwMDAwMA==",
24
- version: "9.10.0",
23
+ releaseDate: "MTc4NDc2NDgwMDAwMA==",
24
+ version: "9.10.1",
25
25
  name: 'x-charts-pro'
26
26
  };
27
27
  // Attach the pro sampling strategies (kept at module scope for a stable identity, so the
@@ -13,8 +13,8 @@ import { barSampler } from "../internals/plugins/useChartProSampling/barSampler.
13
13
  import { lineSampler } from "../internals/plugins/useChartProSampling/lineSampler.mjs";
14
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  const packageInfo = {
16
- releaseDate: "MTc4NDI0NjQwMDAwMA==",
17
- version: "9.10.0",
16
+ releaseDate: "MTc4NDc2NDgwMDAwMA==",
17
+ version: "9.10.1",
18
18
  name: 'x-charts-pro'
19
19
  };
20
20
  // Attach the pro sampling strategies (kept at module scope for a stable identity, so the
@@ -37,6 +37,11 @@ function FocusedFunnelSection(props) {
37
37
  return null;
38
38
  }
39
39
  const funnelSeries = allFunnelSeries[focusedItem.seriesId];
40
+ // Focus may reference a removed series or section.
41
+ const sectionPoints = funnelSeries?.dataPoints[focusedItem.dataIndex];
42
+ if (!sectionPoints) {
43
+ return null;
44
+ }
40
45
  const xAxisId = funnelSeries.xAxisId ?? xAxisIds[0];
41
46
  const yAxisId = funnelSeries.yAxisId ?? yAxisIds[0];
42
47
  const xScale = xAxis[xAxisId].scale;
@@ -57,7 +62,7 @@ function FocusedFunnelSection(props) {
57
62
  min: minPoint,
58
63
  max: maxPoint
59
64
  });
60
- const bandPoints = curve({}).processPoints(funnelSeries.dataPoints[focusedItem.dataIndex].map(v => ({
65
+ const bandPoints = curve({}).processPoints(sectionPoints.map(v => ({
61
66
  x: xPosition(v.x, focusedItem.dataIndex, v.stackOffset, v.useBandWidth),
62
67
  y: yPosition(v.y, focusedItem.dataIndex, v.stackOffset, v.useBandWidth)
63
68
  })));
@@ -30,6 +30,11 @@ export function FocusedFunnelSection(props) {
30
30
  return null;
31
31
  }
32
32
  const funnelSeries = allFunnelSeries[focusedItem.seriesId];
33
+ // Focus may reference a removed series or section.
34
+ const sectionPoints = funnelSeries?.dataPoints[focusedItem.dataIndex];
35
+ if (!sectionPoints) {
36
+ return null;
37
+ }
33
38
  const xAxisId = funnelSeries.xAxisId ?? xAxisIds[0];
34
39
  const yAxisId = funnelSeries.yAxisId ?? yAxisIds[0];
35
40
  const xScale = xAxis[xAxisId].scale;
@@ -50,7 +55,7 @@ export function FocusedFunnelSection(props) {
50
55
  min: minPoint,
51
56
  max: maxPoint
52
57
  });
53
- const bandPoints = curve({}).processPoints(funnelSeries.dataPoints[focusedItem.dataIndex].map(v => ({
58
+ const bandPoints = curve({}).processPoints(sectionPoints.map(v => ({
54
59
  x: xPosition(v.x, focusedItem.dataIndex, v.stackOffset, v.useBandWidth),
55
60
  y: yPosition(v.y, focusedItem.dataIndex, v.stackOffset, v.useBandWidth)
56
61
  })));
@@ -17,6 +17,9 @@ const tooltipGetter = params => {
17
17
  return null;
18
18
  }
19
19
  const point = series.data[identifier.dataIndex];
20
+ if (point == null) {
21
+ return null;
22
+ }
20
23
  const label = (0, _internals.getLabel)(point.label, 'tooltip');
21
24
  const value = (0, _extends2.default)({}, point, {
22
25
  label
@@ -10,6 +10,9 @@ const tooltipGetter = params => {
10
10
  return null;
11
11
  }
12
12
  const point = series.data[identifier.dataIndex];
13
+ if (point == null) {
14
+ return null;
15
+ }
13
16
  const label = getLabel(point.label, 'tooltip');
14
17
  const value = _extends({}, point, {
15
18
  label
@@ -28,8 +28,12 @@ const selectorTooltipItemPosition = exports.selectorTooltipItemPosition = (0, _s
28
28
  const gap = 0;
29
29
  const xPosition = (0, _coordinateMapper.createPositionGetter)(xAxis.scale, isHorizontal, gap, baseScaleConfig.data);
30
30
  const yPosition = (0, _coordinateMapper.createPositionGetter)(yAxis.scale, !isHorizontal, gap, baseScaleConfig.data);
31
- const allY = itemSeries.dataPoints[identifier.dataIndex].map(v => yPosition(v.y, identifier.dataIndex, v.stackOffset, v.useBandWidth));
32
- const allX = itemSeries.dataPoints[identifier.dataIndex].map(v => xPosition(v.x, identifier.dataIndex, v.stackOffset, v.useBandWidth));
31
+ const sectionPoints = itemSeries.dataPoints[identifier.dataIndex];
32
+ if (sectionPoints === undefined) {
33
+ return null;
34
+ }
35
+ const allY = sectionPoints.map(v => yPosition(v.y, identifier.dataIndex, v.stackOffset, v.useBandWidth));
36
+ const allX = sectionPoints.map(v => xPosition(v.x, identifier.dataIndex, v.stackOffset, v.useBandWidth));
33
37
  const [x0, x1] = (0, _internals.findMinMax)(allX);
34
38
  const [y0, y1] = (0, _internals.findMinMax)(allY);
35
39
  switch (placement) {
@@ -22,8 +22,12 @@ export const selectorTooltipItemPosition = createSelectorMemoized(selectorCharts
22
22
  const gap = 0;
23
23
  const xPosition = createPositionGetter(xAxis.scale, isHorizontal, gap, baseScaleConfig.data);
24
24
  const yPosition = createPositionGetter(yAxis.scale, !isHorizontal, gap, baseScaleConfig.data);
25
- const allY = itemSeries.dataPoints[identifier.dataIndex].map(v => yPosition(v.y, identifier.dataIndex, v.stackOffset, v.useBandWidth));
26
- const allX = itemSeries.dataPoints[identifier.dataIndex].map(v => xPosition(v.x, identifier.dataIndex, v.stackOffset, v.useBandWidth));
25
+ const sectionPoints = itemSeries.dataPoints[identifier.dataIndex];
26
+ if (sectionPoints === undefined) {
27
+ return null;
28
+ }
29
+ const allY = sectionPoints.map(v => yPosition(v.y, identifier.dataIndex, v.stackOffset, v.useBandWidth));
30
+ const allX = sectionPoints.map(v => xPosition(v.x, identifier.dataIndex, v.stackOffset, v.useBandWidth));
27
31
  const [x0, x1] = findMinMax(allX);
28
32
  const [y0, y1] = findMinMax(allY);
29
33
  switch (placement) {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts-pro v9.10.0
2
+ * @mui/x-charts-pro v9.10.1
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts-pro v9.10.0
2
+ * @mui/x-charts-pro v9.10.1
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-charts-pro",
3
- "version": "9.10.0",
3
+ "version": "9.10.1",
4
4
  "author": "MUI Team",
5
5
  "description": "The Pro plan edition of the MUI X Charts components.",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -31,11 +31,11 @@
31
31
  "@mui/utils": "^9.2.0",
32
32
  "clsx": "^2.1.1",
33
33
  "prop-types": "^15.8.1",
34
- "@mui/x-charts": "^9.10.0",
35
34
  "@mui/x-charts-vendor": "^9.4.0",
35
+ "@mui/x-license": "^9.10.1",
36
36
  "@mui/x-internal-gestures": "^9.10.0",
37
- "@mui/x-license": "^9.10.0",
38
- "@mui/x-internals": "^9.10.0"
37
+ "@mui/x-internals": "^9.10.1",
38
+ "@mui/x-charts": "^9.10.1"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@emotion/react": "^11.9.0",