|
|
@ -1,72 +1,83 @@ |
|
|
|
<template> |
|
|
|
<div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}"> |
|
|
|
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/> |
|
|
|
<sidebar v-if="!sidebar.hide" class="sidebar-container"/> |
|
|
|
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container"> |
|
|
|
<div :class="{'fixed-header':fixedHeader}"> |
|
|
|
<navbar/> |
|
|
|
<tags-view v-if="needTagsView"/> |
|
|
|
<div |
|
|
|
:class="classObj" |
|
|
|
class="app-wrapper" |
|
|
|
:style="{ '--current-color': theme }" |
|
|
|
> |
|
|
|
<div |
|
|
|
v-if="device === 'mobile' && sidebar.opened" |
|
|
|
class="drawer-bg" |
|
|
|
@click="handleClickOutside" |
|
|
|
/> |
|
|
|
<sidebar v-if="!sidebar.hide" class="sidebar-container" /> |
|
|
|
<div |
|
|
|
:class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }" |
|
|
|
class="main-container" |
|
|
|
> |
|
|
|
<div :class="{ 'fixed-header': fixedHeader }"> |
|
|
|
<navbar /> |
|
|
|
<!-- <tags-view v-if="needTagsView"/> --> |
|
|
|
</div> |
|
|
|
<app-main/> |
|
|
|
<app-main /> |
|
|
|
<right-panel> |
|
|
|
<settings/> |
|
|
|
<settings /> |
|
|
|
</right-panel> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import RightPanel from '@/components/RightPanel' |
|
|
|
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components' |
|
|
|
import ResizeMixin from './mixin/ResizeHandler' |
|
|
|
import { mapState } from 'vuex' |
|
|
|
import variables from '@/assets/styles/variables.scss' |
|
|
|
import RightPanel from "@/components/RightPanel"; |
|
|
|
import { AppMain, Navbar, Settings, Sidebar, TagsView } from "./components"; |
|
|
|
import ResizeMixin from "./mixin/ResizeHandler"; |
|
|
|
import { mapState } from "vuex"; |
|
|
|
import variables from "@/assets/styles/variables.scss"; |
|
|
|
|
|
|
|
export default { |
|
|
|
name: 'Layout', |
|
|
|
name: "Layout", |
|
|
|
components: { |
|
|
|
AppMain, |
|
|
|
Navbar, |
|
|
|
RightPanel, |
|
|
|
Settings, |
|
|
|
Sidebar, |
|
|
|
TagsView |
|
|
|
TagsView, |
|
|
|
}, |
|
|
|
mixins: [ResizeMixin], |
|
|
|
computed: { |
|
|
|
...mapState({ |
|
|
|
theme: state => state.settings.theme, |
|
|
|
sideTheme: state => state.settings.sideTheme, |
|
|
|
sidebar: state => state.app.sidebar, |
|
|
|
device: state => state.app.device, |
|
|
|
needTagsView: state => state.settings.tagsView, |
|
|
|
fixedHeader: state => state.settings.fixedHeader |
|
|
|
theme: (state) => state.settings.theme, |
|
|
|
sideTheme: (state) => state.settings.sideTheme, |
|
|
|
sidebar: (state) => state.app.sidebar, |
|
|
|
device: (state) => state.app.device, |
|
|
|
needTagsView: (state) => state.settings.tagsView, |
|
|
|
fixedHeader: (state) => state.settings.fixedHeader, |
|
|
|
}), |
|
|
|
classObj() { |
|
|
|
return { |
|
|
|
hideSidebar: !this.sidebar.opened, |
|
|
|
openSidebar: this.sidebar.opened, |
|
|
|
withoutAnimation: this.sidebar.withoutAnimation, |
|
|
|
mobile: this.device === 'mobile' |
|
|
|
} |
|
|
|
mobile: this.device === "mobile", |
|
|
|
}; |
|
|
|
}, |
|
|
|
variables() { |
|
|
|
return variables; |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
handleClickOutside() { |
|
|
|
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false }) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
this.$store.dispatch("app/closeSideBar", { withoutAnimation: false }); |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
@import "~@/assets/styles/mixin.scss"; |
|
|
|
@import "~@/assets/styles/variables.scss"; |
|
|
|
@import "~@/assets/styles/mixin.scss"; |
|
|
|
@import "~@/assets/styles/variables.scss"; |
|
|
|
|
|
|
|
.app-wrapper { |
|
|
|
.app-wrapper { |
|
|
|
@include clearfix; |
|
|
|
position: relative; |
|
|
|
height: 100%; |
|
|
@ -76,9 +87,9 @@ export default { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.drawer-bg { |
|
|
|
.drawer-bg { |
|
|
|
background: #000; |
|
|
|
opacity: 0.3; |
|
|
|
width: 100%; |
|
|
@ -86,26 +97,26 @@ export default { |
|
|
|
height: 100%; |
|
|
|
position: absolute; |
|
|
|
z-index: 999; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.fixed-header { |
|
|
|
.fixed-header { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
right: 0; |
|
|
|
z-index: 9; |
|
|
|
width: calc(100% - #{$base-sidebar-width}); |
|
|
|
transition: width 0.28s; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.hideSidebar .fixed-header { |
|
|
|
.hideSidebar .fixed-header { |
|
|
|
width: calc(100% - 54px); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.sidebarHide .fixed-header { |
|
|
|
.sidebarHide .fixed-header { |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.mobile .fixed-header { |
|
|
|
.mobile .fixed-header { |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |
|
|
|