import type { Config, SubmissionErrors } from 'final-form' import isError from 'lodash/isError' import React from 'react' import { Form as FinalForm, FormProps, FormRenderProps } from 'react-final-form' import { EditingFields, FormSubmitHandler, handleUnexpectedError, IFormActionProps, } from '..' import { FormActions } from '../FormActions' import { FormErrorsText } from '../FormErrorsText' import { FormContextProvider } from '../lib/FormContext' interface IFormProps extends Omit>, 'onSubmit'>, IFormActionProps { onSubmit: FormSubmitHandler } export const Form = ({ children, onSubmit, hideCancel, ...props }: IFormProps) => { const wrappedSubmit: Config>['onSubmit'] = async ( ...args ) => { try { await onSubmit(...args) return undefined } catch (e) { if (isError(e)) { return handleUnexpectedError(e) } return e as SubmissionErrors } } const render = (renderProps: FormRenderProps>) => ( // @ts-ignore
{children}
) return ( > {...props} onSubmit={wrappedSubmit} render={render} /> ) } export default Form