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 Paths from '../../constants/Paths'; import NotificationsPopup from './NotificationsPopup'; import UserPopup from '../UserPopup'; import styles from './Header.module.scss'; const Header = React.memo( ({ project, user, notifications, canEditProject, canEditUsers, onProjectSettingsClick, onUsersClick, onNotificationDelete, onUserSettingsClick, onLogout, }) => { const handleProjectSettingsClick = useCallback(() => { if (canEditProject) { onProjectSettingsClick(); } }, [canEditProject, onProjectSettingsClick]); return (
{!project && ( Planka )} {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 */ 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;