Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3694 stevensc 1
import React from 'react';
2
import { useSelector } from 'react-redux';
3
import { IconButton } from '@mui/material';
4
import Add from '@mui/icons-material/Add';
3028 stevensc 5
 
3694 stevensc 6
import { addExperience, deleteExperience, editExperience } from '@services/profile/experience';
7
import { useResource } from '@hooks';
3028 stevensc 8
 
3694 stevensc 9
import Widget from '@components/UI/Widget';
10
import ExperienceItem from './experience-item';
11
import ExperienceModal from './experience-modal';
12
import ConfirmModal from '@components/modals/ConfirmModal';
13
import EmptySection from '@components/UI/EmptySection';
3028 stevensc 14
 
3040 stevensc 15
const ExperiencesCard = ({ uuid = '', experiences = [], edit = false }) => {
3694 stevensc 16
  const labels = useSelector(({ intl }) => intl.labels);
3040 stevensc 17
 
3694 stevensc 18
  const { showModal, modalState, onAdd, onEdit, onDelete, resources, clearModal, currentResource } =
19
    useResource({
20
      defaultResources: experiences,
21
      addResource: addExperience,
22
      editResource: editExperience,
23
      deleteResource: deleteExperience
24
    });
3028 stevensc 25
 
26
  return (
27
    <>
28
      <Widget>
29
        <Widget.Header
30
          title={labels.experience}
31
          renderAction={() => {
3694 stevensc 32
            if (!edit) return null;
3028 stevensc 33
            return (
34
              <IconButton onClick={() => showModal('add')}>
35
                <Add />
36
              </IconButton>
3694 stevensc 37
            );
3028 stevensc 38
          }}
39
        />
40
 
41
        <Widget.Body>
3040 stevensc 42
          {resources.length ? (
43
            resources.map((experience, index) => (
3028 stevensc 44
              <ExperienceItem
3030 stevensc 45
                key={index}
3028 stevensc 46
                experience={experience}
47
                onEdit={() => showModal('edit', experience)}
48
                onDelete={() => showModal('delete', experience)}
49
                edit={edit}
50
              />
51
            ))
52
          ) : (
53
            <EmptySection align='left' message={labels.datatable_empty} />
54
          )}
55
        </Widget.Body>
56
      </Widget>
57
 
58
      <ExperienceModal
59
        show={modalState === 'add' || modalState === 'edit'}
3040 stevensc 60
        currentExperience={currentResource}
3028 stevensc 61
        onClose={clearModal}
62
        onConfirm={(experience) =>
3030 stevensc 63
          modalState === 'add' ? onAdd(uuid, experience) : onEdit(experience)
3028 stevensc 64
        }
65
      />
66
 
67
      <ConfirmModal
68
        show={modalState === 'delete'}
69
        title='Eliminar Experiencia'
70
        message='¿Esta seguro de eliminar esta experiencia?'
71
        onClose={clearModal}
72
        onAccept={onDelete}
73
      />
74
    </>
3694 stevensc 75
  );
76
};
3028 stevensc 77
 
3694 stevensc 78
export default ExperiencesCard;