From 71f79a5bbfe0dd5451a435c0a55e8b77ee7d3848 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Mon, 18 Apr 2022 08:36:22 +0200 Subject: [PATCH] fix(menu): menu auto closed on mobile --- src/components/MenuLayout.vue | 26 ++++++++++++-------------- src/stores/style.store.ts | 28 ++++++++++++++++++++++------ 2 files changed, 34 insertions(+), 20 deletions(-) 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, + }; + }, });