Skip to content

Commit e7d5d2b

Browse files
Merge branch 'master' into premium-server-side
2 parents 77c9df4 + 7d147b9 commit e7d5d2b

File tree

53 files changed

+947
-610
lines changed

Some content is hidden

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

53 files changed

+947
-610
lines changed

CHANGELOG.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,96 @@
55
All notable changes to this project will be documented in this file.
66
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
77

8+
## 8.3.1
9+
10+
_May 14, 2025_
11+
12+
We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
13+
14+
- 🌍 Improve Norwegian Bokmål (nb-NO) locale on the Data Grid
15+
- 🌍 Improve Korean (ko-KR) locale on the Data Grid and Pickers
16+
- 📚 Documentation improvements
17+
- 🐞 Bugfixes
18+
19+
Special thanks go out to the community members for their valuable contributions:
20+
@100pearlcent, @htollefsen, @JanPretzel, @sai6855.
21+
Following are all team members who have contributed to this release:
22+
@bernardobelchior, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @MBilalShafi, @oliviertassinari, @prakhargupta1.
23+
24+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
25+
26+
### Data Grid
27+
28+
#### `@mui/[email protected]`
29+
30+
- [DataGrid] Add `reason` param for `onRowSelectionModelChange` callback (#17545) @sai6855
31+
- [DataGrid] Fix `renderContext` calculation loop (#17779) @cherniavskii
32+
- [DataGrid] Fix column spanning jump on scroll (#17759) @cherniavskii
33+
- [DataGrid] Fix material augmentation not working (#17761) @cherniavskii
34+
- [DataGrid] Use arguments selector for checkbox props (#17683) @MBilalShafi
35+
- [l10n] Improve Norwegian Bokmål (nb-NO) locale (#17766) @htollefsen
36+
- [l10n] Improve Korean (ko-KR) locale (#17484) @100pearlcent
37+
38+
#### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
39+
40+
Same changes as in `@mui/[email protected]`.
41+
42+
#### `@mui/[email protected]` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
43+
44+
Same changes as in `@mui/[email protected]`, plus:
45+
46+
- [DataGridPremium] Fix aggregation label not being used in pivot panel (#17760) @cherniavskii
47+
48+
### Date and Time Pickers
49+
50+
#### `@mui/[email protected]`
51+
52+
- [fields] Add notch to the field outlined when the label is manually shrank (#17620) @flaviendelangle
53+
- [l10n] Improve Korean (ko-KR) locale (#17484) @100pearlcent
54+
55+
#### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
56+
57+
Same changes as in `@mui/[email protected]`.
58+
59+
### Charts
60+
61+
#### `@mui/[email protected]`
62+
63+
- [charts] Fix infinite tick number when zoom range is zero (#17750) @bernardobelchior
64+
- [charts] Improve tick rendering performance (#17755) @bernardobelchior
65+
66+
#### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
67+
68+
Same changes as in `@mui/[email protected]`, plus:
69+
70+
- [charts-pro] Fix ESM build issue with Vite (#17774) @bernardobelchior
71+
- [charts-pro] Add benchmark for zoomed in scatter chart (#17756) @bernardobelchior
72+
73+
### Tree View
74+
75+
#### `@mui/[email protected]`
76+
77+
Internal changes.
78+
79+
#### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
80+
81+
Same changes as in `@mui/[email protected]`.
82+
83+
### Docs
84+
85+
- [docs] Fix 301 to Next.js docs for license @oliviertassinari
86+
- [docs] Fix AI assistant API URL (#17745) @oliviertassinari
87+
- [docs] Fix heading structure in README @oliviertassinari
88+
- [docs] Fix translation keys documentation (#17811) @JanPretzel
89+
- [docs] Improve CHANGELOG format @oliviertassinari
90+
91+
### Core
92+
93+
- [core] Apply YAML convention, blank line only at top level @oliviertassinari
94+
- [code-infra] Fix dynamic import missing extensions (#17767) @Janpot
95+
- [code-infra] Replace `mocha` with `vitest` for browser & jsdom tests (#14508) @JCQuintas
96+
- [scheduler] Create the package and setup a private doc page (#17239) @flaviendelangle
97+
898
## 8.3.0
999

10100
_May 8, 2025_

docs/data/data-grid/localization/data.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,15 @@
171171
"languageTag": "ko-KR",
172172
"importName": "koKR",
173173
"localeName": "Korean",
174-
"missingKeysCount": 59,
174+
"missingKeysCount": 3,
175175
"totalKeysCount": 191,
176176
"githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/koKR.ts"
177177
},
178178
{
179179
"languageTag": "nb-NO",
180180
"importName": "nbNO",
181181
"localeName": "Norwegian (Bokmål)",
182-
"missingKeysCount": 71,
182+
"missingKeysCount": 61,
183183
"totalKeysCount": 191,
184184
"githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/nbNO.ts"
185185
},

docs/data/data-grid/localization/localization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ The default locale of MUI X is English (United States). If you want to use othe
99
You can use the `localeText` prop to pass in your own text and translations.
1010
You can find all the translation keys supported in [the source](https://github.com/mui/mui-x/blob/-/packages/x-data-grid/src/constants/localeTextConstants.ts)
1111
in the GitHub repository.
12-
In the following example, the labels of the density selector are customized.
12+
In the following example, the label of the quick filter placeholder is customized.
1313

1414
{{"demo": "CustomLocaleTextGrid.js", "bg": "inline"}}
1515

docs/data/introduction/licensing/licensing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ This method is required if your codebase is "source-available" (to hide the lice
231231
:::
232232

233233
The license key is validated on the server and client-side so you must expose the environment variable to the browser.
234-
To do this, you need to prefix the environment variables with `NEXT_PUBLIC_` as explained in the [Next.js documentation](https://nextjs.org/docs/app/building-your-application/configuring/environment-variables#bundling-environment-variables-for-the-browser):
234+
To do this, you need to prefix the environment variables with `NEXT_PUBLIC_` as explained in the [Next.js documentation](https://nextjs.org/docs/app/guides/environment-variables#bundling-environment-variables-for-the-browser):
235235

236236
```tsx title="app/layout.tsx"
237237
'use client';
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import * as React from 'react';
2+
import Box from '@mui/material/Box';
3+
import Stack from '@mui/material/Stack';
4+
import Button from '@mui/material/Button';
5+
import { RichTreeView } from '@mui/x-tree-view/RichTreeView';
6+
import { useTreeViewApiRef } from '@mui/x-tree-view/hooks';
7+
8+
export default function ApiMethodSetEditedItem() {
9+
const [items, setItems] = React.useState([
10+
{ id: '1', label: 'Jane Doe', editable: true },
11+
]);
12+
const apiRef = useTreeViewApiRef();
13+
14+
const handleAddFolder = () => {
15+
const newId = String(items.length + 1);
16+
const newItem = { id: newId, label: '', editable: true };
17+
18+
setItems((prev) => [...prev, newItem]);
19+
20+
requestAnimationFrame(() => {
21+
apiRef.current.setEditedItem(newId);
22+
});
23+
};
24+
25+
const handleItemLabelChange = (itemId, newLabel) => {
26+
setItems((prevItems) =>
27+
prevItems.map((item) =>
28+
item.id === itemId ? { ...item, label: newLabel } : item,
29+
),
30+
);
31+
};
32+
33+
return (
34+
<Stack spacing={2}>
35+
<Stack spacing={2} direction="row">
36+
<Button onClick={handleAddFolder}>+ Add Folder</Button>
37+
</Stack>
38+
<Box sx={{ minHeight: 352, minWidth: 260 }}>
39+
<RichTreeView
40+
items={items}
41+
apiRef={apiRef}
42+
isItemEditable={(item) => item.editable}
43+
onItemLabelChange={handleItemLabelChange}
44+
/>
45+
</Box>
46+
</Stack>
47+
);
48+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import * as React from 'react';
2+
import Box from '@mui/material/Box';
3+
import Stack from '@mui/material/Stack';
4+
import Button from '@mui/material/Button';
5+
import { RichTreeView } from '@mui/x-tree-view/RichTreeView';
6+
import { useTreeViewApiRef } from '@mui/x-tree-view/hooks';
7+
8+
export default function ApiMethodSetEditedItem() {
9+
const [items, setItems] = React.useState([
10+
{ id: '1', label: 'Jane Doe', editable: true },
11+
]);
12+
const apiRef = useTreeViewApiRef();
13+
14+
const handleAddFolder = () => {
15+
const newId = String(items.length + 1);
16+
const newItem = { id: newId, label: '', editable: true };
17+
18+
setItems((prev) => [...prev, newItem]);
19+
20+
requestAnimationFrame(() => {
21+
apiRef.current!.setEditedItem(newId);
22+
});
23+
};
24+
25+
const handleItemLabelChange = (itemId: string, newLabel: string) => {
26+
setItems((prevItems) =>
27+
prevItems.map((item) =>
28+
item.id === itemId ? { ...item, label: newLabel } : item,
29+
),
30+
);
31+
};
32+
33+
return (
34+
<Stack spacing={2}>
35+
<Stack spacing={2} direction="row">
36+
<Button onClick={handleAddFolder}>+ Add Folder</Button>
37+
</Stack>
38+
<Box sx={{ minHeight: 352, minWidth: 260 }}>
39+
<RichTreeView
40+
items={items}
41+
apiRef={apiRef}
42+
isItemEditable={(item) => item.editable}
43+
onItemLabelChange={handleItemLabelChange}
44+
/>
45+
</Box>
46+
</Stack>
47+
);
48+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<Stack spacing={2} direction="row">
2+
<Button onClick={handleAddFolder}>+ Add Folder</Button>
3+
</Stack>
4+
<Box sx={{ minHeight: 352, minWidth: 260 }}>
5+
<RichTreeView
6+
items={items}
7+
apiRef={apiRef}
8+
isItemEditable={(item) => item.editable}
9+
onItemLabelChange={handleItemLabelChange}
10+
/>
11+
</Box>

docs/data/tree-view/rich-tree-view/editing/editing.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,28 @@ Use the `updateItemLabel()` API method to imperatively update the label of an it
8989

9090
```ts
9191
apiRef.current.updateItemLabel(
92-
// The id of the item to to update
92+
// The id of the item to update
9393
itemId,
94-
// The new label of the item.
94+
// The new label of the item
9595
newLabel,
9696
);
9797
```
9898

9999
{{"demo": "ApiMethodUpdateItemLabel.js"}}
100100

101+
### Change edition mode of an item
102+
103+
Use the `setEditedItem()` API method to set which item is being edited.
104+
105+
```ts
106+
apiRef.current.setEditedItem(
107+
// The id of the item to edit, or `null` to exit editing mode
108+
itemId,
109+
);
110+
```
111+
112+
{{"demo": "ApiMethodSetEditedItem.js"}}
113+
101114
## Editing lazy loaded children
102115

103116
To store the updated item labels on your server use the `onItemLabelChange` callback function.

docs/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
"@mui/x-tree-view": "workspace:*",
4747
"@mui/x-tree-view-pro": "workspace:*",
4848
"@react-spring/web": "^9.7.5",
49-
"@tanstack/query-core": "^5.75.0",
50-
"@tanstack/react-query": "^5.75.2",
49+
"@tanstack/query-core": "^5.76.0",
50+
"@tanstack/react-query": "^5.76.1",
5151
"ast-types": "^0.14.2",
5252
"autoprefixer": "^10.4.21",
5353
"babel-plugin-module-resolver": "^5.0.2",
@@ -84,15 +84,15 @@
8484
"react": "^19.0.0",
8585
"react-docgen": "^5.4.3",
8686
"react-dom": "^19.0.0",
87-
"react-hook-form": "^7.56.2",
88-
"react-router": "^7.5.3",
87+
"react-hook-form": "^7.56.3",
88+
"react-router": "^7.6.0",
8989
"react-runner": "^1.0.5",
9090
"react-simple-code-editor": "^0.14.1",
9191
"recast": "^0.23.9",
9292
"rifm": "0.12.1",
9393
"rimraf": "^6.0.1",
9494
"rxjs": "^7.8.2",
95-
"styled-components": "^6.1.17",
95+
"styled-components": "^6.1.18",
9696
"stylis": "^4.3.6",
9797
"stylis-plugin-rtl": "^2.1.1",
9898
"webpack-bundle-analyzer": "^4.10.2"

docs/pages/x/api/tree-view/rich-tree-view-pro.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"apiRef": {
44
"type": {
55
"name": "shape",
6-
"description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, getParentId: func, setIsItemDisabled: func, setItemExpansion: func, setItemSelection: func, updateItemLabel: func } }"
6+
"description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, getParentId: func, setEditedItem: func, setIsItemDisabled: func, setItemExpansion: func, setItemSelection: func, updateItemLabel: func } }"
77
}
88
},
99
"canMoveItemToNewPosition": {

docs/pages/x/api/tree-view/rich-tree-view.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"apiRef": {
44
"type": {
55
"name": "shape",
6-
"description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, getParentId: func, setIsItemDisabled: func, setItemExpansion: func, setItemSelection: func, updateItemLabel: func } }"
6+
"description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, getParentId: func, setEditedItem: func, setIsItemDisabled: func, setItemExpansion: func, setItemSelection: func, updateItemLabel: func } }"
77
}
88
},
99
"checkboxSelection": { "type": { "name": "bool" }, "default": "false" },

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "8.3.0",
2+
"version": "8.3.1",
33
"private": true,
44
"scripts": {
55
"preinstall": "npx only-allow pnpm",
@@ -102,17 +102,17 @@
102102
"@types/karma": "^6.3.9",
103103
"@types/lodash": "^4.17.16",
104104
"@types/mocha": "^10.0.10",
105-
"@types/node": "^22.15.3",
105+
"@types/node": "^22.15.18",
106106
"@types/react": "^19.0.12",
107107
"@types/react-dom": "^19.0.4",
108108
"@types/requestidlecallback": "^0.3.7",
109109
"@types/sinon": "^17.0.4",
110110
"@types/yargs": "^17.0.33",
111-
"@typescript-eslint/eslint-plugin": "^8.31.1",
112-
"@typescript-eslint/parser": "^8.31.1",
113-
"@vitejs/plugin-react": "^4.3.2",
114-
"@vitest/browser": "^3.1.2",
115-
"@vitest/coverage-v8": "^3.1.2",
111+
"@typescript-eslint/eslint-plugin": "^8.32.1",
112+
"@typescript-eslint/parser": "^8.32.1",
113+
"@vitejs/plugin-react": "^4.4.1",
114+
"@vitest/browser": "^3.1.3",
115+
"@vitest/coverage-v8": "^3.1.3",
116116
"@vvago/vale": "^3.11.2",
117117
"autoprefixer": "^10.4.21",
118118
"axe-core": "4.10.3",
@@ -134,23 +134,23 @@
134134
"danger": "^13.0.4",
135135
"date-fns-jalali-v2": "npm:[email protected]",
136136
"date-fns-v2": "npm:[email protected]",
137-
"esbuild": "^0.25.3",
137+
"esbuild": "^0.25.4",
138138
"eslint": "^8.57.1",
139139
"eslint-config-airbnb": "^19.0.4",
140140
"eslint-config-airbnb-base": "^15.0.0",
141-
"eslint-config-prettier": "^10.1.2",
141+
"eslint-config-prettier": "^10.1.5",
142142
"eslint-import-resolver-webpack": "^0.13.10",
143143
"eslint-plugin-filenames": "^1.3.2",
144144
"eslint-plugin-import": "^2.31.0",
145-
"eslint-plugin-jsdoc": "^50.6.11",
145+
"eslint-plugin-jsdoc": "^50.6.14",
146146
"eslint-plugin-jsx-a11y": "^6.10.2",
147147
"eslint-plugin-material-ui": "workspace:^",
148148
"eslint-plugin-mocha": "^10.5.0",
149-
"eslint-plugin-prettier": "^5.2.6",
149+
"eslint-plugin-prettier": "^5.4.0",
150150
"eslint-plugin-react": "^7.37.5",
151151
"eslint-plugin-react-compiler": "19.0.0-beta-ebf51a3-20250411",
152152
"eslint-plugin-react-hooks": "^5.2.0",
153-
"eslint-plugin-testing-library": "^7.1.1",
153+
"eslint-plugin-testing-library": "^7.2.0",
154154
"fast-glob": "^3.3.3",
155155
"format-util": "^1.0.5",
156156
"fs-extra": "^11.3.0",
@@ -192,8 +192,8 @@
192192
"typescript": "^5.8.3",
193193
"unist-util-visit": "^5.0.0",
194194
"util": "^0.12.5",
195-
"vite": "^6.3.4",
196-
"vitest": "3.1.2",
195+
"vite": "^6.3.5",
196+
"vitest": "3.1.3",
197197
"vitest-fail-on-console": "^0.7.1",
198198
"webpack": "^5.99.7",
199199
"webpack-bundle-analyzer": "^4.10.2",

0 commit comments

Comments
 (0)