cl-slider.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <view class="cl-slider">
  3. <slider
  4. :value="value2"
  5. :min="min"
  6. :max="max"
  7. :step="step"
  8. :active-color="activeColor"
  9. :background-color="backgroundColor"
  10. :block-size="blockSize"
  11. :show-value="showValue"
  12. :disabled="disabled"
  13. @change="onChange"
  14. @changing="onChanging"
  15. ></slider>
  16. </view>
  17. </template>
  18. <script>
  19. /**
  20. * progress 进度条
  21. * @description 支持多种颜色显示
  22. * @tutorial https://docs.cool-js.com/uni/components/view/slider.html
  23. * @property {Number} value 绑定值
  24. * @property {Boolean} disabled 是否禁用
  25. * @property {Number} min 最小值
  26. * @property {Number} max 最大值
  27. * @property {Number} step 步长,默认1
  28. * @property {String} activeColor 滑块左侧已选择部分的线条颜色
  29. * @property {String} backgroundColor 滑块右侧背景条的颜色,默认#e9e9e9
  30. * @property {Number} blockSize 滑块的大小,默认20
  31. * @property {Boolean} showValue 是否显示当前 value
  32. * @event {Function} change 绑定值改变时触发
  33. * @event {Function} changing 拖动过程中触发
  34. * @example <cl-slider v-model="val" show-value></cl-slider>
  35. */
  36. export default {
  37. name: "cl-slider",
  38. props: {
  39. // 绑定值
  40. value: Number,
  41. // 是否禁用
  42. disabled: {
  43. type: Boolean,
  44. default: false
  45. },
  46. // 最小值
  47. min: {
  48. type: Number,
  49. default: 0
  50. },
  51. // 最大值
  52. max: {
  53. type: Number,
  54. default: 100
  55. },
  56. // 步长
  57. step: {
  58. type: Number,
  59. default: 1
  60. },
  61. // 滑块左侧已选择部分的线条颜色
  62. activeColor: String,
  63. // 滑块右侧背景条的颜色
  64. backgroundColor: {
  65. type: String,
  66. default: "#e9e9e9"
  67. },
  68. // 滑块的大小
  69. blockSize: {
  70. type: Number,
  71. default: 20
  72. },
  73. // 是否显示当前 value
  74. showValue: {
  75. type: Boolean,
  76. default: false
  77. }
  78. },
  79. data() {
  80. return {
  81. value2: 0
  82. };
  83. },
  84. watch: {
  85. value: {
  86. immediate: true,
  87. handler(val) {
  88. this.value2 = val;
  89. }
  90. }
  91. },
  92. methods: {
  93. onChange(e) {
  94. this.$emit("input", e.detail.value);
  95. this.$emit("change", e);
  96. },
  97. onChanging(e) {
  98. this.$emit("input", e.detail.value);
  99. this.$emit("changing", e);
  100. }
  101. }
  102. };
  103. </script>