From f6280e53ba599f65474a5168042834a20247b10b Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 8 Nov 2018 11:43:37 +0100 Subject: [PATCH] Using a toggle instead of a hover (for mobile), and autoclose --- client/src/views/layout/header/LoggedIn.js | 8 +- client/src/views/layout/header/imports.js | 4 +- client/src/views/layout/header/index.js | 32 ++++- client/src/views/layout/header/styles.scss | 153 +++++++++++++-------- 4 files changed, 130 insertions(+), 67 deletions(-) diff --git a/client/src/views/layout/header/LoggedIn.js b/client/src/views/layout/header/LoggedIn.js index 2bda15736..902257382 100644 --- a/client/src/views/layout/header/LoggedIn.js +++ b/client/src/views/layout/header/LoggedIn.js @@ -4,7 +4,7 @@ import { Link } from 'react-router-dom' import { isDefined } from '../../../utils/js-helpers' export const LoggedIn = props => { - let { user, auth } = props + let { user, auth, openedMenu, toggleMenuOpen, closeAll } = props let displayName = 'No Display Name' if (isDefined(user.alias)) { @@ -25,10 +25,10 @@ export const LoggedIn = props => { return ( -
  • - {displayName} +
  • + toggleMenuOpen(42)}> {displayName}
  • diff --git a/client/src/views/layout/header/imports.js b/client/src/views/layout/header/imports.js index e94c51fc1..77205f165 100644 --- a/client/src/views/layout/header/imports.js +++ b/client/src/views/layout/header/imports.js @@ -7,7 +7,7 @@ import { const usersMenus = { title: 'Users', - to: '/events', + to: '/users', submenus: [ { title: 'Your profile', to: '/users/user', icon: Search }, { title: 'Directory', to: '/users/browse', icon: GamepadRounded }, @@ -42,7 +42,7 @@ const eventsMenus = { const keyvaultMenus = { title: 'Key Vault', - to: '/events', + to: '/key-vault', submenus: [ { title: 'Manage keys', to: '/key-vault/browse', icon: Search }, { title: 'Add key', to: '/key-vault/addKey', icon: GamepadRounded }, diff --git a/client/src/views/layout/header/index.js b/client/src/views/layout/header/index.js index b3a3e88d9..9112d0673 100644 --- a/client/src/views/layout/header/index.js +++ b/client/src/views/layout/header/index.js @@ -21,6 +21,7 @@ class Header extends Component { this.state = { onTop: true, mobileOpen: false, + openedMenu: null, user: null } } @@ -37,6 +38,18 @@ class Header extends Component { this.setState({ mobileOpen: !this.state.mobileOpen }) } + toggleMenuOpen (index) { + if (this.state.openedMenu === index) { + this.setState({ openedMenu: null }) + } else { + this.setState({ openedMenu: index }) + } + } + + closeAll () { + this.setState({ openedMenu: null, mobileOpen: false }) + } + componentDidMount () { window.addEventListener('scroll', () => this.handleScroll()) const user = window.localStorage.getItem('user') @@ -49,8 +62,7 @@ class Header extends Component { render () { let { auth } = this.props - let { onTop, mobileOpen } = this.state - + let { onTop, mobileOpen, openedMenu } = this.state if (window.localStorage.getItem('access_token')) { if (jwtDecode(window.localStorage.getItem('access_token')).exp < new Date().getTime() / 1000) { window.localStorage.clear() @@ -61,13 +73,13 @@ class Header extends Component { const menus = allMenus.map(({ to, title, submenus }, index) => { return ( -
  • - {title} +
  • + this.toggleMenuOpen(index)}> {title} @@ -82,7 +94,7 @@ class Header extends Component {
    this.toggleMobileOpen()}> Menu
    -