mirror of https://github.com/apache/cloudstack.git
110 lines
3.1 KiB
JavaScript
110 lines
3.1 KiB
JavaScript
// 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 }
|