Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
8110 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";
7771 stevensc 6
 
8110 stevensc 7
 
8107 stevensc 8
const LanguageModal = ({
9
    closeModal,
8110 stevensc 10
    dataLink,
8112 stevensc 11
    modalData,
8110 stevensc 12
    languagesOptions = {
13
        ar: "Arabe",
14
        de: "Alemán",
15
        en: "Inglés",
16
        es: "Español",
17
        hi: "Hindi",
18
        it: "Italiano",
19
        ja: "Japonés",
20
        pt: "Portugués",
21
        ru: "Ruso",
22
        zh: "Chino",
23
    }
8107 stevensc 24
}) => {
7771 stevensc 25
 
8110 stevensc 26
    const {
27
        register,
28
        errors,
29
        setValue,
30
        getValues,
31
    } = useForm();
32
 
8112 stevensc 33
    const [userLanguagesArray, setUserLanguagesArray] = useState(modalData);
8110 stevensc 34
    const [languagesOptionsArray, setLanguagesOptionsArray] = useState([]);
7771 stevensc 35
    const [settedLanguageTags, setSettedLanguageTags] = useState([]);
36
 
37
    useEffect(() => {
8064 stevensc 38
        register("languages", {
39
            required: "Por favor seleccione al menos un lenguaje",
40
        });
41
    }, []);
7771 stevensc 42
 
8110 stevensc 43
    useEffect(() => {
44
        Object.entries(getValues()).map(([key, value]) => {
45
            setValue(key, "");
46
        });
47
    }, []);
48
 
7771 stevensc 49
    const handleTagsChange = (tags) => {
50
        if (tags.length) {
51
            let newTags = [];
52
            tags.map((tag) => {
53
                newTags = [...newTags, tag.value];
54
            });
55
            setValue("languages", newTags);
56
            setSettedLanguageTags(tags);
57
        } else {
58
            setValue("languages", "");
59
            setSettedLanguageTags("");
60
        }
61
    };
62
 
8064 stevensc 63
    useEffect(() => {
64
        let newUserLanguagesArray = [];
8113 stevensc 65
        Object.entries(modalData).map(([key, value]) => {
8064 stevensc 66
            newUserLanguagesArray = [
67
                ...newUserLanguagesArray,
68
                { value: key, name: value },
69
            ];
70
        });
71
        setUserLanguagesArray(newUserLanguagesArray);
8113 stevensc 72
    }, [modalData]);
8064 stevensc 73
 
74
    useEffect(() => {
75
        let newlanguagesOptionsArray = [];
76
        Object.entries(languagesOptions).map(([key, value]) => {
77
            newlanguagesOptionsArray = [
78
                ...newlanguagesOptionsArray,
79
                { value: key, name: value },
80
            ];
81
        });
82
        setLanguagesOptionsArray(newlanguagesOptionsArray);
83
    }, [languagesOptions]);
84
 
7771 stevensc 85
    return (
7773 stevensc 86
        <SubmitModal
8110 stevensc 87
            title="Idiomas"
8136 stevensc 88
            submitData={{ languages: settedLanguageTags }}
8110 stevensc 89
            postLink={dataLink}
8064 stevensc 90
            closeModal={closeModal}
7773 stevensc 91
        >
8110 stevensc 92
            <div className="form-group">
93
                <TagsInput
94
                    suggestions={languagesOptionsArray}
95
                    settedTags={userLanguagesArray}
96
                    onChange={handleTagsChange}
97
                />
98
                {errors.languages && <p>{errors.languages.message}</p>}
99
            </div>
7771 stevensc 100
        </SubmitModal>
8110 stevensc 101
    );
102
};
103
 
104
export default LanguageModal;