2 lines
3.1 KiB
Java
2 lines
3.1 KiB
Java
import{d as V,f as E,r as M,e as c,u as i,w as B,k as o,o as D,n as L,ah as S,aC as P,as as F,aF as f,au as _,G as R,av as T}from"./vue-vendor-C7Zq48Yl.js";import{ag as q,N as A,d as $,x as G}from"./index-BI6CMai0.js";import{V as U}from"./antd-vue-vendor-BPnV8VqP.js";import{P as j}from"./index-C57gqG5N.js";import"./vxe-table-vendor-B88kchpX.js";import"./useContentHeight-BUFNkYs_.js";import"./useWindowSizeFn-PRZSD86C.js";import"./useContentViewHeight-BO9bTdue.js";import"./usePageContext-l-f4bNz7.js";import"./injectionKey-DPVn4AgL.js";const z={height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String],bench:{type:[Number,String],default:0},itemHeight:{type:[Number,String],required:!0},items:{type:Array,default:()=>[]}},w="virtual-scroll";function a(t,n="px"){if(!(t==null||t===""))return isNaN(+t)?String(t):`${Number(t)}${n}`}const J=V({name:"VirtualScroll",props:z,setup(t,{slots:n}){const m=E(null),s=M({first:0,last:0,scrollTop:0}),p=c(()=>parseInt(t.bench,10)),u=c(()=>parseInt(t.itemHeight,10)),d=c(()=>Math.max(0,s.first-i(p))),g=c(()=>Math.min((t.items||[]).length,s.last+i(p))),v=c(()=>({height:a((t.items||[]).length*i(u))})),h=c(()=>{const e={},r=a(t.height),l=a(t.minHeight),x=a(t.minWidth),b=a(t.maxHeight),y=a(t.maxWidth),W=a(t.width);return r&&(e.height=r),l&&(e.minHeight=l),x&&(e.minWidth=x),b&&(e.maxHeight=b),y&&(e.maxWidth=y),W&&(e.width=W),e});B([()=>t.itemHeight,()=>t.height],()=>{N()});function H(e){const r=i(m);if(!r)return 0;const l=parseInt(t.height||0,10)||r.clientHeight;return e+Math.ceil(l/i(u))}function C(){return Math.floor(s.scrollTop/i(u))}function N(){const e=i(m);e&&(s.scrollTop=e.scrollTop,s.first=C(),s.last=H(s.first))}function I(){const{items:e=[]}=t;return e.slice(i(d),i(g)).map(k)}function k(e,r){r+=i(d);const l=a(r*i(u));return o("div",{class:`${w}__item`,style:{top:l},key:r},[q(n,"default",{index:r,item:e})])}return D(()=>{s.last=H(0),L(()=>{const e=i(m);e&&A({el:e,name:"scroll",listener:N,wait:0})})}),()=>o("div",{class:w,style:i(h),ref:m},[o("div",{class:`${w}__container`,style:i(v)},[I()])])}}),K=$(J,[["__scopeId","data-v-f9d5e69c"]]),O=G(K),Q=(()=>{const t=[];for(let n=1;n<2e4;n++)t.push({title:"列表项"+n});return t})(),X=V({components:{VScroll:O,Divider:U,PageWrapper:j},setup(){return{data:Q}}}),Y={class:"virtual-scroll-demo-wrap"},Z={class:"virtual-scroll-demo__item"},tt={class:"virtual-scroll-demo-wrap"},et={class:"virtual-scroll-demo__item"};function it(t,n,m,s,p,u){const d=S("Divider"),g=S("VScroll"),v=S("PageWrapper");return F(),P(v,{class:"virtual-scroll-demo"},{default:f(()=>[o(d,null,{default:f(()=>[...n[0]||(n[0]=[R("基础滚动示例",-1)])]),_:1}),_("div",Y,[o(g,{itemHeight:41,items:t.data,height:300,width:300},{default:f(({item:h})=>[_("div",Z,T(h.title),1)]),_:1},8,["items"])]),o(d,null,{default:f(()=>[...n[1]||(n[1]=[R("即使不可见,也预先加载50条数据,防止空白",-1)])]),_:1}),_("div",tt,[o(g,{itemHeight:41,items:t.data,height:300,width:300,bench:50},{default:f(({item:h})=>[_("div",et,T(h.title),1)]),_:1},8,["items"])])]),_:1})}const ht=$(X,[["render",it],["__scopeId","data-v-7316c0b2"]]);export{ht as default};
|