mazeof-react
Version:
some goods for your react
34 lines (33 loc) • 1.14 kB
JavaScript
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
};
};