From 5cdf3b1d793751a9e4d8529558c4cbd95955e7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=95=8F?= Date: Thu, 15 Mar 2018 10:17:51 +0800 Subject: [PATCH] [new feature] Tabs: support switch tabs with swipe gestrue in the content (#694) --- docs/demos/views/tab.vue | 14 ++++- docs/markdown/en-US/tab.md | 14 +++++ docs/markdown/zh-CN/tab.md | 13 +++++ packages/stepper/index.vue | 1 + packages/tabs/index.vue | 58 +++++++++++++++++++-- packages/vant-css/src/vant-icon-743c0e.ttf | Bin 0 -> 25804 bytes test/components/tabs.vue | 12 ++++- test/specs/tabs.spec.js | 33 +++++++++++- 8 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 packages/vant-css/src/vant-icon-743c0e.ttf diff --git a/docs/demos/views/tab.vue b/docs/demos/views/tab.vue index f44242dde..743e892bc 100644 --- a/docs/demos/views/tab.vue +++ b/docs/demos/views/tab.vue @@ -58,6 +58,14 @@ + + + + + {{ $t('content') }} {{ index }} + + + @@ -71,7 +79,8 @@ export default { title4: '样式风格', title5: '点击事件', title6: '粘性布局', - title7: '自定义标签' + title7: '自定义标签', + title8: '滑动切换' }, 'en-US': { tab: 'Tab ', @@ -81,7 +90,8 @@ export default { title4: 'Card Style', title5: 'Click Event', title6: 'Sticky', - title7: 'Custom Tab' + title7: 'Custom Tab', + title8: 'Swipeable' } }, diff --git a/docs/markdown/en-US/tab.md b/docs/markdown/en-US/tab.md index f7d2a4e21..8cdb54a83 100644 --- a/docs/markdown/en-US/tab.md +++ b/docs/markdown/en-US/tab.md @@ -124,6 +124,18 @@ Use title slot to custom tab title ``` +#### Swipeable + +In swipeable mode, you can switch tabs with swipe gestrue in the content + +```html + + + content {{ index }} + + +``` + ### Tabs API | Attribute | Description | Type | Default | Accepted Values | @@ -132,6 +144,8 @@ Use title slot to custom tab title | active | Index of active tab | `String` `Number` | `0` | - | | duration | Toggle tab's animation time | `Number` | `0.2` | - | - | | swipe-threshold | Set swipe tabs threshold | `Number` | `4` | - | - | +| sticky | Whether to use sticky mode | `Boolean` | `false` | - | +| swipeable | Whether to switch tabs with swipe gestrue in the content | `Boolean` | `false` | - | ### Tab API diff --git a/docs/markdown/zh-CN/tab.md b/docs/markdown/zh-CN/tab.md index 3ac38def3..c234922cc 100644 --- a/docs/markdown/zh-CN/tab.md +++ b/docs/markdown/zh-CN/tab.md @@ -124,6 +124,18 @@ export default { ``` +#### 滑动切换 + +通过`swipeable`属性可以开启滑动切换tab + +```html + + + 内容 {{ index }} + + +``` + ### Tabs API | 参数 | 说明 | 类型 | 默认值 | 可选 | @@ -133,6 +145,7 @@ export default { | duration | 切换 tab 的动画时间 | `Number` | `0.2` | - | | swipe-threshold | 滚动阀值,设置 Tab 超过多少个可滚动 | `Number` | `4` | - | | sticky | 是否使用粘性定位布局 | `Boolean` | `false` | - | +| swipeable | 是否可以滑动内容切换 | `Boolean` | `false` | - | ### Tab API diff --git a/packages/stepper/index.vue b/packages/stepper/index.vue index 7b925c0e3..4ab313c3c 100644 --- a/packages/stepper/index.vue +++ b/packages/stepper/index.vue @@ -103,6 +103,7 @@ export default create({ onInput(event) { const { value } = event.target; this.currentValue = value ? this.correctValue(+value) : value; + event.target.value = this.currentValue; this.emitInput(); }, diff --git a/packages/tabs/index.vue b/packages/tabs/index.vue index e55607139..f5bd1c9aa 100644 --- a/packages/tabs/index.vue +++ b/packages/tabs/index.vue @@ -26,7 +26,7 @@ -
+
@@ -63,7 +63,8 @@ export default create({ swipeThreshold: { type: Number, default: 4 - } + }, + swipeable: Boolean }, data() { @@ -71,7 +72,11 @@ export default create({ tabs: [], position: 'content-top', curActive: 0, - navBarStyle: {} + navBarStyle: {}, + pos: { + x: 0, + y: 0 + } }; }, @@ -115,6 +120,9 @@ export default create({ if (this.sticky) { this.scrollHandler(true); } + if (this.swipeable) { + this.swipeableHandler(true); + } this.scrollIntoView(); }); }, @@ -124,6 +132,10 @@ export default create({ if (this.sticky) { this.scrollHandler(false); } + /* istanbul ignore next */ + if (this.swipeable) { + this.swipeableHandler(false); + } }, methods: { @@ -136,6 +148,46 @@ export default create({ } }, + // whether to bind content swipe listener + swipeableHandler(init) { + const swipeableEl = this.$refs.content; + + this.touchMoveHandler = scrollUtils.debounce(this.watchTouchMove.bind(this), 500); + + (init ? on : off)(swipeableEl, 'touchstart', this.recordTouchStartPosition, true); + (init ? on : off)(swipeableEl, 'touchmove', this.touchMoveHandler, true); + }, + + // record swipe touch start position + recordTouchStartPosition(e) { + this.pos = { + x: e.touches[0].clientX, + y: e.touches[0].clientY + }; + }, + + // watch swipe touch move + watchTouchMove(e) { + const { pos } = this; + const dx = e.touches[0].clientX - pos.x; + const dy = e.touches[0].clientY - pos.y; + const isForward = dx > 0; + const isHorizontal = Math.abs(dy) < Math.abs(dx); + const minSwipeDistance = 50; + + /* istanbul ignore else */ + if (isHorizontal && Math.abs(dx) >= minSwipeDistance) { + const active = +this.curActive; + + /* istanbul ignore else */ + if (isForward && active !== 0) { + this.curActive = active - 1; + } else if (!isForward && active !== this.tabs.length - 1) { + this.curActive = active + 1; + } + } + }, + // adjust tab position onScroll() { const scrollTop = scrollUtils.getScrollTop(this.scrollEl); diff --git a/packages/vant-css/src/vant-icon-743c0e.ttf b/packages/vant-css/src/vant-icon-743c0e.ttf new file mode 100644 index 0000000000000000000000000000000000000000..efcd83914614dd107aaa2933a3286c6055220129 GIT binary patch literal 25804 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 literal 0 HcmV?d00001 diff --git a/test/components/tabs.vue b/test/components/tabs.vue index bb0773a75..71486b498 100644 --- a/test/components/tabs.vue +++ b/test/components/tabs.vue @@ -1,5 +1,12 @@