Skip to content

Commit a589b3a

Browse files
committed
Merge remote-tracking branch 'upstream/master' into radar-chart
2 parents a95fddc + 0736d31 commit a589b3a

File tree

463 files changed

+5077
-3896
lines changed

Some content is hidden

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

463 files changed

+5077
-3896
lines changed

.circleci/config.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ jobs:
253253
test_browser:
254254
<<: *default-job
255255
docker:
256-
- image: mcr.microsoft.com/playwright:v1.49.1-noble
256+
- image: mcr.microsoft.com/playwright:v1.50.0-noble
257257
steps:
258258
- checkout
259259
- install_js:
@@ -285,7 +285,7 @@ jobs:
285285
test_e2e:
286286
<<: *default-job
287287
docker:
288-
- image: mcr.microsoft.com/playwright:v1.49.1-noble
288+
- image: mcr.microsoft.com/playwright:v1.50.0-noble
289289
steps:
290290
- checkout
291291
- install_js:
@@ -297,7 +297,7 @@ jobs:
297297
test_e2e_website:
298298
<<: *default-job
299299
docker:
300-
- image: mcr.microsoft.com/playwright:v1.49.1-noble
300+
- image: mcr.microsoft.com/playwright:v1.50.0-noble
301301
steps:
302302
- checkout
303303
- install_js:
@@ -310,7 +310,7 @@ jobs:
310310
test_regressions:
311311
<<: *default-job
312312
docker:
313-
- image: mcr.microsoft.com/playwright:v1.49.1-noble
313+
- image: mcr.microsoft.com/playwright:v1.50.0-noble
314314
steps:
315315
- checkout
316316
- install_js:

docs/data/charts/bars/BorderRadius.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ const chartSettingsH = {
7878
slotProps: {
7979
legend: {
8080
direction: 'horizontal',
81-
position: { vertical: 'bottom', horizontal: 'middle' },
81+
position: { vertical: 'bottom', horizontal: 'center' },
8282
},
8383
},
8484
};

docs/data/charts/bars/BorderRadius.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const chartSettingsH: Partial<BarChartProps> = {
8080
slotProps: {
8181
legend: {
8282
direction: 'horizontal',
83-
position: { vertical: 'bottom', horizontal: 'middle' },
83+
position: { vertical: 'bottom', horizontal: 'center' },
8484
},
8585
},
8686
};

