| 1 |
- import{t,p as e,w as s,D as a,E as i,F as n,q as o,Q as l,v as c,ag as r,x as h,y as u,H as d,B as p,I as f}from"./index-P0fyQ2Em.js";import{_ as m}from"./_plugin-vue_export-helper.BCo6x5W8.js";const y=m({name:"SwipeAction",props:{list:{type:Array,default:()=>[]},buttons:{type:Array,default:()=>[]},rowKey:{type:String,default:"id"},marginB:{type:[String,Number],default:"0"},borderR:{type:[String,Number],default:"0"}},data:()=>({listData:[],buttonsData:[],currentOpenIndex:-1,actionWidth:0,buttonWidth:160}),watch:{list:{handler(t){this.listData=t.map((t=>({...t,offsetX:0,startX:0,startY:0,isHorizontal:!1})))},immediate:!0},buttons:{handler(t){this.buttonsData=t,this.calculateActionWidth()},immediate:!0}},methods:{calculateActionWidth(){this.actionWidth=this.buttonsData.length*this.buttonWidth/2},onItemClick(t){this.$emit("click",t)},handleButtonClick(t,e,s,a){this.$emit("action",{value:t,item:e,index:s,btn:a}),this.closeSwipe(s)},closeSwipe(t){void 0===t?(this.listData.forEach((t=>t.offsetX=0)),this.currentOpenIndex=-1):(this.listData[t].offsetX=0,this.currentOpenIndex=-1)},handleTouchStart(t,e){const s=this.listData[e];s.startX=t.touches[0].clientX,s.startY=t.touches[0].clientY,s.isHorizontal=!1,-1!==this.currentOpenIndex&&this.currentOpenIndex!==e&&this.closeSwipe(this.currentOpenIndex)},handleTouchMove(t,e){const s=this.listData[e],a=t.touches[0].clientX-s.startX,i=Math.abs(t.touches[0].clientY-s.startY);if(!s.isHorizontal){if(i>5)return;Math.abs(a)>5&&(s.isHorizontal=!0)}if(s.isHorizontal){const e=Math.min(0,a),i=-this.actionWidth;s.offsetX=Math.max(i,e),t.preventDefault()}},handleTouchEnd(t){const e=this.listData[t],s=.3*this.actionWidth;e.offsetX<=-s?(e.offsetX=-this.actionWidth,this.currentOpenIndex=t):(e.offsetX=0,this.currentOpenIndex=-1)}}},[["render",function(m,y,b,x,w,k){const D=o,X=f;return t(),e(D,{class:"swipe-item-v"},{default:s((()=>[(t(!0),a(n,null,i(w.listData,((o,f)=>(t(),e(D,{key:f,class:"list-item",onClick:t=>k.onItemClick(o),style:l({"margin-bottom":b.marginB+"rpx"})},{default:s((()=>[c(D,{class:"swipe-container",style:l({"border-radius":b.borderR+"rpx"})},{default:s((()=>[c(D,{class:"content-wrapper",style:l({transform:`translateX(${o.offsetX}px)`}),onTouchstart:t=>!o.swipeAction&&k.handleTouchStart(t,f),onTouchmove:t=>!o.swipeAction&&k.handleTouchMove(t,f),onTouchend:t=>!o.swipeAction&&k.handleTouchEnd(f)},{default:s((()=>[r(m.$slots,"default",{item:o,index:f},void 0,!0)])),_:2},1032,["style","onTouchstart","onTouchmove","onTouchend"]),c(D,{class:"action-buttons",style:l({width:`${w.actionWidth}px`})},{default:s((()=>[(t(!0),a(n,null,i(w.buttonsData,((a,i)=>(t(),e(D,{key:i,class:"btn",style:l({background:a.style.backgroundColor,opacity:o.swipeAction?.5:1}),onClick:t=>!o.swipeAction&&k.handleButtonClick(a.value,o,f,a)},{default:s((()=>[c(X,{class:"btn-text"},{default:s((()=>[h(u(a.text),1)])),_:2},1024),a.icon?(t(),e(X,{key:0,class:d(["iconfont",a.icon])},null,8,["class"])):p("",!0)])),_:2},1032,["style","onClick"])))),128))])),_:2},1032,["style"])])),_:2},1032,["style"])])),_:2},1032,["onClick","style"])))),128))])),_:3})}],["__scopeId","data-v-3e8390e2"]]);export{y as S};
|