2016-06-27 20:14:26 +00:00
|
|
|
import React, { PropTypes } from 'react';
|
2016-06-23 22:29:55 +00:00
|
|
|
import { Link } from 'react-router';
|
|
|
|
|
2016-06-27 20:14:26 +00:00
|
|
|
function Nav(props) {
|
|
|
|
return (
|
2016-07-14 21:20:44 +00:00
|
|
|
<nav className="nav" role="navigation" title="main-navigation">
|
2016-07-13 15:59:47 +00:00
|
|
|
<ul className="nav__items-left" title="project-menu">
|
2016-06-27 20:14:26 +00:00
|
|
|
<li className="nav__item">
|
2016-07-12 16:25:48 +00:00
|
|
|
<a
|
2016-06-27 20:14:26 +00:00
|
|
|
className="nav__new"
|
2016-08-12 16:45:26 +00:00
|
|
|
onClick={props.newProject}
|
2016-06-27 20:14:26 +00:00
|
|
|
>
|
|
|
|
New
|
2016-07-12 16:25:48 +00:00
|
|
|
</a>
|
2016-06-27 20:14:26 +00:00
|
|
|
</li>
|
|
|
|
<li className="nav__item">
|
2016-07-12 16:25:48 +00:00
|
|
|
<a
|
2016-06-27 20:14:26 +00:00
|
|
|
className="nav__save"
|
|
|
|
onClick={props.saveProject}
|
|
|
|
>
|
|
|
|
Save
|
2016-07-12 16:25:48 +00:00
|
|
|
</a>
|
2016-06-27 20:14:26 +00:00
|
|
|
</li>
|
2016-08-17 23:00:05 +00:00
|
|
|
{(() => { // eslint-disable-line
|
|
|
|
if (props.project.id) {
|
|
|
|
return (
|
|
|
|
<li className="nav__item">
|
|
|
|
<a className="nav__clone" onClick={props.cloneProject}>
|
|
|
|
Duplicate
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
})()}
|
|
|
|
{(() => { // eslint-disable-line
|
|
|
|
if (props.project.id) {
|
|
|
|
return (
|
|
|
|
<li className="nav__item">
|
|
|
|
<a className="nav__export" onClick={props.exportProjectAsZip}>
|
|
|
|
Download
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
})()}
|
|
|
|
{(() => { // eslint-disable-line
|
|
|
|
if (props.project.id) {
|
|
|
|
return (
|
|
|
|
<li className="nav__item">
|
|
|
|
<Link to={`/full/${props.project.id}`} target="_blank">
|
|
|
|
Fullscreen
|
|
|
|
</Link>
|
|
|
|
</li>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
})()}
|
|
|
|
{(() => { // eslint-disable-line
|
|
|
|
if (props.user.authenticated) {
|
|
|
|
return (
|
|
|
|
<li className="nav__item">
|
|
|
|
<p className="nav__open">
|
|
|
|
<Link to="/sketches">
|
|
|
|
Open
|
|
|
|
</Link>
|
|
|
|
</p>
|
|
|
|
</li>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
})()}
|
2016-08-22 16:35:59 +00:00
|
|
|
<li className="nav__item">
|
|
|
|
<p className="nav__about">
|
|
|
|
<Link to="/about">
|
|
|
|
About
|
|
|
|
</Link>
|
|
|
|
</p>
|
|
|
|
</li>
|
2016-06-27 20:14:26 +00:00
|
|
|
</ul>
|
2016-07-13 15:59:47 +00:00
|
|
|
<ul className="nav__items-right" title="user-menu">
|
2016-06-27 20:14:26 +00:00
|
|
|
<li className="nav__item">
|
|
|
|
{props.user.authenticated && <p>Hello, {props.user.username}!</p>}
|
|
|
|
{!props.user.authenticated && <p><Link to="/login">Login</Link> or <Link to="/signup">Sign Up</Link></p>}
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
);
|
2016-06-23 22:29:55 +00:00
|
|
|
}
|
|
|
|
|
2016-06-27 20:14:26 +00:00
|
|
|
Nav.propTypes = {
|
2016-08-12 16:45:26 +00:00
|
|
|
newProject: PropTypes.func.isRequired,
|
2016-06-27 20:14:26 +00:00
|
|
|
saveProject: PropTypes.func.isRequired,
|
2016-07-15 17:11:50 +00:00
|
|
|
exportProjectAsZip: PropTypes.func.isRequired,
|
2016-07-15 17:36:33 +00:00
|
|
|
cloneProject: PropTypes.func.isRequired,
|
2016-06-27 20:14:26 +00:00
|
|
|
user: PropTypes.shape({
|
|
|
|
authenticated: PropTypes.bool.isRequired,
|
|
|
|
username: PropTypes.string
|
2016-08-17 22:35:15 +00:00
|
|
|
}).isRequired,
|
|
|
|
project: PropTypes.shape({
|
|
|
|
id: PropTypes.string
|
|
|
|
})
|
2016-06-27 20:14:26 +00:00
|
|
|
};
|
|
|
|
|
2016-06-23 22:29:55 +00:00
|
|
|
export default Nav;
|