UNPKG

dk-plus

Version:
55 lines (54 loc) 1.79 kB
import { defineComponent as R, reactive as k, ref as g, computed as u, onBeforeUnmount as p, provide as L, toRefs as O } from "vue"; import { sizeChange as _ } from "../../_utils/filtration/index.js"; import { dkTriggerProps as D, TRIGGER_CLOSE_KEY as T } from "./index3.js"; import { getReturn as U } from "../../_hooks/public/get-return/index.js"; import "../../_icon/index.js"; const w = R({ name: "DkTrigger", props: D, setup(e, { expose: m }) { const f = k({}), { getRun: r } = U(), l = g(), t = g(!1), v = () => { e.disabled || (t.value = !0, r(e.onOpen, t.value), r(e.onChange, t.value)); }, s = () => { t.value = !1, r(e.onClose, t.value), r(e.onChange, t.value), document.removeEventListener("click", i); }; m({ handelOpen: v, handelClose: s, showContent: t }); const d = u(() => e.trigger === "hover" ? "mouseover" : "click"), h = u(() => e.trigger === "hover" ? "mouseleave" : ""), C = u(() => { const { spanInterval: c, popUpDuration: n, offUpDuration: o } = e; return { "--trigger-spacing-size": _(c), "--trigger-enter-duration": n && n + "s", "--trigger-leave-duration": o && o + "s" }; }), i = (c) => { const n = l.value, o = e.contentRef, a = c.target; n && a && n.contains(a) || o && a && o.contains(a) || s(); }, E = () => { document.addEventListener("click", i); }; return p(() => { document.removeEventListener("click", i); }), L(T, { handelOnClose: () => { t.value = !1; } }), { styleList: C, showContent: t, closeEvent: h, openEvent: d, handelOpen: v, handelClose: s, onBeforeEnter: E, rootRef: l, ...O(f) }; } }); export { w as default };