From 02dca40083c0326303fe323d11a5274415c95d6f Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Tue, 6 Feb 2024 15:25:16 +0800 Subject: [PATCH] feat: add useLayoutMode --- src/config/layouts.ts | 5 +++-- src/constants/app-key.ts | 7 ++++++ src/hooks/useLayoutMode.ts | 16 ++++++++++++++ src/layouts/components/Logo/index.vue | 10 ++++----- .../components/NavigationBar/index.vue | 7 +++--- .../components/Settings/SelectLayoutMode.vue | 22 +++++++++---------- src/layouts/components/Settings/index.vue | 7 +++--- src/layouts/components/Sidebar/index.vue | 16 ++++++-------- src/layouts/index.vue | 11 +++++----- 9 files changed, 60 insertions(+), 41 deletions(-) create mode 100644 src/hooks/useLayoutMode.ts diff --git a/src/config/layouts.ts b/src/config/layouts.ts index 2d0fc481..f90632dc 100644 --- a/src/config/layouts.ts +++ b/src/config/layouts.ts @@ -1,11 +1,12 @@ import { getConfigLayout } from "@/utils/cache/local-storage" +import { LayoutModeEnum } from "@/constants/app-key" /** 项目配置类型 */ export interface LayoutSettings { /** 是否显示 Settings Panel */ showSettings: boolean /** 布局模式 */ - layoutMode: "left" | "top" | "left-top" + layoutMode: LayoutModeEnum /** 是否显示标签栏 */ showTagsView: boolean /** 是否显示 Logo */ @@ -34,7 +35,7 @@ export interface LayoutSettings { /** 默认配置 */ const defaultSettings: LayoutSettings = { - layoutMode: "left", + layoutMode: LayoutModeEnum.Left, showSettings: true, showTagsView: true, fixedHeader: true, diff --git a/src/constants/app-key.ts b/src/constants/app-key.ts index 4c921c5d..74f943f7 100644 --- a/src/constants/app-key.ts +++ b/src/constants/app-key.ts @@ -4,6 +4,13 @@ export enum DeviceEnum { Desktop } +/** 布局模式 */ +export enum LayoutModeEnum { + Left = "left", + Top = "top", + LeftTop = "left-top" +} + /** 侧边栏打开状态常量 */ export const SIDEBAR_OPENED = "opened" /** 侧边栏关闭状态常量 */ diff --git a/src/hooks/useLayoutMode.ts b/src/hooks/useLayoutMode.ts new file mode 100644 index 00000000..2875c494 --- /dev/null +++ b/src/hooks/useLayoutMode.ts @@ -0,0 +1,16 @@ +import { computed } from "vue" +import { useSettingsStore } from "@/store/modules/settings" +import { LayoutModeEnum } from "@/constants/app-key" + +const settingsStore = useSettingsStore() +const isLeft = computed(() => settingsStore.layoutMode === LayoutModeEnum.Left) +const isTop = computed(() => settingsStore.layoutMode === LayoutModeEnum.Top) +const isLeftTop = computed(() => settingsStore.layoutMode === LayoutModeEnum.LeftTop) + +const setLayoutMode = (mode: LayoutModeEnum) => { + settingsStore.layoutMode = mode +} + +export function useLayoutMode() { + return { isLeft, isTop, isLeftTop, setLayoutMode } +} diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue index aab1c336..2b818de0 100644 --- a/src/layouts/components/Logo/index.vue +++ b/src/layouts/components/Logo/index.vue @@ -1,6 +1,5 @@