Material UI is a Material Design library made for React.
It’s a set of React components that have Material Design styles.
In this article, we’ll look at how to customize menus to Material UI.
We can customize our menu with our styles.
For example, we can write:
import React from "react";
import { withStyles } from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
import Menu from "@material-ui/core/Menu";
import MenuItem from "@material-ui/core/MenuItem";
import ListItemIcon from "@material-ui/core/ListItemIcon";
import ListItemText from "@material-ui/core/ListItemText";
import InboxIcon from "@material-ui/icons/MoveToInbox";
const StyledMenu = withStyles({
paper: {
border: "1px solid #d3d4d5"
}
})(props => (
<Menu
elevation={0}
getContentAnchorEl={null}
anchorOrigin={{
vertical: "bottom"
}}
transformOrigin={{
vertical: "top"
}}
{...props}
/>
));
const StyledMenuItem = withStyles(theme => ({
root: {
"&:focus": {
backgroundColor: theme.palette.primary.main,
"& .MuiListItemIcon-root, & .MuiListItemText-primary": {
color: theme.palette.common.white
}
}
}
}))(MenuItem);
export default function App() {
const [anchorEl, setAnchorEl] = React.useState(null);
const handleClick = event => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<div>
<Button variant="contained" color="primary" onClick={handleClick}>
Open Menu
</Button>
<StyledMenu open={Boolean(anchorEl)}>
<StyledMenuItem onClick={handleClose}>
<ListItemIcon>
<InboxIcon fontSize="small" />
</ListItemIcon>
<ListItemText primary="home" />
</StyledMenuItem>
</StyledMenu>
</div>
);
}
to use the withStyles
higher-order component to style the menu.
To style the menu items, we can style it with the withStyles
higher-order component.
We set the color with one from the theme
parameter.
Then we can use them all in our App
component.
#technology #software-development #javascript #web-development #programming