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 && ( )}