import { ChangeEvent, FormEvent, useState, useEffect } from 'react'; import { Query } from '../../../../interfaces'; import Button from '../../../UI/Buttons/Button/Button'; import InputGroup from '../../../UI/Forms/InputGroup/InputGroup'; import ModalForm from '../../../UI/Forms/ModalForm/ModalForm'; import { connect } from 'react-redux'; import { addQuery, updateQuery } from '../../../../store/actions'; interface Props { modalHandler: () => void; addQuery: (query: Query) => {}; updateQuery: (query: Query, Oldprefix: string) => {}; query?: Query; } const QueriesForm = (props: Props): JSX.Element => { const { modalHandler, addQuery, updateQuery, query } = props; const [formData, setFormData] = useState({ name: '', prefix: '', template: '', }); const inputChangeHandler = (e: ChangeEvent) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value, }); }; const formHandler = (e: FormEvent) => { e.preventDefault(); if (query) { updateQuery(formData, query.prefix); } else { addQuery(formData); } // close modal modalHandler(); // clear form setFormData({ name: '', prefix: '', template: '', }); }; useEffect(() => { if (query) { setFormData(query); } else { setFormData({ name: '', prefix: '', template: '', }); } }, [query]); return ( inputChangeHandler(e)} /> inputChangeHandler(e)} /> inputChangeHandler(e)} /> {query ? : } ); }; export default connect(null, { addQuery, updateQuery })(QueriesForm);