From acf414e4517434d8847e842930c697b168d94cde Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 21 Nov 2018 07:38:00 +0300
Subject: changed the way tab-switcher works to avoid removing/adding nodes
 since that seems to cause issues, instead hiding nodes with css.

---
 src/components/tab_switcher/tab_switcher.jsx | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

(limited to 'src/components/tab_switcher/tab_switcher.jsx')

diff --git a/src/components/tab_switcher/tab_switcher.jsx b/src/components/tab_switcher/tab_switcher.jsx
index ea582450..a044b740 100644
--- a/src/components/tab_switcher/tab_switcher.jsx
+++ b/src/components/tab_switcher/tab_switcher.jsx
@@ -1,7 +1,5 @@
 import Vue from 'vue'
 
-// FIXME: This doesn't like v-if directly inside the tab's contents, breaks vue really bad
-
 import './tab_switcher.scss'
 
 export default Vue.component('tab-switcher', {
@@ -27,11 +25,14 @@ export default Vue.component('tab-switcher', {
             }
             return (<button onClick={this.activateTab(index)} class={ classes.join(' ') }>{slot.data.attrs.label}</button>)
           });
-    const contents = (
-      <div>
-        {this.$slots.default.filter(slot => slot.data)[this.active]}
-      </div>
-    );
+    const contents = this.$slots.default.filter(_=>_.data).map(( slot, index ) => {
+      const active = index === this.active
+      return (
+        <div class={active ? 'active' : 'hidden'}>
+          {slot}
+        </div>
+      )
+    });
     return (
       <div class="tab-switcher">
         <div class="tabs">
@@ -40,7 +41,7 @@ export default Vue.component('tab-switcher', {
         <div class="contents">
           {contents}
         </div>
-      </div>
-    )
+        </div>
+      )
   }
 })
-- 
cgit v1.2.3-70-g09d2

