fleet/frontend/components/side_panels/SiteNavHeader/UserMenu.jsx

51 lines
1.6 KiB
React
Raw Normal View History

2016-11-15 17:17:33 +00:00
import React, { Component, PropTypes } from 'react';
import classnames from 'classnames';
2016-12-09 14:42:22 +00:00
import Avatar from 'components/Avatar';
import Icon from 'components/icons/Icon';
2016-11-28 19:20:15 +00:00
2016-11-15 17:17:33 +00:00
class UserMenu extends Component {
static propTypes = {
isOpened: PropTypes.bool,
onLogout: PropTypes.func,
onNavItemClick: PropTypes.func,
2016-11-15 17:17:33 +00:00
user: PropTypes.shape({
gravatarURL: PropTypes.string,
name: PropTypes.string,
position: PropTypes.string,
}).isRequired,
};
static defaultProps = {
isOpened: false,
};
render () {
const { isOpened, onLogout, onNavItemClick, user } = this.props;
const { name, position, username } = user;
2016-11-15 17:17:33 +00:00
const toggleBaseClass = 'user-menu-toggle';
const userMenuClass = classnames(
toggleBaseClass,
{ [`${toggleBaseClass}--open`]: isOpened }
);
return (
<div className={userMenuClass}>
2016-12-09 14:42:22 +00:00
<Avatar className={`${toggleBaseClass}__avatar`} user={user} />
<p className={`${toggleBaseClass}__name`}>{ name || username }</p>
<p className={`${toggleBaseClass}__position`}>{ position || <em>No job title specified</em> }</p>
2016-11-15 17:17:33 +00:00
<nav className={`${toggleBaseClass}__nav`}>
<ul className={`${toggleBaseClass}__nav-list`}>
<li className={`${toggleBaseClass}__nav-item`}><a href="#settings" onClick={onNavItemClick('/settings')}><Icon name="user-settings" /><span>Account Settings</span></a></li>
2016-11-28 19:20:15 +00:00
<li className={`${toggleBaseClass}__nav-item`}><a href="#logout" onClick={onLogout}><Icon name="logout" /><span>Log Out</span></a></li>
2016-11-15 17:17:33 +00:00
</ul>
</nav>
</div>
);
}
}
export default UserMenu;