import { FormEvent, useEffect } from 'react'; import { useSearchParams } from 'react-router-dom'; import { Button, Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerFooter, DrawerHeader, DrawerOverlay, useDisclosure, } from '@chakra-ui/react'; import EditFormInput from './EditFormInput'; import { ParamField } from './types'; import style from './EditFormDrawer.module.scss'; interface EditFormDrawerProps { paramFields: ParamField[]; } export default function EditFormDrawer({ paramFields }: EditFormDrawerProps) { const [searchParams, setSearchParams] = useSearchParams(); const { isOpen, onClose, onOpen } = useDisclosure(); useEffect(() => { const isEditing = searchParams.get('edit'); if (isEditing === 'true') { return onOpen(); } }, [searchParams, onOpen]); const onEditDrawerClose = () => { onClose(); searchParams.delete('edit'); setSearchParams(searchParams); }; const onParamsFormSubmit = (formEvent: FormEvent) => { formEvent.preventDefault(); const newParamsObject = Object.fromEntries(new FormData(formEvent.currentTarget)); const newSearchParams = Object.entries(newParamsObject).reduce((newSearchParams, [id, value]) => { if (typeof value === 'string' && value.length) { newSearchParams.set(id, value); return newSearchParams; } return newSearchParams; }, new URLSearchParams()); onEditDrawerClose(); setSearchParams(newSearchParams); }; return ( Customise
{paramFields.map((field) => (
))}
); }