import React, { PropTypes } from 'react' import CSSModules from 'browser/lib/CSSModules' import styles from './SideNav.styl' import { openModal } from 'browser/lib/modal' import Preferences from '../../modal/Preferences' import RepositorySection from './RepositorySection' import NewRepositoryModal from '../../modal/NewRepositoryModal' const electron = require('electron') const { remote } = electron const Menu = remote.Menu const MenuItem = remote.MenuItem class SideNav extends React.Component { // TODO: should not use electron stuff v0.7 handleMenuButtonClick (e) { var menu = new Menu() menu.append(new MenuItem({ label: 'Preferences', click: (e) => this.handlePreferencesButtonClick(e) })) menu.append(new MenuItem({ type: 'separator' })) menu.append(new MenuItem({ label: 'Mount Repository', click: (e) => this.handleNewRepositoryButtonClick(e) })) menu.popup(remote.getCurrentWindow(), e.clientX, e.clientY - 44) } handleNewRepositoryButtonClick (e) { openModal(NewRepositoryModal) } handlePreferencesButtonClick (e) { openModal(Preferences) } handleHomeButtonClick (e) { let { router } = this.context router.push('/repositories') } handleStarredButtonClick (e) { let { router } = this.context router.push('/starred') } handleToggleButtonClick (e) { let { dispatch } = this.props dispatch({ type: 'TOGGLE_SIDENAV' }) } render () { let { repositories, dispatch, location, status } = this.props let isFolded = !status.sideNavExpand let isHomeActive = location.pathname.match(/^\/home$/) let isStarredActive = location.pathname.match(/^\/starred$/) let repositorieElements = repositories .map((repo) => { return }) return (
{repositories.length > 0 ? repositorieElements : (
No repository mount.
)}
) } } SideNav.contextTypes = { router: PropTypes.shape({}) } SideNav.propTypes = { dispatch: PropTypes.func, repositories: PropTypes.array } export default CSSModules(SideNav, styles)