// +---------------------------------------------------------------------- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ] // +---------------------------------------------------------------------- // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 // +---------------------------------------------------------------------- // | Author: CRMEB Team // +---------------------------------------------------------------------- import store from '@/store'; const { body } = document; const WIDTH = 992; // refer to Bootstrap's responsive design export default { watch: { $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 }); } } }, }, };