Skip to content

Commit cb62a7f

Browse files
committed
fix(SidebarNav): dirty fix for rtl ps scrolling issue
1 parent c64ca7e commit cb62a7f

File tree

1 file changed

+44
-40
lines changed

1 file changed

+44
-40
lines changed

src/components/Sidebar/SidebarNav.vue

Lines changed: 44 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
11
<template>
22
<nav class="sidebar-nav">
33
<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"/>
3514
</template>
3615
<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>
4041
</template>
4142
</template>
42-
</template>
43-
</ul>
44-
<slot></slot>
43+
</ul>
44+
<slot></slot>
4545
</VuePerfectScrollbar>
4646
</nav>
4747
</template>
@@ -74,11 +74,15 @@ export default {
7474
VuePerfectScrollbar
7575
},
7676
data () {
77-
return {
78-
psSettings: {
77+
return {}
78+
},
79+
computed: {
80+
psSettings: () => {
81+
// ToDo: find better rtl fix
82+
return {
7983
maxScrollbarLength: 200,
8084
minScrollbarLength: 40,
81-
suppressScrollX: true,
85+
suppressScrollX: getComputedStyle(document.querySelector('html')).direction !== 'rtl',
8286
wheelPropagation: false,
8387
interceptRailY: styles => ({ ...styles, height: 0 })
8488
}

0 commit comments

Comments
 (0)