Rev 15261 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { useState } from 'react'
import SearchLocationInput from '../../../shared/SearchLocationInput'
import { addNotification } from '../../../redux/notification/notification.actions'
import axios from 'axios'
import { useDispatch } from 'react-redux'
import { Modal } from 'react-bootstrap'
const LocationModal = ({
closeModal,
dataLink,
googleApiKey,
defaultData = '',
onComplete = function () { }
}) => {
const [isActive, setIsActive] = useState((defaultData.is_main === 'y') ? true : false)
const [value, setValue] = useState(defaultData.formatted_address)
const [data, setData] = useState({})
const dispatch = useDispatch()
const onSubmit = () => {
const values = Object.values(data)
if (!values.length) {
return dispatch(addNotification({
style: 'danger',
msg: 'El campo no puede estar vacio.'
}))
}
const formData = new FormData()
Object.entries({ ...data, is_main: isActive ? 'y' : 'n' }).forEach((entries) => {
formData.append(entries[0], entries[1])
})
axios.post(dataLink, formData)
.then(({ data }) => {
if (!data.success) {
typeof data.data === 'string'
?
dispatch(addNotification({
style: 'danger',
msg: data.data
}))
: Object.entries(data.data).map(([key, value]) =>
value.map(err =>
dispatch(addNotification({
style: 'danger',
msg: `${key}: ${err}`
}))
)
)
return
}
onComplete(data.data)
dispatch(addNotification({
style: 'success',
msg: 'Registro actualizado'
}))
closeModal()
})
.catch((err) => console.log(err))
}
return (
<Modal size="md" show onHide={closeModal}>
<Modal.Header closeButton>
<Modal.Title>Ubicación</Modal.Title>
</Modal.Header>
<Modal.Body>
<div className='form-group'>
<SearchLocationInput
value={value}
setValue={setValue}
googleApiKey={googleApiKey}
updateData={setData}
/>
<div
className={`toggle btn btn-primary ${!isActive && 'off'}`}
data-toggle="toggle"
role="button"
style={{ width: '130px' }}
onClick={() => setIsActive(!isActive)}
>
<input
type="checkbox"
checked={isActive}
/>
<div className="toggle-group">
<label htmlFor="status" className="btn btn-primary toggle-on">Principal</label>
<label htmlFor="status" className="btn btn-light toggle-off">Secundaria</label>
<span className="toggle-handle btn btn-light"></span>
</div>
</div>
</div>
</Modal.Body>
<Modal.Footer>
<button
className="btn btn-primary"
type="submit"
onClick={onSubmit}
>
Enviar
</button>
<button
className='btn btn-tertiary'
onClick={closeModal}
>
Cancelar
</button>
</Modal.Footer>
</Modal >
)
}
export default LocationModal