Proyectos de Subversion LeadersLinked - SPA

Rev

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