You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
6.5 KiB
1 lines
6.5 KiB
"use strict";var _baseComponent=_interopRequireDefault(require("../helpers/baseComponent")),_classNames2=_interopRequireDefault(require("../helpers/classNames")),_eventsMixin=_interopRequireDefault(require("../helpers/eventsMixin")),_styleToCssString=_interopRequireDefault(require("../helpers/styleToCssString")),_gestures=require("../helpers/gestures");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var t=0,a=new Array(e.length);t<e.length;t++)a[t]=e[t];return a}}function _defineProperty(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var getPrecision=function(e){var t=e.toString();return 0<=t.indexOf(".")?t.length-t.indexOf(".")-1:0},checkValuePrecision=function(e,t,a){var r=Math.round((e-a)/t)*t+a,i=getPrecision(t);return parseFloat(r.toFixed(i))},getStyles=function(e){return Array.isArray(e)?e.map(function(e){return(0,_styleToCssString.default)(e)}):(0,_styleToCssString.default)(e)},defaultEvents={onChange:function(){},onAfterChange:function(){}};(0,_baseComponent.default)({behaviors:[(0,_eventsMixin.default)({defaultEvents:defaultEvents})],relations:{"../field/index":{type:"ancestor"}},properties:{prefixCls:{type:String,value:"wux-slider"},min:{type:Number,value:0,observer:"getMarks"},max:{type:Number,value:100,observer:"getMarks"},step:{type:Number,value:1,observer:"getMarks"},defaultValue:{type:Array,value:[0]},value:{type:Array,value:[0],observer:function(e){this.data.controlled&&this.updated(e)}},controlled:{type:Boolean,value:!1},disabled:{type:Boolean,value:!1},showMark:{type:Boolean,value:!1},showValue:{type:[Boolean,Object],value:!1},tipFormatter:{type:String,value:"{d}"},markStyle:{type:[String,Object,Array],value:"",observer:function(e){this.setData({extMarkStyle:getStyles(e)})}},handleStyle:{type:[String,Object,Array],value:"",observer:function(e){this.setData({extHandleStyle:getStyles(e)})}},trackStyle:{type:[String,Object,Array],value:"",observer:function(e){this.setData({extTrackStyle:getStyles(e)})}},railStyle:{type:[String,Object],value:"",observer:function(e){this.setData({extRailStyle:(0,_styleToCssString.default)(e)})}},wrapStyle:{type:[String,Object],value:"",observer:function(e){this.setData({extWrapStyle:(0,_styleToCssString.default)(e)})}}},data:{offsets:[],inputValue:[],extMarkStyle:"",extHandleStyle:"",extTrackStyle:"",extRailStyle:"",extWrapStyle:"",isTouched:!1,swiping:!1},computed:{classes:["prefixCls, disabled, tipFormatter",function(e,t,a){var r;return{wrap:(0,_classNames2.default)(e,(_defineProperty(r={},"".concat(e,"--disabled"),t),_defineProperty(r,"".concat(e,"--has-tip"),!!a),r)),min:"".concat(e,"__min"),railWrap:"".concat(e,"__rail-wrap"),rail:"".concat(e,"__rail"),mark:"".concat(e,"__mark"),track:"".concat(e,"__track"),handle:"".concat(e,"__handle"),max:"".concat(e,"__max")}}]},observers:{inputValue:function(e){var t=this,a=e.map(function(e){return t.calcOffset(t.checkValue(e))});this.setData({offsets:a})}},methods:{updated:function(e){this.hasFieldDecorator||this.data.inputValue!==e&&this.setData({inputValue:e})},onTouchStart:function(e){if(!(this.data.disabled||1<(0,_gestures.getPointsNumber)(e))){var t=e.currentTarget.dataset.index;this.isMoved=!1,this.startX=(0,_gestures.getTouchPoints)(e).x,this.moveX=0,this.startPos=this.data.offsets[t]||0,this.setData({last:t,isTouched:!0,isMoved:!1})}},onTouchMove:function(e){var u=this;if(!(this.data.disabled||1<(0,_gestures.getPointsNumber)(e))){var c=e.currentTarget.dataset.index,t=this.data.prefixCls;this.isMoved=!0,this.setData({isMoved:!0}),this.moveX=(0,_gestures.getTouchPoints)(e).x,this.getRect(".".concat(t,"__rail")).then(function(e){if(e&&u.isMoved){var t=(u.moveX-u.startX)/e.width*100,a=_toConsumableArray(u.data.offsets),r=u.checkValue(u.startPos+t,0,100),i=u.data.inputValue,n=u.calcValue(r),s=i[c-1],o=i[c+1];if(a[c]=u.calcOffset(n),s&&n<s&&(a[c]=u.calcOffset(s)),o&&o<n&&(a[c]=u.calcOffset(o)),i[c]!==n){var l=u.getValue(a);u.data.controlled||u.updated(l),u.triggerEvent("change",{offsets:a,value:l})}}})}},onTouchEnd:function(e){if(!(this.data.disabled||1<(0,_gestures.getPointsNumber)(e))&&this.isMoved){this.isMoved=!1,this.setData({isTouched:!1,isMoved:!1});var t=this.data.offsets,a=this.getValue(t);this.triggerEvent("afterChange",{offsets:t,value:a})}},getRect:function(e,a){var r=this;return new Promise(function(t){wx.createSelectorQuery().in(r)[a?"selectAll":"select"](e).boundingClientRect(function(e){a&&Array.isArray(e)&&e.length&&t(e),!a&&e&&t(e)}).exec()})},calcValue:function(e){var t=this.data,a=t.min,r=t.max;return this.trimValue(e*(r-a)/100+a)},calcOffset:function(e){var t=this.data,a=t.min;return 100*((e-a)/(t.max-a))},checkValue:function(e,t,a){var r=1<arguments.length&&void 0!==t?t:this.data.min,i=2<arguments.length&&void 0!==a?a:this.data.max;return e<=r?r:i<=e?i:e},trimValue:function(e){return checkValuePrecision(this.checkValue(e),this.data.step,this.data.min)},getValue:function(e){var t=this;return(0<arguments.length&&void 0!==e?e:this.data.offsets).map(function(e){return t.calcValue(e)})},getMarks:function(){if(this.data.showMark){for(var e=this.data,t=e.min,a=e.max,r=e.step,i=(a-t)/r,n=[],s=100*r/(a-t),o=1;o<i;o++)n.push(o*s);this.setData({marks:n})}},noop:function(){},getValueByPosition:function(e){var t=this.data,a=t.min,r=t.max,i=e<a?a:r<e?r:e,n=100/((r-a)/t.step);return Math.round(i/n)*n*(r-a)*.01+a},onRailClick:function(f){var d=this;if(!(this.data.disabled||1<(0,_gestures.getPointsNumber)(f))){var e=this.data,t=e.prefixCls,h=e.min,v=e.max,p=e.inputValue;this.getRect(".".concat(t,"__rail-wrap")).then(function(e){var t=((0,_gestures.getTouchPoints)(f).x-e.left)/Math.ceil(e.width)*(v-h)+h,a=d.getValueByPosition(t),r=p.length-1,i=0<r,n=_toConsumableArray(d.data.offsets),s=_toConsumableArray(p),o=0;if(i){for(var l=0,u=null,c=r;0<=c;c--)if(p[c]<=a){l=c;break}l===r?l=(u=l)-1:u=l+1,Math.abs(a-p[l])>Math.abs(a-p[u])?s[o=u]=a:s[o=l]=a}else s=[a];n[o]=d.calcOffset(a),p[o]!==a&&(d.data.controlled||d.updated(s),d.triggerEvent("change",{offsets:n,value:s}),d.triggerEvent("afterChange",{offsets:n,value:s}))})}}},attached:function(){var e=this.data,t=e.defaultValue,a=e.value,r=e.controlled?a:t;this.getMarks(),this.updated(r)}});
|