From 305e057123eacc5d003ada1378967793dcd3a2e4 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:33:40 +0200 Subject: [PATCH 01/12] components/click-away-listener/ClickAway --- .../click-away-listener/ClickAway.js | 76 ++++++++----------- .../click-away-listener/ClickAway.tsx | 63 +++++++++++++++ 2 files changed, 93 insertions(+), 46 deletions(-) create mode 100644 docs/src/pages/components/click-away-listener/ClickAway.tsx diff --git a/docs/src/pages/components/click-away-listener/ClickAway.js b/docs/src/pages/components/click-away-listener/ClickAway.js index 23fdf1c85c4fe0..4db72e123faae1 100644 --- a/docs/src/pages/components/click-away-listener/ClickAway.js +++ b/docs/src/pages/components/click-away-listener/ClickAway.js @@ -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', }, @@ -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 =
; - - return ( -
- -
- - {open ? ( - - {fake} - {fake} - {fake} - {fake} - {fake} - - ) : null} -
-
-
- ); - } + const fake =
; + + return ( +
+ +
+ + {open ? ( + + {fake} + {fake} + {fake} + {fake} + {fake} + + ) : null} +
+
+
+ ); } - -ClickAway.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(ClickAway); diff --git a/docs/src/pages/components/click-away-listener/ClickAway.tsx b/docs/src/pages/components/click-away-listener/ClickAway.tsx new file mode 100644 index 00000000000000..f310fdea759a2c --- /dev/null +++ b/docs/src/pages/components/click-away-listener/ClickAway.tsx @@ -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 =
; + + return ( +
+ +
+ + {open ? ( + + {fake} + {fake} + {fake} + {fake} + {fake} + + ) : null} +
+
+
+ ); +} From cb3fbaffe95c085a1b45579002057f8dea97c5f0 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:33:55 +0200 Subject: [PATCH 02/12] components/container/FixedContainer --- .../pages/components/container/FixedContainer.js | 4 +--- .../pages/components/container/FixedContainer.tsx | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 docs/src/pages/components/container/FixedContainer.tsx diff --git a/docs/src/pages/components/container/FixedContainer.js b/docs/src/pages/components/container/FixedContainer.js index 9c22ba42d954e2..4aeda75ba0d03b 100644 --- a/docs/src/pages/components/container/FixedContainer.js +++ b/docs/src/pages/components/container/FixedContainer.js @@ -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 ( @@ -13,5 +13,3 @@ function FixedContainer() { ); } - -export default FixedContainer; diff --git a/docs/src/pages/components/container/FixedContainer.tsx b/docs/src/pages/components/container/FixedContainer.tsx new file mode 100644 index 00000000000000..4aeda75ba0d03b --- /dev/null +++ b/docs/src/pages/components/container/FixedContainer.tsx @@ -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 ( + + + + + + + ); +} From 8bee0a37751da03b1cef2eccb40dd55834bb840c Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:34:07 +0200 Subject: [PATCH 03/12] components/container/SimpleContainer --- .../pages/components/container/SimpleContainer.js | 4 +--- .../components/container/SimpleContainer.tsx | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 docs/src/pages/components/container/SimpleContainer.tsx diff --git a/docs/src/pages/components/container/SimpleContainer.js b/docs/src/pages/components/container/SimpleContainer.js index 89cf16bf0bf5f7..dea58d8e902ac1 100644 --- a/docs/src/pages/components/container/SimpleContainer.js +++ b/docs/src/pages/components/container/SimpleContainer.js @@ -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 ( @@ -13,5 +13,3 @@ function SimpleContainer() { ); } - -export default SimpleContainer; diff --git a/docs/src/pages/components/container/SimpleContainer.tsx b/docs/src/pages/components/container/SimpleContainer.tsx new file mode 100644 index 00000000000000..dea58d8e902ac1 --- /dev/null +++ b/docs/src/pages/components/container/SimpleContainer.tsx @@ -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 ( + + + + + + + ); +} From c995ea1d32ae06ba8d27514cb0b9d7075a32efd9 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:34:29 +0200 Subject: [PATCH 04/12] components/popover/MouseOverPopover --- .../components/popover/MouseOverPopover.js | 4 +- .../components/popover/MouseOverPopover.tsx | 64 +++++++++++++++++++ 2 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 docs/src/pages/components/popover/MouseOverPopover.tsx diff --git a/docs/src/pages/components/popover/MouseOverPopover.js b/docs/src/pages/components/popover/MouseOverPopover.js index 6e02fd098f655d..7d440d8b595c54 100644 --- a/docs/src/pages/components/popover/MouseOverPopover.js +++ b/docs/src/pages/components/popover/MouseOverPopover.js @@ -12,7 +12,7 @@ const useStyles = makeStyles(theme => ({ }, })); -function MouseOverPopover() { +export default function MouseOverPopover() { const classes = useStyles(); const [anchorEl, setAnchorEl] = React.useState(null); @@ -60,5 +60,3 @@ function MouseOverPopover() {
); } - -export default MouseOverPopover; diff --git a/docs/src/pages/components/popover/MouseOverPopover.tsx b/docs/src/pages/components/popover/MouseOverPopover.tsx new file mode 100644 index 00000000000000..1ea427d3a4d973 --- /dev/null +++ b/docs/src/pages/components/popover/MouseOverPopover.tsx @@ -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(null); + + function handlePopoverOpen(event: React.MouseEvent) { + setAnchorEl(event.currentTarget); + } + + function handlePopoverClose() { + setAnchorEl(null); + } + + const open = Boolean(anchorEl); + + return ( +
+ + Hover with a Popover. + + + I use Popover. + +
+ ); +} From 2a81cb534711a73e5c12eb18a72c1d8029cd7b48 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:36:39 +0200 Subject: [PATCH 05/12] Typeless: components/popover/PopoverPopupState --- .../components/popover/PopoverPopupState.js | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/docs/src/pages/components/popover/PopoverPopupState.js b/docs/src/pages/components/popover/PopoverPopupState.js index 23f8a958467947..9017ebfeae3f46 100644 --- a/docs/src/pages/components/popover/PopoverPopupState.js +++ b/docs/src/pages/components/popover/PopoverPopupState.js @@ -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 ( @@ -40,9 +39,3 @@ function PopoverPopupState(props) { ); } - -PopoverPopupState.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(PopoverPopupState); From c68c4df26c9331afe16976fa3b97e33ba83fa331 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:37:09 +0200 Subject: [PATCH 06/12] Typeless: components/popper/PopperPopupState --- .../pages/components/popper/PopperPopupState.js | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/docs/src/pages/components/popper/PopperPopupState.js b/docs/src/pages/components/popper/PopperPopupState.js index baf5cc049eda26..5d44f0b1a70c3a 100644 --- a/docs/src/pages/components/popper/PopperPopupState.js +++ b/docs/src/pages/components/popper/PopperPopupState.js @@ -1,6 +1,5 @@ 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 Popper from '@material-ui/core/Popper'; @@ -8,14 +7,14 @@ import PopupState, { bindToggle, bindPopper } from 'material-ui-popup-state'; import Fade from '@material-ui/core/Fade'; import Paper from '@material-ui/core/Paper'; -const styles = theme => ({ +const useStyles = makeStyles(theme => ({ typography: { padding: theme.spacing(2), }, -}); +})); -function PopperPopupState(props) { - const { classes } = props; +export default function PopperPopupState() { + const classes = useStyles(); return ( @@ -38,9 +37,3 @@ function PopperPopupState(props) { ); } - -PopperPopupState.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(PopperPopupState); From 79169f8435aa8505b6fafd55f135d2dd87d22189 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:37:40 +0200 Subject: [PATCH 07/12] components/popover/SimplePopover --- .../pages/components/popover/SimplePopover.js | 6 +-- .../components/popover/SimplePopover.tsx | 53 +++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 docs/src/pages/components/popover/SimplePopover.tsx diff --git a/docs/src/pages/components/popover/SimplePopover.js b/docs/src/pages/components/popover/SimplePopover.js index 459d16db167f40..5e21df890126a9 100644 --- a/docs/src/pages/components/popover/SimplePopover.js +++ b/docs/src/pages/components/popover/SimplePopover.js @@ -10,7 +10,7 @@ const useStyles = makeStyles(theme => ({ }, })); -function SimplePopover() { +export default function SimplePopover() { const classes = useStyles(); const [anchorEl, setAnchorEl] = React.useState(null); @@ -23,7 +23,7 @@ function SimplePopover() { } const open = Boolean(anchorEl); - const id = open ? 'simple-popover' : null; + const id = open ? 'simple-popover' : undefined; return (
@@ -49,5 +49,3 @@ function SimplePopover() {
); } - -export default SimplePopover; diff --git a/docs/src/pages/components/popover/SimplePopover.tsx b/docs/src/pages/components/popover/SimplePopover.tsx new file mode 100644 index 00000000000000..4158676d6a2da0 --- /dev/null +++ b/docs/src/pages/components/popover/SimplePopover.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; +import Popover from '@material-ui/core/Popover'; +import Typography from '@material-ui/core/Typography'; +import Button from '@material-ui/core/Button'; + +const useStyles = makeStyles((theme: Theme) => + createStyles({ + typography: { + padding: theme.spacing(2), + }, + }), +); + +export default function SimplePopover() { + const classes = useStyles(); + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event: React.MouseEvent) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + + const open = Boolean(anchorEl); + const id = open ? 'simple-popover' : undefined; + + return ( +
+ + + The content of the Popover. + +
+ ); +} From 492672e845d487a77b40f8ecc2c02576ea1beded Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:38:50 +0200 Subject: [PATCH 08/12] components/popper/PositionedPopper --- .../components/popper/PositionedPopper.js | 122 ++++++++---------- .../components/popper/PositionedPopper.tsx | 82 ++++++++++++ 2 files changed, 135 insertions(+), 69 deletions(-) create mode 100644 docs/src/pages/components/popper/PositionedPopper.tsx diff --git a/docs/src/pages/components/popper/PositionedPopper.js b/docs/src/pages/components/popper/PositionedPopper.js index fb2c5a6bc6b55d..51f11095d3ca2f 100644 --- a/docs/src/pages/components/popper/PositionedPopper.js +++ b/docs/src/pages/components/popper/PositionedPopper.js @@ -1,6 +1,5 @@ import React from 'react'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; +import { makeStyles } from '@material-ui/core/styles'; import Popper from '@material-ui/core/Popper'; import Typography from '@material-ui/core/Typography'; import Grid from '@material-ui/core/Grid'; @@ -8,87 +7,72 @@ import Button from '@material-ui/core/Button'; import Fade from '@material-ui/core/Fade'; import Paper from '@material-ui/core/Paper'; -const styles = theme => ({ +const useStyles = makeStyles(theme => ({ root: { width: 500, }, typography: { padding: theme.spacing(2), }, -}); +})); -class PositionedPopper extends React.Component { - state = { - anchorEl: null, - open: false, - placement: null, - }; +export default function PositionedPopper() { + const [anchorEl, setAnchorEl] = React.useState(null); + const [open, setOpen] = React.useState(false); + const [placement, setPlacement] = React.useState(); + const classes = useStyles(); - handleClick = placement => event => { - const { currentTarget } = event; - this.setState(state => ({ - anchorEl: currentTarget, - open: state.placement !== placement || !state.open, - placement, - })); + const handleClick = newPlacement => event => { + setAnchorEl(event.currentTarget); + setOpen(prev => placement !== newPlacement || !prev); + setPlacement(newPlacement); }; - render() { - const { classes } = this.props; - const { anchorEl, open, placement } = this.state; - - return ( -
- - {({ TransitionProps }) => ( - - - The content of the Popper. - - - )} - - - - - - - + return ( +
+ + {({ TransitionProps }) => ( + + + The content of the Popper. + + + )} + + + + + + + + + + + +
+ +
+
- - - -
- -
- + + + - - - - - - - - - - + + - - - - - + -
- ); - } +
+ + + + + + + +
+ ); } - -PositionedPopper.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(PositionedPopper); diff --git a/docs/src/pages/components/popper/PositionedPopper.tsx b/docs/src/pages/components/popper/PositionedPopper.tsx new file mode 100644 index 00000000000000..7c5c4b9e41fc5c --- /dev/null +++ b/docs/src/pages/components/popper/PositionedPopper.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; +import Popper, { PopperPlacementType } from '@material-ui/core/Popper'; +import Typography from '@material-ui/core/Typography'; +import Grid from '@material-ui/core/Grid'; +import Button from '@material-ui/core/Button'; +import Fade from '@material-ui/core/Fade'; +import Paper from '@material-ui/core/Paper'; + +const useStyles = makeStyles((theme: Theme) => + createStyles({ + root: { + width: 500, + }, + typography: { + padding: theme.spacing(2), + }, + }), +); + +export default function PositionedPopper() { + const [anchorEl, setAnchorEl] = React.useState(null); + const [open, setOpen] = React.useState(false); + const [placement, setPlacement] = React.useState(); + const classes = useStyles(); + + const handleClick = (newPlacement: PopperPlacementType) => ( + event: React.MouseEvent, + ) => { + setAnchorEl(event.currentTarget); + setOpen(prev => placement !== newPlacement || !prev); + setPlacement(newPlacement); + }; + + return ( +
+ + {({ TransitionProps }) => ( + + + The content of the Popper. + + + )} + + + + + + + + + + + +
+ +
+ +
+ + + + + + + + + + + +
+ + + + + + + +
+ ); +} From 7f0ba9c318e8609f485a83c12d4345cdc4568d89 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:39:15 +0200 Subject: [PATCH 09/12] components/popper/NoTransitionPopper --- .../components/popper/NoTransitionPopper.js | 59 +++++++------------ .../components/popper/NoTransitionPopper.tsx | 39 ++++++++++++ 2 files changed, 61 insertions(+), 37 deletions(-) create mode 100644 docs/src/pages/components/popper/NoTransitionPopper.tsx diff --git a/docs/src/pages/components/popper/NoTransitionPopper.js b/docs/src/pages/components/popper/NoTransitionPopper.js index def43f3a33858d..cdc6d5aa0e6771 100644 --- a/docs/src/pages/components/popper/NoTransitionPopper.js +++ b/docs/src/pages/components/popper/NoTransitionPopper.js @@ -1,52 +1,37 @@ import React from 'react'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; +import { makeStyles } from '@material-ui/core/styles'; import Popper from '@material-ui/core/Popper'; import Typography from '@material-ui/core/Typography'; import Button from '@material-ui/core/Button'; import Paper from '@material-ui/core/Paper'; -const styles = theme => ({ +const useStyles = makeStyles(theme => ({ typography: { padding: theme.spacing(2), }, -}); +})); -class NoTransitionPopper extends React.Component { - state = { - anchorEl: null, - }; +export default function NoTransitionPopper() { + const [anchorEl, setAnchorEl] = React.useState(null); + const classes = useStyles(); - handleClick = event => { - const { currentTarget } = event; - this.setState(state => ({ - anchorEl: state.anchorEl ? null : currentTarget, - })); + const handleClick = event => { + setAnchorEl(prev => (prev ? null : event.currentTarget)); }; - render() { - const { classes } = this.props; - const { anchorEl } = this.state; - const open = Boolean(anchorEl); - const id = open ? 'no-transition-popper' : null; + const open = Boolean(anchorEl); + const id = open ? 'no-transition-popper' : undefined; - return ( -
- - - - The content of the Popper. - - -
- ); - } + return ( +
+ + + + The content of the Popper. + + +
+ ); } - -NoTransitionPopper.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(NoTransitionPopper); diff --git a/docs/src/pages/components/popper/NoTransitionPopper.tsx b/docs/src/pages/components/popper/NoTransitionPopper.tsx new file mode 100644 index 00000000000000..3a8a21cc117ab4 --- /dev/null +++ b/docs/src/pages/components/popper/NoTransitionPopper.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; +import Popper from '@material-ui/core/Popper'; +import Typography from '@material-ui/core/Typography'; +import Button from '@material-ui/core/Button'; +import Paper from '@material-ui/core/Paper'; + +const useStyles = makeStyles((theme: Theme) => + createStyles({ + typography: { + padding: theme.spacing(2), + }, + }), +); + +export default function NoTransitionPopper() { + const [anchorEl, setAnchorEl] = React.useState(null); + const classes = useStyles(); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(prev => (prev ? null : event.currentTarget)); + }; + + const open = Boolean(anchorEl); + const id = open ? 'no-transition-popper' : undefined; + + return ( +
+ + + + The content of the Popper. + + +
+ ); +} From e7f642e6ff5fd7b7590cafc30bd8baef887130b0 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:40:04 +0200 Subject: [PATCH 10/12] components/popper/MinimalPopper --- .../pages/components/popper/MinimalPopper.js | 6 ++--- .../pages/components/popper/MinimalPopper.tsx | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 docs/src/pages/components/popper/MinimalPopper.tsx diff --git a/docs/src/pages/components/popper/MinimalPopper.js b/docs/src/pages/components/popper/MinimalPopper.js index 347edbe1796c83..6cbf70b82ce6e9 100644 --- a/docs/src/pages/components/popper/MinimalPopper.js +++ b/docs/src/pages/components/popper/MinimalPopper.js @@ -1,7 +1,7 @@ import React from 'react'; import Popper from '@material-ui/core/Popper'; -function MinimalPopper() { +export default function MinimalPopper() { const [anchorEl, setAnchorEl] = React.useState(null); function handleClick(event) { @@ -9,7 +9,7 @@ function MinimalPopper() { } const open = Boolean(anchorEl); - const id = open ? 'simple-popper' : null; + const id = open ? 'simple-popper' : undefined; return (
@@ -22,5 +22,3 @@ function MinimalPopper() {
); } - -export default MinimalPopper; diff --git a/docs/src/pages/components/popper/MinimalPopper.tsx b/docs/src/pages/components/popper/MinimalPopper.tsx new file mode 100644 index 00000000000000..6675aa2452534b --- /dev/null +++ b/docs/src/pages/components/popper/MinimalPopper.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import Popper from '@material-ui/core/Popper'; + +export default function MinimalPopper() { + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event: React.MouseEvent) { + setAnchorEl(anchorEl ? null : event.currentTarget); + } + + const open = Boolean(anchorEl); + const id = open ? 'simple-popper' : undefined; + + return ( +
+ + +
The content of the Popper.
+
+
+ ); +} From 7dc0227cb7bb439f54c4021b2a5e025306457689 Mon Sep 17 00:00:00 2001 From: merceyz Date: Fri, 21 Jun 2019 15:40:28 +0200 Subject: [PATCH 11/12] components/popper/FakedReferencePopper --- .../components/popper/FakedReferencePopper.js | 98 ++++++++----------- .../popper/FakedReferencePopper.tsx | 74 ++++++++++++++ 2 files changed, 114 insertions(+), 58 deletions(-) create mode 100644 docs/src/pages/components/popper/FakedReferencePopper.tsx diff --git a/docs/src/pages/components/popper/FakedReferencePopper.js b/docs/src/pages/components/popper/FakedReferencePopper.js index 46f78579d7cf4b..5378ccf0bbafe5 100644 --- a/docs/src/pages/components/popper/FakedReferencePopper.js +++ b/docs/src/pages/components/popper/FakedReferencePopper.js @@ -1,84 +1,66 @@ import React from 'react'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; +import { makeStyles } from '@material-ui/core/styles'; import Popper from '@material-ui/core/Popper'; import Typography from '@material-ui/core/Typography'; import Fade from '@material-ui/core/Fade'; import Paper from '@material-ui/core/Paper'; -const styles = theme => ({ +const useStyles = makeStyles(theme => ({ typography: { padding: theme.spacing(2), }, -}); +})); -class FakedReferencePopper extends React.Component { - state = { - anchorEl: null, - open: false, +export default function FakedReferencePopper() { + const [open, setOpen] = React.useState(false); + const [anchorEl, setAnchorEl] = React.useState(null); + const classes = useStyles(); + + const handleClose = () => { + setOpen(false); }; - handleMouseUp = () => { + const handleMouseUp = () => { const selection = window.getSelection(); // Resets when the selection has a length of 0 if (!selection || selection.anchorOffset === selection.focusOffset) { - this.handleClose(); + handleClose(); return; } const getBoundingClientRect = () => selection.getRangeAt(0).getBoundingClientRect(); - this.setState({ - open: true, - anchorEl: { - clientWidth: getBoundingClientRect().width, - clientHeight: getBoundingClientRect().height, - getBoundingClientRect, - }, + setOpen(true); + setAnchorEl({ + clientWidth: getBoundingClientRect().width, + clientHeight: getBoundingClientRect().height, + getBoundingClientRect, }); }; - handleClose = () => { - if (!this.state.open) { - return; - } - - this.setState({ open: false }); - }; - - render() { - const { classes } = this.props; - const { anchorEl, open } = this.state; - const id = open ? 'faked-reference-popper' : null; + const id = open ? 'faked-reference-popper' : undefined; - return ( -
- - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ipsum purus, bibendum sit - amet vulputate eget, porta semper ligula. Donec bibendum vulputate erat, ac fringilla mi - finibus nec. Donec ac dolor sed dolor porttitor blandit vel vel purus. Fusce vel malesuada - ligula. Nam quis vehicula ante, eu finibus est. Proin ullamcorper fermentum orci, quis - finibus massa. Nunc lobortis, massa ut rutrum ultrices, metus metus finibus ex, sit amet - facilisis neque enim sed neque. Quisque accumsan metus vel maximus consequat. Suspendisse - lacinia tellus a libero volutpat maximus. - - - {({ TransitionProps }) => ( - - - The content of the Popper. - - - )} - -
- ); - } + return ( +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ipsum purus, bibendum sit + amet vulputate eget, porta semper ligula. Donec bibendum vulputate erat, ac fringilla mi + finibus nec. Donec ac dolor sed dolor porttitor blandit vel vel purus. Fusce vel malesuada + ligula. Nam quis vehicula ante, eu finibus est. Proin ullamcorper fermentum orci, quis + finibus massa. Nunc lobortis, massa ut rutrum ultrices, metus metus finibus ex, sit amet + facilisis neque enim sed neque. Quisque accumsan metus vel maximus consequat. Suspendisse + lacinia tellus a libero volutpat maximus. + + + {({ TransitionProps }) => ( + + + The content of the Popper. + + + )} + +
+ ); } - -FakedReferencePopper.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(FakedReferencePopper); diff --git a/docs/src/pages/components/popper/FakedReferencePopper.tsx b/docs/src/pages/components/popper/FakedReferencePopper.tsx new file mode 100644 index 00000000000000..55b420161548ed --- /dev/null +++ b/docs/src/pages/components/popper/FakedReferencePopper.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; +import Popper from '@material-ui/core/Popper'; +import Typography from '@material-ui/core/Typography'; +import Fade from '@material-ui/core/Fade'; +import Paper from '@material-ui/core/Paper'; + +const useStyles = makeStyles((theme: Theme) => + createStyles({ + typography: { + padding: theme.spacing(2), + }, + }), +); + +interface AnchorType { + clientWidth: number; + clientHeight: number; + getBoundingClientRect(): ClientRect | DOMRect; +} + +export default function FakedReferencePopper() { + const [open, setOpen] = React.useState(false); + const [anchorEl, setAnchorEl] = React.useState(null); + const classes = useStyles(); + + const handleClose = () => { + setOpen(false); + }; + + const handleMouseUp = () => { + const selection = window.getSelection(); + + // Resets when the selection has a length of 0 + if (!selection || selection.anchorOffset === selection.focusOffset) { + handleClose(); + return; + } + + const getBoundingClientRect = () => selection.getRangeAt(0).getBoundingClientRect(); + + setOpen(true); + setAnchorEl({ + clientWidth: getBoundingClientRect().width, + clientHeight: getBoundingClientRect().height, + getBoundingClientRect, + }); + }; + + const id = open ? 'faked-reference-popper' : undefined; + + return ( +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ipsum purus, bibendum sit + amet vulputate eget, porta semper ligula. Donec bibendum vulputate erat, ac fringilla mi + finibus nec. Donec ac dolor sed dolor porttitor blandit vel vel purus. Fusce vel malesuada + ligula. Nam quis vehicula ante, eu finibus est. Proin ullamcorper fermentum orci, quis + finibus massa. Nunc lobortis, massa ut rutrum ultrices, metus metus finibus ex, sit amet + facilisis neque enim sed neque. Quisque accumsan metus vel maximus consequat. Suspendisse + lacinia tellus a libero volutpat maximus. + + + {({ TransitionProps }) => ( + + + The content of the Popper. + + + )} + +
+ ); +} From d8954d6f1ebcf8ac0e224ff027da088749dccbad Mon Sep 17 00:00:00 2001 From: merceyz Date: Sat, 22 Jun 2019 12:42:41 +0200 Subject: [PATCH 12/12] Update FakedReferencePopper.tsx --- .../pages/components/popper/FakedReferencePopper.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/src/pages/components/popper/FakedReferencePopper.tsx b/docs/src/pages/components/popper/FakedReferencePopper.tsx index 55b420161548ed..19d92e54d623eb 100644 --- a/docs/src/pages/components/popper/FakedReferencePopper.tsx +++ b/docs/src/pages/components/popper/FakedReferencePopper.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; -import Popper from '@material-ui/core/Popper'; +import Popper, { PopperProps } from '@material-ui/core/Popper'; import Typography from '@material-ui/core/Typography'; import Fade from '@material-ui/core/Fade'; import Paper from '@material-ui/core/Paper'; @@ -13,15 +13,9 @@ const useStyles = makeStyles((theme: Theme) => }), ); -interface AnchorType { - clientWidth: number; - clientHeight: number; - getBoundingClientRect(): ClientRect | DOMRect; -} - export default function FakedReferencePopper() { const [open, setOpen] = React.useState(false); - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = React.useState(null); const classes = useStyles(); const handleClose = () => {