yuang-framework-ui-pc
Version:
yuang-framework-ui-pc Library
105 lines (104 loc) • 3.6 kB
JavaScript
"use strict";
const vue = require("vue");
const core = require("../utils/core");
const EleTooltip = require("../ele-tooltip/index");
const props$1 = require("../ele-tooltip/props");
const props = require("./props");
const _sfc_main = vue.defineComponent({
name: "ElePopover",
components: { EleTooltip },
props: props.popoverProps,
emits: props.popoverEmits,
setup(props2, { emit }) {
const tooltipRef = vue.ref(null);
const tooltipProps = vue.computed(() => {
const keys = props$1.tooltipPropKeys.filter(
(k) => !["content", "bodyStyle"].includes(k)
);
const options = core.pick(props2, keys);
options.ariaLabel = props2.title;
options.gpuAcceleration = props2.transition === "el-fade-in-linear";
return options;
});
const hide = () => {
tooltipRef.value && tooltipRef.value.hide();
};
const handleUpdateVisible = (visible) => {
emit("update:visible", visible);
};
const handlePopBeforeEnter = () => {
emit("before-enter");
};
const handlePopBeforeLeave = () => {
emit("before-leave");
};
const handlePopAfterEnter = () => {
emit("after-enter");
};
const handlePopAfterLeave = () => {
emit("after-leave");
};
return {
tooltipRef,
tooltipProps,
hide,
handleUpdateVisible,
handlePopBeforeEnter,
handlePopBeforeLeave,
handlePopAfterEnter,
handlePopAfterLeave
};
}
});
const _export_sfc = (sfc, props2) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props2) {
target[key] = val;
}
return target;
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_EleTooltip = vue.resolveComponent("EleTooltip");
return vue.openBlock(), vue.createBlock(_component_EleTooltip, vue.mergeProps({ tabindex: _ctx.tabindex }, _ctx.tooltipProps, {
ref: "tooltipRef",
isPopover: true,
"onUpdate:visible": _ctx.handleUpdateVisible,
onBeforeShow: _ctx.handlePopBeforeEnter,
onBeforeHide: _ctx.handlePopBeforeLeave,
onShow: _ctx.handlePopAfterEnter,
onHide: _ctx.handlePopAfterLeave
}), {
body: vue.withCtx(() => [
vue.createElementVNode("div", {
class: vue.normalizeClass(["ele-popover-body", _ctx.bodyClass]),
style: vue.normalizeStyle(_ctx.bodyStyle)
}, [
vue.renderSlot(_ctx.$slots, "body", {}, () => [
_ctx.title != null && _ctx.title != "" || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("div", {
key: 0,
class: "ele-popover-title",
style: vue.normalizeStyle(_ctx.titleStyle)
}, [
vue.renderSlot(_ctx.$slots, "title", {}, () => [
vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
])
], 4)) : vue.createCommentVNode("", true),
vue.createElementVNode("div", {
class: "ele-popover-content",
style: vue.normalizeStyle(_ctx.contentStyle)
}, [
vue.renderSlot(_ctx.$slots, "default", {}, () => [
vue.createTextVNode(vue.toDisplayString(_ctx.content), 1)
])
], 4)
])
], 6)
]),
default: vue.withCtx(() => [
_ctx.$slots.reference ? vue.renderSlot(_ctx.$slots, "reference", { key: 0 }) : vue.createCommentVNode("", true)
]),
_: 3
}, 16, ["tabindex", "onUpdate:visible", "onBeforeShow", "onBeforeHide", "onShow", "onHide"]);
}
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
module.exports = index;