Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3047 | Rev 3694 | 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, useState } from 'react';
2
import { useDispatch, useSelector } from 'react-redux';
3
import { IconButton } from '@mui/material';
4
import { Edit } from '@mui/icons-material';
1854 stevensc 5
 
3640 stevensc 6
import { updateSkills } from '@services/profile/profiles';
7
import { addNotification } from '@store/notification/notification.actions';
1854 stevensc 8
 
3640 stevensc 9
import Widget from '@components/UI/Widget';
10
import TagsList from '@components/UI/TagsList';
11
import SkillsModal from './SkillsModal';
1854 stevensc 12
 
3640 stevensc 13
const SkillsCard = ({ skills: defaultSkills = [], uuid = '', edit = false }) => {
14
  const [skills, setSkills] = useState([]);
15
  const [showModal, setShowModal] = useState(false);
16
  const labels = useSelector(({ intl }) => intl.labels);
17
  const dispatch = useDispatch();
1854 stevensc 18
 
3640 stevensc 19
  const toggleModal = () => setShowModal(!showModal);
1854 stevensc 20
 
21
  const handleEditSkills = ({ skills }) => {
1979 stevensc 22
    updateSkills(uuid, skills)
3047 stevensc 23
      .then((skills) => {
3640 stevensc 24
        setSkills(skills);
25
        toggleModal();
1854 stevensc 26
      })
27
      .catch((error) => {
3640 stevensc 28
        dispatch(addNotification({ style: 'danger', msg: error.message }));
29
      });
30
  };
1854 stevensc 31
 
32
  useEffect(() => {
3640 stevensc 33
    setSkills(defaultSkills);
34
  }, [defaultSkills]);
1854 stevensc 35
 
36
  return (
37
    <>
3047 stevensc 38
      <Widget>
39
        <Widget.Header
40
          title={labels.skills}
41
          renderAction={() => {
3640 stevensc 42
            if (!edit) return;
3047 stevensc 43
            return (
44
              <IconButton onClick={toggleModal}>
45
                <Edit />
46
              </IconButton>
3640 stevensc 47
            );
3047 stevensc 48
          }}
49
        />
1854 stevensc 50
 
3047 stevensc 51
        <Widget.Body>
52
          <TagsList tags={skills} />
53
        </Widget.Body>
54
      </Widget>
55
 
1854 stevensc 56
      <SkillsModal
57
        show={showModal}
58
        onClose={toggleModal}
59
        onConfirm={handleEditSkills}
60
        skills={skills}
61
      />
62
    </>
3640 stevensc 63
  );
64
};
1854 stevensc 65
 
3640 stevensc 66
export default SkillsCard;