uv-ui
Version:
基于vue3的移动端组件库
2 lines (1 loc) • 1.19 kB
JavaScript
;const e=require("vue"),f=require("../icon/index.cjs"),v=require("../../hooks/useScrollParent.cjs"),p=require("../../hooks/useEventListener.cjs"),d=require("../../hooks/useThrottle.cjs");require("../../hooks/useCountDown.cjs");const k=require("../../utils/common.cjs");require("./back-top.vue_vue_type_style_index_0_lang.cjs");const m={class:"uv-back-top-icon"},_={name:"UvBackTop"},h=Object.assign(_,{props:{immediate:{type:Boolean,default:!1},offset:{type:Number,default:200}},emits:["click"],setup(l,{emit:a}){const c=l,r=e.ref(null),n=e.ref(!1),o=v.useScrollParent(r),u=t=>{var s;a("click",t),(s=o.value)==null||s.scrollTo({top:0,behavior:c.immediate?"auto":"smooth"})},i=()=>{n.value=o.value?k.getScrollTop(o.value)>=+c.offset:!1};return p.useEventListener(o,"scroll",d.useThrottle(i)),(t,s)=>(e.openBlock(),e.createBlock(e.Transition,{name:"back-top"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:"uv-back-top",ref_key:"backtopRef",ref:r,onClick:u},[e.renderSlot(t.$slots,"default",{},()=>[e.createElementVNode("div",m,[e.createVNode(e.unref(f),{name:"bottom",size:22,color:"#fff"})])])],512),[[e.vShow,n.value]])]),_:3}))}});module.exports=h;