import React, { PropTypes } from 'react'; import { Link } from 'react-router'; import InlineSVG from 'react-inlinesvg'; import classNames from 'classnames'; const triangleUrl = require('../images/down-filled-triangle.svg'); const logoUrl = require('../images/p5js-logo-small.svg'); class Nav extends React.PureComponent { constructor(props) { super(props); this.state = { dropdownOpen: 'none' }; } isUserOwner() { return this.props.project.owner && this.props.project.owner.id === this.props.user.id; } toggleDropdown(dropdown) { if (this.state.dropdownOpen === 'none') { this.setState({ dropdownOpen: dropdown }); } else { this.setState({ dropdownOpen: 'none' }); } } render() { const navDropdownState = { file: classNames({ 'nav__item': true, 'nav__item--open': this.state.dropdownOpen === 'file' }), edit: classNames({ 'nav__item': true, 'nav__item--open': this.state.dropdownOpen === 'edit' }), sketch: classNames({ 'nav__item': true, 'nav__item--open': this.state.dropdownOpen === 'sketch' }), help: classNames({ 'nav__item': true, 'nav__item--open': this.state.dropdownOpen === 'help' }), account: classNames({ 'nav__item': true, 'nav__item--open': this.state.dropdownOpen === 'account' }) }; return ( ); } } Nav.propTypes = { newProject: PropTypes.func.isRequired, saveProject: PropTypes.func.isRequired, exportProjectAsZip: PropTypes.func.isRequired, cloneProject: PropTypes.func.isRequired, user: PropTypes.shape({ authenticated: PropTypes.bool.isRequired, username: PropTypes.string, id: PropTypes.string }).isRequired, project: PropTypes.shape({ id: PropTypes.string, owner: PropTypes.shape({ id: PropTypes.string }) }), logoutUser: PropTypes.func.isRequired, showShareModal: PropTypes.func.isRequired, showErrorModal: PropTypes.func.isRequired, unsavedChanges: PropTypes.bool.isRequired, warnIfUnsavedChanges: PropTypes.func.isRequired }; Nav.defaultProps = { project: { id: undefined, owner: undefined } }; export default Nav;