|
1 | 1 | <template>
|
2 | 2 | <nav class="sidebar-nav">
|
3 | 3 | <VuePerfectScrollbar class="scroll-area" :settings="psSettings" @ps-scroll-y="scrollHandle">
|
4 |
| - <ul class="nav"> |
5 |
| - <template v-for="(item, index) in navItems"> |
6 |
| - <template v-if="item.title"> |
7 |
| - <SidebarNavTitle :key="index" :name="item.name" :classes="item.class" :wrapper="item.wrapper"/> |
8 |
| - </template> |
9 |
| - <template v-else-if="item.divider"> |
10 |
| - <SidebarNavDivider :key="index" :classes="item.class"/> |
11 |
| - </template> |
12 |
| - <template v-else-if="item.label"> |
13 |
| - <SidebarNavLabel :key="index" :name="item.name" :url="item.url" :icon="item.icon" :label="item.label" :classes="item.class"/> |
14 |
| - </template> |
15 |
| - <template v-else> |
16 |
| - <template v-if="item.children"> |
17 |
| - <!-- First level dropdown --> |
18 |
| - <SidebarNavDropdown :key="index" :name="item.name" :url="item.url" :icon="item.icon"> |
19 |
| - <template v-for="(childL1, index1) in item.children"> |
20 |
| - <template v-if="childL1.children"> |
21 |
| - <!-- Second level dropdown --> |
22 |
| - <SidebarNavDropdown :key="index1" :name="childL1.name" :url="childL1.url" :icon="childL1.icon"> |
23 |
| - <li :key="index2" class="nav-item" v-for="(childL2, index2) in childL1.children"> |
24 |
| - <SidebarNavLink :name="childL2.name" :url="childL2.url" :icon="childL2.icon" :badge="childL2.badge" :variant="item.variant"/> |
25 |
| - </li> |
26 |
| - </SidebarNavDropdown> |
27 |
| - </template> |
28 |
| - <template v-else> |
29 |
| - <SidebarNavItem :key="index1" :classes="item.class"> |
30 |
| - <SidebarNavLink :name="childL1.name" :url="childL1.url" :icon="childL1.icon" :badge="childL1.badge" :variant="item.variant"/> |
31 |
| - </SidebarNavItem> |
32 |
| - </template> |
33 |
| - </template> |
34 |
| - </SidebarNavDropdown> |
| 4 | + <ul class="nav"> |
| 5 | + <template v-for="(item, index) in navItems"> |
| 6 | + <template v-if="item.title"> |
| 7 | + <SidebarNavTitle :key="index" :name="item.name" :classes="item.class" :wrapper="item.wrapper"/> |
| 8 | + </template> |
| 9 | + <template v-else-if="item.divider"> |
| 10 | + <SidebarNavDivider :key="index" :classes="item.class"/> |
| 11 | + </template> |
| 12 | + <template v-else-if="item.label"> |
| 13 | + <SidebarNavLabel :key="index" :name="item.name" :url="item.url" :icon="item.icon" :label="item.label" :classes="item.class"/> |
35 | 14 | </template>
|
36 | 15 | <template v-else>
|
37 |
| - <SidebarNavItem :key="index" :classes="item.class"> |
38 |
| - <SidebarNavLink :name="item.name" :url="item.url" :icon="item.icon" :badge="item.badge" :variant="item.variant"/> |
39 |
| - </SidebarNavItem> |
| 16 | + <template v-if="item.children"> |
| 17 | + <!-- First level dropdown --> |
| 18 | + <SidebarNavDropdown :key="index" :name="item.name" :url="item.url" :icon="item.icon"> |
| 19 | + <template v-for="(childL1, index1) in item.children"> |
| 20 | + <template v-if="childL1.children"> |
| 21 | + <!-- Second level dropdown --> |
| 22 | + <SidebarNavDropdown :key="index1" :name="childL1.name" :url="childL1.url" :icon="childL1.icon"> |
| 23 | + <li :key="index2" class="nav-item" v-for="(childL2, index2) in childL1.children"> |
| 24 | + <SidebarNavLink :name="childL2.name" :url="childL2.url" :icon="childL2.icon" :badge="childL2.badge" :variant="item.variant"/> |
| 25 | + </li> |
| 26 | + </SidebarNavDropdown> |
| 27 | + </template> |
| 28 | + <template v-else> |
| 29 | + <SidebarNavItem :key="index1" :classes="item.class"> |
| 30 | + <SidebarNavLink :name="childL1.name" :url="childL1.url" :icon="childL1.icon" :badge="childL1.badge" :variant="item.variant"/> |
| 31 | + </SidebarNavItem> |
| 32 | + </template> |
| 33 | + </template> |
| 34 | + </SidebarNavDropdown> |
| 35 | + </template> |
| 36 | + <template v-else> |
| 37 | + <SidebarNavItem :key="index" :classes="item.class"> |
| 38 | + <SidebarNavLink :name="item.name" :url="item.url" :icon="item.icon" :badge="item.badge" :variant="item.variant"/> |
| 39 | + </SidebarNavItem> |
| 40 | + </template> |
40 | 41 | </template>
|
41 | 42 | </template>
|
42 |
| - </template> |
43 |
| - </ul> |
44 |
| - <slot></slot> |
| 43 | + </ul> |
| 44 | + <slot></slot> |
45 | 45 | </VuePerfectScrollbar>
|
46 | 46 | </nav>
|
47 | 47 | </template>
|
@@ -74,11 +74,15 @@ export default {
|
74 | 74 | VuePerfectScrollbar
|
75 | 75 | },
|
76 | 76 | data () {
|
77 |
| - return { |
78 |
| - psSettings: { |
| 77 | + return {} |
| 78 | + }, |
| 79 | + computed: { |
| 80 | + psSettings: () => { |
| 81 | + // ToDo: find better rtl fix |
| 82 | + return { |
79 | 83 | maxScrollbarLength: 200,
|
80 | 84 | minScrollbarLength: 40,
|
81 |
| - suppressScrollX: true, |
| 85 | + suppressScrollX: getComputedStyle(document.querySelector('html')).direction !== 'rtl', |
82 | 86 | wheelPropagation: false,
|
83 | 87 | interceptRailY: styles => ({ ...styles, height: 0 })
|
84 | 88 | }
|
|
0 commit comments