Skip to content

Commit 568a5be

Browse files
author
Alban Bailly
committed
mobile nav
1 parent fbbf0a9 commit 568a5be

File tree

2 files changed

+58
-19
lines changed

2 files changed

+58
-19
lines changed

gatsby-config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ module.exports = {
7070
options: {
7171
develop: true,
7272
tailwind: true,
73-
whitelist: ["mobile-nav", "active", "error"],
73+
whitelist: ["mobile-nav", "active", "error", "open"],
7474
purgeOnly: ["src/css/main.css"] // Purge only tailwind
7575
}
7676
}

src/components/2_molecules/menu.js

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,63 @@
11
import React from "react";
2-
import PropTypes from "prop-types";
2+
// import PropTypes from "prop-types";
33
import { Link } from "gatsby";
44

5-
const Menu = ({ menuLinks }) => (
6-
<nav id="main-menu" role="menu" className="main-nav" aria-expanded="false">
7-
{menuLinks.map(link => (
8-
<Link
9-
key={link.name}
10-
to={link.link}
11-
className="main-nav-link text-BaseNavGrey hover:text-white relative"
12-
role="menuitem"
13-
>
14-
{link.name}
15-
</Link>
16-
))}
17-
</nav>
18-
);
5+
class Menu extends React.Component {
6+
constructor(props) {
7+
super(props);
8+
this.state = {
9+
menuOpen: false
10+
};
11+
this.toggleMenu = this.toggleMenu.bind(this);
12+
}
1913

20-
Menu.propTypes = {
21-
menuLinks: PropTypes.array.isRequired
22-
};
14+
toggleMenu() {
15+
this.setState({
16+
menuOpen: !this.state.menuOpen
17+
});
18+
}
19+
20+
render() {
21+
const { menuLinks } = this.props;
22+
const { menuOpen } = this.state;
23+
24+
return (
25+
<>
26+
<a
27+
aria-label="mobile menu button"
28+
id="menu-icon"
29+
className={`menu-icon ${menuOpen ? "open" : ""}`}
30+
href="javascript:;"
31+
onClick={() => this.toggleMenu()}
32+
>
33+
<span className="bar top" />
34+
<span className="bar middle" />
35+
<span className="bar bottom" />
36+
</a>
37+
<nav
38+
id="main-menu"
39+
role="menu"
40+
className={`main-nav ${menuOpen ? "open" : ""}`}
41+
aria-expanded="false"
42+
>
43+
{menuLinks.map(link => (
44+
<Link
45+
key={link.name}
46+
to={link.link}
47+
className="main-nav-link text-BaseNavGrey hover:text-white relative"
48+
role="menuitem"
49+
>
50+
{link.name}
51+
</Link>
52+
))}
53+
</nav>
54+
</>
55+
);
56+
}
57+
}
58+
59+
// Menu.propTypes = {
60+
// menuLinks: PropTypes.array.isRequired
61+
// };
2362

2463
export default Menu;

0 commit comments

Comments
 (0)