Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3320 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'
3324 stevensc 9
import DatetimePicker from '@components/common/inputs/datetime-picker'
3320 stevensc 10
 
11
function ProgressForm({
12
  onSubmit = () => {},
13
  defaultValues = {
3327 stevensc 14
    date: null,
3320 stevensc 15
    quantitative_value: 0,
16
    qualitative_description: ''
17
  },
18
  values = {}
19
}) {
20
  const {
21
    control,
22
    formState: { errors, isSubmitting },
3329 stevensc 23
    watch,
3320 stevensc 24
    handleSubmit
25
  } = useForm({
26
    defaultValues,
3329 stevensc 27
    values
3320 stevensc 28
  })
3329 stevensc 29
  const watchedDate = watch('date', new Date())
3320 stevensc 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
 
3327 stevensc 51
        <DatetimePicker
52
          label='Fecha'
53
          name='date'
54
          control={control}
3329 stevensc 55
          defaultValue={new Date(watchedDate)}
3327 stevensc 56
          rules={{
57
            required: { value: true, message: 'La fecha es requerida' },
58
            validate: {
59
              beGreaterThanToday: (value) =>
60
                new Date(value) > new Date() ||
61
                'La fecha debe ser mayor a la fecha actual'
62
            }
63
          }}
64
          displayTime
65
          parseFormat='YYYY-MM-DD HH:mm:ss'
66
        />
67
 
3320 stevensc 68
        <Button color='primary' type='submit'>
69
          Enviar
70
        </Button>
71
      </LoadingWrapper>
72
    </Form>
73
  )
74
}
75
 
76
export default ProgressForm