Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev 3668 Rev 3719
Línea 1... Línea 1...
1
import React, { useEffect, useMemo } from 'react';
1
import React, { useEffect, useMemo } from 'react';
2
import { useForm } from 'react-hook-form';
2
import { useForm } from 'react-hook-form';
3
 
3
 
4
import { useFetchHelper } from '@hooks';
4
import { useFetchHelper } from '@hooks';
5
 
5
 
6
import Modal from '@app/components/UI/modal/Modal';
6
import Modal from '@app/components/UI/modal/Modal';
7
import TagsInput from '@app/components/UI/TagsInput';
7
import TagsInput from '@app/components/UI/TagsInput';
8
 
8
 
9
const SkillsModal = ({ show = false, skills: userSkills = [], onConfirm, onClose }) => {
9
const SkillsModal = ({ show = false, skills: userSkills = [], onConfirm, onClose }) => {
10
  const { data: skills = [] } = useFetchHelper('skills');
10
  const { data: skills = [] } = useFetchHelper('skills');
11
 
11
 
12
  const { register, handleSubmit, setValue } = useForm();
12
  const { register, handleSubmit, setValue } = useForm();
13
 
13
 
14
  const currentValues = useMemo(() => {
14
  const currentValues = useMemo(() => {
15
    return userSkills?.map(({ value }) => value) || [];
15
    return userSkills?.map(({ value }) => value) || [];
16
  }, [userSkills]);
16
  }, [userSkills]);
17
 
17
 
18
  const handleConfirm = handleSubmit((data) => onConfirm?.(data));
18
  const handleConfirm = handleSubmit((data) => onConfirm?.(data));
19
 
19
 
20
  useEffect(() => {
20
  useEffect(() => {
21
    register('skills');
21
    register('skills');
22
  }, [register]);
22
  }, [register]);
23
 
23
 
24
  useEffect(() => {
24
  useEffect(() => {
25
    show ? setValue('skills', currentValues) : setValue('skills', ['']);
25
    show ? setValue('skills', currentValues) : setValue('skills', ['']);
26
  }, [show, currentValues]);
26
  }, [show, currentValues]);
27
 
27
 
28
  return (
28
  return (
29
    <Modal title='Habilidades' show={show} onClose={onClose} onAccept={handleConfirm}>
29
    <Modal title='Habilidades' show={show} onClose={onClose} onAccept={handleConfirm}>
30
      <TagsInput
30
      <TagsInput
31
        label='Seleccionar habilidades'
31
        label='Seleccionar habilidades'
32
        name='skills'
32
        name='skills'
33
        options={skills}
33
        options={skills}
34
        defaultValues={currentValues}
34
        defaultValues={currentValues}
35
        onChange={(tags) => setValue('skills', tags)}
35
        onChange={(tags) => setValue('skills', tags)}
36
      />
36
      />
37
    </Modal>
37
    </Modal>
38
  );
38
  );
39
};
39
};
40
 
40
 
41
export default SkillsModal;
41
export default SkillsModal;