Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3329 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3719 stevensc 1
import React from 'react';
2
import { useForm } from 'react-hook-form';
3
 
4
import Form from '@components/common/form';
5
import Input from '@components/UI/inputs/Input';
6
import Button from '@components/UI/buttons/Buttons';
7
import Ckeditor from '@components/common/ckeditor/Ckeditor';
8
import LoadingWrapper from '@components/common/loading-wrapper';
9
import DatetimePicker from '@components/common/inputs/datetime-picker';
10
 
11
function ProgressForm({
12
  onSubmit = () => {},
13
  defaultValues = {
14
    date: null,
15
    quantitative_value: 0,
16
    qualitative_description: ''
17
  },
18
  values = {}
19
}) {
20
  const {
21
    control,
22
    formState: { errors, isSubmitting },
23
    watch,
24
    handleSubmit
25
  } = useForm({
26
    defaultValues,
27
    values
28
  });
29
  const watchedDate = watch('date', new Date());
30
 
31
  return (
32
    <Form onSubmit={handleSubmit(onSubmit)}>
33
      <LoadingWrapper loading={isSubmitting} displayChildren>
34
        <Input
35
          control={control}
36
          label='Valor cuantitativo:'
37
          name='quantitative_value'
38
          type='number'
39
          rules={{ required: 'El valor es requerido' }}
40
          error={errors.quantitative_value?.message}
41
        />
42
 
43
        <Ckeditor
44
          control={control}
45
          name='qualitative_description'
46
          error={errors.qualitative_description?.message}
47
          rules={{ required: 'La descripción es requerida' }}
48
          label='Descripción cualitativa:'
49
        />
50
 
51
        <DatetimePicker
52
          label='Fecha'
53
          name='date'
54
          control={control}
55
          defaultValue={new Date(watchedDate)}
56
          rules={{
57
            required: { value: true, message: 'La fecha es requerida' },
58
            validate: {
59
              beGreaterThanToday: (value) =>
60
                new Date(value) > new Date() || 'La fecha debe ser mayor a la fecha actual'
61
            }
62
          }}
63
          displayTime
64
          parseFormat='YYYY-MM-DD HH:mm:ss'
65
        />
66
 
67
        <Button color='primary' type='submit'>
68
          Enviar
69
        </Button>
70
      </LoadingWrapper>
71
    </Form>
72
  );
73
}
74
 
75
export default ProgressForm;