-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Menu] Add new context menu demo (#17839)
- Loading branch information
1 parent
879b4c9
commit 910da29
Showing
3 changed files
with
119 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
import React from 'react'; | ||
import Menu from '@material-ui/core/Menu'; | ||
import MenuItem from '@material-ui/core/MenuItem'; | ||
import Typography from '@material-ui/core/Typography'; | ||
|
||
const initialState = { | ||
mouseX: null, | ||
mouseY: null, | ||
}; | ||
|
||
export default function ContextMenu() { | ||
const [state, setState] = React.useState(initialState); | ||
|
||
const handleClick = event => { | ||
event.preventDefault(); | ||
setState({ | ||
mouseX: event.clientX - 2, | ||
mouseY: event.clientY - 4, | ||
}); | ||
}; | ||
|
||
const handleClose = () => { | ||
setState(initialState); | ||
}; | ||
|
||
return ( | ||
<div onContextMenu={handleClick} style={{ cursor: 'context-menu' }}> | ||
<Typography> | ||
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. | ||
</Typography> | ||
<Menu | ||
keepMounted | ||
open={state.mouseY !== null} | ||
onClose={handleClose} | ||
anchorReference="anchorPosition" | ||
anchorPosition={ | ||
state.mouseY !== null && state.mouseX !== null | ||
? { top: state.mouseY, left: state.mouseX } | ||
: undefined | ||
} | ||
> | ||
<MenuItem onClick={handleClose}>Copy</MenuItem> | ||
<MenuItem onClick={handleClose}>Print</MenuItem> | ||
<MenuItem onClick={handleClose}>Highlight</MenuItem> | ||
<MenuItem onClick={handleClose}>Email</MenuItem> | ||
</Menu> | ||
</div> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
import React from 'react'; | ||
import Menu from '@material-ui/core/Menu'; | ||
import MenuItem from '@material-ui/core/MenuItem'; | ||
import Typography from '@material-ui/core/Typography'; | ||
|
||
const initialState = { | ||
mouseX: null, | ||
mouseY: null, | ||
}; | ||
|
||
export default function ContextMenu() { | ||
const [state, setState] = React.useState<{ | ||
mouseX: null | number; | ||
mouseY: null | number; | ||
}>(initialState); | ||
|
||
const handleClick = (event: React.MouseEvent<HTMLDivElement>) => { | ||
event.preventDefault(); | ||
setState({ | ||
mouseX: event.clientX - 2, | ||
mouseY: event.clientY - 4, | ||
}); | ||
}; | ||
|
||
const handleClose = () => { | ||
setState(initialState); | ||
}; | ||
|
||
return ( | ||
<div onContextMenu={handleClick} style={{ cursor: 'context-menu' }}> | ||
<Typography> | ||
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. | ||
</Typography> | ||
<Menu | ||
keepMounted | ||
open={state.mouseY !== null} | ||
onClose={handleClose} | ||
anchorReference="anchorPosition" | ||
anchorPosition={ | ||
state.mouseY !== null && state.mouseX !== null | ||
? { top: state.mouseY, left: state.mouseX } | ||
: undefined | ||
} | ||
> | ||
<MenuItem onClick={handleClose}>Copy</MenuItem> | ||
<MenuItem onClick={handleClose}>Print</MenuItem> | ||
<MenuItem onClick={handleClose}>Highlight</MenuItem> | ||
<MenuItem onClick={handleClose}>Email</MenuItem> | ||
</Menu> | ||
</div> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters