All files / client/components SideMenuTrigger.tsx

0% Statements 0/12
100% Branches 0/0
0% Functions 0/5
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                                                                       
// This is the root component for #search-page
 
import React from 'react'
 
import Emitter from '../emitter'
import Crowi from 'client/util/Crowi'
import Icon from 'components/Common/Icon'
 
interface Props {
  crowi: Crowi
}
 
interface State {
  menuOpen: boolean
}
 
export default class SideMenuTrigger extends React.Component<Props, State> {
  constructor(props: Props) {
    super(props)
 
    this.state = {
      menuOpen: false,
    }
 
    this.handleMenuOpen = this.handleMenuOpen.bind(this)
 
    Emitter.on('closeSideMenu', () => {
      this.closeMenu()
    })
  }
 
  handleMenuOpen() {
    const toMenuOpen = !this.state.menuOpen
    Emitter.emit('sideMenuHandle', toMenuOpen)
    this.setState({ menuOpen: toMenuOpen })
  }
 
  closeMenu() {
    const toMenuOpen = false
    Emitter.emit('sideMenuHandle', toMenuOpen)
    this.setState({ menuOpen: toMenuOpen })
  }
 
  render() {
    return (
      <a onClick={this.handleMenuOpen}>
        <Icon name="menu" />
      </a>
    )
  }
}