Skip to content

Commit 2f6d739

Browse files
committed
Merge remote-tracking branch 'upstream/master' into map-zoom
2 parents b26f92b + 659fced commit 2f6d739

814 files changed

Lines changed: 5744 additions & 4025 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,156 @@
11
# Changelog
22

3+
## 9.6.0
4+
5+
_Jun 18, 2026_
6+
7+
We'd like to extend a big thank you to the 17 contributors who made this release possible. Here are some highlights ✨:
8+
9+
- 📊 New features for the radial bar charts, like percentage min radius and disabling tick labels.
10+
11+
Special thanks go out to these community members for their valuable contributions:
12+
@adamowski10, @Anexus5919, @Morteza-hp, @mustafajw07, @TargiX
13+
14+
The following team members contributed to this release:
15+
@alexfauquette, @arminmeh, @brijeshb42, @cherniavskii, @hasdfa, @Janpot, @JCQuintas, @michelengelen, @noraleonte, @oliviertassinari, @rita-codes, @sai6855
16+
17+
### Data Grid
18+
19+
#### `@mui/x-data-grid@9.6.0`
20+
21+
- [DataGrid] Define `overflowAnchor` style at the right element (#22849) @arminmeh
22+
- [DataGrid] Fix scrollbars not showing up on scroll on iOS (#22832) @cherniavskii
23+
24+
#### `@mui/x-data-grid-pro@9.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
25+
26+
Same changes as in `@mui/x-data-grid@9.6.0`, plus:
27+
28+
- [DataGridPro] Prevent incorrect row range capping on the first page with known `rowCount` (#22808) @michelengelen
29+
30+
#### `@mui/x-data-grid-premium@9.6.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
31+
32+
Same changes as in `@mui/x-data-grid-pro@9.6.0`.
33+
34+
### Date and Time Pickers
35+
36+
#### `@mui/x-date-pickers@9.6.0`
37+
38+
- [pickers] Fix `AdapterMomentHijri.getDaysInMonth` returning the Gregorian month length (#22774) @Anexus5919
39+
- [l10n] Improve Persian (fa-IR) locale (#22454) @Morteza-hp
40+
41+
#### `@mui/x-date-pickers-pro@9.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
42+
43+
Same changes as in `@mui/x-date-pickers@9.6.0`.
44+
45+
### Charts
46+
47+
#### `@mui/x-charts@9.6.0`
48+
49+
- [charts] Add `disableTickLabel` prop to radial axes (#22801) @JCQuintas
50+
- [charts] Fix bug when `min` is in axis domain (#22827) @alexfauquette
51+
- [charts] Fix wheel zoom not centering on cursor position (#22811) @JCQuintas
52+
- [charts] Remove zoom gesture registration from community package (#22753) @sai6855
53+
- [charts] Support percentage values for radial axis `minRadius`/`maxRadius` (#22803) @JCQuintas
54+
- [charts] Support `unknownColor` in color scale (#22813) @alexfauquette
55+
- [charts] Document click listener for scatter composition (#22809) @sai6855
56+
57+
#### `@mui/x-charts-pro@9.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
58+
59+
Same changes as in `@mui/x-charts@9.6.0`.
60+
61+
#### `@mui/x-charts-premium@9.6.0` [![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.6.0`, plus:
64+
65+
- [charts-premium] Add `geoFeatureKey` to transform features identifier (#22848) @alexfauquette
66+
- [charts-premium] Allow to remove Antartica (#22815) @alexfauquette
67+
- [charts-premium] Regenerate `ScatterPlotPremium` `propTypes` (#22829) @rita-codes
68+
- [charts-premium] Support maps tooltip positioned on items (#22648) @alexfauquette
69+
- [docs] Show how to export maps (#22837) @alexfauquette
70+
71+
72+
### Tree View
73+
74+
#### `@mui/x-tree-view@9.6.0`
75+
76+
Internal changes.
77+
78+
#### `@mui/x-tree-view-pro@9.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
79+
80+
Same changes as in `@mui/x-tree-view@9.6.0`.
81+
82+
### Scheduler
83+
84+
#### `@mui/x-scheduler@9.0.0-beta.2`
85+
86+
- [scheduler] Add dispose lifecycle to `SchedulerLazyLoadingPlugin` (#22532) @rita-codes
87+
- [scheduler] Add responsive mobile week view and responsive typography (#22593) @noraleonte
88+
- [scheduler] Add stable weekday token to `recurrenceWeeklyPresetLabel` (#22733) @mustafajw07
89+
- [scheduler] Create accessibility documentation section (#22557) @mustafajw07
90+
- [scheduler] Decouple `MonthViewProps` from day time grid props (#22802) @mustafajw07
91+
- [scheduler] Export missing public scheduler types (#22785) @mustafajw07
92+
- [scheduler] Fix JSDoc defaults and improve public type readability (#22784) @mustafajw07
93+
- [scheduler] Fix `aria-labelledby` on events referencing non-existent header IDs (#22778) @rita-codes
94+
- [scheduler] Move `EventCalendarStyledContext` to internals (#22787) @mustafajw07
95+
- [scheduler] Normalize all-day recurring occurrences to whole days (#22792) @Anexus5919
96+
- [scheduler] Recalculate `DayTimeGrid` `hasScroll` on container resize (#22780) @Anexus5919
97+
- [scheduler] Recompute `nowUpdatedEveryMinute` only on timezone change (#22793) @Anexus5919
98+
- [scheduler] Register auto-scroll once instead of on every render (#22794) @Anexus5919
99+
- [scheduler] Remove duplicate dividers in the day/time grid (#22795) @Anexus5919
100+
- [scheduler] Remove unused `--has-scroll` CSS variable from `DayTimeGrid` (#22799) @Anexus5919
101+
- [scheduler] Remove vestigial async from internal drop handler (#22781) @mustafajw07
102+
- [scheduler] Return a primitive key from the Calendar lazy-loading selector (#22791) @Anexus5919
103+
- [scheduler] Throw on invalid event dates instead of emitting `NaN` timestamps (#22740) @rita-codes
104+
- [scheduler] Tighten `StandaloneEventProps` data typing (#22796) @mustafajw07
105+
- [scheduler] Update feedback banner to say beta instead of alpha (#22804) @rita-codes
106+
- [scheduler] Use `@base-ui` `generateId` for event ids in `createEventModel` (#22788) @rita-codes
107+
- [scheduler] Clear clipboard after pasting a cut event (#22773) @Anexus5919
108+
- [scheduler] Show drag placeholder when re-entering the same position (#22775) @Anexus5919
109+
- [scheduler] Validate missing and duplicate event ids (#22790) @Anexus5919
110+
- [l10n] Improve Polish (pl-PL) locale (#22612) @adamowski10
111+
112+
#### `@mui/x-scheduler-premium@9.0.0-beta.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
113+
114+
Same changes as in `@mui/x-scheduler@9.0.0-beta.2`, plus:
115+
116+
- [scheduler-premium] Expose premium model types through public API (#22798) @mustafajw07
117+
- [scheduler-premium] Remove non-functional `onPreferencesChange` prop from `EventTimelinePremium` (#22777) @rita-codes
118+
- [scheduler-premium] Validate the `FREQ` value in `parseRRule`] (#22786) @rita-codes
119+
120+
### Codemod
121+
122+
#### `@mui/x-codemod@9.6.0`
123+
124+
Internal changes.
125+
126+
### Docs
127+
128+
- [docs] Fix link-check build timeout by disabling serve directory listing (#22836) @Janpot
129+
- [docs] Show how to export maps (#22837) @alexfauquette
130+
- [docs] Add radial bar overview demo with custom overlays (#22776) @JCQuintas
131+
- [docs] Add weather composition demo (#22723) @TargiX
132+
- [docs] Add docs overview gallery and playground (#22488) @hasdfa
133+
- [docs] Clarify 'Scrolling without render gaps' (#22629) @oliviertassinari
134+
- [docs] Fix typo in release instructions (#22864) @brijeshb42
135+
136+
### Core
137+
138+
- [code-infra] Fix lint issues (#22757) @brijeshb42
139+
- [code-infra] Fix remaining Dependabot security alerts (#22761) @Janpot
140+
- [code-infra] Remove release:build from docs:build script (#22852) @brijeshb42
141+
- [code-infra] Unpin `@mui/utils` version to allow dedupe (#22828) @mustafajw07
142+
- [docs-infra] Cap Netlify Next.js build parallelism to avoid OOM (#22847) @Janpot
143+
- [docs-infra] Remove i18n codebase (#22591) @brijeshb42
144+
- [internal] Fix failing React 18 unit tests (#22846) @brijeshb42
145+
146+
### Miscellaneous
147+
148+
- [core] Add remove-proptypes markers to generated `propTypes` (#22850) @JCQuintas
149+
- [core] Bump vitest packages to 4.1.8 to fix browser-test version skew (#22845) @Janpot
150+
- [core] Reduce e2e build concurrency to avoid OOM (#22843) @Janpot
151+
- [core] Strip proptypes from Production bundles (#22750) @sai6855
152+
- [test] Wait for `GridToolbarCustom` rows before screenshot (#22844) @Janpot
153+
3154
## 9.5.0
4155

5156
_Jun 11, 2026_

babel.config.mjs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,6 @@ export default function getBabelConfig(api) {
2626
},
2727
]);
2828

29-
const removePropTypesPlugin = baseConfig.plugins.find(
30-
(p) => p[2] === 'babel-plugin-transform-react-remove-prop-types',
31-
);
32-
if (removePropTypesPlugin) {
33-
removePropTypesPlugin[1] ??= {};
34-
removePropTypesPlugin[1].mode = 'unsafe-wrap';
35-
removePropTypesPlugin[1].ignoreFilenames ??= [];
36-
removePropTypesPlugin[1].ignoreFilenames.push('DataGrid.tsx', 'DataGridPro.tsx');
37-
}
3829
const displayNamePlugin = baseConfig.plugins.find(
3930
(p) => p[2] === '@mui/internal-babel-plugin-display-name',
4031
);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Average trust in others (rating 0-10), population aged 16 and over.
2+
// Source: Eurostat, "Trust in others by sex, age and educational attainment"
3+
// (ilc_pw03), comparing 2013 with 2025.
4+
// Ordered as in the European Correspondent visualization: Central and Eastern
5+
// European trust rose, while it fell across much of the West.
6+
export const europeanYouthTrust = [
7+
{ country: 'Croatia', trust2025: 6.6, trust2013: 5.1 },
8+
{ country: 'Romania', trust2025: 7.5, trust2013: 6.4 },
9+
{ country: 'Poland', trust2025: 6.9, trust2013: 6.0 },
10+
{ country: 'Slovakia', trust2025: 6.1, trust2013: 5.8 },
11+
{ country: 'Ireland', trust2025: 6.7, trust2013: 6.4 },
12+
{ country: 'Italy', trust2025: 6.1, trust2013: 5.7 },
13+
{ country: 'Latvia', trust2025: 6.1, trust2013: 6.5 },
14+
{ country: 'Belgium', trust2025: 6.2, trust2013: 5.7 },
15+
{ country: 'Serbia', trust2025: 5.5, trust2013: 4.2 },
16+
{ country: 'Spain', trust2025: 6.2, trust2013: 6.3 },
17+
{ country: 'Finland', trust2025: 7.0, trust2013: 7.4 },
18+
{ country: 'Luxembourg', trust2025: 5.6, trust2013: 5.5 },
19+
{ country: 'Netherlands', trust2025: 6.7, trust2013: 6.9 },
20+
{ country: 'Bulgaria', trust2025: 5.4, trust2013: 4.2 },
21+
{ country: 'Czechia', trust2025: 5.3, trust2013: 5.3 },
22+
{ country: 'Greece', trust2025: 5.1, trust2013: 5.3 },
23+
{ country: 'Germany', trust2025: 5.6, trust2013: 5.5 },
24+
{ country: 'Estonia', trust2025: 5.3, trust2013: 5.8 },
25+
{ country: 'Hungary', trust2025: 5.3, trust2013: 5.3 },
26+
{ country: 'Portugal', trust2025: 5.5, trust2013: 5.3 },
27+
{ country: 'Norway', trust2025: 6.0, trust2013: 7.3 },
28+
{ country: 'Austria', trust2025: 5.4, trust2013: 5.8 },
29+
{ country: 'Denmark', trust2025: 5.7, trust2013: 8.3 },
30+
{ country: 'Lithuania', trust2025: 4.4, trust2013: 6.1 },
31+
{ country: 'Malta', trust2025: 5.0, trust2013: 6.2 },
32+
{ country: 'Sweden', trust2025: 5.6, trust2013: 6.8 },
33+
{ country: 'Slovenia', trust2025: 4.6, trust2013: 6.5 },
34+
{ country: 'Cyprus', trust2025: 3.5, trust2013: 4.5 },
35+
{ country: 'Türkiye', trust2025: 3.3, trust2013: 4.5 },
36+
{ country: 'France', trust2025: 4.0, trust2013: 5.0 },
37+
];
38+
39+
// Eurostat EU27 (2020 composition) average for 2025.
40+
export const euAverageTrust2025 = 5.8;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Average trust in others (rating 0-10), population aged 16 and over.
2+
// Source: Eurostat, "Trust in others by sex, age and educational attainment"
3+
// (ilc_pw03), comparing 2013 with 2025.
4+
// Ordered as in the European Correspondent visualization: Central and Eastern
5+
// European trust rose, while it fell across much of the West.
6+
export const europeanYouthTrust = [
7+
{ country: 'Croatia', trust2025: 6.6, trust2013: 5.1 },
8+
{ country: 'Romania', trust2025: 7.5, trust2013: 6.4 },
9+
{ country: 'Poland', trust2025: 6.9, trust2013: 6.0 },
10+
{ country: 'Slovakia', trust2025: 6.1, trust2013: 5.8 },
11+
{ country: 'Ireland', trust2025: 6.7, trust2013: 6.4 },
12+
{ country: 'Italy', trust2025: 6.1, trust2013: 5.7 },
13+
{ country: 'Latvia', trust2025: 6.1, trust2013: 6.5 },
14+
{ country: 'Belgium', trust2025: 6.2, trust2013: 5.7 },
15+
{ country: 'Serbia', trust2025: 5.5, trust2013: 4.2 },
16+
{ country: 'Spain', trust2025: 6.2, trust2013: 6.3 },
17+
{ country: 'Finland', trust2025: 7.0, trust2013: 7.4 },
18+
{ country: 'Luxembourg', trust2025: 5.6, trust2013: 5.5 },
19+
{ country: 'Netherlands', trust2025: 6.7, trust2013: 6.9 },
20+
{ country: 'Bulgaria', trust2025: 5.4, trust2013: 4.2 },
21+
{ country: 'Czechia', trust2025: 5.3, trust2013: 5.3 },
22+
{ country: 'Greece', trust2025: 5.1, trust2013: 5.3 },
23+
{ country: 'Germany', trust2025: 5.6, trust2013: 5.5 },
24+
{ country: 'Estonia', trust2025: 5.3, trust2013: 5.8 },
25+
{ country: 'Hungary', trust2025: 5.3, trust2013: 5.3 },
26+
{ country: 'Portugal', trust2025: 5.5, trust2013: 5.3 },
27+
{ country: 'Norway', trust2025: 6.0, trust2013: 7.3 },
28+
{ country: 'Austria', trust2025: 5.4, trust2013: 5.8 },
29+
{ country: 'Denmark', trust2025: 5.7, trust2013: 8.3 },
30+
{ country: 'Lithuania', trust2025: 4.4, trust2013: 6.1 },
31+
{ country: 'Malta', trust2025: 5.0, trust2013: 6.2 },
32+
{ country: 'Sweden', trust2025: 5.6, trust2013: 6.8 },
33+
{ country: 'Slovenia', trust2025: 4.6, trust2013: 6.5 },
34+
{ country: 'Cyprus', trust2025: 3.5, trust2013: 4.5 },
35+
{ country: 'Türkiye', trust2025: 3.3, trust2013: 4.5 },
36+
{ country: 'France', trust2025: 4.0, trust2013: 5.0 },
37+
];
38+
39+
// Eurostat EU27 (2020 composition) average for 2025.
40+
export const euAverageTrust2025 = 5.8;

docs/data/charts/map/ColorScaleMapShape.js

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,39 @@ const data = Object.keys(countryData).map((code) => ({
3131

3232
export default function ColorScaleMapShape() {
3333
const [colorMap, setColorMap] = React.useState('continuous');
34+
const [unknownShape, setUnknownShape] = React.useState('color');
3435

3536
return (
3637
<Stack spacing={2} sx={{ width: '100%', maxWidth: 800 }}>
37-
<ToggleButtonGroup
38-
color="primary"
39-
size="small"
40-
exclusive
41-
value={colorMap}
42-
onChange={(_, value) => value && setColorMap(value)}
43-
aria-label="color map"
38+
<Stack
39+
direction={{ xs: 'column', md: 'row' }}
40+
spacing={{ xs: 1, md: 0 }}
41+
sx={{ alignItems: 'center', justifyContent: 'space-between' }}
4442
>
45-
<ToggleButton value="continuous">continuous</ToggleButton>
46-
<ToggleButton value="piecewise">piecewise</ToggleButton>
47-
</ToggleButtonGroup>
43+
<ToggleButtonGroup
44+
color="primary"
45+
size="small"
46+
exclusive
47+
value={colorMap}
48+
onChange={(_, value) => value && setColorMap(value)}
49+
aria-label="color map"
50+
>
51+
<ToggleButton value="continuous">continuous</ToggleButton>
52+
<ToggleButton value="piecewise">piecewise</ToggleButton>
53+
</ToggleButtonGroup>
54+
<ToggleButtonGroup
55+
color="primary"
56+
size="small"
57+
exclusive
58+
value={unknownShape}
59+
onChange={(_, value) => value && setUnknownShape(value)}
60+
aria-label="unknown shape"
61+
>
62+
<ToggleButton value="color">unknown Color</ToggleButton>
63+
<ToggleButton value="geoData">Geo Data</ToggleButton>
64+
<ToggleButton value="none">none</ToggleButton>
65+
</ToggleButtonGroup>
66+
</Stack>
4867
<Typography variant="body2" component="h6" sx={{ textAlign: 'end' }}>
4968
Share of the population using the Internet in 2020
5069
</Typography>
@@ -74,17 +93,21 @@ export default function ColorScaleMapShape() {
7493
min: 0,
7594
max: 100,
7695
color: ['#e3f2fd', '#0d47a1'],
96+
unknownColor: unknownShape === 'color' ? 'gray' : undefined,
7797
}
7898
: {
7999
type: 'piecewise',
80100
thresholds: [25, 50, 75],
81101
colors: [0.25, 0.5, 0.75, 1].map(interpolateBlues),
102+
unknownColor: unknownShape === 'color' ? 'gray' : undefined,
82103
},
83104
},
84105
]}
85106
>
86107
<ChartsSurface>
87-
<GeoDataPlot fill="#f5f5f5" stroke="#bdbdbd" />
108+
{unknownShape === 'geoData' && (
109+
<GeoDataPlot fill="#f5f5f5" stroke="#bdbdbd" />
110+
)}
88111
<MapShapePlot stroke="#fff" strokeWidth={0.3} />
89112
</ChartsSurface>
90113
<ChartsTooltip trigger="item" />

0 commit comments

Comments
 (0)