atsid/gcal-leave-scraper

View on GitHub
client/components/skeleton/LeftNavPane.js

Summary

Maintainability
A
0 mins
Test Coverage
const React = require('react');

// Components
const mui = require('material-ui');
const LeftNav = mui.LeftNav;
const MenuItem = mui.MenuItem;

const LeftNavPane = React.createClass({

  // Properties

  propTypes: {
    user: React.PropTypes.object,
    onNavChange: React.PropTypes.func,
  },

  // Getters

  getDefaultProps() {
    return {user: null};
  },

  getInitialState() {
    return {open: false};
  },

  // Handlers

  handleNavClick(url) {
    this.props.onNavChange(url);
  },

  toggle() {
    this.setState({open: !this.state.open});
  },

  // Renders

  renderLeftNavBarMenuItems() {
    return [
      <MenuItem
        key="0"
        primaryText="Home"
        onTouchTap={this.handleNavClick.bind(this, '/')}/>,
      <MenuItem
        key="1"
        primaryText={this.props.user ? 'Logout' : 'Login'}
        onTouchTap={this.handleNavClick.bind(this, this.props.user ? '/logout' : '/api/auth/google')} />,
    ];
  },

  render() {
    return (
      <LeftNav
        ref="leftNav"
        docked={false}
        open={this.state.open}
        onRequestChange={open => this.setState({open})}>
        {this.renderLeftNavBarMenuItems()}
      </LeftNav>
    );
  },
});

module.exports = LeftNavPane;