UNPKG

bootstrap-vue-next

Version:

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

66 lines (65 loc) 2.17 kB
import { getCurrentInstance, inject, ref, computed, toValue } from "vue"; import { g as globalShowHideStorageInjectionKey } from "../../../keys-CwytVEYF.mjs"; const useToggle = (id = void 0) => { const instance = getCurrentInstance(); const { values: registry } = inject(globalShowHideStorageInjectionKey, { register: () => ({ unregister: () => { } }), values: ref(/* @__PURE__ */ new Map()) }); if (!registry) { throw new Error( "useToggle() was called outside of the setup() function or the plugin is not provided." ); } const findComponent = (component) => { var _a; if (!component.parent) { return null; } if (((_a = component.parent.exposed) == null ? void 0 : _a["id"]) && registry.value.get(toValue(component.parent.exposed.id))) { return component.parent; } return findComponent(component.parent); }; const myComponent = computed(() => { var _a; const resolvedId = toValue(id); if (!registry) return null; if (resolvedId) { const value = registry.value.get(resolvedId); return toValue(value) || null; } if (!instance) { return null; } const component = findComponent(instance); return toValue(registry.value.get(toValue((_a = component == null ? void 0 : component.exposed) == null ? void 0 : _a.id))) || null; }); return { value: computed(() => { var _a; return (_a = myComponent.value) == null ? void 0 : _a.value; }), show: (resolveOnHide) => { var _a; return ((_a = myComponent.value) == null ? void 0 : _a.show(resolveOnHide)) || Promise.reject("not found"); }, hide: (trigger) => { var _a; return ((_a = myComponent.value) == null ? void 0 : _a.hide(trigger, true)) || Promise.reject("not found"); }, toggle: (resolveOnHide) => { var _a; return ((_a = myComponent.value) == null ? void 0 : _a.toggle(resolveOnHide)) || Promise.reject("not found"); }, component: computed(() => { var _a; return (_a = myComponent.value) == null ? void 0 : _a.component; }) }; }; export { useToggle }; //# sourceMappingURL=index.mjs.map