import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import { Link } from 'react-router-dom'; import { Icon, Menu } from 'semantic-ui-react'; import { usePopup } from '../../lib/popup'; import Paths from '../../constants/Paths'; import NotificationsStep from './NotificationsStep'; import UserStep from '../UserStep'; import styles from './Header.module.scss'; const POPUP_PROPS = { position: 'bottom right', }; const Header = React.memo( ({ project, user, notifications, isLogouting, canEditProject, canEditUsers, onProjectSettingsClick, onUsersClick, onNotificationDelete, onUserSettingsClick, onLogout, }) => { const handleProjectSettingsClick = useCallback(() => { if (canEditProject) { onProjectSettingsClick(); } }, [canEditProject, onProjectSettingsClick]); const NotificationsPopup = usePopup(NotificationsStep, POPUP_PROPS); const UserPopup = usePopup(UserStep, POPUP_PROPS); return (
{!project && ( TeamBoard )} {project && ( {project.name} )} {canEditUsers && ( )} {notifications.length > 0 && ( {notifications.length} )} {user.name}
); }, ); Header.propTypes = { /* eslint-disable react/forbid-prop-types */ project: PropTypes.object, user: PropTypes.object.isRequired, notifications: PropTypes.array.isRequired, /* eslint-enable react/forbid-prop-types */ isLogouting: PropTypes.bool.isRequired, canEditProject: PropTypes.bool.isRequired, canEditUsers: PropTypes.bool.isRequired, onProjectSettingsClick: PropTypes.func.isRequired, onUsersClick: PropTypes.func.isRequired, onNotificationDelete: PropTypes.func.isRequired, onUserSettingsClick: PropTypes.func.isRequired, onLogout: PropTypes.func.isRequired, }; Header.defaultProps = { project: undefined, }; export default Header;