import dequal from 'dequal'; import React, { useCallback, useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button, Form } from 'semantic-ui-react'; import { withPopup } from '../../lib/popup'; import { Input, Popup } from '../../lib/custom-ui'; import { useForm, useSteps } from '../../hooks'; import DeleteStep from '../DeleteStep'; import styles from './EditPopup.module.css'; const StepTypes = { DELETE: 'DELETE', }; const EditStep = React.memo(({ defaultData, onUpdate, onDelete, onClose }) => { const [t] = useTranslation(); const [data, handleFieldChange] = useForm(() => ({ name: '', ...defaultData, })); const [step, openStep, handleBack] = useSteps(); const nameField = useRef(null); const handleSubmit = useCallback(() => { const cleanData = { ...data, name: data.name.trim(), }; if (!cleanData.name) { nameField.current.select(); return; } if (!dequal(cleanData, defaultData)) { onUpdate(cleanData); } onClose(); }, [defaultData, onUpdate, onClose, data]); const handleDeleteClick = useCallback(() => { openStep(StepTypes.DELETE); }, [openStep]); useEffect(() => { nameField.current.select(); }, []); if (step && step.type === StepTypes.DELETE) { return ( ); } return ( <> {t('common.editBoard', { context: 'title', })}
{t('common.title')}