|
@@ -4,6 +4,8 @@ import { connect } from "react-redux";
|
|
|
import { NavLink } from "react-router-dom";
|
|
|
import { translate } from "react-i18next";
|
|
|
|
|
|
+import "navbar.scss";
|
|
|
+
|
|
|
@connect(state => ({
|
|
|
loggedIn: state.user.get("loggedIn"),
|
|
|
}))
|
|
@@ -19,20 +21,48 @@ export default class Menu extends Component {
|
|
|
t: () => {},
|
|
|
};
|
|
|
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+
|
|
|
+ this.state = {
|
|
|
+ showNavbar: false,
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
getLink(to, text, canShow = true) {
|
|
|
- return (canShow) ? <NavLink to={ to } >{ text }</NavLink> : "";
|
|
|
+ return (canShow) ? <NavLink to={ to } onClick={ this.closeNavbar } >{ text }</NavLink> : "";
|
|
|
+ }
|
|
|
+
|
|
|
+ toggleNavbar = () => {
|
|
|
+ this.setState({
|
|
|
+ showNavbar: !this.state.showNavbar,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ closeNavbar = () => {
|
|
|
+ this.setState({
|
|
|
+ showNavbar: false,
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
render() {
|
|
|
const { t } = this.props;
|
|
|
|
|
|
return (
|
|
|
- <header className="Menu">
|
|
|
- {this.getLink("/", t("navbar:home"))}
|
|
|
- {this.getLink("/login", t("navbar:login"), !this.props.loggedIn)}
|
|
|
- {this.getLink("/register", t("navbar:register"), !this.props.loggedIn)}
|
|
|
- {this.getLink("/settings", t("navbar:settings"), this.props.loggedIn)}
|
|
|
- {this.getLink("/logout", t("navbar:logout"), this.props.loggedIn)}
|
|
|
+ <header>
|
|
|
+ {this.getLink("/", <img src="/assets/images/wordmark-white.svg" />)}
|
|
|
+ <button className="hamburger" onClick={ this.toggleNavbar }>
|
|
|
+ <span></span>
|
|
|
+ <span></span>
|
|
|
+ <span></span>
|
|
|
+ </button>
|
|
|
+ <navbar className={ (this.state.showNavbar) ? "show" : "" }>
|
|
|
+ {this.getLink("/", t("navbar:home"))}
|
|
|
+ {this.getLink("/login", t("navbar:login"), !this.props.loggedIn)}
|
|
|
+ {this.getLink("/register", t("navbar:register"), !this.props.loggedIn)}
|
|
|
+ {this.getLink("/settings", t("navbar:settings"), this.props.loggedIn)}
|
|
|
+ {this.getLink("/logout", t("navbar:logout"), this.props.loggedIn)}
|
|
|
+ </navbar>
|
|
|
</header>
|
|
|
);
|
|
|
}
|