Skip to content

Commit

Permalink
feat(Tabs): add rendered prop (youzan#5315)
Browse files Browse the repository at this point in the history
  • Loading branch information
chenjiahan authored Dec 19, 2019
1 parent 329a5cd commit 80834d7
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Node CI
name: CI

on: [push, pull_request]

Expand Down
13 changes: 7 additions & 6 deletions src/tab/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,13 @@ In scrollspy mode, the list of content will be tiled

### Tabs Events

| Event | Description | Arguments |
|------|------|------|
| click | Triggered when click tab | name:name of current tab,title: tab title |
| change | Triggered when active tab changed | name:name of current tab,title: tab title |
| disabled | Triggered when click disabled tab | name:name of current tab, title: tab title |
| scroll | Triggered when tab scroll in sticky mode | object: { scrollTop, isFixed } |
| Event | Description | Arguments | Version |
|------|------|------|------|
| click | Triggered when click tab | name,title | - |
| change | Triggered when active tab changed | name,title | - |
| disabled | Triggered when click disabled tab | name,title | - |
| rendered | Triggered when content first rendered in lazy-render mode | name,title | 2.3.0 |
| scroll | Triggered when tab scroll in sticky mode | object: { scrollTop, isFixed } | - |

### Tabs Methods

Expand Down
15 changes: 8 additions & 7 deletions src/tab/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ export default {
| ellipsis | 是否省略过长的标题文字 | *boolean* | `true` | - |
| sticky | 是否使用粘性定位布局 | *boolean* | `false` | - |
| swipeable | 是否开启手势滑动切换 | *boolean* | `false` | - |
| lazy-render | 是否开启标签页内容延迟渲染 | *boolean* | `true` | - |
| lazy-render | 是否开启延迟渲染(首次切换到标签时才触发内容渲染) | *boolean* | `true` | - |
| scrollspy | 是否开启滚动导航 | *boolean* | `false` | 2.3.0 |

### Tab Props
Expand All @@ -227,12 +227,13 @@ export default {

### Tabs Events

| 事件名 | 说明 | 回调参数 |
|------|------|------|
| click | 点击标签时触发 | name:标签标识符,title:标题 |
| change | 当前激活的标签改变时触发 | name:标签标识符,title:标题 |
| disabled | 点击被禁用的标签时触发 | name:标签标识符,title:标题 |
| scroll | 滚动时触发,仅在 sticky 模式下生效 | { scrollTop: 距离顶部位置, isFixed: 是否吸顶 } |
| 事件名 | 说明 | 回调参数 | 版本 |
|------|------|------|------|
| click | 点击标签时触发 | name:标识符,title:标题 | - |
| change | 当前激活的标签改变时触发 | name:标识符,title:标题 | - |
| disabled | 点击被禁用的标签时触发 | name:标识符,title:标题 | - |
| rendered | 标签内容首次渲染时触发(仅在开启延迟渲染后触发) | name:标识符,title:标题 | 2.3.0 |
| scroll | 滚动时触发,仅在 sticky 模式下生效 | { scrollTop: 距离顶部位置, isFixed: 是否吸顶 } | - |

### Tabs 方法

Expand Down
2 changes: 1 addition & 1 deletion src/tab/demo/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ export default {
@import '../../style/var';
.demo-tab {
margin-bottom: 300px;
margin-bottom: 80vh;
.van-tab .van-icon {
margin-right: 5px;
Expand Down
6 changes: 6 additions & 0 deletions src/tab/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ export default createComponent({

title() {
this.parent.setLine();
},

inited(val) {
if (this.parent.lazyRender && val) {
this.parent.$emit('rendered', this.computedName, this.title);
}
}
},

Expand Down
46 changes: 46 additions & 0 deletions src/tab/test/index.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -293,3 +293,49 @@ test('scrollspy', async () => {
expect(wrapper).toMatchSnapshot();
expect(onChange).toHaveBeenCalledWith('c', 'title3');
});

test('rendered event', () => {
const onRendered = jest.fn();

const wrapper = mount({
template: `
<van-tabs v-model="active" @rendered="onRendered">
<van-tab name="a" title="title1">Text</van-tab>
<van-tab name="b" title="title2">Title2</van-tab>
</van-tabs>
`,
data() {
return {
active: 'a'
};
},
methods: {
onRendered
}
});

expect(onRendered).toHaveBeenCalledWith('a', 'title1');

const tabs = wrapper.findAll('.van-tab');
tabs.at(1).trigger('click');
tabs.at(0).trigger('click');
expect(onRendered).toHaveBeenCalledTimes(2);
});

test('should not trigger rendered event when disable lazy-render', () => {
const onRendered = jest.fn();

mount({
template: `
<van-tabs :lazy-render="false" @rendered="onRendered">
<van-tab>Text</van-tab>
<van-tab>Title2</van-tab>
</van-tabs>
`,
methods: {
onRendered
}
});

expect(onRendered).toHaveBeenCalledTimes(0);
});

0 comments on commit 80834d7

Please sign in to comment.