fix(menu): menu auto closed on mobile

This commit is contained in:
Corentin Thomasset 2022-04-18 08:36:22 +02:00
parent 4112fa532e
commit 71f79a5bbf
No known key found for this signature in database
GPG key ID: DBD997E935996158
2 changed files with 34 additions and 20 deletions

View file

@ -9,8 +9,6 @@
:show-trigger="false" :show-trigger="false"
:native-scrollbar="false" :native-scrollbar="false"
:position="siderPosition" :position="siderPosition"
@collapse="isMenuCollapsed = true"
@expand="isMenuCollapsed = false"
> >
<slot name="sider" /> <slot name="sider" />
</n-layout-sider> </n-layout-sider>
@ -36,24 +34,24 @@ const siderPosition = computed(() => isSmallScreen.value ? 'absolute' : 'static'
<style lang="less" scoped> <style lang="less" scoped>
.overlay { .overlay {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #00000080; background-color: #00000080;
cursor: pointer; cursor: pointer;
} }
.content { .content {
// background-color: #f1f5f9; // background-color: #f1f5f9;
::v-deep(.n-layout-scroll-container) { ::v-deep(.n-layout-scroll-container) {
padding: 26px; padding: 26px;
} }
} }
.n-layout { .n-layout {
height: 100vh; height: 100vh;
} }
</style> </style>

View file

@ -1,11 +1,27 @@
import { useMediaQuery, useStorage } from '@vueuse/core'; import { useMediaQuery, useStorage, whenever } from '@vueuse/core';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import type { Ref } from 'vue'; import type { Ref } from 'vue';
export const useStyleStore = defineStore('style', { export const useStyleStore = defineStore('style', {
state: () => ({ state: () => {
isDarkTheme: useStorage('isDarkTheme', true) as Ref<boolean>, const isDarkTheme = useStorage('isDarkTheme', true) as Ref<boolean>;
isMenuCollapsed: useStorage('isMenuCollapsed', false) as Ref<boolean>, const isSmallScreen = useMediaQuery('(max-width: 700px)');
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,
};
},
}); });