@@ -4,7 +4,9 @@ import { Link } from 'react-router-dom'
44import { withRouter } from 'react-router'
55import logo from '../../images/av-logo.svg'
66import './Navbar.css'
7+
78export class Navbar extends Component {
9+ state = { showHamburgerMenu : false }
810 currentPath ( ) {
911 // this.props.location.split("/") returns ["", ""] when on homepage
1012 // and ["", "users", "123"] when on /users/123
@@ -17,9 +19,16 @@ export class Navbar extends Component {
1719 this . props . cookies . remove ( '_WebsiteOne_session' )
1820 }
1921
22+ toggleHamburgerMenu = ( ) => {
23+ this . setState ( {
24+ showHamburgerMenu : ! this . state . showHamburgerMenu
25+ } )
26+ }
27+
2028 render ( ) {
2129 const { cookies } = this . props
2230 const activeItem = this . currentPath ( )
31+ const menuView = this . state . showHamburgerMenu ? 'open' : 'close'
2332 return (
2433 < Menu stackable borderless inverted as = 'div' className = 'navbar' >
2534 < Container >
@@ -30,73 +39,65 @@ export class Navbar extends Component {
3039 </ Link >
3140 </ Menu . Item >
3241
33- < Menu . Menu position = 'right' >
34- < Menu . Item
35- name = 'about'
36- active = { activeItem === 'about' }
37- >
42+ < Menu . Menu position = 'right' className = { `${ menuView } ` } >
43+ < Menu . Item name = 'about' active = { activeItem === 'about' } >
3844 < Link to = '/about' > About</ Link >
3945 </ Menu . Item >
4046
41- < Menu . Item
42- name = 'users'
43- active = { activeItem === 'users' }
44- >
47+ < Menu . Item name = 'users' active = { activeItem === 'users' } >
4548 < Link to = '/users' > Users</ Link >
4649 </ Menu . Item >
4750
48- < Menu . Item
49- name = 'projects'
50- active = { activeItem === 'projects' }
51- >
51+ < Menu . Item name = 'projects' active = { activeItem === 'projects' } >
5252 < Link to = '/projects' > Projects</ Link >
5353 </ Menu . Item >
5454
5555 < Menu . Item name = 'premium' active = { activeItem === 'premium' } >
5656 < Link to = '/membership-plans' > Premium</ Link >
5757 </ Menu . Item >
5858
59- < Menu . Item
60- name = 'events'
61- active = { activeItem === 'events' }
62- >
59+ < Menu . Item name = 'events' active = { activeItem === 'events' } >
6360 < Link to = '/events' > Events</ Link >
6461 </ Menu . Item >
6562
66- < Menu . Item name = 'getting-started' active = { activeItem === 'getting-started' } >
67- < Link to = '/getting-started' >
68- Getting Started
69- </ Link >
63+ < Menu . Item
64+ name = 'getting-started'
65+ active = { activeItem === 'getting-started' }
66+ >
67+ < Link to = '/getting-started' > Getting Started</ Link >
7068 </ Menu . Item >
71- { ! cookies . get ( '_WebsiteOne_session' )
72- ? < Fragment >
73- < Menu . Item
74- name = 'login'
75- active = { activeItem === 'login' }
76- >
69+ { ! cookies . get ( '_WebsiteOne_session' ) ? (
70+ < Fragment >
71+ < Menu . Item name = 'login' active = { activeItem === 'login' } >
7772 < Link to = '/login' > Login</ Link >
7873 </ Menu . Item >
7974
80- < Menu . Item
81- name = 'signup'
82- active = { activeItem === 'signup' }
83- >
75+ < Menu . Item name = 'signup' active = { activeItem === 'signup' } >
8476 < Link to = '/signup' > Sign up</ Link >
8577 </ Menu . Item >
8678 </ Fragment >
87- : < Menu . Item
88- name = 'signout'
89- active = { activeItem === 'signout' }
90- >
79+ ) : (
80+ < Menu . Item name = 'signout' active = { activeItem === 'signout' } >
9181 < Link to = '/' onClick = { this . handleRemoveCookies } >
9282 < Icon name = 'sign-out' />
9383 Log out
9484 </ Link >
95- </ Menu . Item > }
85+ </ Menu . Item >
86+ ) }
9687 </ Menu . Menu >
88+ < Link to = '/' >
89+ < span className = 'hamburger' onClick = { this . toggleHamburgerMenu } >
90+ < svg width = '25' height = '25' >
91+ < path d = 'M0,5 25,5' stroke = '#fff' strokeWidth = '1' />
92+ < path d = 'M0,13 25,13' stroke = '#fff' strokeWidth = '1' />
93+ < path d = 'M0,21 25,21' stroke = '#fff' strokeWidth = '1' />
94+ </ svg >
95+ </ span >
96+ </ Link >
9797 </ Container >
9898 </ Menu >
9999 )
100100 }
101101}
102+
102103export default withRouter ( Navbar )
0 commit comments