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