// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // import Vue from 'vue' import { deviceEnquire, DEVICE_TYPE } from '@/utils/device' import { mapState } from 'vuex' // const mixinsComputed = Vue.config.optionMergeStrategies.computed // const mixinsMethods = Vue.config.optionMergeStrategies.methods const mixin = { computed: { ...mapState({ layoutMode: state => state.app.layout, navTheme: state => state.app.theme, primaryColor: state => state.app.color, invertedMode: state => state.app.inverted, fixedHeader: state => state.app.fixedHeader, fixSiderbar: state => state.app.fixSiderbar, fixSidebar: state => state.app.fixSiderbar, contentWidth: state => state.app.contentWidth, autoHideHeader: state => state.app.autoHideHeader, sidebarOpened: state => state.app.sidebar, multiTab: state => state.app.multiTab }) }, methods: { isTopMenu () { return this.layoutMode === 'topmenu' }, isSideMenu () { return !this.isTopMenu() } } } const mixinDevice = { computed: { ...mapState({ device: state => state.app.device }) }, methods: { isMobile () { return this.device === DEVICE_TYPE.MOBILE }, isDesktop () { return this.device === DEVICE_TYPE.DESKTOP }, isTablet () { return this.device === DEVICE_TYPE.TABLET } } } const AppDeviceEnquire = { mounted () { const { $store } = this deviceEnquire(deviceType => { switch (deviceType) { case DEVICE_TYPE.DESKTOP: $store.commit('TOGGLE_DEVICE', 'desktop') $store.dispatch('setSidebar', true) break case DEVICE_TYPE.TABLET: $store.commit('TOGGLE_DEVICE', 'tablet') $store.dispatch('setSidebar', false) break case DEVICE_TYPE.MOBILE: default: $store.commit('TOGGLE_DEVICE', 'mobile') $store.dispatch('setSidebar', true) break } }) } } const mixinForm = { methods: { handleRemoveFields (form) { const formResult = {} Object.keys(form).forEach(field => { if (field in this.$refs && this.$refs[field] === null || this.$refs[field] === undefined) { return true } formResult[field] = form[field] }) return formResult } } } export { mixin, AppDeviceEnquire, mixinDevice, mixinForm }