UNPKG

bootstrap-vue-next

Version:

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

101 lines (100 loc) 3.11 kB
import { ref, toRef, watch, markRaw } from "vue"; import { p as popoverPluginKey } from "../../../keys-CFfh7DXf.mjs"; const popoverPlugin = { install(app) { const popovers = ref(/* @__PURE__ */ new Map()); const popover = (obj) => { var _a; const resolvedProps = toRef(obj.props); const reference = toRef(obj.target); const _self = ((_a = resolvedProps.value) == null ? void 0 : _a.id) || Symbol("Popover controller"); watch( reference, (newValue) => { if (!newValue) { popovers.value.delete(_self); } else { popovers.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...resolvedProps.value, _target: newValue, _modelValue: false } }); } }, { immediate: true } ); watch(resolvedProps, (newValue) => { const previous = popovers.value.get(_self); if (!previous) return; popovers.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...previous.props, ...newValue } }); }); return _self; }; const setPopover = (self, val) => { const popover2 = popovers.value.get(self); if (!(popover2 == null ? void 0 : popover2.props)) return; popover2.props = { ...popover2.props, ...val }; }; const removePopover = (self) => popovers.value.delete(self); const tooltips = ref(/* @__PURE__ */ new Map()); const tooltip = (obj) => { var _a; const resolvedProps = toRef(obj.props); const reference = toRef(obj.target); const _self = ((_a = resolvedProps.value) == null ? void 0 : _a.id) || Symbol("Tooltip controller"); watch( reference, (newValue) => { if (!newValue) { tooltips.value.delete(_self); } else { tooltips.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...resolvedProps.value, _modelValue: false, _target: newValue } }); } }, { immediate: true } ); watch(resolvedProps, (newValue) => { const previous = tooltips.value.get(_self); if (!previous) return; tooltips.value.set(_self, { component: !obj.component ? void 0 : markRaw(obj.component), props: { ...previous.props, ...newValue } }); }); return _self; }; const setTooltip = (self, val) => { const tip = tooltips.value.get(self); if (!(tip == null ? void 0 : tip.props)) return; tip.props = { ...tip.props, ...val }; }; const removeTooltip = (self) => tooltips.value.delete(self); app.provide(popoverPluginKey, { popovers, tooltips, tooltip, popover, setPopover, setTooltip, removePopover, removeTooltip }); } }; export { popoverPlugin }; //# sourceMappingURL=index.mjs.map