fleet/frontend/components/side_panels/UserMenu/UserMenu.jsx
noahtalerman 9750a81f0e
Add image import for all icon png assets. Fix link to home from 404 and 500 pages. (#196)
- Explicitly import all icon png assets in the component files they're referenced. Instead of creating a relative path to the icon image asset in the `<Icon />` component. This allows icon assets to be independent of any custom url prefix and fixes #193. In addition, eslint now catches all unresolved paths to image assets.
- Remove the `<Icon />` component
- Remove `icon_name.js`
- Add `<Link />` component and PATHS to 404 and 500 pages. These pages now work with a custom URL prefix specified.
- Remove all icons from the Hosts side panel. These changes are part of the Hosts UI #162.
2021-01-15 08:57:27 -08:00

61 lines
2.1 KiB
JavaScript

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import PATHS from 'router/paths';
import SettingsIcon from '../../../../assets/images/icon-main-settings-white-24x24@2x.png';
import HelpIcon from '../../../../assets/images/icon-main-help-white-24x24@2x.png';
import LogoutIcon from '../../../../assets/images/icon-main-logout-white-24x24@2x.png';
class UserMenu extends Component {
static propTypes = {
pathname: PropTypes.string,
onLogout: PropTypes.func,
onNavItemClick: PropTypes.func,
user: PropTypes.shape({
gravatarURL: PropTypes.string,
name: PropTypes.string,
username: PropTypes.string.isRequired,
position: PropTypes.string,
}).isRequired,
};
static defaultProps = {
isOpened: false,
};
render () {
const { pathname, onLogout, onNavItemClick } = this.props;
const baseClass = 'user-menu';
const userMenuClass = classnames(baseClass);
let settingsActive;
if (pathname.replace('/', '') === 'settings') settingsActive = true;
const settingsNavItemBaseClass = classnames(
`${baseClass}__nav-item`,
{
[`${baseClass}__nav-item--active`]: settingsActive,
},
);
const iconClasses = classnames(
'icon',
);
return (
<div className={userMenuClass}>
<nav className={`${baseClass}__nav`}>
<ul className={`${baseClass}__nav-list`}>
<li className={settingsNavItemBaseClass}><a href="#settings" onClick={onNavItemClick(PATHS.USER_SETTINGS)}><img src={SettingsIcon} alt="settings icon" className={iconClasses} /><span>Account</span></a></li>
<li className={`${baseClass}__nav-item`}><a href="https://github.com/fleetdm/fleet/blob/master/docs/README.md" target="_blank" rel="noreferrer"><img src={HelpIcon} alt="help icon" className={iconClasses} /><span>Help</span></a></li>
<li className={`${baseClass}__nav-item`}><a href="#logout" onClick={onLogout}><img src={LogoutIcon} alt="logout icon" className={iconClasses} /><span>Log out</span></a></li>
</ul>
</nav>
</div>
);
}
}
export default UserMenu;