UNPKG

mazeof-react

Version:
34 lines (33 loc) 1.14 kB
import { useState } from "react"; export const UseModal = () => { const [showModal, setShowModal] = useState(false); const [modalTitle, setModalTitle] = useState("Modal title"); const [modalBody, setModalBody] = useState("This is a modal ! You can either confirm or close this"); const [modalActions, setModalAction] = useState({ 'sanityCheck': () => () => { console.log("confirmed"); } }); const displayModal = (modalTitle, body, action) => { setModalTitle(modalTitle); setModalBody(body); setShowModal(true); setModalAction(() => action); }; const hideModal = () => { setShowModal(false); setModalBody(""); }; const confirm = (action) => { if (shouldNotKeepOpen(applyAction(action))) { hideModal(); } }; const shouldNotKeepOpen = (keepOpen) => { return keepOpen === undefined || !keepOpen; }; const applyAction = (action) => { return modalActions[action].action(); }; return { modalTitle, modalBody, showModal, displayModal, hideModal, modalActions, confirm }; };