Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 8378 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

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