Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docs] Migrate batch of demos to hooks/typescript #16322

Merged
merged 12 commits into from
Jun 22, 2019
76 changes: 30 additions & 46 deletions docs/src/pages/components/click-away-listener/ClickAway.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import { makeStyles } from '@material-ui/core/styles';
import ClickAwayListener from '@material-ui/core/ClickAwayListener';
import Button from '@material-ui/core/Button';
import Paper from '@material-ui/core/Paper';
import { grey } from '@material-ui/core/colors';

const styles = theme => ({
const useStyles = makeStyles(theme => ({
root: {
position: 'relative',
},
Expand All @@ -25,53 +24,38 @@ const styles = theme => ({
marginRight: theme.spacing(3),
},
},
});
}));

class ClickAway extends React.Component {
state = {
open: false,
};
export default function ClickAway() {
const [open, setOpen] = React.useState(false);
const classes = useStyles();

handleClick = () => {
this.setState(state => ({
open: !state.open,
}));
const handleClick = () => {
setOpen(prev => !prev);
};

handleClickAway = () => {
this.setState({
open: false,
});
const handleClickAway = () => {
setOpen(false);
};

render() {
const { classes } = this.props;
const { open } = this.state;
const fake = <div className={classes.fake} />;

return (
<div className={classes.root}>
<ClickAwayListener onClickAway={this.handleClickAway}>
<div>
<Button onClick={this.handleClick}>Open menu</Button>
{open ? (
<Paper className={classes.paper}>
{fake}
{fake}
{fake}
{fake}
{fake}
</Paper>
) : null}
</div>
</ClickAwayListener>
</div>
);
}
const fake = <div className={classes.fake} />;

return (
<div className={classes.root}>
<ClickAwayListener onClickAway={handleClickAway}>
<div>
<Button onClick={handleClick}>Open menu</Button>
{open ? (
<Paper className={classes.paper}>
{fake}
{fake}
{fake}
{fake}
{fake}
</Paper>
) : null}
</div>
</ClickAwayListener>
</div>
);
}

ClickAway.propTypes = {
classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(ClickAway);
63 changes: 63 additions & 0 deletions docs/src/pages/components/click-away-listener/ClickAway.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import React from 'react';
import { makeStyles, createStyles, Theme } from '@material-ui/core/styles';
import ClickAwayListener from '@material-ui/core/ClickAwayListener';
import Button from '@material-ui/core/Button';
import Paper from '@material-ui/core/Paper';
import { grey } from '@material-ui/core/colors';

const useStyles = makeStyles((theme: Theme) =>
createStyles({
root: {
position: 'relative',
},
paper: {
position: 'absolute',
top: 36,
right: 0,
left: 0,
},
fake: {
backgroundColor: grey[200],
height: theme.spacing(1),
margin: theme.spacing(2),
// Selects every two elements among any group of siblings.
'&:nth-child(2n)': {
marginRight: theme.spacing(3),
},
},
}),
);

export default function ClickAway() {
const [open, setOpen] = React.useState(false);
const classes = useStyles();

const handleClick = () => {
setOpen(prev => !prev);
};

const handleClickAway = () => {
setOpen(false);
};

const fake = <div className={classes.fake} />;

return (
<div className={classes.root}>
<ClickAwayListener onClickAway={handleClickAway}>
<div>
<Button onClick={handleClick}>Open menu</Button>
{open ? (
<Paper className={classes.paper}>
{fake}
{fake}
{fake}
{fake}
{fake}
</Paper>
) : null}
</div>
</ClickAwayListener>
</div>
);
}
4 changes: 1 addition & 3 deletions docs/src/pages/components/container/FixedContainer.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import CssBaseline from '@material-ui/core/CssBaseline';
import Typography from '@material-ui/core/Typography';
import Container from '@material-ui/core/Container';

function FixedContainer() {
export default function FixedContainer() {
return (
<React.Fragment>
<CssBaseline />
Expand All @@ -13,5 +13,3 @@ function FixedContainer() {
</React.Fragment>
);
}

export default FixedContainer;
15 changes: 15 additions & 0 deletions docs/src/pages/components/container/FixedContainer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React from 'react';
import CssBaseline from '@material-ui/core/CssBaseline';
import Typography from '@material-ui/core/Typography';
import Container from '@material-ui/core/Container';

export default function FixedContainer() {
return (
<React.Fragment>
<CssBaseline />
<Container fixed>
<Typography component="div" style={{ backgroundColor: '#cfe8fc', height: '100vh' }} />
</Container>
</React.Fragment>
);
}
4 changes: 1 addition & 3 deletions docs/src/pages/components/container/SimpleContainer.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import CssBaseline from '@material-ui/core/CssBaseline';
import Typography from '@material-ui/core/Typography';
import Container from '@material-ui/core/Container';

function SimpleContainer() {
export default function SimpleContainer() {
return (
<React.Fragment>
<CssBaseline />
Expand All @@ -13,5 +13,3 @@ function SimpleContainer() {
</React.Fragment>
);
}

export default SimpleContainer;
15 changes: 15 additions & 0 deletions docs/src/pages/components/container/SimpleContainer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React from 'react';
import CssBaseline from '@material-ui/core/CssBaseline';
import Typography from '@material-ui/core/Typography';
import Container from '@material-ui/core/Container';

export default function SimpleContainer() {
return (
<React.Fragment>
<CssBaseline />
<Container maxWidth="sm">
<Typography component="div" style={{ backgroundColor: '#cfe8fc', height: '100vh' }} />
</Container>
</React.Fragment>
);
}
4 changes: 1 addition & 3 deletions docs/src/pages/components/popover/MouseOverPopover.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const useStyles = makeStyles(theme => ({
},
}));

function MouseOverPopover() {
export default function MouseOverPopover() {
const classes = useStyles();
const [anchorEl, setAnchorEl] = React.useState(null);

Expand Down Expand Up @@ -60,5 +60,3 @@ function MouseOverPopover() {
</div>
);
}

export default MouseOverPopover;
64 changes: 64 additions & 0 deletions docs/src/pages/components/popover/MouseOverPopover.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import React from 'react';
import Popover from '@material-ui/core/Popover';
import Typography from '@material-ui/core/Typography';
import { makeStyles, createStyles, Theme } from '@material-ui/core/styles';

const useStyles = makeStyles((theme: Theme) =>
createStyles({
popover: {
pointerEvents: 'none',
},
paper: {
padding: theme.spacing(1),
},
}),
);

export default function MouseOverPopover() {
const classes = useStyles();
const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);

function handlePopoverOpen(event: React.MouseEvent<HTMLElement, MouseEvent>) {
setAnchorEl(event.currentTarget);
}

function handlePopoverClose() {
setAnchorEl(null);
}

const open = Boolean(anchorEl);

return (
<div>
<Typography
aria-owns={open ? 'mouse-over-popover' : undefined}
aria-haspopup="true"
onMouseEnter={handlePopoverOpen}
onMouseLeave={handlePopoverClose}
>
Hover with a Popover.
</Typography>
<Popover
id="mouse-over-popover"
className={classes.popover}
classes={{
paper: classes.paper,
}}
open={open}
anchorEl={anchorEl}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left',
}}
transformOrigin={{
vertical: 'top',
horizontal: 'left',
}}
onClose={handlePopoverClose}
disableRestoreFocus
>
<Typography>I use Popover.</Typography>
</Popover>
</div>
);
}
17 changes: 5 additions & 12 deletions docs/src/pages/components/popover/PopoverPopupState.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import { makeStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import Button from '@material-ui/core/Button';
import Popover from '@material-ui/core/Popover';
import PopupState, { bindTrigger, bindPopover } from 'material-ui-popup-state';

const styles = theme => ({
const useStyles = makeStyles(theme => ({
typography: {
margin: theme.spacing(2),
},
});
}));

function PopoverPopupState(props) {
const { classes } = props;
export default function PopoverPopupState() {
const classes = useStyles();

return (
<PopupState variant="popover" popupId="demo-popup-popover">
Expand All @@ -40,9 +39,3 @@ function PopoverPopupState(props) {
</PopupState>
);
}

PopoverPopupState.propTypes = {
classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(PopoverPopupState);
6 changes: 2 additions & 4 deletions docs/src/pages/components/popover/SimplePopover.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const useStyles = makeStyles(theme => ({
},
}));

function SimplePopover() {
export default function SimplePopover() {
const classes = useStyles();
const [anchorEl, setAnchorEl] = React.useState(null);

Expand All @@ -23,7 +23,7 @@ function SimplePopover() {
}

const open = Boolean(anchorEl);
const id = open ? 'simple-popover' : null;
const id = open ? 'simple-popover' : undefined;

return (
<div>
Expand All @@ -49,5 +49,3 @@ function SimplePopover() {
</div>
);
}

export default SimplePopover;
Loading