bootstrap-vue-next
Version:
BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.
93 lines (92 loc) • 2.77 kB
JavaScript
import { ref, toValue, toRef, watch, isRef, onScopeDispose } from "vue";
import { p as popoverPluginKey } from "../../../keys-BZewGSMQ.mjs";
const popoverPlugin = {
install(app) {
const popovers = ref(/* @__PURE__ */ new Map());
const popover = (obj) => {
var _a;
const resolvedProps = toRef(obj);
const _self = ((_a = resolvedProps.value) == null ? void 0 : _a.id) || Symbol("Popover controller");
watch(
resolvedProps,
(newValue) => {
popovers.value.set(_self, {
...newValue,
...typeof newValue["modelValue"] !== "undefined" && isRef(obj) ? {
"onUpdate:modelValue": (val) => {
var _a2;
(_a2 = newValue["onUpdate:modelValue"]) == null ? void 0 : _a2.call(newValue, val);
obj.value.modelValue = val;
}
} : {}
});
},
{
immediate: true,
deep: true
}
);
onScopeDispose(() => popovers.value.delete(_self), true);
return _self;
};
const setPopover = (self, val) => {
const popover2 = popovers.value.get(self);
if (!popover2) return;
popovers.value.set(self, {
...popover2,
...toValue(val)
});
};
const removePopover = (self) => popovers.value.delete(self);
const tooltips = ref(/* @__PURE__ */ new Map());
const tooltip = (obj) => {
var _a;
const resolvedProps = toRef(obj);
const _self = ((_a = resolvedProps.value) == null ? void 0 : _a.id) || Symbol("Tooltip controller");
watch(
resolvedProps,
(newValue) => {
popovers.value.set(_self, {
...newValue,
...typeof newValue["modelValue"] !== "undefined" && isRef(obj) ? {
"onUpdate:modelValue": (val) => {
var _a2;
(_a2 = newValue["onUpdate:modelValue"]) == null ? void 0 : _a2.call(newValue, val);
obj.value.modelValue = val;
}
} : {}
});
},
{
immediate: true,
deep: true
}
);
onScopeDispose(() => tooltips.value.delete(_self), true);
return _self;
};
const setTooltip = (self, val) => {
const tooltip2 = tooltips.value.get(self);
if (!tooltip2) return;
tooltips.value.set(self, {
...tooltip2,
...toValue(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