vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
2 lines (1 loc) • 2.21 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("vue"),v=(t,l,m)=>{const a=s.reactive({visible:!1,clearTime:0}),c=s.ref({}),u=s.computed(()=>["tooltip-box",`is-${t.theme}`,t.placement,t.className,{"is-shadow":t.shadow}]),i=()=>{if(!l.value)return;const e={position:"absolute",top:void 0,left:void 0,right:void 0,bottom:void 0,transform:void 0};switch(t.placement){case"top-left":e.top="0",e.left="0",e.translate="0 calc(-100% - 0.6em)";break;case"top":e.top="0",e.left="50%",e.translate="-50% calc(-100% - 0.6em)";break;case"top-right":e.top="0",e.right="0",e.translate="0 calc(-100% - 0.6em)";break;case"left":e.top="50%",e.left="0",e.translate="calc(-100% - 0.6em) -50%";break;case"right":e.top="50%",e.right="0",e.translate="calc(100% + 0.6em) -50%";break;case"bottom-left":e.left="0",e.bottom="0",e.translate="0 calc(100% + 0.6em)";break;case"bottom":e.left="50%",e.bottom="0",e.translate="-50% calc(100% + 0.6em)";break;case"bottom-right":e.right="0",e.bottom="0",e.translate="0 calc(100% + 0.6em)";break;case"right-top":e.top="0",e.right="0",e.translate="calc(100% + 0.6em) 0";break;case"left-top":e.top="0",e.left="0",e.translate="calc(-100% - 0.6em) 0";break;case"right-bottom":e.right="0",e.bottom="0",e.translate="calc(100% + 0.6em) 0";break;case"left-bottom":e.left="0",e.bottom="0",e.translate="calc(-100% - 0.6em) 0";break}c.value=e},n=()=>{t.disabled||t.always||(window.clearTimeout(a.clearTime),i(),a.visible=!0)},o=()=>{t.disabled||t.always||(a.clearTime=window.setTimeout(()=>a.visible=!1,t.delay))},r=e=>{t.disabled||(!t.always&&l.value&&(l.value.contains(e.target)?(i(),a.visible=!0):a.visible=!1),m("change",a.visible))},b=()=>{a.visible=!1};return s.onMounted(()=>{s.nextTick(()=>{t.always&&(a.visible=!0,i()),t.trigger==="click"?document.addEventListener("click",r,!1):l.value&&(l.value.addEventListener("mouseenter",n,!1),l.value.addEventListener("mouseleave",o,!1))})}),s.onBeforeUnmount(()=>{t.trigger==="click"?document.removeEventListener("click",r,!1):l.value&&(l.value.removeEventListener("mouseenter",n,!1),l.value.removeEventListener("mouseleave",o,!1))}),{state:a,tooltipStyle:c,tooltipBoxClass:u,handleClose:b}};exports.useTooltip=v;