Files
yshop-pro-uniapp/unpackage/dist/build/h5/assets/uv-swipe-action.8756f5c3.js
2023-11-14 17:21:03 +08:00

2 lines
7.2 KiB
JavaScript

var t,e,s,a;import{_ as o}from"./uv-icon.5730d4d2.js";import{G as i,H as n,g as r,o as u,c as l,w as h,a as c,j as d,b as p,F as f,r as m,A as g,m as v,h as y,t as b,K as _,d as w}from"./index-d76b1e7a.js";import{r as x}from"./useRouter.2bdb47a0.js";import{_ as S}from"./_plugin-vue_export-helper.1b428a4d.js";const X={methods:{getTouchPoint:t=>t?t.touches&&t.touches[0]?{x:t.touches[0].pageX,y:t.touches[0].pageY}:t.changedTouches&&t.changedTouches[0]?{x:t.changedTouches[0].pageX,y:t.changedTouches[0].pageY}:{x:t.clientX||0,y:t.clientY||0}:{x:0,y:0},resetTouchStatus(){this.direction="",this.deltaX=0,this.deltaY=0,this.offsetX=0,this.offsetY=0},touchStart(t){this.resetTouchStatus();const e=this.getTouchPoint(t);this.startX=e.x,this.startY=e.y},touchMove(t){const e=this.getTouchPoint(t);var s,a;this.deltaX=e.x-this.startX,this.deltaY=e.y-this.startY,this.offsetX=Math.abs(this.deltaX),this.offsetY=Math.abs(this.deltaY),this.direction=this.direction||(s=this.offsetX,a=this.offsetY,s>a&&s>10?"horizontal":a>s&&a>10?"vertical":"")}}},C={props:{show:{type:Boolean,default:!1},name:{type:[String,Number],default:""},disabled:{type:Boolean,default:!1},autoClose:{type:Boolean,default:!0},threshold:{type:Number,default:20},options:{type:Array,default:()=>[]},duration:{type:[String,Number],default:300},...null==(e=null==(t=uni.$uv)?void 0:t.props)?void 0:e.swipeActionItem}};function z(t){return t.toString().indexOf("s")>=0?t:t>30?t+"ms":t+"s"}function T(t,e,s){e.getState(),s.selectAllComponents(".uv-swipe-action-item__right__button"),e.requestAnimationFrame((function(){e.setStyle({transition:"none",transform:"translateX("+t+"px)","-webkit-transform":"translateX("+t+"px)"})}))}function k(t,e){var s=t.getState();e.selectAllComponents(".uv-swipe-action-item__right__button");var a=z(s.duration),o=-s.buttonsWidth;t.requestAnimationFrame((function(){t.setStyle({transition:"transform "+a,transform:"translateX("+o+"px)","-webkit-transform":"translateX("+o+"px)"})})),Y("open",t,e)}function Y(t,e,s){e.getState().status=t,s.callMethod("setState",t)}function $(t,e){var s=t.getState(),a=e.selectAllComponents(".uv-swipe-action-item__right__button"),o=a.length,i=z(s.duration);t.requestAnimationFrame((function(){t.setStyle({transition:"transform "+i,transform:"translateX(0px)","-webkit-transform":"translateX(0px)"});for(var e=o-1;e>=0;e--)a[e].setStyle({transition:"transform "+i,transform:"translateX(0px)","-webkit-transform":"translateX(0px)"})})),Y("close",t,e)}const M={touchstart:function(t,e){var s=t.instance.getState();if(!s.disabled){var a=t.touches;a&&a.length>1||(s.moving=!0,s.startX=a[0].pageX,s.startY=a[0].pageY,e.callMethod("closeOther"))}},touchmove:function(t,e){var s=t.instance,a=s.getState();if(!a.disabled&&a.moving){var o=t.touches,i=o[0].pageX,n=o[0].pageY,r=i-a.startX,u=n-a.startY,l=a.buttonsWidth;(Math.abs(r)>Math.abs(u)||Math.abs(r)>a.threshold)&&(t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()),Math.abs(r)<Math.abs(u)||("open"===a.status?(r<0&&(r=0),r>l&&(r=l),T(-l+r,s,e)):(r>0&&(r=0),Math.abs(r)>l&&(r=-l),T(r,s,e)))}},touchend:function(t,e){var s=t.instance,a=s.getState();if(a.moving&&!a.disabled){var o=t.changedTouches?t.changedTouches[0]:{},i=o.pageX;o.pageY;var n=i-a.startX;if("open"===a.status){if(n<0)return;if(0===n)return $(s,e);Math.abs(n)<a.threshold?k(s,e):$(s,e)}else{if(n>0)return;Math.abs(n)<a.threshold?$(s,e):k(s,e)}}},sizeChange:function(t,e,s,a){var o=a.getState();if(o.disabled=t.disabled,o.duration=t.duration,o.show=t.show,o.threshold=t.threshold,o.buttons=t.buttons,o.buttons)for(var i=o.buttons.length,n=0,r=t.buttons,u=0;u<i;u++)n+=r[u].width;o.buttonsWidth=n},statusChange:function(t,e,s,a){var o=a.getState();o.disabled||("close"===t&&"open"===o.status?$(a,s):"open"===t&&"close"===o.status&&k(a,s))}},A=t=>{t.$wxs||(t.$wxs=[]),t.$wxs.push("wxs"),t.mixins||(t.mixins=[]),t.mixins.push({beforeCreate(){this.wxs=M}})},D={name:"uv-swipe-action-item",emits:["click"],mixins:[i,n,C,X],mixins:[i,n,C,X,{methods:{closeHandler(){this.status="close"},setState(t){this.status=t},closeOther(){this.parent&&this.parent.closeOther(this)}}}],data:()=>({size:{},parentData:{autoClose:!0},status:"close"}),watch:{wxsInit(t,e){this.queryRect()}},computed:{wxsInit(){return[this.disabled,this.autoClose,this.threshold,this.options,this.duration]}},mounted(){this.init()},methods:{init(){this.updateParentData(),this.$uv.sleep().then((()=>{this.queryRect()}))},updateParentData(){this.getParentData("uv-swipe-action")},queryRect(){this.$uvGetRect(".uv-swipe-action-item__right__button",!0).then((t=>{this.size={buttons:t,show:this.show,disabled:this.disabled,threshold:this.threshold,duration:this.duration}}))},buttonClickHandler(t,e){this.$emit("click",{index:e,name:this.name})}}};A(D);const P=S(D,[["render",function(t,e,s,a,i,n){const S=x(r("uv-icon"),o),X=_,C=w;return u(),l(C,{class:"uv-swipe-action-item",ref:"uv-swipe-action-item"},{default:h((()=>[c(C,{class:"uv-swipe-action-item__right"},{default:h((()=>[d(t.$slots,"button",{},(()=>[(u(!0),p(f,null,m(t.options,((e,s)=>(u(),l(C,{key:s,class:"uv-swipe-action-item__right__button",ref_for:!0,ref:`uv-swipe-action-item__right__button-${s}`,style:g([{alignItems:e.style&&e.style.borderRadius?"center":"stretch"}]),onClick:t=>n.buttonClickHandler(e,s)},{default:h((()=>[c(C,{class:"uv-swipe-action-item__right__button__wrapper",style:g([{backgroundColor:e.style&&e.style.backgroundColor?e.style.backgroundColor:"#C7C6CD",borderRadius:e.style&&e.style.borderRadius?e.style.borderRadius:"0",padding:e.style&&e.style.borderRadius?"0":"0 15px"},e.style])},{default:h((()=>[e.icon?(u(),l(S,{key:0,name:e.icon,color:e.style&&e.style.color?e.style.color:"#ffffff",size:e.iconSize?t.$uv.addUnit(e.iconSize):e.style&&e.style.fontSize?1.2*t.$uv.getPx(e.style.fontSize):17,customStyle:{marginRight:e.text?"2px":0}},null,8,["name","color","size","customStyle"])):v("",!0),e.text?(u(),l(X,{key:1,class:"uv-swipe-action-item__right__button__wrapper__text uv-line-1",style:g([{color:e.style&&e.style.color?e.style.color:"#ffffff",fontSize:e.style&&e.style.fontSize?e.style.fontSize:"16px",lineHeight:e.style&&e.style.fontSize?e.style.fontSize:"16px"}])},{default:h((()=>[y(b(e.text),1)])),_:2},1032,["style"])):v("",!0)])),_:2},1032,["style"])])),_:2},1032,["style","onClick"])))),128))]),!0)])),_:3}),c(C,{class:"uv-swipe-action-item__content",onTouchstart:t.wxs.touchstart,onTouchmove:t.wxs.touchmove,onTouchend:t.wxs.touchend,status:i.status,"change:status":t.wxs.statusChange,size:i.size,"change:size":t.wxs.sizeChange},{default:h((()=>[d(t.$slots,"default",{},void 0,!0)])),_:3},8,["onTouchstart","onTouchmove","onTouchend","status","change:status","size","change:size"])])),_:3},512)}],["__scopeId","data-v-e7781eb1"]]);const R=S({name:"uv-swipe-action",mixins:[i,n,{props:{autoClose:{type:Boolean,default:!0},...null==(a=null==(s=uni.$uv)?void 0:s.props)?void 0:a.swipeAction}}],data:()=>({}),provide(){return{swipeAction:this}},computed:{parentData(){return[this.autoClose]}},watch:{parentData(){this.children.length&&this.children.map((t=>{"function"==typeof t.updateParentData&&t.updateParentData()}))}},created(){this.children=[]},methods:{closeOther(t){this.autoClose&&this.children.map(((e,s)=>{t!==e&&e.closeHandler()}))}}},[["render",function(t,e,s,a,o,i){const n=w;return u(),l(n,{class:"uv-swipe-action"},{default:h((()=>[d(t.$slots,"default")])),_:3})}]]);export{P as _,R as a};