diff options
author | 2022-04-18 08:36:22 +0200 | |
---|---|---|
committer | 2022-04-18 08:40:07 +0200 | |
commit | 71f79a5bbfe0dd5451a435c0a55e8b77ee7d3848 (patch) | |
tree | 7210885186d49f07ad6c7a047547cfd1ad4aa7a8 /src/stores/style.store.ts | |
parent | 4112fa532e3d4be190d52bf3b11e0d4c3625a402 (diff) | |
download | it-tools-71f79a5bbfe0dd5451a435c0a55e8b77ee7d3848.tar.gz it-tools-71f79a5bbfe0dd5451a435c0a55e8b77ee7d3848.tar.zst it-tools-71f79a5bbfe0dd5451a435c0a55e8b77ee7d3848.zip |
fix(menu): menu auto closed on mobile
Diffstat (limited to '')
-rw-r--r-- | src/stores/style.store.ts | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/stores/style.store.ts b/src/stores/style.store.ts index 79c372c..bc168f8 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<boolean>, - isMenuCollapsed: useStorage('isMenuCollapsed', false) as Ref<boolean>, - isSmallScreen: useMediaQuery('(max-width: 700px)'), - }), + state: () => { + const isDarkTheme = useStorage('isDarkTheme', true) as Ref<boolean>; + const isSmallScreen = useMediaQuery('(max-width: 700px)'); + const isMenuCollapsed = useStorage('isMenuCollapsed', !isSmallScreen.value) as Ref<boolean>; + + whenever( + () => !isSmallScreen.value, + () => (isMenuCollapsed.value = false) + ); + + whenever( + () => isSmallScreen.value, + () => (isMenuCollapsed.value = true) + ); + + return { + isDarkTheme, + isMenuCollapsed, + isSmallScreen, + }; + }, }); |