Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 8409 | | Comparar con el anterior | Ultima modificación | Ver Log |

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