diff --git a/src/components/MenuLayout.vue b/src/components/MenuLayout.vue index f5db7003..721a14d7 100644 --- a/src/components/MenuLayout.vue +++ b/src/components/MenuLayout.vue @@ -9,8 +9,6 @@ :show-trigger="false" :native-scrollbar="false" :position="siderPosition" - @collapse="isMenuCollapsed = true" - @expand="isMenuCollapsed = false" > @@ -36,24 +34,24 @@ const siderPosition = computed(() => isSmallScreen.value ? 'absolute' : 'static' \ No newline at end of file diff --git a/src/stores/style.store.ts b/src/stores/style.store.ts index 79c372cf..bc168f8a 100644 --- a/src/stores/style.store.ts +++ b/src/stores/style.store.ts @@ -1,11 +1,27 @@ -import { useMediaQuery, useStorage } from '@vueuse/core'; +import { useMediaQuery, useStorage, whenever } from '@vueuse/core'; import { defineStore } from 'pinia'; import type { Ref } from 'vue'; export const useStyleStore = defineStore('style', { - state: () => ({ - isDarkTheme: useStorage('isDarkTheme', true) as Ref, - isMenuCollapsed: useStorage('isMenuCollapsed', false) as Ref, - isSmallScreen: useMediaQuery('(max-width: 700px)'), - }), + state: () => { + const isDarkTheme = useStorage('isDarkTheme', true) as Ref; + const isSmallScreen = useMediaQuery('(max-width: 700px)'); + const isMenuCollapsed = useStorage('isMenuCollapsed', !isSmallScreen.value) as Ref; + + whenever( + () => !isSmallScreen.value, + () => (isMenuCollapsed.value = false) + ); + + whenever( + () => isSmallScreen.value, + () => (isMenuCollapsed.value = true) + ); + + return { + isDarkTheme, + isMenuCollapsed, + isSmallScreen, + }; + }, });