Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 8377 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React from "react";
import { useState, useEffect } from "react";
import { useForm } from "react-hook-form";
import TagsInput from "../../../shared/TagsInput";
import SubmitModal from "./SubmitModal";
import { getData } from "../../../helpers/fetchHelpers"


const LanguageModal = ({
    closeModal,
    dataLink
}) => {

    const { register, errors } = useForm();

    const [languagesSelecteds, setLanguagesSelecteds] = useState([]);
    const [userLanguagesArray, setUserLanguagesArray] = useState([]);
    const [languagesOptionsArray, setLanguagesOptionsArray] = useState([]);
    const [data, setData] = useState({ languages: "" });

    useEffect(() => {
        register("languages", {
            required: "Por favor seleccione al menos un lenguaje",
        });
    }, []);

    const handleTagsChange = (tags) => {
        if (tags.length) {
            let newTags = [];
            tags.map((tag) => {
                newTags = [...newTags, tag.value];
            });
            setData({ "languages[]": newTags });
        } else {
            setData({ "languages[]": "" });
        }
    };

    useEffect(() => {
        getData(dataLink)
            .then(({ languages_available, languages_selected }) => {

                // Set languages options
                Object.entries(languages_available).map(([key, value]) => {
                    setLanguagesOptionsArray(prev => [...prev, { value: key, name: value }])
                })

                // Set languages selecteds
                setLanguagesSelecteds([...languagesSelecteds, ...languages_selected])
            })
    }, [dataLink]);

    useEffect(() => {
        languagesSelecteds.map(lang => {
            const userLang = languagesOptionsArray.find(el => el.value === lang)
            if (userLang) {
                setUserLanguagesArray(prev => [...prev, { value: userLang.value, name: userLang.name }])
            }
        })
    }, [languagesSelecteds, languagesOptionsArray]);


    return (
        <SubmitModal
            title="Idiomas"
            submitData={data}
            postLink={dataLink}
            closeModal={closeModal}
        >
            <div className="form-group">
                <TagsInput
                    suggestions={languagesOptionsArray}
                    settedTags={userLanguagesArray}
                    onChange={handleTagsChange}
                />
                {errors.languages && <p>{errors.languages}</p>}
            </div>
        </SubmitModal>
    );
};

export default LanguageModal;