dk-plus
Version:
2 lines (1 loc) • 1.4 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),_=require("../../_utils/filtration/index.js"),v=require("./index3.js"),k=require("../../_hooks/public/get-return/index.js");require("../../_icon/index.js");const R=e.defineComponent({name:"DkTrigger",props:v.dkTriggerProps,setup(n,{expose:g}){const f=e.reactive({}),{getRun:i}=k.getReturn(),l=e.ref(),t=e.ref(!1),d=()=>{n.disabled||(t.value=!0,i(n.onOpen,t.value),i(n.onChange,t.value))},u=()=>{t.value=!1,i(n.onClose,t.value),i(n.onChange,t.value),document.removeEventListener("click",c)};g({handelOpen:d,handelClose:u,showContent:t});const m=e.computed(()=>n.trigger==="hover"?"mouseover":"click"),h=e.computed(()=>n.trigger==="hover"?"mouseleave":""),C=e.computed(()=>{const{spanInterval:a,popUpDuration:o,offUpDuration:r}=n;return{"--trigger-spacing-size":_.sizeChange(a),"--trigger-enter-duration":o&&o+"s","--trigger-leave-duration":r&&r+"s"}}),c=a=>{const o=l.value,r=n.contentRef,s=a.target;o&&s&&o.contains(s)||r&&s&&r.contains(s)||u()},E=()=>{document.addEventListener("click",c)};return e.onBeforeUnmount(()=>{document.removeEventListener("click",c)}),e.provide(v.TRIGGER_CLOSE_KEY,{handelOnClose:()=>{t.value=!1}}),{styleList:C,showContent:t,closeEvent:h,openEvent:m,handelOpen:d,handelClose:u,onBeforeEnter:E,rootRef:l,...e.toRefs(f)}}});exports.default=R;