Skip to content

Commit f403201

Browse files
[material-ui][Paper] Fix wrong background-image on Paper when elevation is 0 (#43723)
1 parent 9a78191 commit f403201

File tree

6 files changed

+122
-88
lines changed

6 files changed

+122
-88
lines changed

packages/mui-material/src/Paper/Paper.test.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import * as React from 'react';
22
import { expect } from 'chai';
33
import PropTypes from 'prop-types';
4-
import { createRenderer, strictModeDoubleLoggingSuppressed } from '@mui/internal-test-utils';
4+
import {
5+
createRenderer,
6+
strictModeDoubleLoggingSuppressed,
7+
screen,
8+
} from '@mui/internal-test-utils';
59
import Paper, { paperClasses as classes } from '@mui/material/Paper';
610
import { createTheme, ThemeProvider } from '@mui/material/styles';
711
import describeConformance from '../../test/describeConformance';
@@ -110,4 +114,33 @@ describe('<Paper />', () => {
110114
]);
111115
});
112116
});
117+
118+
it('should have no boxShadow or background-image on Paper with elevation 0 in dark mode using CSS variables', function test() {
119+
if (/jsdom/.test(window.navigator.userAgent)) {
120+
this.skip();
121+
}
122+
123+
const theme = createTheme({
124+
cssVariables: true,
125+
colorSchemes: {
126+
dark: true,
127+
},
128+
defaultColorScheme: 'dark',
129+
});
130+
131+
render(
132+
<ThemeProvider theme={theme}>
133+
<Paper data-testid="parent" elevation={23}>
134+
elevation=23
135+
<Paper data-testid="child" elevation={0} />
136+
</Paper>
137+
</ThemeProvider>,
138+
);
139+
140+
const childPaper = screen.getByTestId('child');
141+
expect(childPaper).toHaveComputedStyle({
142+
boxShadow: 'none',
143+
backgroundImage: 'none',
144+
});
145+
});
113146
});

packages/mui-material/src/styles/createColorScheme.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import getOverlayAlpha from './getOverlayAlpha';
44

55
const defaultDarkOverlays = [...Array(25)].map((_, index) => {
66
if (index === 0) {
7-
return undefined;
7+
return 'none';
88
}
99
const overlay = getOverlayAlpha(index);
1010
return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;

packages/mui-material/src/styles/excludeVariablesFromRoot.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import excludeVariablesFromRoot from './excludeVariablesFromRoot';
33

44
describe('excludeVariablesFromRoot', () => {
55
it('should return true', () => {
6+
expect(excludeVariablesFromRoot('mui').includes(`--mui-overlays-0`)).to.equal(true);
67
expect(excludeVariablesFromRoot('mui').includes(`--mui-overlays-1`)).to.equal(true);
78
expect(excludeVariablesFromRoot('mui').includes(`--mui-overlays-2`)).to.equal(true);
89
expect(excludeVariablesFromRoot('mui').includes(`--mui-overlays-3`)).to.equal(true);

packages/mui-material/src/styles/excludeVariablesFromRoot.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
* @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme="dark"`
33
*/
44
const excludeVariablesFromRoot = (cssVarPrefix?: string) => [
5-
...[...Array(24)].map(
6-
(_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index + 1}`,
5+
...[...Array(25)].map(
6+
(_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`,
77
),
88
`--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`,
99
`--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`,

packages/mui-material/src/styles/extendTheme.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,14 +345,14 @@ describe('extendTheme', () => {
345345
const theme = extendTheme({ defaultColorScheme: 'dark' });
346346
expect(theme.colorSchemes.dark.overlays).to.have.length(25);
347347

348-
expect(theme.colorSchemes.dark.overlays[0]).to.equal(undefined);
348+
expect(theme.colorSchemes.dark.overlays[0]).to.equal('none');
349349
expect(theme.colorSchemes.dark.overlays[24]).to.equal(
350350
'linear-gradient(rgba(255 255 255 / 0.165), rgba(255 255 255 / 0.165))',
351351
);
352352
});
353353

354354
it('should override the array as expected', () => {
355-
const overlays = Array(24).fill('none');
355+
const overlays = Array(25).fill('none');
356356
const theme = extendTheme({
357357
defaultColorScheme: 'dark',
358358
colorSchemes: { dark: { overlays } },

0 commit comments

Comments
 (0)