Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
8383 stevensc 1
import React from "react";
2
import { useState, useEffect } from "react";
3
import { useForm } from "react-hook-form";
4
import TagsInput from "../../../shared/TagsInput";
5
import SubmitModal from "./SubmitModal";
6
import { getData } from "../../../helpers/fetchHelpers"
7
 
8
 
9
const DegreesModal = ({
10
    closeModal,
11
    dataLink
12
}) => {
13
 
14
    const { register, errors } = useForm();
15
 
8392 stevensc 16
    const [degreesSelecteds, setDegreesSelecteds] = useState([]);
17
    const [userDegreesArray, setUserDegreesArray] = useState([]);
18
    const [degreesOptionsArray, setDegreesOptionsArray] = useState([]);
8383 stevensc 19
    const [data, setData] = useState({ "degrees[]": "" });
20
 
21
    useEffect(() => {
8392 stevensc 22
        register("degrees", {
8383 stevensc 23
            required: "Por favor seleccione al menos un lenguaje",
24
        });
25
    }, []);
26
 
27
    const handleTagsChange = (tags) => {
28
        if (tags.length) {
29
            let newTags = [];
30
            tags.map((tag) => {
31
                newTags = [...newTags, tag.value];
32
            });
33
            setData({ "degrees[]": newTags });
34
        } else {
35
            setData({ "degrees[]": "" });
36
        }
37
    };
38
 
39
    useEffect(() => {
40
        getData(dataLink)
8392 stevensc 41
            .then(({ degrees_available, degrees_selected }) => {
8383 stevensc 42
 
43
                // Set languages options
8392 stevensc 44
                Object.entries(degrees_available).map(([key, value]) => {
45
                    setDegreesOptionsArray(prev => [...prev, { value: key, name: value }])
8383 stevensc 46
                })
47
 
48
                // Set languages selecteds
8392 stevensc 49
                setDegreesSelecteds(degrees_selected)
8383 stevensc 50
            })
51
    }, [dataLink]);
52
 
53
    useEffect(() => {
8392 stevensc 54
        degreesSelecteds.map(skill => {
55
            const userSkill = degreesOptionsArray.find(el => el.value === skill)
8383 stevensc 56
            if (userSkill) {
8392 stevensc 57
                setUserDegreesArray(prev => [...prev, { value: userSkill.value, name: userSkill.name }])
8383 stevensc 58
            }
59
        })
8392 stevensc 60
    }, [degreesSelecteds, degreesOptionsArray]);
8383 stevensc 61
 
62
    return (
63
        <SubmitModal
8392 stevensc 64
            title="Grados"
8383 stevensc 65
            submitData={data}
66
            postLink={dataLink}
67
            closeModal={closeModal}
68
        >
69
            <div className="form-group">
70
                <TagsInput
8392 stevensc 71
                    suggestions={degreesOptionsArray}
72
                    settedTags={userDegreesArray}
8383 stevensc 73
                    onChange={handleTagsChange}
74
                />
75
                {errors.skills && <p>{errors.skills}</p>}
76
            </div>
77
        </SubmitModal>
78
    );
79
};
80
 
81
export default DegreesModal;