import React, { useCallback, useEffect } from 'react'; import PropTypes from 'prop-types'; import { Button, Grid } from 'semantic-ui-react'; import BoardsContainer from '../../containers/BoardsContainer'; import ActionsPopup from './ActionsPopup'; import AddMembershipPopup from './AddMembershipPopup'; import EditMembershipPopup from './EditMembershipPopup'; import User from '../User'; import styles from './Project.module.scss'; const Project = React.memo( ({ name, background, backgroundImage, isBackgroundImageUpdating, memberships, allUsers, isEditable, onUpdate, onBackgroundImageUpdate, onDelete, onMembershipCreate, onMembershipDelete, }) => { const handleMembershipDelete = useCallback( (id) => { onMembershipDelete(id); }, [onMembershipDelete], ); useEffect(() => { return () => { document.body.style.background = null; }; }, []); return (
{isEditable ? (
); }, ); Project.propTypes = { name: PropTypes.string.isRequired, /* eslint-disable react/forbid-prop-types */ background: PropTypes.object, backgroundImage: PropTypes.object, /* eslint-enable react/forbid-prop-types */ isBackgroundImageUpdating: PropTypes.bool.isRequired, /* eslint-disable react/forbid-prop-types */ memberships: PropTypes.array.isRequired, allUsers: PropTypes.array.isRequired, /* eslint-enable react/forbid-prop-types */ isEditable: PropTypes.bool.isRequired, onUpdate: PropTypes.func.isRequired, onBackgroundImageUpdate: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, onMembershipCreate: PropTypes.func.isRequired, onMembershipDelete: PropTypes.func.isRequired, }; Project.defaultProps = { background: undefined, backgroundImage: undefined, }; export default Project;