({
'--Grid-borderWidth': '1px',
borderTop: 'var(--Grid-borderWidth) solid',
diff --git a/docs/data/material/components/grid2/OverflowGrid.js b/docs/data/material/components/grid2/OverflowGrid.js
deleted file mode 100644
index c4441caf100dcb..00000000000000
--- a/docs/data/material/components/grid2/OverflowGrid.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import * as React from 'react';
-import { styled } from '@mui/material/styles';
-import Box from '@mui/material/Box';
-import Paper from '@mui/material/Paper';
-import Grid from '@mui/material/Unstable_Grid2';
-
-const Item = styled(Paper)(({ theme }) => ({
- backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
- ...theme.typography.body2,
- padding: theme.spacing(1),
- textAlign: 'center',
- color: theme.palette.text.secondary,
-}));
-
-export default function OverflowGrid() {
- return (
- ({
- display: 'flex',
- flexDirection: 'column',
- gap: 3,
- width: 200,
- '& > div': {
- overflow: 'auto hidden',
- '&::-webkit-scrollbar': { height: 10, WebkitAppearance: 'none' },
- '&::-webkit-scrollbar-thumb': {
- borderRadius: 8,
- border: '2px solid',
- borderColor: '#E7EBF0',
- backgroundColor: 'rgba(0 0 0 / 0.5)',
- ...theme.applyStyles('dark', {
- borderColor: '',
- }),
- },
- },
- })}
- >
-
-
-
- - Scroll bar appears
-
-
-
-
-
-
- - `disableEqualOverflow` prevents scrollbar
-
-
-
-
- );
-}
diff --git a/docs/data/material/components/grid2/OverflowGrid.tsx b/docs/data/material/components/grid2/OverflowGrid.tsx
deleted file mode 100644
index c4441caf100dcb..00000000000000
--- a/docs/data/material/components/grid2/OverflowGrid.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import * as React from 'react';
-import { styled } from '@mui/material/styles';
-import Box from '@mui/material/Box';
-import Paper from '@mui/material/Paper';
-import Grid from '@mui/material/Unstable_Grid2';
-
-const Item = styled(Paper)(({ theme }) => ({
- backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
- ...theme.typography.body2,
- padding: theme.spacing(1),
- textAlign: 'center',
- color: theme.palette.text.secondary,
-}));
-
-export default function OverflowGrid() {
- return (
- ({
- display: 'flex',
- flexDirection: 'column',
- gap: 3,
- width: 200,
- '& > div': {
- overflow: 'auto hidden',
- '&::-webkit-scrollbar': { height: 10, WebkitAppearance: 'none' },
- '&::-webkit-scrollbar-thumb': {
- borderRadius: 8,
- border: '2px solid',
- borderColor: '#E7EBF0',
- backgroundColor: 'rgba(0 0 0 / 0.5)',
- ...theme.applyStyles('dark', {
- borderColor: '',
- }),
- },
- },
- })}
- >
-
-
-
- - Scroll bar appears
-
-
-
-
-
-
- - `disableEqualOverflow` prevents scrollbar
-
-
-
-
- );
-}
diff --git a/docs/data/material/components/grid2/OverflowGrid.tsx.preview b/docs/data/material/components/grid2/OverflowGrid.tsx.preview
deleted file mode 100644
index 7600ec72beb2a4..00000000000000
--- a/docs/data/material/components/grid2/OverflowGrid.tsx.preview
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- - Scroll bar appears
-
-
-
-
-
-
- - `disableEqualOverflow` prevents scrollbar
-
-
-
\ No newline at end of file
diff --git a/docs/data/material/components/grid2/grid2.md b/docs/data/material/components/grid2/grid2.md
index 513abb8c4425b1..9027f29218cd76 100644
--- a/docs/data/material/components/grid2/grid2.md
+++ b/docs/data/material/components/grid2/grid2.md
@@ -241,21 +241,6 @@ declare module '@mui/system' {
}
```
-## Disable the scrollbar
-
-If you use grid as a container in a small viewport, you might see a horizontal scrollbar because the negative margin is applied on all sides of the grid container.
-
-To disable this scrollbar, set the `disableEqualOverflow` prop to `true`.
-This removes the negative margins from the bottom and right sides of the grid to prevent overflow.
-
-The demo below shows how this works:
-
-{{"demo": "OverflowGrid.js", "bg": true}}
-
-:::warning
-You should avoid adding borders and backgrounds to the grid when `disableEqualOverflow` is `true` because the negative margin (applied only at the top and left sides) causes the grid to be visually misaligned.
-:::
-
## Customization
### Centered elements
diff --git a/docs/data/material/migration/migration-v5/migration-v5.md b/docs/data/material/migration/migration-v5/migration-v5.md
index 217e5290a9237c..ba7932d26753ff 100644
--- a/docs/data/material/migration/migration-v5/migration-v5.md
+++ b/docs/data/material/migration/migration-v5/migration-v5.md
@@ -83,3 +83,37 @@ export default function ChipExample() {
);
}
```
+
+### Grid v2 (Unstable_Grid)
+
+The spacing mechanism was reworked to use the `gap` CSS property.
+This maps better with current layout practices and removes the need for using React Context.
+It brings some breaking changes described in the following sections.
+
+#### The Grid is contained inside parent's padding
+
+Previously, the Grid overflowed its parent.
+In v6, this is fixed:
+
+
+
+This removes the need for the `disableEqualOverflow` prop, so you can remove it:
+
+```diff
+
+```
+
+#### Spacing is no longer considered inside the Grid item's box
+
+Previously, the Grid items included spacing in it's box.
+In v6, this is fixed:
+
+
+
+:::warning
+Both of these changes might slightly affect your layout.
+Note that the items' position doesn't change.
+We recommend adopting this new behavior and **not trying to replicate the old one**, as this is a more predictable and modern approach.
+:::
diff --git a/docs/data/system/components/grid/OverflowGrid.js b/docs/data/system/components/grid/OverflowGrid.js
deleted file mode 100644
index f5cf6949289eaa..00000000000000
--- a/docs/data/system/components/grid/OverflowGrid.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import * as React from 'react';
-import Box from '@mui/system/Box';
-import Grid from '@mui/system/Unstable_Grid';
-import styled from '@mui/system/styled';
-
-const Item = styled('div')(({ theme }) => ({
- backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
- border: '1px solid',
- borderColor: theme.palette.mode === 'dark' ? '#444d58' : '#ced7e0',
- padding: theme.spacing(1),
- borderRadius: '4px',
- textAlign: 'center',
-}));
-
-export default function OverflowGrid() {
- return (
- ({
- display: 'flex',
- flexDirection: 'column',
- gap: 3,
- '& > div': {
- overflow: 'auto hidden',
- '&::-webkit-scrollbar': { height: 10, WebkitAppearance: 'none' },
- '&::-webkit-scrollbar-thumb': {
- borderRadius: 8,
- border: '2px solid',
- borderColor: theme.palette.mode === 'dark' ? '' : '#E7EBF0',
- backgroundColor: 'rgba(0 0 0 / 0.5)',
- },
- },
- })}
- >
-
-
-
- - Scroll bar appears
-
-
-
-
-
-
- - `disableEqualOverflow` prevents scrollbar
-
-
-
-
- );
-}
diff --git a/docs/data/system/components/grid/OverflowGrid.tsx b/docs/data/system/components/grid/OverflowGrid.tsx
deleted file mode 100644
index f5cf6949289eaa..00000000000000
--- a/docs/data/system/components/grid/OverflowGrid.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import * as React from 'react';
-import Box from '@mui/system/Box';
-import Grid from '@mui/system/Unstable_Grid';
-import styled from '@mui/system/styled';
-
-const Item = styled('div')(({ theme }) => ({
- backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
- border: '1px solid',
- borderColor: theme.palette.mode === 'dark' ? '#444d58' : '#ced7e0',
- padding: theme.spacing(1),
- borderRadius: '4px',
- textAlign: 'center',
-}));
-
-export default function OverflowGrid() {
- return (
- ({
- display: 'flex',
- flexDirection: 'column',
- gap: 3,
- '& > div': {
- overflow: 'auto hidden',
- '&::-webkit-scrollbar': { height: 10, WebkitAppearance: 'none' },
- '&::-webkit-scrollbar-thumb': {
- borderRadius: 8,
- border: '2px solid',
- borderColor: theme.palette.mode === 'dark' ? '' : '#E7EBF0',
- backgroundColor: 'rgba(0 0 0 / 0.5)',
- },
- },
- })}
- >
-
-
-
- - Scroll bar appears
-
-
-
-
-
-
- - `disableEqualOverflow` prevents scrollbar
-
-
-
-
- );
-}
diff --git a/docs/data/system/components/grid/OverflowGrid.tsx.preview b/docs/data/system/components/grid/OverflowGrid.tsx.preview
deleted file mode 100644
index d576f4021fe117..00000000000000
--- a/docs/data/system/components/grid/OverflowGrid.tsx.preview
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- - Scroll bar appears
-
-
-
-
-
-
- - `disableEqualOverflow` prevents scrollbar
-
-
-
\ No newline at end of file
diff --git a/docs/data/system/components/grid/grid.md b/docs/data/system/components/grid/grid.md
index b4819213ab5287..00f4fabed10900 100644
--- a/docs/data/system/components/grid/grid.md
+++ b/docs/data/system/components/grid/grid.md
@@ -155,18 +155,6 @@ declare module '@mui/system' {
}
```
-## Prevent scrollbar
-
-If you use grid as a container in a small viewport, you might see a horizontal scrollbar because the negative margin is applied on all sides of the grid container.
-
-To prevent the scrollbar, set `disableEqualOverflow` prop to `true`. It will enable negative margin only on the top and left sides of the grid which remove overflow on the right-hand side.
-
-{{"demo": "OverflowGrid.js", "bg": true}}
-
-:::warning
-You should avoid adding borders or background to the grid when `disableEqualOverflow: true` because the negative margin (applied only at the top and left sides) makes the grid visually misaligned.
-:::
-
## Limitations
### direction column and column-reverse
diff --git a/docs/pages/blog/build-layouts-faster-with-grid-v2.md b/docs/pages/blog/build-layouts-faster-with-grid-v2.md
index b2b6a5834b37ce..0ecd7e86895131 100644
--- a/docs/pages/blog/build-layouts-faster-with-grid-v2.md
+++ b/docs/pages/blog/build-layouts-faster-with-grid-v2.md
@@ -38,7 +38,7 @@ To get started right away, head over to the [Grid v2 migration guide](/material-
### 🚀 New features
-#### [Disable the scrollbar](/material-ui/react-grid2/#disable-the-scrollbar)
+#### [Disable the scrollbar](https://v5.mui.com/material-ui/react-grid2/#disable-the-scrollbar)
A new prop called `disableEqualOverflow` solves the problem of an unwanted scrollbar appearing on small viewports.
diff --git a/docs/pages/system/api/grid.json b/docs/pages/system/api/grid.json
index b4ccab4e6c6ef5..6f44b8292cdda8 100644
--- a/docs/pages/system/api/grid.json
+++ b/docs/pages/system/api/grid.json
@@ -20,7 +20,6 @@
"description": "'column-reverse'
| 'column'
| 'row-reverse'
| 'row'
| Array<'column-reverse'
| 'column'
| 'row-reverse'
| 'row'>
| object"
}
},
- "disableEqualOverflow": { "type": { "name": "bool" } },
"lg": {
"type": { "name": "union", "description": "'auto'
| number
| bool" }
},
diff --git a/docs/public/static/material-ui/migration-v5/grid-overflow-change.png b/docs/public/static/material-ui/migration-v5/grid-overflow-change.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f2f243ac7536a9146f3214b06608057bbedbe00
GIT binary patch
literal 519138
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