Rev 11142 | Rev 14168 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react'
import { Modal, Button } from 'react-bootstrap'
import axios from 'axios'
import { addNotification } from '../../../redux/notification/notification.actions'
import { useDispatch } from 'react-redux'
const SubmitModal = ({
children,
closeModal = function () { },
postLink = '',
submitData = '',
title = ''
}) => {
const [error, setError] = useState('')
const dispatch = useDispatch()
const onSubmit = () => {
const formData = new FormData()
if (Array.isArray(submitData)) {
submitData.forEach(data => {
Object.entries(data).forEach((entries) => {
formData.append(entries[0], entries[1])
})
})
} else {
Object.entries(submitData).forEach((entries) => {
formData.append(entries[0], entries[1])
})
}
axios.post(postLink, formData)
.then(({ data }) => {
if (!data.success) {
dispatch(addNotification({
style: 'error',
msg: typeof data.data === 'string'
? data.data
: Object.values(data.data)[0]
}))
return
}
dispatch(addNotification({
style: 'success',
msg: 'Envio completado'
}))
setError(null)
closeModal()
})
.catch((err) => setError(err))
}
return (
<Modal size="lg" show onHide={closeModal}>
<Modal.Header closeButton>
<Modal.Title>{title}</Modal.Title>
</Modal.Header>
<Modal.Body>
<div className='form-group'>
{children}
</div>
{error && <p>{error}</p>}
</Modal.Body>
<Modal.Footer>
<Button
variant="primary"
onClick={onSubmit}
>
Enviar
</Button>
<Button variant="danger" onClick={closeModal}>
Cancelar
</Button>
</Modal.Footer>
</Modal >
)
}
export default SubmitModal