Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3640 stevensc 1
import React, { useEffect, useMemo } from 'react';
2
import { useSelector } from 'react-redux';
3
import { useForm } from 'react-hook-form';
1849 stevensc 4
 
3640 stevensc 5
import { useFetchHelper } from '@hooks';
1849 stevensc 6
 
3640 stevensc 7
import Modal from '@app/components/UI/modal/Modal';
8
import TagsInput from '@app/components/UI/TagsInput';
1849 stevensc 9
 
10
const LanguagesModal = ({
11
  show = false,
12
  languages: userLanguages = [],
13
  onClose = () => null,
14
  onConfirm = () => null
15
}) => {
3640 stevensc 16
  const { data: languages } = useFetchHelper('languages');
17
  const labels = useSelector(({ intl }) => intl.labels);
1849 stevensc 18
 
3640 stevensc 19
  const { register, handleSubmit, setValue } = useForm();
1849 stevensc 20
 
3640 stevensc 21
  const onSubmit = handleSubmit((data) => onConfirm(data));
1849 stevensc 22
 
3640 stevensc 23
  const currentValue = useMemo(() => {
24
    if (!userLanguages.length) return [''];
25
    return userLanguages.map(({ value }) => value);
26
  }, [userLanguages]);
27
 
1849 stevensc 28
  useEffect(() => {
3640 stevensc 29
    register('languages');
30
  }, []);
1849 stevensc 31
 
32
  useEffect(() => {
3641 stevensc 33
    if (show) setValue('languages', currentValue);
34
  }, [show]);
1849 stevensc 35
 
36
  return (
3640 stevensc 37
    <Modal title={labels.languages} show={show} onClose={onClose} onAccept={onSubmit}>
1849 stevensc 38
      <TagsInput
39
        suggestions={languages}
3640 stevensc 40
        defaultValue={currentValue}
1849 stevensc 41
        onChange={(tags) => setValue('languages', tags)}
42
      />
43
    </Modal>
3640 stevensc 44
  );
45
};
1849 stevensc 46
 
3640 stevensc 47
export default LanguagesModal;