stackpress
Version:
Incept is a content management framework.
39 lines (38 loc) • 1.32 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useModal = useModal;
exports.useConfirm = useConfirm;
const react_1 = __importDefault(require("react"));
const react_2 = require("react");
const hooks_js_1 = require("../notify/hooks.js");
const ModalContext_js_1 = __importDefault(require("./ModalContext.js"));
const ModalConfirm_js_1 = __importDefault(require("./ModalConfirm.js"));
function useModal() {
const { className, title, body, open } = (0, react_2.useContext)(ModalContext_js_1.default);
return { className, title, body, open };
}
function useConfirm(config) {
const { label, message, action } = config;
const { open, title, body } = useModal();
const { notify } = (0, hooks_js_1.useNotify)();
const confirmed = () => action().then(() => {
open(false);
}).catch(e => {
open(false);
notify('error', e.message);
});
const confirm = () => {
title(label());
body(react_1.default.createElement(ModalConfirm_js_1.default, {
open,
message: message(),
confirmed
}));
open(true);
};
return { confirm };
}
;