import React, { useState } from 'react'; import { Editable, EditableInput, EditablePreview, Flex, IconButton, Input, useEditableControls, ButtonGroup, Stack, useToast, } from '@chakra-ui/react'; import { CheckIcon, CloseIcon, EditIcon } from '@chakra-ui/icons'; import { useTranslation } from 'react-i18next'; interface EditableWrapperProps { value: string; onSubmit: ({ id, name, phone, }: { id: string; name?: string; phone?: string; }) => Promise; as: 'phone' | 'name'; id: string; } const EditableWrapper = ({ value, onSubmit, as, id }: EditableWrapperProps) => { const { t } = useTranslation('~', { keyPrefix: 'dry-wash.arm.master.editable', }); const toast = useToast(); const [currentValue, setCurrentValue] = useState(value); const handleSubmit = async (newValue: string) => { if (currentValue === newValue) return; try { await onSubmit({ id, [as]: newValue }); setCurrentValue(newValue); toast({ title: 'Успешно!', description: 'Данные обновлены.', status: 'success', duration: 2000, isClosable: true, position: 'top-right', }); } catch (error) { toast({ title: 'Ошибка!', description: 'Не удалось обновить данные.', status: 'error', duration: 2000, isClosable: true, position: 'top-right', }); console.error('Ошибка при обновлении данных:', error); } }; function EditableControls() { const { isEditing, getSubmitButtonProps, getCancelButtonProps, getEditButtonProps, } = useEditableControls(); return isEditing ? ( } {...getSubmitButtonProps()} /> } {...getCancelButtonProps()} /> ) : ( } {...getEditButtonProps()} /> ); } return ( ); }; export default EditableWrapper;