import dequal from 'dequal'; import pickBy from 'lodash/pickBy'; import React, { useCallback, useMemo, useRef } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button, Form, Input } from 'semantic-ui-react'; import { useForm } from '../../../hooks'; import styles from './InformationEdit.module.scss'; const InformationEdit = React.memo(({ defaultData, onUpdate }) => { const [t] = useTranslation(); const [data, handleFieldChange] = useForm(() => ({ name: '', phone: '', organization: '', ...pickBy(defaultData), })); const cleanData = useMemo( () => ({ ...data, name: data.name.trim(), phone: data.phone.trim() || null, organization: data.organization.trim() || null, }), [data], ); const nameField = useRef(null); const handleSubmit = useCallback(() => { if (!cleanData.name) { nameField.current.select(); return; } onUpdate(cleanData); }, [onUpdate, cleanData]); return (
); }); InformationEdit.propTypes = { defaultData: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types onUpdate: PropTypes.func.isRequired, }; export default InformationEdit;