Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
5453 stevensc 1
import axios from 'axios';
2
import React, { useState } from 'react'
3
import { Modal, Button } from 'react-bootstrap';
4
import { useForm } from "react-hook-form";
5
 
6
const EditModal = ({
7
    title = '',
8
    isEdit = false,
9
    isOpen = false,
10
    closeModal = function () { },
11
    currentItem,
12
    url,
13
    action
14
}) => {
15
 
16
    const {
17
        register,
18
        handleSubmit,
19
        formState: { errors }
20
    } = useForm();
21
    const [isActive, setIsActive] = useState(true);
22
 
23
    const onSubmit = (data) => {
24
        let newData = { ...data, status: data.status ? "a" : "i" }
25
        let formData = new URLSearchParams(newData).toString()
26
        axios.post(url, formData)
27
            .then(async ({ data }) => {
28
                if (data.success) {
29
                    try {
30
                        await action()
31
                        closeModal()
32
                    }
33
                    catch (err) { console.log(err) }
34
                }
35
            })
36
            .catch((err) => console.log(err))
37
    };
38
 
39
    return (
40
        <Modal
41
            size="lg"
42
            show={isOpen}
43
            onHide={closeModal}
44
            autoFocus={false}
45
        >
46
            <Modal.Header closeButton>
47
                <Modal.Title>{title} - {isEdit ? 'Editar' : 'Agregar'}</Modal.Title>
48
            </Modal.Header>
49
            <form onSubmit={handleSubmit(onSubmit)}>
50
                <Modal.Body>
51
                    <div className="form-group">
52
                        <label>Nombre</label>
53
                        <input
54
                            className='form-control'
55
                            name='name'
56
                            ref={register}
57
                            defaultValue={currentItem ? currentItem.name : ''}
58
                        />
59
                        {errors.name && <p>Este campo es requerido</p>}
60
                    </div>
61
                    <div className="form-group">
62
                        <label>Mínimo</label>
63
                        <input
64
                            className="form-control"
65
                            name="minimum_no_of_employee"
66
                            ref={register}
67
                            required
68
                            defaultValue={currentItem ? currentItem.minimum_no_of_employee : ''}
69
                        />
70
                        {errors.minimum_no_of_employee && <p>Este campo es requerido</p>}
71
                    </div>
72
                    <div className="form-group">
73
                        <label>Máximo</label>
74
                        <input
75
                            className="form-control"
76
                            name="maximum_no_of_employee"
77
                            ref={register}
78
                            defaultValue={currentItem ? currentItem.maximum_no_of_employee : ''}
79
                        />
80
                        {errors.maximum_no_of_employee && <p>Este campo es requerido</p>}
81
                    </div>
82
                    <div
83
                        className={`toggle btn btn-primary ${!isActive && "off"}`}
84
                        data-toggle="toggle"
85
                        role="button"
86
                        onClick={() => setIsActive(!isActive)}
87
                    >
88
                        <input
89
                            type="checkbox"
90
                            name="status"
91
                            ref={register}
92
                            checked={isActive}
93
                        />
94
                        <div className="toggle-group">
95
                            <label for="status" className="btn btn-primary toggle-on">Activo</label>
96
                            <label for="status" className="btn btn-light toggle-off">Inactivo</label>
97
                            <span className="toggle-handle btn btn-light"></span>
98
                        </div>
99
                    </div>
100
                </Modal.Body>
101
                <Modal.Footer>
102
                    <Button
103
                        variant="primary"
104
                        type="submit"
105
                    >
106
                        Enviar
107
                    </Button>
108
                    <Button variant="danger" onClick={closeModal}>
109
                        Cancelar
110
                    </Button>
111
                </Modal.Footer>
112
            </form>
113
        </Modal >
114
    )
115
}
116
 
117
export default EditModal