UNPKG

bootstrap-vue-next

Version:

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

1 lines 6.35 kB
{"version":3,"file":"index.mjs","sources":["../../../../src/composables/useModalController/index.ts"],"sourcesContent":["import {\n type ComponentInternalInstance,\n computed,\n getCurrentInstance,\n inject,\n ref,\n toValue,\n} from 'vue'\nimport {modalControllerPluginKey} from '../../utils/keys'\nimport type {\n ControllerKey,\n PromiseWithModal,\n PromiseWithModalBoolean,\n} from '../../types/ComponentOrchestratorTypes'\nimport {useSharedModalStack} from '../../composables/useModalManager'\n\nexport const useModalController = () => {\n const noopPromise = () => {\n // eslint-disable-next-line no-console\n console.warn(\n 'useModalController() was called outside of the setup() function! or the plugin is not provided.'\n )\n return Promise.resolve(null) as unknown as PromiseWithModal\n }\n const modalControllerPlugin = inject(modalControllerPluginKey, {\n modals: ref(new Map()),\n _isOrchestratorInstalled: ref(false),\n create: noopPromise,\n show: noopPromise as () => PromiseWithModalBoolean,\n confirm: noopPromise as () => PromiseWithModalBoolean,\n })\n if (modalControllerPlugin.create === noopPromise) {\n throw Error(\n 'useModalController() was called outside of the setup() function! or the plugin is not provided.'\n )\n }\n\n const {lastStack, stack, registry} = useSharedModalStack()\n const hide = (trigger?: string, id?: ControllerKey) => {\n if (id === undefined) {\n if (id === undefined && lastStack?.value) {\n lastStack?.value.exposed?.hide(trigger)\n }\n } else {\n const stackModal = stack?.value.find((modal) => modal.exposed?.id === id)\n if (stackModal) {\n stackModal.exposed?.hide(trigger)\n return\n }\n const modal = modalControllerPlugin.modals.value.get(id)\n if (modal) {\n modal.modelValue = false\n modal['onUpdate:modelValue']?.(false)\n } else {\n stack?.value.forEach((modal) => {\n if (modal.exposed?.id === id) {\n modal.exposed?.hide(trigger, true)\n }\n })\n }\n }\n }\n\n const hideAll = (trigger?: string) => {\n stack?.value.forEach((modal) => {\n modal.exposed?.hide(trigger, true)\n })\n }\n\n const get = (id: ControllerKey) => {\n if (modalControllerPlugin.modals.value.get(id)) {\n const modal = modalControllerPlugin.modals.value.get(id)\n return {\n modal,\n show() {\n modal?.promise.value.show()\n },\n hide(trigger?: string) {\n modal?.promise.value.hide(trigger)\n },\n }\n }\n if (registry?.value) {\n for (const [, modal] of registry?.value.entries() ?? []) {\n if (toValue(modal.exposed?.id) === id) {\n return {\n modal,\n show() {\n modal.exposed?.show()\n },\n hide(trigger?: string) {\n modal.exposed?.hide(trigger, true)\n },\n }\n }\n }\n }\n return null\n }\n\n const instance = getCurrentInstance()\n const current = () => {\n const findBModal = (component: ComponentInternalInstance): ComponentInternalInstance | null => {\n if (!component.parent) {\n return null\n }\n if (component.parent.type.__name === 'BModal') {\n return component.parent\n }\n return findBModal(component.parent)\n }\n if (!instance) {\n return null\n }\n const modalComponent = computed(() => findBModal(instance))\n const modal = computed(() => modalComponent.value?.proxy)\n return {\n show() {\n modalComponent.value?.exposed?.show()\n },\n hide(trigger?: string) {\n modalComponent.value?.exposed?.hide(trigger, true)\n },\n modal,\n }\n }\n\n return {\n hide,\n hideAll,\n get,\n current,\n ...modalControllerPlugin,\n // Todo: Supports listening events globally in the future\n }\n}\n"],"names":["modal","_a"],"mappings":"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"}