// +----------------------------------------------------------------------
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
// +----------------------------------------------------------------------
|
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
|
// +----------------------------------------------------------------------
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
// +----------------------------------------------------------------------
|
// | Author: CRMEB Team <admin@crmeb.com>
|
// +----------------------------------------------------------------------
|
|
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 });
|
}
|
}
|
},
|
},
|
};
|