Material Kit 2

pages

sections

docs

github

Dropdowns

Dropdown and Dropup

1import { useState } from "react";
2
3// @mui material components
4import Container from "@mui/material/Container";
5import Grid from "@mui/material/Grid";
6import Icon from "@mui/material/Icon";
7import Menu from "@mui/material/Menu";
8import MenuItem from "@mui/material/MenuItem";
9
10// Material Kit 2 React components
11import MKBox from "components/MKBox";
12import MKButton from "components/MKButton";
13
14function DropdownAndDropup() {
15  const [dropdown, setDropdown] = useState(null);
16  const [dropup, setDropup] = useState(null);
17
18  const openDropdown = ({ currentTarget }) => setDropdown(currentTarget);
19  const closeDropdown = () => setDropdown(null);
20
21  const openDropup = ({ currentTarget }) => setDropup(currentTarget);
22  const closeDropup = () => setDropup(null);
23
24  // Styles
25  const iconStyles = {
26    ml: 1,
27    fontWeight: "bold",
28    transition: "transform 200ms ease-in-out",
29  };
30
31  const dropdownIconStyles = {
32    transform: dropdown ? "rotate(180deg)" : "rotate(0)",
33    ...iconStyles,
34  };
35
36  const dropupIconStyles = {
37    transform: dropup ? "rotate(180deg)" : "rotate(0)",
38    ...iconStyles,
39  };
40
41  return (
42    <MKBox component="section" py={12}>
43      <Container>
44        <Grid container spacing={3}>
45          <Grid item xs={12} lg={6} textAlign="center">
46            <MKButton variant="gradient" color="info" onClick={openDropdown}>
47              Dropdown <Icon sx={dropdownIconStyles}>expand_more</Icon>
48            </MKButton>
49            <Menu anchorEl={dropdown} open={Boolean(dropdown)} onClose={closeDropdown}>
50              <MenuItem onClick={closeDropdown}>Action</MenuItem>
51              <MenuItem onClick={closeDropdown}>Another action</MenuItem>
52              <MenuItem onClick={closeDropdown}>Something else here</MenuItem>
53            </Menu>
54          </Grid>
55          <Grid item xs={12} lg={6} textAlign="center">
56            <MKButton variant="gradient" color="info" onClick={openDropup}>
57              Dropup <Icon sx={dropupIconStyles}>expand_more</Icon>
58            </MKButton>
59            <Menu
60              anchorEl={dropup}
61              open={Boolean(dropup)}
62              anchorOrigin={{
63                vertical: "top",
64                horizontal: "left",
65              }}
66              transformOrigin={{
67                vertical: "bottom",
68                horizontal: "left",
69              }}
70              onClose={closeDropup}
71            >
72              <MenuItem onClick={closeDropup}>Action</MenuItem>
73              <MenuItem onClick={closeDropup}>Another action</MenuItem>
74              <MenuItem onClick={closeDropup}>Something else here</MenuItem>
75            </Menu>
76          </Grid>
77        </Grid>
78      </Container>
79    </MKBox>
80  );
81}
82
83export default DropdownAndDropup;