Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16794 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
7774 stevensc 1
import React, { useState } from 'react'
2
import LocationModal from './LocationModal'
8052 stevensc 3
import DeleteModal from '../../../shared/DeleteModal'
6002 stevensc 4
 
15062 stevensc 5
const Location = ({ locations = [], googleApiKey, locationsAddUrl, title }) => {
16794 stevensc 6
  const [actionUrl, setActionUrl] = useState(locationsAddUrl)
7
  const [defaultData, setDefaultData] = useState('')
8
  const [showModal, setShowModal] = useState(false)
9
  const [showDeleteModal, setShowDeleteModal] = useState(false)
10
  const [deleteLink, setDeleteLink] = useState('')
11
  const [removeElement, setRemoveElement] = useState('')
12
  const [locationState, setLocationState] = useState(locations)
6002 stevensc 13
 
16794 stevensc 14
  const closeModal = () => {
15
    setShowModal(false)
16
  }
6002 stevensc 17
 
16794 stevensc 18
  const closeDeleteModal = () => {
19
    setShowDeleteModal(false)
20
  }
7775 stevensc 21
 
16794 stevensc 22
  const addLocation = (url) => {
23
    setShowModal(true)
24
    setActionUrl(url)
25
  }
7774 stevensc 26
 
16794 stevensc 27
  const editLocation = (url, item) => {
28
    setShowModal(true)
29
    setActionUrl(url)
30
    setDefaultData(item)
31
  }
7774 stevensc 32
 
16794 stevensc 33
  const deleteLocation = ({ url, address }) => {
34
    setShowDeleteModal(true)
35
    setDeleteLink(url)
36
    setRemoveElement(address)
37
  }
6002 stevensc 38
 
16794 stevensc 39
  return (
40
    <>
41
      <div className="user-profile-extended-ov st2">
42
        <h3>
43
          {title}
44
          <button
45
            className="btn btn-location-add"
46
            onClick={() => addLocation(locationsAddUrl)}
47
          >
48
            <i className="fa fa-plus-square" />
49
          </button>
50
        </h3>
51
        <span id="locations-records">
52
          {locationState.map((location, index) => (
53
            <>
54
              <p key={index}>
55
                {location.formatted_address}
16795 stevensc 56
                {location.is_main === 'y' ? ' (Principal)' : ' (Secundaria)'}
16794 stevensc 57
                <button
58
                  onClick={() => editLocation(location.link_edit, location)}
59
                  className="btn btn-location-edit"
60
                  style={{ padding: '.3rem' }}
61
                >
62
                  <i className="fa fa-pencil" />
63
                </button>
64
                <button
65
                  onClick={() =>
66
                    deleteLocation({
67
                      url: location.link_delete,
68
                      address: location.formatted_address
69
                    })
70
                  }
71
                  className="btn btn-location-delete"
72
                  style={{ padding: '.3rem' }}
73
                >
74
                  <i className="fa fa-trash" />
75
                </button>
76
              </p>
77
              {locations[index + 1] && <hr />}
78
            </>
79
          ))}
80
        </span>
81
      </div>
82
      {showModal && (
83
        <LocationModal
84
          closeModal={closeModal}
85
          onComplete={setLocationState}
86
          dataLink={actionUrl}
87
          googleApiKey={googleApiKey}
88
          defaultData={defaultData}
89
        />
90
      )}
91
      {showDeleteModal && (
92
        <DeleteModal
93
          url={deleteLink}
94
          isOpen={showDeleteModal}
95
          closeModal={closeDeleteModal}
96
          title={'Esta seguro de eliminar esta ubicación?'}
97
          onComplete={() =>
98
            setLocationState(
99
              locationState.filter(
100
                (val) => val.formatted_address !== removeElement
101
              )
102
            )
103
          }
104
          message={'Ubicación eliminada'}
105
        />
106
      )}
107
    </>
108
  )
6002 stevensc 109
}
110
 
16794 stevensc 111
export default Location