Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
5048 stevensc 1
/* eslint-disable react/prop-types */
2
import React, { useState } from 'react'
3
import { axios } from '../../../utils'
4
import { useForm } from 'react-hook-form'
5
import { Button, Modal } from 'react-bootstrap'
6
import styled from 'styled-components'
7
import FormErrorFeedback from '../../../shared/form-error-feedback/FormErrorFeedback'
8
import Spinner from '../../../shared/loading-spinner/Spinner'
9
 
10
const StyledSpinnerContainer = styled.div`
11
  position: absolute;
12
  left: 0;
13
  top: 0;
14
  width: 100%;
15
  height: 100%;
16
  background: rgba(255, 255, 255, 0.4);
17
  display: flex;
18
  justify-content: center;
19
  align-items: center;
20
  z-index: 300;
21
`;
22
 
23
const CreateGroupModal = ({ closeModal, show }) => {
24
    const [loading, setLoading] = useState(false)
25
    const { register, errors, handleSubmit } = useForm()
26
 
27
    const onSubmitHandler = async (data) => {
28
        setLoading(true)
29
        const formData = new FormData()
30
        Object.entries(data).map(([key, value]) => formData.append(key, value))
31
 
32
        await axios
33
            .post(`/chat/create-group`, formData)
34
            .then(({ data: response }) => {
35
                if (response.success) closeModal()
36
            })
37
 
38
        setLoading(false)
39
    }
40
 
41
    return (
42
        <Modal
43
            show={show}
44
            onHide={closeModal}
45
            centered
46
        >
47
            <Modal.Header closeButton>
48
                <Modal.Title>Crear grupo</Modal.Title>
49
            </Modal.Header>
50
            <form onSubmit={handleSubmit(onSubmitHandler)}>
51
                <Modal.Body>
52
                    <label className="mb-1" htmlFor="name">Nombre del grupo</label>
53
                    <input
54
                        type="text"
55
                        name="name"
56
                        id="name"
57
                        ref={register({
58
                            required: "Este campo es requerido",
59
                        })}
60
                    />
61
                    {errors.name && <FormErrorFeedback>{errors.name.message}</FormErrorFeedback>}
62
                    {loading &&
63
                        <StyledSpinnerContainer>
64
                            <Spinner />
65
                        </StyledSpinnerContainer>
66
                    }
67
                </Modal.Body>
68
                <Modal.Footer>
69
                    <Button type="submit">Enviar</Button>
70
                    <Button variant="danger" onClick={closeModal}>
71
                        Cancelar
72
                    </Button>
73
                </Modal.Footer>
74
            </form>
75
        </Modal>
76
    )
77
}
78
 
79
export default CreateGroupModal