2 lines
2.2 KiB
JavaScript
2 lines
2.2 KiB
JavaScript
"use strict";const t=require("../../../common/vendor.js"),i={name:"fui-waterfall",emits:["init","end"],props:{columnGap:{type:[Number,String],default:24},topGap:{type:[Number,String],default:24},leftGap:{type:[Number,String],default:0},rightGap:{type:[Number,String],default:0},isBefore:{type:Boolean,default:!1}},provide(){return{waterfall:this}},data:()=>({height:0,itemWidth:0,leftHeight:0,rightHeight:0,tGap:0,lGap:0,x2:0}),created(){this.childrenArr=[],this.loadedArr=[],this.loadedChild=[],this.initParam()},beforeUnmount(){this.childrenArr=null,this.loadedArr=null,this.loadedChild=null},methods:{getPx(i){let e=parseInt(t.index.upx2px(Number(i)));return e%2==0?e:e+1},initParam(i){this.tGap=this.getPx(this.topGap),this.lGap=this.getPx(this.leftGap);const e=this.getPx(this.columnGap),h=this.getPx(this.rightGap),s=t.index.getSystemInfoSync(),r=e+this.lGap+h;this.itemWidth=(s.windowWidth-r)/2,this.x2=this.lGap+this.itemWidth+e,i&&i(this.itemWidth),this.$emit("init",{itemWidth:this.itemWidth})},resetLoadmore(){this.leftHeight=0,this.rightHeight=0,this.height=0,this.childrenArr=[],this.loadedArr=[],this.loadedChild=[]},getWaterfallInfo(t,i){if(!t)return;let e=this.lGap,h=0,s=0;this.leftHeight<=this.rightHeight?(h=this.leftHeight,0==this.leftHeight?this.leftHeight+=t:(s=this.tGap,h+=this.tGap,this.leftHeight+=t+this.tGap)):(e=this.x2,h=this.rightHeight,0==this.rightHeight?this.rightHeight+=t:(s=this.tGap,h+=this.tGap,this.rightHeight+=t+this.tGap)),i&&i({x:e,y:h,itemGap:s})},setWaterfallHeight(t){this.height=Math.ceil(Math.max(this.leftHeight,this.rightHeight)+t)},startSorting(){let t=this.childrenArr.length,i=this.loadedArr.length;if(t==i&&i>0){let t=0;this.isBefore?(this.leftHeight=0,this.rightHeight=0,this.loadedChild=this.childrenArr.concat(this.loadedChild)):this.loadedChild=this.loadedChild.concat(this.childrenArr);(this.isBefore?this.loadedChild:this.childrenArr).forEach(((i,e)=>{this.getWaterfallInfo(i.height,(e=>{t=e.itemGap,i.transform=`translate3d(${e.x}px,${e.y}px,0)`,setTimeout((()=>{i.isShow=!0}),20)}))})),this.setWaterfallHeight(t),this.childrenArr=[],this.loadedArr=[],this.$emit("end",{})}}}};const e=t._export_sfc(i,[["render",function(t,i,e,h,s,r){return{a:s.height+"px"}}],["__scopeId","data-v-bd87e246"]]);wx.createComponent(e);
|