Proyectos de Subversion LeadersLinked - SPA

Rev

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

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