tu-view-plus
Version:
2 lines (1 loc) • 1.56 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),u=require("@vueuse/core"),i=require("./back-top.js"),k=require("@tu-view-plus/hooks"),b=require("@tu-view-plus/icons-vue"),c=require("@tu-view-plus/utils"),_=require("../../button/index.js");require("../style/back-top.css");const g=e.defineComponent({name:"TuBackTop"}),q=e.defineComponent({...g,props:i.backTopProps,emits:i.backtopEmits,setup(d,{emit:p}){const o=d,m=p,v=k.useNamespace("back-top"),s=e.ref(!1),t=e.shallowRef(),r=e.shallowRef(),f=e.computed(()=>({right:c.addUnit(o.right),bottom:c.addUnit(o.bottom)})),a=()=>{t.value&&(s.value=t.value.scrollTop>=o.visibleHeight)},h=n=>{var l;(l=t.value)==null||l.scrollTo({top:0,behavior:"smooth"}),m("click",n)},T=u.useThrottleFn(a,300,!0);return u.useEventListener(r,"scroll",T),e.onMounted(()=>{r.value=document,t.value=document.documentElement,o.target&&(t.value=document.querySelector(o.target)??void 0,t.value||c.throwError("TuBackTop",`target does not exist: ${o.target}`),r.value=t.value),a()}),(n,l)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade-in"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(v).b()),style:e.normalizeStyle(f.value),onClick:e.withModifiers(h,["stop"])},[e.renderSlot(n.$slots,"default",{},()=>[e.createVNode(e.unref(_.TuButton),{circle:""},{icon:e.withCtx(()=>[e.createVNode(e.unref(b.CaretTop))]),_:1})])],6)):e.createCommentVNode("",!0)]),_:3}))}});exports.default=q;