| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- <template>
 
-   <div :class="classObj" class="app-wrapper" :style="{ '--current-color': theme }">    
 
-     <div :class="{ hasTagsView: needTagsView, sidebarHide: true }" class="main-container hideSidebar">
 
-       <sidebar class="sidebar-container" />
 
-       <div :class="{ 'fixed-header': fixedHeader }">
 
-         <navbar @setLayout="setLayout" />
 
-       </div>
 
-       <app-main />
 
-       <settings ref="settingRef" />
 
-     </div>
 
-   </div>
 
- </template>
 
- <script setup>
 
- import { useWindowSize } from '@vueuse/core'
 
- import Sidebar from './components/Sidebar/index.vue'
 
- import { AppMain, Navbar, Settings, TagsView } from './components'
 
- import defaultSettings from '@/settings'
 
- import useAppStore from '@/store/modules/app'
 
- import useSettingsStore from '@/store/modules/settings'
 
- const settingsStore = useSettingsStore()
 
- const theme = computed(() => settingsStore.theme);
 
- const sideTheme = computed(() => settingsStore.sideTheme);
 
- const sidebar = computed(() => useAppStore().sidebar);
 
- const device = computed(() => useAppStore().device);
 
- const needTagsView = computed(() => settingsStore.tagsView);
 
- const fixedHeader = computed(() => settingsStore.fixedHeader);
 
- const classObj = computed(() => ({
 
-   hideSidebar: !sidebar.value.opened,
 
-   openSidebar: sidebar.value.opened,
 
-   withoutAnimation: sidebar.value.withoutAnimation,
 
-   mobile: device.value === 'mobile'
 
- }))
 
- const { width, height } = useWindowSize();
 
- const WIDTH = 992; // refer to Bootstrap's responsive design
 
- watch(() => device.value, () => {
 
-   if (device.value === 'mobile' && sidebar.value.opened) {
 
-     useAppStore().closeSideBar({ withoutAnimation: false })
 
-   }
 
- })
 
- watchEffect(() => {
 
-   if (width.value - 1 < WIDTH) {
 
-     useAppStore().toggleDevice('mobile')
 
-     useAppStore().closeSideBar({ withoutAnimation: true })
 
-   } else {
 
-     useAppStore().toggleDevice('desktop')
 
-   }
 
- })
 
- function handleClickOutside() {
 
-   useAppStore().closeSideBar({ withoutAnimation: false })
 
- }
 
- const settingRef = ref(null);
 
- function setLayout() {
 
-   settingRef.value.openSetting();
 
- }
 
- </script>
 
- <style lang="scss" scoped>
 
-   @import "@/assets/styles/mixin.scss";
 
-   @import "@/assets/styles/variables.module.scss";
 
- .app-wrapper {
 
-   @include clearfix;
 
-   position: relative;
 
-   height: 100%;
 
-   width: 100%;
 
-   &.mobile.openSidebar {
 
-     position: fixed;
 
-     top: 0;
 
-   }
 
- }
 
- .drawer-bg {
 
-   background: #000;
 
-   opacity: 0.3;
 
-   width: 100%;
 
-   top: 0;
 
-   height: 100%;
 
-   position: absolute;
 
-   z-index: 999;
 
- }
 
- .fixed-header {
 
-   position: fixed;
 
-   top: 0;
 
-   right: 0;
 
-   z-index: 9;
 
-   width: calc(100% - #{$base-sidebar-width});
 
-   transition: width 0.28s;
 
- }
 
- .hideSidebar .fixed-header {
 
-   width: calc(100% - 60px);
 
- }
 
- .sidebarHide .fixed-header {
 
-   width: 100%;
 
- }
 
- .mobile .fixed-header {
 
-   width: 100%;
 
- }
 
- </style>
 
 
  |