Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3645 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3658 stevensc 1
import React from 'react';
3452 stevensc 2
import { useForm, FormProvider } from 'react-hook-form';
3
 
4
import { Spinner } from '..';
5
 
6
export function Form({
7
  children,
8
  onSubmit,
3555 stevensc 9
  defaultValues,
3452 stevensc 10
  reset: propReset = false,
3628 stevensc 11
  style,
3452 stevensc 12
  ...rest
13
}) {
3555 stevensc 14
  const methods = useForm({ defaultValues });
3630 stevensc 15
  const {
16
    handleSubmit,
17
    reset,
18
    formState: { isSubmitting }
19
  } = methods;
3452 stevensc 20
 
3645 stevensc 21
  const handleFormSubmit = async (data) => {
3452 stevensc 22
    if (onSubmit) {
3645 stevensc 23
      await onSubmit(data);
3452 stevensc 24
    }
25
    if (propReset) {
3555 stevensc 26
      reset(undefined, { keepDefaultValues: true });
3452 stevensc 27
    }
28
  };
29
 
30
  return (
31
    <FormProvider {...methods}>
3630 stevensc 32
      <form
33
        onSubmit={handleSubmit(handleFormSubmit)}
34
        style={{ position: 'relative', ...style }}
35
        {...rest}
36
      >
37
        {children}
3658 stevensc 38
        {isSubmitting && <Spinner absolute />}
3452 stevensc 39
      </form>
40
    </FormProvider>
41
  );
42
}