Skip to content

Commit f25c32a

Browse files
committed
feat: add a variant prop to Paper
1 parent 010d9cb commit f25c32a

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

docs/pages/api/paper.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ You can learn more about the difference by [reading this guide](/guides/minimizi
2929
| <span class="prop-name">component</span> | <span class="prop-type">elementType</span> | <span class="prop-default">'div'</span> | The component used for the root node. Either a string to use a DOM element or a component. |
3030
| <span class="prop-name">elevation</span> | <span class="prop-type">number</span> | <span class="prop-default">1</span> | Shadow depth, corresponds to `dp` in the spec. It accepts values between 0 and 24 inclusive. |
3131
| <span class="prop-name">square</span> | <span class="prop-type">bool</span> | <span class="prop-default">false</span> | If `true`, rounded corners are disabled. |
32+
| <span class="prop-name">variant</span> | <span class="prop-type">'elevation'<br>&#124;&nbsp;'outlined'</span> | <span class="prop-default">'elevation'</span> | The variant to use. |
3233

3334
The `ref` is forwarded to the root element.
3435

@@ -43,6 +44,7 @@ Any other props supplied will be provided to the root element (native element).
4344
|:-----|:-------------|:------------|
4445
| <span class="prop-name">root</span> | <span class="prop-name">.MuiPaper-root</span> | Styles applied to the root element.
4546
| <span class="prop-name">rounded</span> | <span class="prop-name">.MuiPaper-rounded</span> | Styles applied to the root element if `square={false}`.
47+
| <span class="prop-name">outlined</span> | <span class="prop-name">.MuiPaper-outlined</span> | Styles applied to the root element if `variant="outlined"`
4648
| <span class="prop-name">elevation0</span> | <span class="prop-name">.MuiPaper-elevation0</span> |
4749
| <span class="prop-name">elevation1</span> | <span class="prop-name">.MuiPaper-elevation1</span> |
4850
| <span class="prop-name">elevation2</span> | <span class="prop-name">.MuiPaper-elevation2</span> |

packages/material-ui/src/Paper/Paper.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ export interface PaperProps
66
component?: React.ElementType<React.HTMLAttributes<HTMLElement>>;
77
elevation?: number;
88
square?: boolean;
9+
variant?: 'elevation' | 'outlined';
910
}
1011

1112
export type PaperClassKey =
1213
| 'root'
1314
| 'rounded'
15+
| 'outlined'
1416
| 'elevation0'
1517
| 'elevation1'
1618
| 'elevation2'

packages/material-ui/src/Paper/Paper.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ export const styles = theme => {
2222
rounded: {
2323
borderRadius: theme.shape.borderRadius,
2424
},
25+
/* Styles applied to the root element if `variant="outlined"` */
26+
outlined: {
27+
border: `1px solid ${theme.palette.divider}`,
28+
},
2529
...elevations,
2630
};
2731
};
@@ -33,6 +37,7 @@ const Paper = React.forwardRef(function Paper(props, ref) {
3337
component: Component = 'div',
3438
square = false,
3539
elevation = 1,
40+
variant = 'elevation',
3641
...other
3742
} = props;
3843

@@ -46,9 +51,10 @@ const Paper = React.forwardRef(function Paper(props, ref) {
4651
<Component
4752
className={clsx(
4853
classes.root,
49-
classes[`elevation${elevation}`],
5054
{
5155
[classes.rounded]: !square,
56+
[classes[`elevation${elevation}`]]: variant === 'elevation',
57+
[classes.outlined]: variant === 'outlined',
5258
},
5359
className,
5460
)}
@@ -86,6 +92,10 @@ Paper.propTypes = {
8692
* If `true`, rounded corners are disabled.
8793
*/
8894
square: PropTypes.bool,
95+
/**
96+
* The variant to use.
97+
*/
98+
variant: PropTypes.oneOf(['elevation', 'outlined']),
8999
};
90100

91101
export default withStyles(styles, { name: 'MuiPaper' })(Paper);

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ describe('<Paper />', () => {
4949
});
5050
});
5151

52+
describe('prop: variant', () => {
53+
it('adds a outlined class', () => {
54+
const wrapper = mount(<Paper variant="outlined">Hello World</Paper>);
55+
assert.strictEqual(wrapper.find(`.${classes.root}`).some(`.${classes.outlined}`), true);
56+
});
57+
});
58+
5259
it('should set the elevation elevation class', () => {
5360
const wrapper = shallow(<Paper elevation={16}>Hello World</Paper>);
5461
assert.strictEqual(

0 commit comments

Comments
 (0)