Proyectos de Subversion LeadersLinked - SPA

Rev

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

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