docs/data/charts/highlighting/ControlledHighlight.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default function ControlledHighlight() {
3232

3333
const handleHighLightedItem = (event) => {
3434
setHighLightedItem((prev) => ({
35+
seriesId: 'A',
3536
...prev,
3637
dataIndex: Number(event.target.value),
3738
}));

docs/data/charts/highlighting/ControlledHighlight.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export default function ControlledHighlight() {
3333

3434
const handleHighLightedItem = (event: any) => {
3535
setHighLightedItem((prev) => ({
36+
seriesId: 'A',
3637
...prev,
3738
dataIndex: Number(event.target.value),
3839
}));

docs/data/charts/legend/LegendPositionNoSnap.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ export default function LegendPositionNoSnap() {
4242
{
4343
propName: 'horizontal',
4444
knob: 'select',
45-
defaultValue: 'middle',
46-
options: ['left', 'middle', 'right'],
45+
defaultValue: 'center',
46+
options: ['start', 'center', 'end'],
4747
},
4848
{
4949
propName: 'itemsNumber',
@@ -54,7 +54,7 @@ export default function LegendPositionNoSnap() {
5454
},
5555
]}
5656
renderDemo={(
57-
/** @type {{ itemsNumber: number | undefined; direction: "horizontal" | "vertical"; vertical: "top" | "middle" | "bottom"; horizontal: "left" | "middle" | "right"; }} */
57+
/** @type {{ itemsNumber: number | undefined; direction: "horizontal" | "vertical"; vertical: "top" | "middle" | "bottom"; horizontal: "start" | "center" | "end"; }} */
5858
props,
5959
) => (
6060
<PieChart
@@ -74,7 +74,7 @@ export default function LegendPositionNoSnap() {
7474
/>
7575
)}
7676
getCode={(
77-
/** @type {{props:{ itemsNumber: number | undefined; direction: "horizontal" | "vertical"; vertical: "top" | "middle" | "bottom"; horizontal: "left" | "middle" | "right";}}} */
77+
/** @type {{props:{ itemsNumber: number | undefined; direction: "horizontal" | "vertical"; vertical: "top" | "middle" | "bottom"; horizontal: "start" | "center" | "end";}}} */
7878
{ props },
7979
) => {
8080
return `

docs/data/charts/scatter/scatter.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ components: ScatterChart, ScatterChartPro, ScatterPlot, ChartsVoronoiHandler, Ch
1111
## Basics
1212

1313
Scatter chart series should contain a `data` property containing an array of objects.
14-
Those objects require `x`, `y`, and `id` properties.
14+
Those objects require the `x` and `y` properties.
15+
With an optional `id` property if more optimization is needed.
1516

1617
{{"demo": "BasicScatter.js"}}
1718

@@ -22,8 +23,8 @@ It accepts an array of objects such as `dataset={[{a: 1, b: 32, c: 873}, {a: 2,
2223

2324
You can reuse this data when defining the series.
2425
The scatter series work a bit differently than in other charts.
25-
You need to specify the `datasetKeys` properties which is an object that requires `x`, `y`, and `id` keys.
26-
With an optional `z` key if needed.
26+
You need to specify the `datasetKeys` properties which is an object that requires the `x` and `y` keys.
27+
With an optional `id` and `z` keys if needed.
2728

2829
{{"demo": "ScatterDataset.js"}}
2930

docs/data/charts/styling/ColorTemplate.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const legendPlacement = {
3030
legend: {
3131
position: {
3232
vertical: 'middle',
33-
horizontal: 'right',
33+
horizontal: 'end',
3434
},
3535
direction: 'vertical',
3636
},

docs/data/charts/styling/ColorTemplate.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const legendPlacement: Partial<ScatterChartProps> = {
3434
legend: {
3535
position: {
3636
vertical: 'middle',
37-
horizontal: 'right',
37+
horizontal: 'end',
3838
},
3939
direction: 'vertical',
4040
},

docs/data/data-grid/api-object/AccessDisabledColumnFeatures.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ export default function AccessDisabledColumnFeatures() {
3838

3939
return (
4040
<div style={{ width: '100%' }}>
41-
<Button onClick={() => apiRef.current.sortColumn('firstName', 'asc')}>
41+
<Button onClick={() => apiRef.current?.sortColumn('firstName', 'asc')}>
4242
Sort by ASC
4343
</Button>
44-
<Button onClick={() => apiRef.current.sortColumn('firstName', 'desc')}>
44+
<Button onClick={() => apiRef.current?.sortColumn('firstName', 'desc')}>
4545
Sort by DESC
4646
</Button>
47-
<Button onClick={() => apiRef.current.sortColumn('firstName', null)}>
47+
<Button onClick={() => apiRef.current?.sortColumn('firstName', null)}>
4848
Remove sort
4949
</Button>
5050
<Box sx={{ height: 400 }}>

docs/data/data-grid/api-object/AccessDisabledColumnFeatures.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ export default function AccessDisabledColumnFeatures() {
3838

3939
return (
4040
<div style={{ width: '100%' }}>
41-
<Button onClick={() => apiRef.current.sortColumn('firstName', 'asc')}>
41+
<Button onClick={() => apiRef.current?.sortColumn('firstName', 'asc')}>
4242
Sort by ASC
4343
</Button>
44-
<Button onClick={() => apiRef.current.sortColumn('firstName', 'desc')}>
44+
<Button onClick={() => apiRef.current?.sortColumn('firstName', 'desc')}>
4545
Sort by DESC
4646
</Button>
47-
<Button onClick={() => apiRef.current.sortColumn('firstName', null)}>
47+
<Button onClick={() => apiRef.current?.sortColumn('firstName', null)}>
4848
Remove sort
4949
</Button>
5050
<Box sx={{ height: 400 }}>

docs/data/data-grid/api-object/AccessDisabledColumnFeatures.tsx.preview

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
<Button onClick={() => apiRef.current.sortColumn('firstName', 'asc')}>
1+
<Button onClick={() => apiRef.current?.sortColumn('firstName', 'asc')}>
22
Sort by ASC
33
</Button>
4-
<Button onClick={() => apiRef.current.sortColumn('firstName', 'desc')}>
4+
<Button onClick={() => apiRef.current?.sortColumn('firstName', 'desc')}>
55
Sort by DESC
66
</Button>
7-
<Button onClick={() => apiRef.current.sortColumn('firstName', null)}>
7+
<Button onClick={() => apiRef.current?.sortColumn('firstName', null)}>
88
Remove sort
99
</Button>
1010
<Box sx={{ height: 400 }}>

docs/data/data-grid/api-object/UseGridApiRef.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default function UseGridApiRef() {
1919

2020
const apiRef = useGridApiRef();
2121

22-
const handleGoToPage1 = () => apiRef.current.setPage(1);
22+
const handleGoToPage1 = () => apiRef.current?.setPage(1);
2323

2424
return (
2525
<Stack spacing={1} sx={{ width: '100%' }} alignItems="flex-start">

docs/data/data-grid/api-object/UseGridApiRef.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default function UseGridApiRef() {
1919

2020
const apiRef = useGridApiRef();
2121

22-
const handleGoToPage1 = () => apiRef.current.setPage(1);
22+
const handleGoToPage1 = () => apiRef.current?.setPage(1);
2323

2424
return (
2525
<Stack spacing={1} sx={{ width: '100%' }} alignItems="flex-start">

docs/data/data-grid/cell-selection/CellSelectionFormulaField.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default function CellSelectionFormulaField() {
2929
const updates = [];
3030

3131
Object.entries(cellSelectionModel).forEach(([id, fields]) => {
32-
const updatedRow = { ...apiRef.current.getRow(id) };
32+
const updatedRow = { ...apiRef.current?.getRow(id) };
3333

3434
Object.entries(fields).forEach(([field, isSelected]) => {
3535
if (isSelected) {
@@ -40,10 +40,14 @@ export default function CellSelectionFormulaField() {
4040
updates.push(updatedRow);
4141
});
4242

43-
apiRef.current.updateRows(updates);
43+
apiRef.current?.updateRows(updates);
4444
}, [apiRef, cellSelectionModel, value]);
4545

4646
React.useEffect(() => {
47+
if (apiRef.current === null) {
48+
return;
49+
}
50+
4751
const selectedCells = apiRef.current.getSelectedCellsAsArray();
4852
setNumberOfSelectedCells(selectedCells.length);
4953

docs/data/data-grid/cell-selection/CellSelectionFormulaField.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export default function CellSelectionFormulaField() {
4141
const updates: GridRowModelUpdate[] = [];
4242

4343
Object.entries(cellSelectionModel).forEach(([id, fields]) => {
44-
const updatedRow = { ...apiRef.current.getRow(id) };
44+
const updatedRow = { ...apiRef.current?.getRow(id) };
4545

4646
Object.entries(fields).forEach(([field, isSelected]) => {
4747
if (isSelected) {
@@ -52,10 +52,14 @@ export default function CellSelectionFormulaField() {
5252
updates.push(updatedRow);
5353
});
5454

55-
apiRef.current.updateRows(updates);
55+
apiRef.current?.updateRows(updates);
5656
}, [apiRef, cellSelectionModel, value]);
5757

5858
React.useEffect(() => {
59+
if (apiRef.current === null) {
60+
return;
61+
}
62+
5963
const selectedCells = apiRef.current.getSelectedCellsAsArray();
6064
setNumberOfSelectedCells(selectedCells.length);
6165

docs/data/data-grid/column-dimensions/ColumnAutosizing.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export default function ColumnAutosizing() {
8787
>
8888
<Button
8989
variant="outlined"
90-
onClick={() => apiRef.current.autosizeColumns(autosizeOptions)}
90+
onClick={() => apiRef.current?.autosizeColumns(autosizeOptions)}
9191
>
9292
Autosize columns
9393
</Button>

docs/data/data-grid/column-dimensions/ColumnAutosizing.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export default function ColumnAutosizing() {
8686
>
8787
<Button
8888
variant="outlined"
89-
onClick={() => apiRef.current.autosizeColumns(autosizeOptions)}
89+
onClick={() => apiRef.current?.autosizeColumns(autosizeOptions)}
9090
>
9191
Autosize columns
9292
</Button>

docs/data/data-grid/column-dimensions/ColumnAutosizingAsync.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@ export default function ColumnAutosizingAsync() {
6262
.then((data) => {
6363
ReactDOM.flushSync(() => {
6464
setIsLoading(false);
65-
apiRef.current.updateRows(data.rows);
65+
apiRef.current?.updateRows(data.rows);
6666
});
6767
})
6868
// `sleep`/`setTimeout` is required because `.updateRows` is an
6969
// async function throttled to avoid choking on frequent changes.
7070
.then(() => sleep(0))
7171
.then(() =>
72-
apiRef.current.autosizeColumns({
72+
apiRef.current?.autosizeColumns({
7373
includeHeaders: true,
7474
includeOutliers: true,
7575
}),

docs/data/data-grid/column-dimensions/ColumnAutosizingAsync.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@ export default function ColumnAutosizingAsync() {
6262
.then((data) => {
6363
ReactDOM.flushSync(() => {
6464
setIsLoading(false);
65-
apiRef.current.updateRows(data.rows);
65+
apiRef.current?.updateRows(data.rows);
6666
});
6767
})
6868
// `sleep`/`setTimeout` is required because `.updateRows` is an
6969
// async function throttled to avoid choking on frequent changes.
7070
.then(() => sleep(0))
7171
.then(() =>
72-
apiRef.current.autosizeColumns({
72+
apiRef.current?.autosizeColumns({
7373
includeHeaders: true,
7474
includeOutliers: true,
7575
}),

docs/data/data-grid/column-dimensions/ColumnAutosizingDynamicRowHeight.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default function ColumnAutosizingDynamicRowHeight() {
4242

4343
return (
4444
<div style={{ width: '100%' }}>
45-
<Button onClick={() => apiRef.current.autosizeColumns(autosizeOptions)}>
45+
<Button onClick={() => apiRef.current?.autosizeColumns(autosizeOptions)}>
4646
Autosize Columns
4747
</Button>
4848
<div style={{ height: 400, width: '100%' }}>

docs/data/data-grid/column-dimensions/ColumnAutosizingDynamicRowHeight.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export default function ColumnAutosizingDynamicRowHeight() {
4848

4949
return (
5050
<div style={{ width: '100%' }}>
51-
<Button onClick={() => apiRef.current.autosizeColumns(autosizeOptions)}>
51+
<Button onClick={() => apiRef.current?.autosizeColumns(autosizeOptions)}>
5252
Autosize Columns
5353
</Button>
5454
<div style={{ height: 400, width: '100%' }}>

docs/data/data-grid/column-dimensions/ColumnAutosizingGroupedRows.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ export default function ColumnAutosizingGroupedRows() {
2020
});
2121

2222
React.useEffect(() => {
23-
return apiRef.current.subscribeEvent('rowExpansionChange', (params) => {
23+
return apiRef.current?.subscribeEvent('rowExpansionChange', (params) => {
2424
if (params.childrenExpanded) {
25-
apiRef.current.autosizeColumns({ includeOutliers: true });
25+
apiRef.current?.autosizeColumns({ includeOutliers: true });
2626
}
2727
});
2828
}, [apiRef]);

docs/data/data-grid/column-dimensions/ColumnAutosizingGroupedRows.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ export default function ColumnAutosizingGroupedRows() {
2020
});
2121

2222
React.useEffect(() => {
23-
return apiRef.current.subscribeEvent('rowExpansionChange', (params) => {
23+
return apiRef.current?.subscribeEvent('rowExpansionChange', (params) => {
2424
if (params.childrenExpanded) {
25-
apiRef.current.autosizeColumns({ includeOutliers: true });
25+
apiRef.current?.autosizeColumns({ includeOutliers: true });
2626
}
2727
});
2828
}, [apiRef]);

docs/data/data-grid/column-menu/ColumnMenuGridPremiumSnap.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default function ColumnMenuGridPremiumSnap() {
3434
React.useEffect(() => {
3535
// To avoid an issue around Popper being open before the ref is set.
3636
Promise.resolve().then(() => {
37-
apiRef.current.showColumnMenu('gross');
37+
apiRef.current?.showColumnMenu('gross');
3838
console.log('after showColumnMenu');
3939
});
4040
}, [apiRef]);

docs/data/data-grid/column-menu/ColumnMenuGridPremiumSnap.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default function ColumnMenuGridPremiumSnap() {
3434
React.useEffect(() => {
3535
// To avoid an issue around Popper being open before the ref is set.
3636
Promise.resolve().then(() => {
37-
apiRef.current.showColumnMenu('gross');
37+
apiRef.current?.showColumnMenu('gross');
3838
console.log('after showColumnMenu');
3939
});
4040
}, [apiRef]);

docs/data/data-grid/column-pinning/ColumnPinningDynamicRowHeight.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export default function ColumnPinningDynamicRowHeight() {
6666
}, []);
6767

6868
React.useLayoutEffect(() => {
69-
apiRef.current.resetRowHeights();
69+
apiRef.current?.resetRowHeights();
7070
}, [apiRef, showEditDelete]);
7171

7272
return (

docs/data/data-grid/column-pinning/ColumnPinningDynamicRowHeight.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export default function ColumnPinningDynamicRowHeight() {
7171
}, []);
7272

7373
React.useLayoutEffect(() => {
74-
apiRef.current.resetRowHeights();
74+
apiRef.current?.resetRowHeights();
7575
}, [apiRef, showEditDelete]);
7676

7777
return (

docs/data/data-grid/column-recipes/ColumnSizingPersistWidthOrder.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default function ColumnSizingPersistWidthOrder() {
5050
}
5151

5252
const useColumnsState = (
53-
apiRef: React.RefObject<GridApiPro>,
53+
apiRef: React.RefObject<GridApiPro | null>,
5454
columns: GridColDef[],
5555
) => {
5656
const [widths, setWidths] = React.useState<Record<GridColDef['field'], number>>(

0 commit comments

Comments
 (0)