| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- import store from '@/store'
 
- const { body } = document
 
- const WIDTH = 992 // refer to Bootstrap's responsive design
 
- export default {
 
-   watch: {
 
-     $route(route) {
 
-       if (this.device === 'mobile' && this.sidebar.opened) {
 
-         store.dispatch('app/closeSideBar', { withoutAnimation: false })
 
-       }
 
-     }
 
-   },
 
-   beforeMount() {
 
-     window.addEventListener('resize', this.$_resizeHandler)
 
-   },
 
-   beforeDestroy() {
 
-     window.removeEventListener('resize', this.$_resizeHandler)
 
-   },
 
-   mounted() {
 
-     const isMobile = this.$_isMobile()
 
-     if (isMobile) {
 
-       store.dispatch('app/toggleDevice', 'mobile')
 
-       store.dispatch('app/closeSideBar', { withoutAnimation: true })
 
-     }
 
-   },
 
-   methods: {
 
-     // use $_ for mixins properties
 
-     // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
 
-     $_isMobile() {
 
-       const rect = body.getBoundingClientRect()
 
-       return rect.width - 1 < WIDTH
 
-     },
 
-     $_resizeHandler() {
 
-       if (!document.hidden) {
 
-         const isMobile = this.$_isMobile()
 
-         store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop')
 
-         if (isMobile) {
 
-           store.dispatch('app/closeSideBar', { withoutAnimation: true })
 
-         }
 
-       }
 
-     }
 
-   }
 
- }
 
 
  |