Skip to content

Commit d47f09d

Browse files
committed
feat: hide on click outside mobile sidebar
1 parent e5a24d5 commit d47f09d

File tree

5 files changed

+22
-9
lines changed

5 files changed

+22
-9
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"lint:fix": "eslint --ext .js,.vue . --fix"
6060
},
6161
"dependencies": {
62+
"vue-clickaway": "^2.2.2",
6263
"vue-perfect-scrollbar": "^0.1.0"
6364
},
6465
"devDependencies": {

src/components/Sidebar/Sidebar.vue

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
<template>
2-
<div class="sidebar">
2+
<div class="sidebar" v-on-clickaway="hideMobile">
33
<slot>Sidebar</slot>
44
</div>
55
</template>
66
<script>
7+
import { mixin as clickaway } from 'vue-clickaway'
8+
import { hideMobile } from '../../mixins/hideMobile'
9+
710
export default {
811
name: 'sidebar',
12+
mixins: [ clickaway, hideMobile ],
913
props: {
1014
fixed: {
1115
type: Boolean,

src/components/Sidebar/SidebarNavItem.vue

+4-8
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
</template>
66

77
<script>
8+
import { hideMobile } from '../../mixins/hideMobile'
9+
810
export default {
911
name: 'sidebar-nav-item',
10-
props: {
12+
mixins: [ hideMobile ],
13+
props: {
1114
classes: {
1215
type: String,
1316
default: ''
@@ -23,13 +26,6 @@ export default {
2326
itemClasses () {
2427
return this.classes ? this.classes.split(' ') : ''
2528
}
26-
},
27-
methods: {
28-
hideMobile () {
29-
if (document.body.classList.contains('sidebar-show')) {
30-
document.body.classList.toggle('sidebar-show')
31-
}
32-
}
3329
}
3430
}
3531
</script>

src/components/Sidebar/SidebarToggler.vue

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export default {
5050
},
5151
sidebarToggle (e) {
5252
e.preventDefault()
53+
e.stopPropagation()
5354
this.toggle()
5455
}
5556
}

src/mixins/hideMobile.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const hideMobile = {
2+
methods: {
3+
hideMobile() {
4+
if (document.body.classList.contains('sidebar-show')) {
5+
document.body.classList.toggle('sidebar-show')
6+
}
7+
}
8+
}
9+
}
10+
11+
export { hideMobile }

0 commit comments

Comments
 (0)