UNPKG

bootstrap-vue-next

Version:

BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.

78 lines (77 loc) 2.54 kB
import { ref, toRef, markRaw, watch } from "vue"; import { m as modalControllerPluginKey } from "../../../keys-BZewGSMQ.mjs"; const modalControllerPlugin = { install(app) { const modals = ref(/* @__PURE__ */ new Map()); const buildPromise = () => { let resolveFunc = () => { }; const promise = new Promise((resolve) => { resolveFunc = resolve; }); return { value: promise, resolve: resolveFunc }; }; const buildPrereqs = (id) => [buildPromise(), id || Symbol("Modals controller"), true]; const show = (obj = {}) => { var _a; const resolvedProps = toRef(obj.props); const [_promise, _self, _modelValue] = buildPrereqs((_a = resolvedProps.value) == null ? void 0 : _a.id); modals.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...resolvedProps.value, _isConfirm: false, _promise, _modelValue } }); watch(resolvedProps, (newValue) => { const previous = modals.value.get(_self); if (!previous) return; modals.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...previous.props, ...newValue } }); }); return _promise.value; }; const confirm = (obj = {}) => { var _a; const resolvedProps = toRef(obj.props); const [_promise, _self, _modelValue] = buildPrereqs((_a = resolvedProps.value) == null ? void 0 : _a.id); modals.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...resolvedProps.value, _isConfirm: true, _promise, _modelValue } }); watch(resolvedProps, (newValue) => { const previous = modals.value.get(_self); if (!previous) return; modals.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...previous.props, ...newValue } }); }); return _promise.value; }; const leave = (self) => { const modal = modals.value.get(self); if (!(modal == null ? void 0 : modal.props)) return; modal.props = { ...modal.props, _modelValue: false }; }; const remove = (self) => { modals.value.delete(self); }; app.provide(modalControllerPluginKey, { modals, remove, show, confirm, leave }); } }; export { modalControllerPlugin }; //# sourceMappingURL=index.mjs.map