import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { v4 as uuid } from 'uuid'; import { SimpleGrid, Tab, TabList, TabPanel, TabPanels, Tabs } from '@chakra-ui/react'; import { Formik, Form } from 'formik'; import { ServiceClassSchema } from 'constants/formSchemas'; import StringField from 'components/FormFields/StringField'; import SelectField from 'components/FormFields/SelectField'; import useMutationResult from 'hooks/useMutationResult'; import { useUpdateServiceClass } from 'hooks/Network/ServiceClasses'; import NumberCurrencyField from 'components/CustomFields/NumberCurrencyField'; import NotesTable from 'components/CustomFields/NotesTable'; const propTypes = { isOpen: PropTypes.bool.isRequired, editing: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, refresh: PropTypes.func.isRequired, formRef: PropTypes.instanceOf(Object).isRequired, serviceClass: PropTypes.instanceOf(Object).isRequired, }; const EditServiceClassForm = ({ serviceClass, editing, isOpen, onClose, refresh, formRef }) => { const { t } = useTranslation(); const [formKey, setFormKey] = useState(uuid()); const { onSuccess, onError } = useMutationResult({ objName: t('service.one'), operationType: 'update', refresh, onClose, }); const update = useUpdateServiceClass({ id: serviceClass?.id }); const createParameters = ({ name, description, billingCode, period, cost, currency, notes }) => ({ name, billingCode, description, period, cost, currency, notes: notes.filter((note) => note.isNew), }); useEffect(() => { setFormKey(uuid()); }, [isOpen]); return ( update.mutateAsync(createParameters(formData), { onSuccess: () => { onSuccess({ setSubmitting, resetForm }); }, onError: (e) => { onError(e, { resetForm }); }, }) } >
{t('common.main')} {t('common.notes')}
); }; EditServiceClassForm.propTypes = propTypes; export default EditServiceClassForm;