import { dequal } from 'dequal'; import omit from 'lodash/omit'; import React, { useCallback, useState } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button, Form, Menu, Radio, Segment } from 'semantic-ui-react'; import { Popup } from '../../lib/custom-ui'; import { BoardMembershipRoles } from '../../constants/Enums'; import styles from './BoardMembershipPermissionsSelectStep.module.scss'; const BoardMembershipPermissionsSelectStep = React.memo( ({ defaultData, title, buttonContent, onSelect, onBack, onClose }) => { const [t] = useTranslation(); const [data, setData] = useState(() => ({ role: BoardMembershipRoles.EDITOR, canComment: null, ...defaultData, })); const handleSelectRoleClick = useCallback((role) => { setData((prevData) => ({ ...prevData, role, canComment: role === BoardMembershipRoles.VIEWER ? !!prevData.canComment : null, })); }, []); const handleSettingChange = useCallback((_, { name: fieldName, checked: value }) => { setData((prevData) => ({ ...prevData, [fieldName]: value, })); }, []); const handleSubmit = useCallback(() => { if (!dequal(data, defaultData)) { onSelect(data.role === BoardMembershipRoles.VIEWER ? data : omit(data, 'canComment')); } onClose(); }, [defaultData, onSelect, onClose, data]); return ( <> {t(title, { context: 'title', })} handleSelectRoleClick(BoardMembershipRoles.EDITOR)} > {t('common.editor')} {t('common.canEditContentOfBoard')} handleSelectRoleClick(BoardMembershipRoles.VIEWER)} > {t('common.viewer')} {t('common.canOnlyViewBoard')} {data.role === BoardMembershipRoles.VIEWER && ( )} > ); }, ); BoardMembershipPermissionsSelectStep.propTypes = { defaultData: PropTypes.object, // eslint-disable-line react/forbid-prop-types title: PropTypes.string, buttonContent: PropTypes.string, onSelect: PropTypes.func.isRequired, onBack: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, }; BoardMembershipPermissionsSelectStep.defaultProps = { defaultData: undefined, title: 'common.selectPermissions', buttonContent: 'action.selectPermissions', }; export default BoardMembershipPermissionsSelectStep;