import { useEffect } from 'react'; import { useForm } from 'react-hook-form'; import Button from '../../../../common/components/buttons/Button'; import Input from '../../../../common/components/input/input/Input'; import Modal from '../../../../common/components/modal/Modal'; import { useMutateProjectRundowns } from '../../../../common/hooks-query/useProjectRundowns'; import * as Panel from '../../panel-utils/PanelUtils'; const formId = 'new-rundown-form'; type NewRundownFormState = { title: string; }; interface ManageRundownForm { onClose: () => void; } export function ManageRundownForm({ onClose }: ManageRundownForm) { const { create } = useMutateProjectRundowns(); const { handleSubmit, register, setFocus, setError, formState: { errors, isSubmitting }, } = useForm({ defaultValues: { title: '' }, }); const createRundown = async (values: NewRundownFormState) => { try { await create(values.title || 'untitled'); onClose(); } catch (error) { setError('root', { message: `Failed to create rundown. ${error}` }); } }; // give initial focus to the title field useEffect(() => { setFocus('title'); }, [setFocus]); return ( } footerElements={ <> {errors.root && {errors.root.message}} } /> ); }