From 251d2411f235e23209d57173857e05b637729ce8 Mon Sep 17 00:00:00 2001
From: LiuHao <liuhaoai545@gmail.com>
Date: 星期日, 02 四月 2023 01:01:56 +0800
Subject: [PATCH] refactor ts

---
 src/layout/index.vue |   51 +++++++++++++++++++++++----------------------------
 1 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/src/layout/index.vue b/src/layout/index.vue
index da55d54..673b0fd 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -1,30 +1,11 @@
-<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 ref="navbarRef" @setLayout="setLayout" />
-        <tags-view v-if="needTagsView" />
-      </div>
-      <app-main />
-      <settings ref="settingRef" />
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { useWindowSize } from '@vueuse/core'
-import Sidebar from './components/Sidebar/index.vue'
+<script setup lang="ts">
+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);
@@ -37,8 +18,7 @@
   mobile: device.value === 'mobile'
 }))
 
-const { proxy } = getCurrentInstance();
-const { width, height } = useWindowSize();
+const { width } = useWindowSize();
 const WIDTH = 992; // refer to Bootstrap's responsive design
 
 watchEffect(() => {
@@ -53,7 +33,8 @@
   }
 })
 
-const navbarRef = ref(null);
+const navbarRef = ref(Navbar);
+const settingRef = ref(Settings);
 
 onMounted(() => {
   nextTick(() => {
@@ -61,15 +42,29 @@
   })
 })
 
-function handleClickOutside() {
+const handleClickOutside = () => {
   useAppStore().closeSideBar({ withoutAnimation: false })
 }
 
-const settingRef = ref(null);
-function setLayout() {
+const setLayout = () => {
   settingRef.value.openSetting();
 }
 </script>
+
+<template>
+	<div :class="classObj" class="app-wrapper" :style="{ '--current-color': theme }">
+		<div v-if="device === 'mobile' && sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
+		<side-bar v-if="!sidebar.hide" class="sidebar-container" />
+		<div :class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }" class="main-container">
+			<div :class="{ 'fixed-header': fixedHeader }">
+				<navbar ref="navbarRef" @setLayout="setLayout" />
+				<tags-view v-if="needTagsView" />
+			</div>
+			<app-main />
+			<settings ref="settingRef" />
+		</div>
+	</div>
+</template>
 
 <style lang="scss" scoped>
   @import "@/assets/styles/mixin.scss";
@@ -117,4 +112,4 @@
 .mobile .fixed-header {
   width: 100%;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3