import React, { useState } from 'react'; import createNest from '@/api/admin/nests/createNest'; import { httpErrorToHuman } from '@/api/http'; import { AdminContext } from '@/state/admin'; import Button from '@/components/elements/Button'; import Field from '@/components/elements/Field'; import Modal from '@/components/elements/Modal'; import FlashMessageRender from '@/components/FlashMessageRender'; import useFlash from '@/plugins/useFlash'; import { Form, Formik, FormikHelpers } from 'formik'; import tw from 'twin.macro'; import { object, string } from 'yup'; interface Values { name: string, description: string, } const schema = object().shape({ name: string() .required('A nest name must be provided.') .max(32, 'Nest name must not exceed 32 characters.'), description: string() .max(255, 'Nest description must not exceed 255 characters.'), }); export default () => { const [ visible, setVisible ] = useState(false); const { addError, clearFlashes } = useFlash(); const appendNest = AdminContext.useStoreActions(actions => actions.nests.appendNest); const submit = ({ name, description }: Values, { setSubmitting }: FormikHelpers) => { clearFlashes('nest:create'); setSubmitting(true); createNest(name, description) .then(nest => { appendNest(nest); setVisible(false); }) .catch(error => { addError({ key: 'nest:create', message: httpErrorToHuman(error) }); setSubmitting(false); }); }; return ( <> { ({ isSubmitting, resetForm }) => ( { resetForm(); setVisible(false); }} >

New Nest

) }
); };