Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
6583 stevensc 1
import axios from 'axios';
2
import React, { useEffect, useState } from 'react'
3
import { Modal, Button } from 'react-bootstrap';
4
import { useForm } from "react-hook-form";
5
import { CKEditor } from "ckeditor4-react";
6
import { getData } from '../../../helpers/fetchHelpers';
7
 
8
const OverviewModal = ({
9
    isOpen = false,
10
    closeModal = function () { },
11
    overviewUrl,
12
    action
13
}) => {
14
 
15
    const { register, handleSubmit, setValue, watch } = useForm();
16
    const [error, setError] = useState(null);
17
 
18
    const onSubmit = ({ description }) => {
19
        const formData = new FormData
20
        formData.append("description", description)
21
 
22
        axios.post(overviewUrl, formData)
23
            .then(({ data }) => {
24
                if (!data.success) {
25
                    return setError(data.data)
26
                }
27
                action(data.data)
28
            })
29
            .then(() => {
30
                setError(null)
31
                closeModal()
32
            })
33
            .catch((err) => setError(err))
34
    };
35
 
36
    useEffect(() => {
37
        register("description");
38
    }, []);
39
 
40
    useEffect(() => {
41
        getData(overviewUrl)
42
            .then(({ description }) => {
43
                setValue("description", description)
44
            })
45
            .catch(err => setError(err))
46
    }, [isOpen]);
47
 
48
    return (
49
        <Modal
50
            size="lg"
51
            show={isOpen}
52
            onHide={closeModal}
53
            autoFocus={false}
54
        >
55
            <Modal.Header closeButton>
56
                <Modal.Title>Cambiar</Modal.Title>
57
            </Modal.Header>
58
            <form onSubmit={handleSubmit(onSubmit)}>
59
                <Modal.Body>
60
                    <div className="mb-3">
61
                        <CKEditor
62
                            data={watch("description")}
63
                            onChange={(e) => {
64
                                const text = e.editor.getData();
65
                                setValue("description", text);
66
                            }}
67
                            config={{
68
                                toolbar: [
69
                                    { name: 'editing', items: ['Scayt'] },
70
                                    { name: 'links', items: ['Link', 'Unlink'] },
71
                                    { name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'] },
72
                                    { name: 'basicstyles', items: ['Bold', 'Italic', 'Strike', 'RemoveFormat'] },
73
                                    '/',
74
                                    { name: 'insert', items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar'] },
75
                                    { name: 'styles', items: ['Styles', 'Format'] },
76
                                    { name: 'tools', items: ['Maximize'] }
77
                                ],
78
                                removePlugins: 'elementspath,Anchor',
79
                                heigth: 100
80
                            }}
81
                            name="description"
82
                        />
83
                        {error && <p>{error}</p>}
84
                    </div>
85
                </Modal.Body>
86
                <Modal.Footer>
87
                    <Button
88
                        variant="primary"
89
                        type="submit"
90
                    >
91
                        Enviar
92
                    </Button>
93
                    <Button variant="danger" onClick={closeModal}>
94
                        Cancelar
95
                    </Button>
96
                </Modal.Footer>
97
            </form>
98
        </Modal >
99
    )
100
}
101
 
102
export default OverviewModal