Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1904 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1902 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { useSelector } from 'react-redux'
3
import { useForm } from 'react-hook-form'
4
 
5
import Modal from '../modal/Modal'
6
import Spinner from '../Spinner'
7
import DropzoneComponent from '../../dropzone/DropzoneComponent'
8
import FormErrorFeedback from '../form/FormErrorFeedback'
9
import { Box } from '@mui/material'
10
 
11
const CoverModal = ({
12
  show = false,
13
  sizes = '',
14
  onClose = () => {},
15
  onConfirm = async () => {}
16
}) => {
17
  const [loading, setLoading] = useState(false)
18
 
19
  const labels = useSelector(({ intl }) => intl.labels)
20
 
21
  const { register, errors, handleSubmit, setValue } = useForm()
22
 
23
  const onUploadedHandler = (files) => {
24
    setValue('cover', files)
25
  }
26
 
27
  const onSubmit = handleSubmit(async (data) => {
28
    setLoading(true)
29
    await onConfirm(data)
30
    setLoading(false)
31
  })
32
 
33
  useEffect(() => {
34
    register('cover', {
35
      required: 'Este campo es requerido'
36
    })
37
  }, [])
38
 
39
  return (
40
    <Modal
41
      title={labels.cover}
42
      show={show}
43
      onClose={onClose}
44
      onAccept={onSubmit}
45
    >
46
      <DropzoneComponent
47
        modalType='IMAGE'
48
        onUploaded={onUploadedHandler}
49
        recomendationText={`Imágenes recomendadas de ${sizes}`}
50
      />
51
      {errors.cover && (
52
        <FormErrorFeedback>{errors.cover.message}</FormErrorFeedback>
53
      )}
54
      {loading && (
55
        <Box
56
          sx={{
57
            position: 'absolute',
58
            zIndex: 50,
59
            width: '100%',
60
            height: '100%',
61
            top: 0,
62
            left: 0,
63
            display: 'grid',
64
            placeItems: 'center'
65
          }}
66
        >
67
          <Spinner />
68
        </Box>
69
      )}
70
    </Modal>
71
  )
72
}
73
 
74
export default CoverModal