| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- import { VantComponent } from '../common/component';
 
- import { touch } from '../mixins/touch';
 
- import { canIUseModel } from '../common/version';
 
- VantComponent({
 
-   mixins: [touch],
 
-   props: {
 
-     disabled: Boolean,
 
-     useButtonSlot: Boolean,
 
-     activeColor: String,
 
-     inactiveColor: String,
 
-     max: {
 
-       type: Number,
 
-       value: 100,
 
-     },
 
-     min: {
 
-       type: Number,
 
-       value: 0,
 
-     },
 
-     step: {
 
-       type: Number,
 
-       value: 1,
 
-     },
 
-     value: {
 
-       type: Number,
 
-       value: 0,
 
-       observer(val) {
 
-         if (val !== this.value) {
 
-           this.updateValue(val);
 
-         }
 
-       },
 
-     },
 
-     barHeight: {
 
-       type: null,
 
-       value: 2,
 
-     },
 
-   },
 
-   created() {
 
-     this.updateValue(this.data.value);
 
-   },
 
-   methods: {
 
-     onTouchStart(event) {
 
-       if (this.data.disabled) return;
 
-       this.touchStart(event);
 
-       this.startValue = this.format(this.value);
 
-       this.dragStatus = 'start';
 
-     },
 
-     onTouchMove(event) {
 
-       if (this.data.disabled) return;
 
-       if (this.dragStatus === 'start') {
 
-         this.$emit('drag-start');
 
-       }
 
-       this.touchMove(event);
 
-       this.dragStatus = 'draging';
 
-       this.getRect('.van-slider').then((rect) => {
 
-         const diff = (this.deltaX / rect.width) * 100;
 
-         this.newValue = this.startValue + diff;
 
-         this.updateValue(this.newValue, false, true);
 
-       });
 
-     },
 
-     onTouchEnd() {
 
-       if (this.data.disabled) return;
 
-       if (this.dragStatus === 'draging') {
 
-         this.updateValue(this.newValue, true);
 
-         this.$emit('drag-end');
 
-       }
 
-     },
 
-     onClick(event) {
 
-       if (this.data.disabled) return;
 
-       const { min } = this.data;
 
-       this.getRect('.van-slider').then((rect) => {
 
-         const value =
 
-           ((event.detail.x - rect.left) / rect.width) * this.getRange() + min;
 
-         this.updateValue(value, true);
 
-       });
 
-     },
 
-     updateValue(value, end, drag) {
 
-       value = this.format(value);
 
-       const { min } = this.data;
 
-       const width = `${((value - min) * 100) / this.getRange()}%`;
 
-       this.value = value;
 
-       this.setData({
 
-         barStyle: `
 
-           width: ${width};
 
-           ${drag ? 'transition: none;' : ''}
 
-         `,
 
-       });
 
-       if (drag) {
 
-         this.$emit('drag', { value });
 
-       }
 
-       if (end) {
 
-         this.$emit('change', value);
 
-       }
 
-       if ((drag || end) && canIUseModel()) {
 
-         this.setData({ value });
 
-       }
 
-     },
 
-     getRange() {
 
-       const { max, min } = this.data;
 
-       return max - min;
 
-     },
 
-     format(value) {
 
-       const { max, min, step } = this.data;
 
-       return Math.round(Math.max(min, Math.min(value, max)) / step) * step;
 
-     },
 
-   },
 
- });
 
 
  |