index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <uni-shadow-root class="vant-slider-index"><view :class="'custom-class '+(utils.bem('slider', { disabled }))" :style="inactiveColor ? 'background:' + inactiveColor : ''" @click="onClick">
  3. <view class="van-slider__bar" :style="(barStyle)+'; '+(activeColor ? 'background:' + activeColor : '')">
  4. <view class="van-slider__button-wrapper" @touchstart="onTouchStart" @touchmove.stop.prevent="onTouchMove" @touchend="onTouchEnd" @touchcancel="onTouchEnd">
  5. <slot v-if="useButtonSlot" name="button"></slot>
  6. <view v-else class="van-slider__button"></view>
  7. </view>
  8. </view>
  9. </view></uni-shadow-root>
  10. </template>
  11. <wxs src="../wxs/utils.wxs" module="utils"></wxs>
  12. <script>
  13. global['__wxRoute'] = 'vant/slider/index'
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. var component_1 = require('./../common/component.js');
  17. var touch_1 = require('./../mixins/touch.js');
  18. component_1.VantComponent({
  19. mixins: [touch_1.touch],
  20. props: {
  21. disabled: Boolean,
  22. useButtonSlot: Boolean,
  23. activeColor: String,
  24. inactiveColor: String,
  25. max: {
  26. type: Number,
  27. value: 100
  28. },
  29. min: {
  30. type: Number,
  31. value: 0
  32. },
  33. step: {
  34. type: Number,
  35. value: 1
  36. },
  37. value: {
  38. type: Number,
  39. value: 0
  40. },
  41. barHeight: {
  42. type: String,
  43. value: '2px'
  44. }
  45. },
  46. watch: {
  47. value: function value(_value) {
  48. this.updateValue(_value, false);
  49. }
  50. },
  51. created: function created() {
  52. this.updateValue(this.data.value);
  53. },
  54. methods: {
  55. onTouchStart: function onTouchStart(event) {
  56. if (this.data.disabled) return;
  57. this.touchStart(event);
  58. this.startValue = this.format(this.data.value);
  59. },
  60. onTouchMove: function onTouchMove(event) {
  61. var _this = this;
  62. if (this.data.disabled) return;
  63. this.touchMove(event);
  64. this.getRect('.van-slider').then(function (rect) {
  65. var diff = _this.deltaX / rect.width * 100;
  66. _this.newValue = _this.startValue + diff;
  67. _this.updateValue(_this.newValue, false, true);
  68. });
  69. },
  70. onTouchEnd: function onTouchEnd() {
  71. if (this.data.disabled) return;
  72. this.updateValue(this.newValue, true);
  73. },
  74. onClick: function onClick(event) {
  75. var _this = this;
  76. if (this.data.disabled) return;
  77. this.getRect('.van-slider').then(function (rect) {
  78. var value = (event.detail.x - rect.left) / rect.width * 100;
  79. _this.updateValue(value, true);
  80. });
  81. },
  82. updateValue: function updateValue(value, end, drag) {
  83. value = this.format(value);
  84. this.set({
  85. value: value,
  86. barStyle: "width: " + value + "%; height: " + this.data.barHeight + ";"
  87. });
  88. if (drag) {
  89. this.$emit('drag', { value: value });
  90. }
  91. if (end) {
  92. this.$emit('change', value);
  93. }
  94. },
  95. format: function format(value) {
  96. var _a = this.data,
  97. max = _a.max,
  98. min = _a.min,
  99. step = _a.step;
  100. return Math.round(Math.max(min, Math.min(value, max)) / step) * step;
  101. }
  102. }
  103. });
  104. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwidG91Y2hfMSIsIm1peGlucyIsInByb3BzIiwiZGlzYWJsZWQiLCJ1c2VCdXR0b25TbG90IiwiYWN0aXZlQ29sb3IiLCJpbmFjdGl2ZUNvbG9yIiwibWF4IiwidHlwZSIsIm1pbiIsInN0ZXAiLCJiYXJIZWlnaHQiLCJ3YXRjaCIsImNyZWF0ZWQiLCJtZXRob2RzIiwib25Ub3VjaFN0YXJ0Iiwib25Ub3VjaE1vdmUiLCJfdGhpcyIsImRpZmYiLCJyZWN0Iiwib25Ub3VjaEVuZCIsIm9uQ2xpY2siLCJldmVudCIsInVwZGF0ZVZhbHVlIiwiYmFyU3R5bGUiLCJmb3JtYXQiLCJfYSIsIk1hdGgiXSwibWFwcGluZ3MiOiI7O0FBQ0FBLE9BQUFBLGNBQUFBLENBQUFBLE9BQUFBLEVBQUFBLFlBQUFBLEVBQTZDLEVBQUVDLE9BQS9DRCxJQUE2QyxFQUE3Q0E7QUFDQSxJQUFJRSxjQUFjQyxRQUFsQiwwQkFBa0JBLENBQWxCO0FBQ0EsSUFBSUMsVUFBVUQsUUFBZCxzQkFBY0EsQ0FBZDtBQUNBRCxZQUFBQSxhQUFBQSxDQUEwQjtBQUN0QkcsWUFBUSxDQUFDRCxRQURhLEtBQ2QsQ0FEYztBQUV0QkUsV0FBTztBQUNIQyxrQkFERyxPQUFBO0FBRUhDLHVCQUZHLE9BQUE7QUFHSEMscUJBSEcsTUFBQTtBQUlIQyx1QkFKRyxNQUFBO0FBS0hDLGFBQUs7QUFDREMsa0JBREMsTUFBQTtBQUVEWCxtQkFBTztBQUZOLFNBTEY7QUFTSFksYUFBSztBQUNERCxrQkFEQyxNQUFBO0FBRURYLG1CQUFPO0FBRk4sU0FURjtBQWFIYSxjQUFNO0FBQ0ZGLGtCQURFLE1BQUE7QUFFRlgsbUJBQU87QUFGTCxTQWJIO0FBaUJIQSxlQUFPO0FBQ0hXLGtCQURHLE1BQUE7QUFFSFgsbUJBQU87QUFGSixTQWpCSjtBQXFCSGMsbUJBQVc7QUFDUEgsa0JBRE8sTUFBQTtBQUVQWCxt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LEtBQUFBLEdBQUFBLENBQUFBLEtBQUFBLEVBQWRBLEdBQWNBLENBQWRBLElBQVhBLElBQUFBLElBQVAsSUFBQTtBQUNIO0FBaERJO0FBcENhLENBQTFCN0IiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb21wb25lbnRfMSA9IHJlcXVpcmUoXCIuLi9jb21tb24vY29tcG9uZW50XCIpO1xudmFyIHRvdWNoXzEgPSByZXF1aXJlKFwiLi4vbWl4aW5zL3RvdWNoXCIpO1xuY29tcG9uZW50XzEuVmFudENvbXBvbmVudCh7XG4gICAgbWl4aW5zOiBbdG91Y2hfMS50b3VjaF0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGlzYWJsZWQ6IEJvb2xlYW4sXG4gICAgICAgIHVzZUJ1dHRvblNsb3Q6IEJvb2xlYW4sXG4gICAgICAgIGFjdGl2ZUNvbG9yOiBTdHJpbmcsXG4gICAgICAgIGluYWN0aXZlQ29sb3I6IFN0cmluZyxcbiAgICAgICAgbWF4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICB2YWx1ZTogMTAwXG4gICAgICAgIH0sXG4gICAgICAgIG1pbjoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIGJhckhlaWdodDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgdmFsdWU6ICcycHgnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHdhdGNoOiB7XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZGF0YS52YWx1ZSk7XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIG9uVG91Y2hTdGFydDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMudG91Y2hTdGFydChldmVudCk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLmZvcm1hdCh0aGlzLmRhdGEudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBvblRvdWNoTW92ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aGlzLnRvdWNoTW92ZShldmVudCk7XG4gICAgICAgICAgICB0aGlzLmdldFJlY3QoJy52YW4tc2xpZGVyJykudGhlbihmdW5jdGlvbiAocmVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBkaWZmID0gX3RoaXMuZGVsdGFYIC8gcmVjdC53aWR0aCAqIDEwMDtcbiAgICAgICAgICAgICAgICBfdGhpcy5uZXdWYWx1ZSA9IF90aGlzLnN0YXJ0VmFsdWUgKyBkaWZmO1xuICAgICAgICAgICAgICAgIF90aGlzLnVwZGF0ZVZhbHVlKF90aGlzLm5ld1ZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Ub3VjaEVuZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMubmV3VmFsdWUsIHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjdCgnLnZhbi1zbGlkZXInKS50aGVuKGZ1bmN0aW9uIChyZWN0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gKGV2ZW50LmRldGFpbC54IC0gcmVjdC5sZWZ0KSAvIHJlY3Qud2lkdGggKiAxMDA7XG4gICAgICAgICAgICAgICAgX3RoaXMudXBkYXRlVmFsdWUodmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAodmFsdWUsIGVuZCwgZHJhZykge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmZvcm1hdCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIGJhclN0eWxlOiBcIndpZHRoOiBcIiArIHZhbHVlICsgXCIlOyBoZWlnaHQ6IFwiICsgdGhpcy5kYXRhLmJhckhlaWdodCArIFwiO1wiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChkcmFnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZHJhZycsIHsgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMuZGF0YSwgbWF4ID0gX2EubWF4LCBtaW4gPSBfYS5taW4sIHN0ZXAgPSBfYS5zdGVwO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5tYXgobWluLCBNYXRoLm1pbih2YWx1ZSwgbWF4KSkgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICAgIH1cbiAgICB9XG59KTtcbiJdLCJmaWxlIjoiaW5kZXguanMifQ==
  105. export default global['__wxComponents']['vant/slider/index']
  106. </script>
  107. <style platform="mp-weixin">
  108. @import '../common/index.css';.van-slider{position:relative;border-radius:999px;background-color:#e5e5e5}.van-slider__bar{position:relative;border-radius:inherit;background-color:#1989fa}.van-slider__button{width:20px;height:20px;border-radius:50%;background-color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.5)}.van-slider__button-wrapper{position:absolute;top:50%;right:0;-webkit-transform:translate3d(50%,-50%,0);transform:translate3d(50%,-50%,0)}.van-slider__button-wrapper:after{content:"";position:absolute;width:200%;height:200%;top:-50%;left:-50%}.van-slider--disabled{opacity:.3}
  109. </style>