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 AptitudesModal = ({
9
const AptitudesModal = ({
10
  show = false,
10
  show = false,
11
  aptitudes: userAptitudes = [],
11
  aptitudes: userAptitudes = [],
12
  onClose = () => {},
12
  onClose = () => {},
13
  onConfirm = () => {}
13
  onConfirm = () => {}
14
}) => {
14
}) => {
15
  const { data: aptitudes = [] } = useFetchHelper('aptitudes');
15
  const { data: aptitudes = [] } = useFetchHelper('aptitudes');
16
 
16
 
17
  const { register, handleSubmit, setValue } = useForm();
17
  const { register, handleSubmit, setValue } = useForm();
18
 
18
 
19
  const currentValues = useMemo(() => {
19
  const currentValues = useMemo(() => {
20
    return userAptitudes?.map(({ value }) => value) || [];
20
    return userAptitudes?.map(({ value }) => value) || [];
21
  }, [userAptitudes]);
21
  }, [userAptitudes]);
22
 
22
 
23
  const handleConfirm = handleSubmit((data) => onConfirm?.(data));
23
  const handleConfirm = handleSubmit((data) => onConfirm?.(data));
24
 
24
 
25
  useEffect(() => {
25
  useEffect(() => {
26
    register('aptitudes');
26
    register('aptitudes');
27
  }, [register]);
27
  }, [register]);
28
 
28
 
29
  useEffect(() => {
29
  useEffect(() => {
30
    show ? setValue('aptitudes', currentValues) : setValue('aptitudes', ['']);
30
    show ? setValue('aptitudes', currentValues) : setValue('aptitudes', ['']);
31
  }, [show, currentValues]);
31
  }, [show, currentValues]);
32
 
32
 
33
  return (
33
  return (
34
    <Modal title='Aptitudes' show={show} onClose={onClose} onAccept={handleConfirm}>
34
    <Modal title='Aptitudes' show={show} onClose={onClose} onAccept={handleConfirm}>
35
      <TagsInput
35
      <TagsInput
36
        label='Seleccionar aptitudes'
36
        label='Seleccionar aptitudes'
37
        name='aptitudes'
37
        name='aptitudes'
38
        options={aptitudes}
38
        options={aptitudes}
39
        defaultValues={currentValues}
39
        defaultValues={currentValues}
40
        onChange={(tags) => setValue('aptitudes', tags)}
40
        onChange={(tags) => setValue('aptitudes', tags)}
41
      />
41
      />
42
    </Modal>
42
    </Modal>
43
  );
43
  );
44
};
44
};
45
 
45
 
46
export default AptitudesModal;
46
export default AptitudesModal;