From 34a048e134bbd8aeb339e58e2767ab24f60e70c4 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 25 Dec 2018 11:52:15 +0800 Subject: [PATCH] [new feature] Slider: add button slot & drag event (#1148) --- example/pages/slider/index.js | 10 ++++++++++ example/pages/slider/index.wxml | 25 +++++++++++++++++++++++-- example/pages/slider/index.wxss | 12 +++++++++++- packages/slider/README.md | 29 +++++++++++++++++++++++++++++ packages/slider/index.less | 25 ++++++++++++++----------- packages/slider/index.ts | 2 ++ packages/slider/index.wxml | 18 +++++++++++++++--- 7 files changed, 104 insertions(+), 17 deletions(-) diff --git a/example/pages/slider/index.js b/example/pages/slider/index.js index e49cdb3d..6dcfce23 100644 --- a/example/pages/slider/index.js +++ b/example/pages/slider/index.js @@ -1,10 +1,20 @@ import Page from '../../common/page'; Page({ + data: { + currentValue: 30 + }, + onChange(event) { wx.showToast({ icon: 'none', title: `当前值:${event.detail}` }); + }, + + onDrag(event) { + this.setData({ + currentValue: event.detail.value + }); } }); diff --git a/example/pages/slider/index.wxml b/example/pages/slider/index.wxml index af35de55..73547424 100644 --- a/example/pages/slider/index.wxml +++ b/example/pages/slider/index.wxml @@ -1,5 +1,9 @@ - + @@ -13,7 +17,11 @@ - + @@ -25,3 +33,16 @@ bind:change="onChange" /> + + + + + {{ currentValue }}/100 + + + diff --git a/example/pages/slider/index.wxss b/example/pages/slider/index.wxss index fe4bbc38..e7c58e47 100644 --- a/example/pages/slider/index.wxss +++ b/example/pages/slider/index.wxss @@ -1,3 +1,13 @@ .slider { margin: 0 15px 30px; -} \ No newline at end of file +} + +.custom-button { + width: 44px; + color: #fff; + font-size: 10px; + line-height: 20px; + text-align: center; + border-radius: 100px; + background-color: #f44; +} diff --git a/packages/slider/README.md b/packages/slider/README.md index 6637d211..7491123a 100644 --- a/packages/slider/README.md +++ b/packages/slider/README.md @@ -42,6 +42,34 @@ Page({ ``` +#### 自定义按钮 + +```html + + + {{ currentValue }}/100 + + +``` + +```js +Page({ + data: { + currentValue: 30 + }, + + onDrag(event) { + this.setData({ + currentValue: event.detail.value + }); + } +}); +``` + ### API | 参数 | 说明 | 类型 | 默认值 | @@ -57,6 +85,7 @@ Page({ | 事件名 | 说明 | 参数 | |-----------|-----------|-----------| +| bind:drag | 拖动进度条时触发 | event.detail.value: 当前进度 | | bind:change | 进度值改变后触发 | event.detail: 当前进度 | ### 外部样式类 diff --git a/packages/slider/index.less b/packages/slider/index.less index b9e0a015..f7b1e104 100644 --- a/packages/slider/index.less +++ b/packages/slider/index.less @@ -12,24 +12,27 @@ } &__button { - position: absolute; - top: 50%; - right: 0; width: 20px; height: 20px; border-radius: 50%; background-color: @white; - transform: translate3d(50%, -50%, 0); box-shadow: 0 1px 2px rgba(0, 0, 0, .5); - /* use pseudo element to expand touch area */ - &::after { - content: ''; + &-wrapper { position: absolute; - width: 200%; - height: 200%; - top: -50%; - left: -50%; + top: 50%; + right: 0; + transform: translate3d(50%, -50%, 0); + + /* use pseudo element to expand touch area */ + &::after { + content: ''; + position: absolute; + width: 200%; + height: 200%; + top: -50%; + left: -50%; + } } } diff --git a/packages/slider/index.ts b/packages/slider/index.ts index 6831293f..d09cd1ea 100644 --- a/packages/slider/index.ts +++ b/packages/slider/index.ts @@ -6,6 +6,7 @@ VantComponent({ props: { disabled: Boolean, + useButtonSlot: Boolean, max: { type: Number, value: 100 @@ -78,6 +79,7 @@ VantComponent({ barStyle: `width: ${value}%; height: ${this.data.barHeight};` }); + this.$emit('drag', { value }); if (end) { this.$emit('change', value); } diff --git a/packages/slider/index.wxml b/packages/slider/index.wxml index 24b073bd..b7497989 100644 --- a/packages/slider/index.wxml +++ b/packages/slider/index.wxml @@ -1,11 +1,23 @@ - + + > + + +