Rev 15384 | 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 = '',onComplete = function () { }}) => {const [error, setError] = useState('')const [loading, setloading] = useState(false)const dispatch = useDispatch()const onSubmit = () => {setloading(true)const values = Object.values(submitData)if (!values.length || !values[0]) {dispatch(addNotification({style: 'danger',msg: 'El campo no puede estar vacio.'}))return setloading(false)}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) {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}dispatch(addNotification({style: 'success',msg: 'Envio completado'}))onComplete()setError(null)closeModal()}).catch((err) => setError(err)).finally(() => setloading(false))}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><buttonclassName='btn btn-primary'onClick={onSubmit}disabled={loading}>Enviar</button><button className='btn btn-secondary' onClick={closeModal}>Cancelar</button></Modal.Footer></Modal >)}export default SubmitModal