Skip to content

Commit 7bb69c8

Browse files
cahilfoleyeps1lon
authored andcommitted
[docs] Add ClippedDrawer TypeScript demo (#15284)
* [docs]: Add typescript version for each drawer demo * [docs] Add typescript demo for ClippedDrawer
1 parent b6907f7 commit 7bb69c8

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { createStyles, Theme, withStyles, WithStyles } from '@material-ui/core/styles';
4+
import Drawer from '@material-ui/core/Drawer';
5+
import AppBar from '@material-ui/core/AppBar';
6+
import CssBaseline from '@material-ui/core/CssBaseline';
7+
import Toolbar from '@material-ui/core/Toolbar';
8+
import List from '@material-ui/core/List';
9+
import Typography from '@material-ui/core/Typography';
10+
import Divider from '@material-ui/core/Divider';
11+
import ListItem from '@material-ui/core/ListItem';
12+
import ListItemIcon from '@material-ui/core/ListItemIcon';
13+
import ListItemText from '@material-ui/core/ListItemText';
14+
import InboxIcon from '@material-ui/icons/MoveToInbox';
15+
import MailIcon from '@material-ui/icons/Mail';
16+
17+
const drawerWidth = 240;
18+
19+
const styles = (theme: Theme) =>
20+
createStyles({
21+
root: {
22+
display: 'flex',
23+
},
24+
appBar: {
25+
zIndex: theme.zIndex.drawer + 1,
26+
},
27+
drawer: {
28+
width: drawerWidth,
29+
flexShrink: 0,
30+
},
31+
drawerPaper: {
32+
width: drawerWidth,
33+
},
34+
content: {
35+
flexGrow: 1,
36+
padding: theme.spacing(3),
37+
},
38+
toolbar: theme.mixins.toolbar,
39+
});
40+
41+
interface ClippedDrawerProps extends WithStyles<typeof styles> {}
42+
43+
function ClippedDrawer(props: ClippedDrawerProps) {
44+
const { classes } = props;
45+
46+
return (
47+
<div className={classes.root}>
48+
<CssBaseline />
49+
<AppBar position="fixed" className={classes.appBar}>
50+
<Toolbar>
51+
<Typography variant="h6" color="inherit" noWrap>
52+
Clipped drawer
53+
</Typography>
54+
</Toolbar>
55+
</AppBar>
56+
<Drawer
57+
className={classes.drawer}
58+
variant="permanent"
59+
classes={{
60+
paper: classes.drawerPaper,
61+
}}
62+
>
63+
<div className={classes.toolbar} />
64+
<List>
65+
{['Inbox', 'Starred', 'Send email', 'Drafts'].map((text, index) => (
66+
<ListItem button key={text}>
67+
<ListItemIcon>{index % 2 === 0 ? <InboxIcon /> : <MailIcon />}</ListItemIcon>
68+
<ListItemText primary={text} />
69+
</ListItem>
70+
))}
71+
</List>
72+
<Divider />
73+
<List>
74+
{['All mail', 'Trash', 'Spam'].map((text, index) => (
75+
<ListItem button key={text}>
76+
<ListItemIcon>{index % 2 === 0 ? <InboxIcon /> : <MailIcon />}</ListItemIcon>
77+
<ListItemText primary={text} />
78+
</ListItem>
79+
))}
80+
</List>
81+
</Drawer>
82+
<main className={classes.content}>
83+
<div className={classes.toolbar} />
84+
<Typography paragraph>
85+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
86+
ut labore et dolore magna aliqua. Rhoncus dolor purus non enim praesent elementum
87+
facilisis leo vel. Risus at ultrices mi tempus imperdiet. Semper risus in hendrerit
88+
gravida rutrum quisque non tellus. Convallis convallis tellus id interdum velit laoreet id
89+
donec ultrices. Odio morbi quis commodo odio aenean sed adipiscing. Amet nisl suscipit
90+
adipiscing bibendum est ultricies integer quis. Cursus euismod quis viverra nibh cras.
91+
Metus vulputate eu scelerisque felis imperdiet proin fermentum leo. Mauris commodo quis
92+
imperdiet massa tincidunt. Cras tincidunt lobortis feugiat vivamus at augue. At augue eget
93+
arcu dictum varius duis at consectetur lorem. Velit sed ullamcorper morbi tincidunt. Lorem
94+
donec massa sapien faucibus et molestie ac.
95+
</Typography>
96+
<Typography paragraph>
97+
Consequat mauris nunc congue nisi vitae suscipit. Fringilla est ullamcorper eget nulla
98+
facilisi etiam dignissim diam. Pulvinar elementum integer enim neque volutpat ac
99+
tincidunt. Ornare suspendisse sed nisi lacus sed viverra tellus. Purus sit amet volutpat
100+
consequat mauris. Elementum eu facilisis sed odio morbi. Euismod lacinia at quis risus sed
101+
vulputate odio. Morbi tincidunt ornare massa eget egestas purus viverra accumsan in. In
102+
hendrerit gravida rutrum quisque non tellus orci ac. Pellentesque nec nam aliquam sem et
103+
tortor. Habitant morbi tristique senectus et. Adipiscing elit duis tristique sollicitudin
104+
nibh sit. Ornare aenean euismod elementum nisi quis eleifend. Commodo viverra maecenas
105+
accumsan lacus vel facilisis. Nulla posuere sollicitudin aliquam ultrices sagittis orci a.
106+
</Typography>
107+
</main>
108+
</div>
109+
);
110+
}
111+
112+
ClippedDrawer.propTypes = {
113+
classes: PropTypes.object.isRequired,
114+
} as any;
115+
116+
export default withStyles(styles)(ClippedDrawer);

0 commit comments

Comments
 (0)