Skip to content

Commit 40625ea

Browse files
authored
Merge pull request #12 from coreui/dev-sidebar-clickaway
feat: sidebar hides on click outside mobile sidebar
2 parents e5a24d5 + 3c4b607 commit 40625ea

File tree

5 files changed

+27
-14
lines changed

5 files changed

+27
-14
lines changed

package.json

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@coreui/vue",
33
"description": "CoreUI Vue Bootstrap 4 layout components",
4-
"version": "2.0.0-rc.1",
4+
"version": "2.0.0-rc.2",
55
"license": "MIT",
66
"main": "dist/coreui-vue.common.js",
77
"module": "dist/coreui-vue.esm.js",
@@ -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": {
@@ -73,9 +74,9 @@
7374
"eslint-import-resolver-babel-module": "^4.0.0",
7475
"eslint-plugin-html": "^4.0.3",
7576
"eslint-plugin-import": "^2.12.0",
76-
"eslint-plugin-jest": "^21.17.0",
77+
"eslint-plugin-jest": "^21.18.0",
7778
"eslint-plugin-prettier": "^2.6.2",
78-
"eslint-plugin-vue": "^4.5.0",
79+
"eslint-plugin-vue": "^4.7.0",
7980
"husky": "^0.14.3",
8081
"jest": "^22.4.4",
8182
"jest-serializer-html": "^5.0.0",
@@ -84,7 +85,7 @@
8485
"lint-staged": "^7.1.3",
8586
"lodash": "^4.17.10",
8687
"node-sass": "^4.9.2",
87-
"prettier": "^1.13.4",
88+
"prettier": "^1.13.7",
8889
"rollup": "^0.59.4",
8990
"rollup-plugin-babel": "^3.0.7",
9091
"rollup-plugin-commonjs": "^9.1.3",
@@ -99,7 +100,7 @@
99100
"uglify-es": "^3.3.9",
100101
"vue": "^2.5.16",
101102
"vue-jest": "^2.6.0",
102-
"vue-loader": "^14.2.2",
103+
"vue-loader": "^15.2.6",
103104
"vue-server-renderer": "^2.5.16",
104105
"vue-template-compiler": "^2.5.16",
105106
"vue-test-utils": "^1.0.0-beta.11"

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)