UNPKG

comic-plus

Version:

<p align="center"> <img width="200px" src="./logo.png"/> </p>

119 lines (118 loc) 3.78 kB
import { defineComponent, ref, computed, openBlock, createElementBlock, Fragment, createVNode, unref, withCtx, renderSlot, createElementVNode, normalizeStyle, toDisplayString, createCommentVNode } from "vue"; import "../style/popover.css"; import { useElementHover, onClickOutside, useEventListener } from "@vueuse/core"; import OnlyChild from "../../only-child/index.mjs"; import { CuPopper } from "../../popper/index.mjs"; import "../../../utils/config.mjs"; import { isBoolean } from "../../../utils/typescript.mjs"; import { popoverProps } from "./main.props.mjs"; const _hoisted_1 = { key: 0, class: "cu-popover__title" }; const _hoisted_2 = { key: 1, class: "cu-popover__content" }; const _sfc_main = /* @__PURE__ */ defineComponent({ ...{ name: "CuPopover" }, __name: "main", props: popoverProps, setup(__props) { var _a; const props = __props; const popperRef = ref(); const triggerRef = ref(); const containerStyle = computed(() => { return { width: props.width + "px" }; }); const hoverProper = useElementHover(popperRef, { delayLeave: 300 }); const triggerFn = { hover: () => { return useElementHover(triggerRef, { delayLeave: 300 }); }, click: () => { const clicks = ref(false); useEventListener(triggerRef, "click", () => { clicks.value = !isShow.value; }); return clicks; }, contextmenu: () => { const clicks = ref(false); useEventListener(triggerRef, "contextmenu", (e) => { e.preventDefault(); clicks.value = !isShow.value; }); return clicks; } }; const isShow = isBoolean(props.visible) ? void 0 : (_a = triggerFn[props.trigger]) == null ? void 0 : _a.call(triggerFn); if (props.trigger === "click" || props.trigger === "contextmenu") { onClickOutside( popperRef, () => { isShow.value && (isShow.value = false); }, { ignore: [triggerRef] } ); } const show = computed(() => { if (isBoolean(props.visible)) return props.visible; if (props.trigger === "hover") { return isShow.value || hoverProper.value; } return isShow.value; }); return (_ctx, _cache) => { return openBlock(), createElementBlock(Fragment, null, [ createVNode(unref(OnlyChild), { ref_key: "triggerRef", ref: triggerRef }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }, 512), createVNode(unref(CuPopper), { show: show.value, effect: _ctx.effect, offset: _ctx.offset, "custom-class": _ctx.popperClass, trigger: triggerRef.value, placement: _ctx.placement, "transition-name": "cu-fade" }, { default: withCtx(() => [ createElementVNode("div", { class: "cu-popover__container", style: normalizeStyle(containerStyle.value), ref_key: "popperRef", ref: popperRef }, [ renderSlot(_ctx.$slots, "content", {}, () => [ _ctx.title ? (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true), _ctx.content ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(_ctx.content), 1)) : createCommentVNode("", true) ]) ], 4) ]), _: 3 }, 8, ["show", "effect", "offset", "custom-class", "trigger", "placement"]) ], 64); }; } }); export { _sfc_main as default };