Skip to content

Commit 49473ff

Browse files
Kingwljikkai
authored andcommitted
add support of tab penl lazy render(#11022) (#11167)
* add support of tab penl lazy render * add docs * fix test * Tabs: update tab-pane.d.ts * Docs: update Tabs docs
1 parent 1fe51c9 commit 49473ff

File tree

6 files changed

+39
-1
lines changed

6 files changed

+39
-1
lines changed

examples/docs/en-US/tabs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,3 +393,4 @@ Only card type Tabs support addable & closeable.
393393
| disabled | whether Tab is disabled | boolean || false |
394394
| name | identifier corresponding to the activeName of Tabs, representing the alias of the tab-pane | string || ordinal number of the tab-pane in the sequence, e.g. the first tab-pane is '1' |
395395
| closable | whether Tab is closable | boolean || false |
396+
| lazy | whether Tab is lazy to render | boolean || false |

examples/docs/es/tabs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,3 +393,4 @@ Solo las pestañas de tipo tarjeta soportan adición y cierre.
393393
| disabled | si la Tabulación está deshabilitada | boolean || false |
394394
| name | identificador correspondiente al activeName de la Tabulación, representando el alias del tab-pane | string || número ordinal del tab-pane en la secuencia, p.ej el primer tab-pane de pestañas es '1' |
395395
| closable | si el Tab es cerrable | boolean || false |
396+
| lazy | whether Tab is lazy to render | boolean || false |

examples/docs/zh-CN/tabs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,3 +391,4 @@
391391
| disabled | 是否禁用 | boolean || false |
392392
| name | 与选项卡 activeName 对应的标识符,表示选项卡别名 | string || 该选项卡在选项卡列表中的顺序值,如第一个选项卡则为'1' |
393393
| closable | 标签是否可关闭 | boolean || false |
394+
| lazy | 标签是否延迟渲染 | boolean || false |

packages/tabs/src/tab-pane.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<template>
22
<div
33
class="el-tab-pane"
4+
v-if="!lazy || active"
45
v-show="active"
56
role="tabpanel"
67
:aria-hidden="!active"
@@ -21,7 +22,8 @@
2122
labelContent: Function,
2223
name: String,
2324
closable: Boolean,
24-
disabled: Boolean
25+
disabled: Boolean,
26+
lazy: Boolean
2527
},
2628
2729
data() {

test/unit/specs/tabs.spec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,36 @@ describe('Tabs', () => {
471471
});
472472
}, 100);
473473
});
474+
it('should work with lazy', done => {
475+
vm = createVue({
476+
template: `
477+
<el-tabs ref="tabs">
478+
<el-tab-pane label="用户管理" name="A">A</el-tab-pane>
479+
<el-tab-pane label="配置管理" name="B">B</el-tab-pane>
480+
<el-tab-pane label="角色管理" name="C">C</el-tab-pane>
481+
<el-tab-pane label="定时任务补偿" lazy name="D">D</el-tab-pane>
482+
</el-tabs>
483+
`
484+
}, true);
485+
486+
expect(vm.$el.querySelector('.el-tabs__content').children.length).to.be.equal(3);
487+
expect(vm.$el.querySelector('.el-tabs__content > #pane-D')).to.be.equal(null);
488+
489+
setTimeout(_ => {
490+
vm.$el.querySelector('.el-tabs__nav > #tab-D').click();
491+
vm.$nextTick(() => {
492+
expect(vm.$el.querySelector('.el-tabs__content').children.length).to.be.equal(4);
493+
expect(vm.$el.querySelector('.el-tabs__content > #pane-D')).not.to.be.equal(null);
494+
495+
vm.$el.querySelector('.el-tabs__nav > #tab-A').click();
496+
vm.$nextTick(() => {
497+
expect(vm.$el.querySelector('.el-tabs__content').children.length).to.be.equal(3);
498+
expect(vm.$el.querySelector('.el-tabs__content > #pane-D')).to.be.equal(null);
499+
done();
500+
});
501+
});
502+
}, 100);
503+
});
474504
it('before leave', done => {
475505
vm = createVue({
476506
template: `

types/tab-pane.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,7 @@ export declare class ElTabPane extends ElementUIComponent {
1313

1414
/** Whether Tab is closable */
1515
closable: boolean
16+
17+
/** Whether Tab is lazy to render */
18+
lazy: boolean
1619
}

0 commit comments

Comments
 (0)