UNPKG

@tarojs/components

Version:
1 lines 2.95 kB
import{r as t,c as i,h as s,H as h,g as e}from"./p-9137dcab.js";const a=class{constructor(s){t(this,s),this.onChange=i(this,"change",7),this.onChanging=i(this,"changing",7),this.handleTouchStart=t=>{this.touching||this.disabled||(this.touching=!0,this.touchId=t.targetTouches[0].identifier,this.totalWidth=this.sliderInsRef.clientWidth||1,this.ogX=t.targetTouches[0].pageX,this.ogPercent=this.percent)},this.handleTouchMove=t=>{const{disabled:i,touching:s,touchId:h,totalWidth:e,max:a,min:o,ogX:n,ogPercent:l}=this;if(!s||i)return;if(t.targetTouches[0].identifier!==h)return;t.preventDefault();let r=(t.targetTouches[0].pageX-n)/e*100+l;r=this.handleValueUpdate(r,0,100),this.updateByStep(o+.01*r*(a-o)),this.onChanging.emit({detail:t.detail,value:this.value})},this.handleTouchEnd=t=>{const{disabled:i,touching:s}=this;s&&!i&&(this.percent!==this.ogPercent&&this.onChange.emit({detail:t.detail,value:this.value}),this.touching=!1,this.touchId=null,this.ogX=0,this.ogPercent=0)},this.handleValueUpdate=(t,i=this.min,s=this.max)=>(t=isNaN(t)?0:t,Math.max(i,Math.min(t,s))),this.min=0,this.max=100,this.step=1,this.disabled=!1,this.value=0,this.activeColor="#1aad19",this.backgroundColor="#e9e9e9",this.blockSize=28,this.blockColor="#ffffff",this.showValue=!1,this.name="",this.totalWidth=1,this.touching=!1,this.ogX=0,this.touchId=null,this.percent=0,this.ogPercent=void 0,this.isWillLoadCalled=!1}function(t){if(!this.isWillLoadCalled)return;const{max:i,min:s}=this;if(null!==t){const h=this.handleValueUpdate(t,s,i);this.updateByStep(h)}}componentDidLoad(){this.handler.addEventListener("touchstart",this.handleTouchStart),this.handler.addEventListener("touchmove",this.handleTouchMove),this.handler.addEventListener("touchend",this.handleTouchEnd)}componentWillLoad(){this.isWillLoadCalled=!0;const{value:t,max:i,min:s}=this,h=this.handleValueUpdate(t,s,i);this.updateByStep(h)}updateByStep(t){const{max:i,min:s,step:h}=this,e=Math.floor((i-s)/h);for(let i=0;i<=e;i++){const a=s+h*i,o=i===e?null:s+h*(i+1);if(t===a)break;if(!o&&t>a&&(t=a),o&&t>a&&t<o){t=t-a<h/2?a:o;break}}const a=(t-s)/(i-s)*100;this.value=t,this.percent=a}render(){const{showValue:t,backgroundColor:i,activeColor:e,blockColor:a,name:o,percent:n,value:l}=this;let r=this.blockSize;const c={backgroundColor:i},u=n>100?100:n,d={width:`${u}%`,backgroundColor:e};r<12&&(r=12),r>28&&(r=28);const f={left:`${u}%`,width:`${r}px`,height:`${r}px`,backgroundColor:a,marginTop:`-${Math.floor(r/2)}px`,marginLeft:`-${Math.floor(r/2)}px`};return s(h,{class:"weui-slider-box"},s("div",{class:"weui-slider"},s("div",{class:"weui-slider__inner",style:c,ref:t=>this.sliderInsRef=t},s("div",{style:d,class:"weui-slider__track"}),s("div",{class:"weui-slider__handler",ref:t=>{t&&(this.handler=t)},style:f}),s("input",{type:"hidden",name:o,value:l}))),t&&s("div",{class:"weui-slider-box__value"},l))}get el(){return e(this)}static get watchers(){return{value:["function"]}}};export{a as taro_slider_core}