Skip to content

Commit

Permalink
[Menu] Add new context menu demo (#17839)
Browse files Browse the repository at this point in the history
  • Loading branch information
SarthakC authored and oliviertassinari committed Oct 18, 2019
1 parent 879b4c9 commit 910da29
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 0 deletions.
55 changes: 55 additions & 0 deletions docs/src/pages/components/menus/ContextMenu.js
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>
);
}
58 changes: 58 additions & 0 deletions docs/src/pages/components/menus/ContextMenu.tsx
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>
);
}
6 changes: 6 additions & 0 deletions docs/src/pages/components/menus/menus.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,12 @@ Use a different transition.

{{"demo": "pages/components/menus/FadeMenu.js"}}

## Context menu

Here is an example of a context menu. (Right click to open.)

{{"demo": "pages/components/menus/ContextMenu.js"}}

## Complementary projects

For more advanced use cases you might be able to take advantage of:
Expand Down

0 comments on commit 910da29

Please sign in to comment.