diff --git a/packages/tabs/src/tab-nav.vue b/packages/tabs/src/tab-nav.vue
index 19096f281..2d1ac30d1 100644
--- a/packages/tabs/src/tab-nav.vue
+++ b/packages/tabs/src/tab-nav.vue
@@ -35,6 +35,10 @@
data() {
return {
scrollable: false,
+ scrollState: {
+ prev: 0,
+ next: false
+ },
navOffset: 0,
isFocus: false,
focusable: true
@@ -121,9 +125,9 @@
if (containerSize < navSize) {
const currentOffset = this.navOffset;
- this.scrollable = this.scrollable || {};
- this.scrollable.prev = currentOffset;
- this.scrollable.next = currentOffset + containerSize < navSize;
+ this.scrollable = true;
+ this.scrollState.prev = currentOffset;
+ this.scrollState.next = currentOffset + containerSize < navSize;
if (navSize - currentOffset < containerSize) {
this.navOffset = navSize - containerSize;
}
@@ -203,6 +207,7 @@
onTabRemove,
navStyle,
scrollable,
+ scrollState,
scrollNext,
scrollPrev,
changeTab,
@@ -211,8 +216,8 @@
} = this;
const scrollBtn = scrollable
? [
- ,
-
+ ,
+
] : null;
const tabs = this._l(panes, (pane, index) => {
diff --git a/test/unit/specs/tabs.spec.js b/test/unit/specs/tabs.spec.js
index 75702fcee..da914bf72 100644
--- a/test/unit/specs/tabs.spec.js
+++ b/test/unit/specs/tabs.spec.js
@@ -499,6 +499,44 @@ describe('Tabs', () => {
});
}, 100);
});
+ it('nav btn disabled', done => {
+ vm = createVue({
+ template: `
+
+ A
+ B
+ A
+ B
+ A
+ B
+ D
+
+ `
+ }, true);
+
+ setTimeout(_ => {
+ const btnPrev = vm.$el.querySelector('.el-tabs__nav-prev');
+ btnPrev.click();
+ vm.$nextTick(_ => {
+ const tabNav = vm.$el.querySelector('.el-tabs__nav-wrap');
+ expect(tabNav.__vue__.scrollState.prev).to.be.equal(0);
+ expect(btnPrev.classList.contains('is-disabled')).to.be.true;
+ expect(tabNav.__vue__.scrollState.next).to.be.true;
+
+ const btnNext = vm.$el.querySelector('.el-tabs__nav-next');
+ const clickNext = () => {
+ if (tabNav.__vue__.scrollState.next) {
+ btnNext.click();
+ setTimeout(_ => { clickNext(); }, 500); // wait for transition end
+ } else {
+ expect(btnNext.classList.contains('is-disabled')).to.be.true;
+ done();
+ }
+ };
+ clickNext();
+ });
+ }, 100);
+ });
it('should work with lazy', done => {
vm = createVue({
template: `