File tree 6 files changed +97
-19
lines changed
6 files changed +97
-19
lines changed Original file line number Diff line number Diff line change 1
1
<template >
2
2
<div id =" app" >
3
- <img src =" ./assets/logo.png" >
4
- <span @click =" changeLanguage" >
5
- <svg-icon icon-class =" language" />
6
- </span >
7
- <router-view />
3
+ <router-view />
8
4
</div >
9
5
</template >
10
6
11
7
<script >
12
8
export default {
13
- name: ' App' ,
14
- methods: {
15
- changeLanguage () {
16
- const language = this .$store .getters .language
17
- const temp = language === ' zh' ? ' en' : ' zh'
18
- this .$i18n .locale = temp
19
- this .$store .dispatch (' app/setLanguage' , temp)
20
- }
21
- }
9
+ name: ' App'
22
10
}
23
11
</script >
24
12
Original file line number Diff line number Diff line change
1
+ <template >
2
+ <div class =" app-wrapper" >
3
+ <img src =" @/assets/logo.png" >
4
+ <span @click =" changeLanguage" >
5
+ <svg-icon icon-class =" language" />
6
+ </span >
7
+ <router-view />
8
+ </div >
9
+ </template >
10
+
11
+ <script >
12
+ import ResizeMixin from ' ./mixin/ResizeHandler'
13
+ import { mapState } from ' vuex'
14
+ export default {
15
+ name: ' Layout' ,
16
+ data () {
17
+ return {
18
+ msg: ' hi app'
19
+ }
20
+ },
21
+ mixins: [ResizeMixin],
22
+ computed: {
23
+ ... mapState ({
24
+ device : state => state .app .device
25
+ })
26
+ },
27
+ methods: {
28
+ changeLanguage () {
29
+ const language = this .$store .getters .language
30
+ const temp = language === ' zh' ? ' en' : ' zh'
31
+ this .$i18n .locale = temp
32
+ this .$store .dispatch (' app/setLanguage' , temp)
33
+ }
34
+ }
35
+ }
36
+ </script >
Original file line number Diff line number Diff line change
1
+ import store from '@/store'
2
+
3
+ const { body } = document
4
+ const WIDTH = 992 // refer to Bootstrap's responsive design
5
+
6
+ export default {
7
+ watch : {
8
+ $route ( route ) {
9
+ if ( this . device === 'mobile' && this . sidebar . opened ) {
10
+ // store.dispatch('app/closeSideBar', { withoutAnimation: false })
11
+ }
12
+ }
13
+ } ,
14
+ beforeMount ( ) {
15
+ window . addEventListener ( 'resize' , this . $_resizeHandler )
16
+ } ,
17
+ beforeDestroy ( ) {
18
+ window . removeEventListener ( 'resize' , this . $_resizeHandler )
19
+ } ,
20
+ mounted ( ) {
21
+ const isMobile = this . $_isMobile ( )
22
+ if ( isMobile ) {
23
+ store . dispatch ( 'app/toggleDevice' , 'mobile' )
24
+ }
25
+ } ,
26
+ methods : {
27
+ // use $_ for mixins properties
28
+ // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
29
+ $_isMobile ( ) {
30
+ const rect = body . getBoundingClientRect ( )
31
+ return rect . width - 1 < WIDTH
32
+ } ,
33
+ $_resizeHandler ( ) {
34
+ if ( ! document . hidden ) {
35
+ const isMobile = this . $_isMobile ( )
36
+ store . dispatch ( 'app/toggleDevice' , isMobile ? 'mobile' : 'desktop' )
37
+ }
38
+ }
39
+ }
40
+ }
Original file line number Diff line number Diff line change 1
1
import Vue from 'vue'
2
2
import Router from 'vue-router'
3
- import HelloWorld from '@/views/index'
3
+ // import HelloWorld from '@/views/index'
4
+ import Layout from '@/layout/index'
4
5
5
6
Vue . use ( Router )
6
7
7
8
export default new Router ( {
8
9
routes : [
9
10
{
10
11
path : '/' ,
11
- name : 'HelloWorld' ,
12
- component : HelloWorld
12
+ component : Layout ,
13
+ redirect : '/index' ,
14
+ children : [ {
15
+ path : 'index' ,
16
+ name : 'Home' ,
17
+ component : ( ) => import ( '@/views/index' )
18
+ } ]
13
19
}
14
20
]
15
21
} )
Original file line number Diff line number Diff line change 1
1
const getters = {
2
- language : state => state . app . language
2
+ language : state => state . app . language ,
3
+ device : state => state . app . device
3
4
}
4
5
export default getters
Original file line number Diff line number Diff line change @@ -2,19 +2,26 @@ import Cookies from 'js-cookie'
2
2
import { getLanguage } from '../../lang'
3
3
4
4
const state = {
5
- language : getLanguage ( )
5
+ language : getLanguage ( ) ,
6
+ device : 'desktop'
6
7
}
7
8
8
9
const mutations = {
9
10
SET_LANGUAGE : ( state , language ) => {
10
11
state . language = language
11
12
Cookies . set ( 'language' , language )
13
+ } ,
14
+ TOGGLE_DEVICE : ( state , device ) => {
15
+ state . device = device
12
16
}
13
17
}
14
18
15
19
const actions = {
16
20
setLanguage ( { commit } , language ) {
17
21
commit ( 'SET_LANGUAGE' , language )
22
+ } ,
23
+ toggleDevice ( { commit} , device ) {
24
+ commit ( 'TOGGLE_DEVICE' , device )
18
25
}
19
26
}
20
27
You can’t perform that action at this time.
0 commit comments