From e8c22fbfa37afc0cc7466309f8a2d059d7ddd6c3 Mon Sep 17 00:00:00 2001
From: taehoon
Date: Sat, 10 Aug 2019 14:48:05 -0400
Subject: [PATCH] refactor TabSwitcher
---
src/components/tab_switcher/tab_switcher.js | 22 +++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/src/components/tab_switcher/tab_switcher.js b/src/components/tab_switcher/tab_switcher.js
index f11d96e6..08d5d08f 100644
--- a/src/components/tab_switcher/tab_switcher.js
+++ b/src/components/tab_switcher/tab_switcher.js
@@ -10,6 +10,16 @@ export default Vue.component('tab-switcher', {
active: this.$slots.default.findIndex(_ => _.tag)
}
},
+ computed: {
+ activeIndex () {
+ // In case of controlled component
+ if (this.activeTab) {
+ return this.$slots.default.findIndex(slot => this.activeTab === slot.key)
+ } else {
+ return this.active
+ }
+ }
+ },
beforeUpdate () {
const currentSlot = this.$slots.default[this.active]
if (!currentSlot.tag) {
@@ -24,14 +34,6 @@ export default Vue.component('tab-switcher', {
}
this.active = index
}
- },
- isActiveTab (index) {
- // In case of controlled component
- if (this.activeTab) {
- return this.$slots.default.findIndex(slot => this.activeTab === slot.key) === index
- } else {
- return this.active === index
- }
}
},
render (h) {
@@ -41,7 +43,7 @@ export default Vue.component('tab-switcher', {
const classesTab = ['tab']
const classesWrapper = ['tab-wrapper']
- if (this.isActiveTab(index)) {
+ if (this.activeIndex === index) {
classesTab.push('active')
classesWrapper.push('active')
}
@@ -71,7 +73,7 @@ export default Vue.component('tab-switcher', {
const contents = this.$slots.default.map((slot, index) => {
if (!slot.tag) return
- const active = this.isActiveTab(index)
+ const active = this.activeIndex === index
if (this.renderOnlyFocused) {
return active
? {slot}