Selaa lähdekoodia

fix[Sidebar]: fixed sidebar bug when set hidden:true

Pan 6 vuotta sitten
vanhempi
commit
4bc17952ed
1 muutettua tiedostoa jossa 17 lisäystä ja 6 poistoa
  1. 17 6
      src/views/layout/components/Sidebar/SidebarItem.vue

+ 17 - 6
src/views/layout/components/Sidebar/SidebarItem.vue

@@ -1,10 +1,10 @@
1 1
 <template>
2 2
   <div v-if="!item.hidden&&item.children" class="menu-wrapper">
3 3
 
4
-      <router-link v-if="hasOneShowingChildren(item.children) && !item.children[0].children&&!item.alwaysShow" :to="resolvePath(item.children[0].path)">
5
-        <el-menu-item :index="resolvePath(item.children[0].path)" :class="{'submenu-title-noDropdown':!isNest}">
6
-          <svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon>
7
-          <span v-if="item.children[0].meta&&item.children[0].meta.title" slot="title">{{item.children[0].meta.title}}</span>
4
+      <router-link v-if="hasOneShowingChild(item.children) && !onlyOneChild.children&&!item.alwaysShow" :to="resolvePath(onlyOneChild.path)">
5
+        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
6
+          <svg-icon v-if="onlyOneChild.meta&&onlyOneChild.meta.icon" :icon-class="onlyOneChild.meta.icon"></svg-icon>
7
+          <span v-if="onlyOneChild.meta&&onlyOneChild.meta.title" slot="title">{{onlyOneChild.meta.title}}</span>
8 8
         </el-menu-item>
9 9
       </router-link>
10 10
 
@@ -49,10 +49,21 @@ export default {
49 49
       default: ''
50 50
     }
51 51
   },
52
+  data() {
53
+    return {
54
+      onlyOneChild: null
55
+    }
56
+  },
52 57
   methods: {
53
-    hasOneShowingChildren(children) {
58
+    hasOneShowingChild(children) {
54 59
       const showingChildren = children.filter(item => {
55
-        return !item.hidden
60
+        if (item.hidden) {
61
+          return false
62
+        } else {
63
+          // temp set(will be used if only has one showing child )
64
+          this.onlyOneChild = item
65
+          return true
66
+        }
56 67
       })
57 68
       if (showingChildren.length === 1) {
58 69
         return true