import dequal from 'dequal'; import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button, Form } from 'semantic-ui-react'; import { Popup } from '../../lib/custom-ui'; import { useForm, useSteps } from '../../hooks'; import LabelColors from '../../constants/LabelColors'; import Editor from './Editor'; import DeleteStep from '../DeleteStep'; import styles from './EditStep.module.css'; const StepTypes = { DELETE: 'DELETE', }; const EditStep = React.memo(({ defaultData, onUpdate, onDelete, onBack, }) => { const [t] = useTranslation(); const [data, handleFieldChange] = useForm(() => ({ color: LabelColors.KEYS[0], ...defaultData, name: defaultData.name || '', })); const [step, openStep, handleBack] = useSteps(); const handleSubmit = useCallback(() => { const cleanData = { ...data, name: data.name.trim() || null, }; if (!dequal(cleanData, defaultData)) { onUpdate(cleanData); } onBack(); }, [defaultData, data, onUpdate, onBack]); const handleDeleteClick = useCallback(() => { openStep(StepTypes.DELETE); }, [openStep]); if (step && step.type === StepTypes.DELETE) { return ( ); } return ( <> {t('common.editLabel', { context: 'title', })}