Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3658 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

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