import React, { useState, useEffect } from "react"; import { Header, Message, Icon, Button, Table, Label, Segment, Modal, Dropdown } from 'semantic-ui-react' import BigApiErrorMessage from "./BigApiErrorMessage.jsx"; const ButtonModal = (props) => { const [showModal, setShowModal] = useState(false); const [loading, setLoading] = useState(false); const onShowModal = async () => { setShowModal(true); if (props.onShowModal) { await props.onShowModal(); } } const onCloseModal = (i, e) => { setShowModal(false); } const onConfirm = async (e) => { e.preventDefault(); setLoading(true); // If closeImmediately is true, close the modal before processing if (props.closeImmediately) { setShowModal(false); } try { if (props.onConfirm) { await props.onConfirm(); } } catch (e) { console.log(e.status); console.log(e.response.body); //this.setState({ error: e.response.body.message, loading: false }); console.error(e); } setLoading(false); // If closeImmediately is false (default), close the modal after processing if (!props.closeImmediately) { setShowModal(false); } } const modal = (
{props.error && } {props.children} {props.cancel && } ); if (props.as && props.as === "dropdown") { return ( <> {props.icon && } {props.text} {modal} ); } else { return ( <> {modal} ); } } export default ButtonModal;