Proyectos de Subversion LeadersLinked - Backend

Rev

Autoría | Ultima modificación | Ver Log |


import React from 'react'
import { axios } from '../../utils'
import { useDispatch } from 'react-redux'
import { addNotification } from '../../redux/notification/notification.actions'
import { Modal, Button } from 'react-bootstrap'

function EditModal ({
        title = '',
        url ='',
        data={},
        show = false,
        isEdit = false,
        children = React.Component,
        onComplete = function() {},
        onClose = function() {}
}) {
        const dispatch = useDispatch()

        const onSubmit = () => {
                const formData = new FormData()

                Object.entries(data)
                axios.post(url, 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()
                                onClose()
                        })
                        .catch((err) => dispatch(addNotification({style: 'danger',msg: err})))
        }

        return (
                <Modal show={show} onHide={onClose}>
                        <Modal.Header closeButton>
                                <Modal.Title>{title} - {isEdit ? 'Editar' : 'Agregar'}</Modal.Title>
                        </Modal.Header>

                        <Modal.Body>
                                {children}
                        </Modal.Body>

                        <Modal.Footer>
                                <Button variant="primary" onClick={onSubmit}>
                        Enviar
                                </Button>
                                <Button variant="danger" onClick={onClose}>
                        Cancelar
                                </Button>
                        </Modal.Footer>
                </Modal >
        )
}

export default EditModal