feat(menu): 实现菜单手风琴模式功能
- 在Menu.vue中为n-menu组件添加accordion属性 - 在app store中添加menuAccordion状态控制 - 在SettingDrawer.vue中新增菜单手风琴模式开关 - 支持用户在设置面板中开启/关闭手风琴效果 - 配置自动持久化存储到localStorage - 默认启用手风琴模式,提升菜单使用体验
This commit is contained in:
parent
87cee481ad
commit
6ecd41e379
@ -53,6 +53,10 @@
|
|||||||
{{ $t('app.BreadcrumbIcon') }}
|
{{ $t('app.BreadcrumbIcon') }}
|
||||||
<n-switch v-model:value="appStore.showBreadcrumbIcon" />
|
<n-switch v-model:value="appStore.showBreadcrumbIcon" />
|
||||||
</n-space>
|
</n-space>
|
||||||
|
<n-space justify="space-between">
|
||||||
|
菜单手风琴模式
|
||||||
|
<n-switch v-model:value="appStore.menuAccordion" />
|
||||||
|
</n-space>
|
||||||
</n-space>
|
</n-space>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
:collapsed-width="64"
|
:collapsed-width="64"
|
||||||
:options="routeStore.menus"
|
:options="routeStore.menus"
|
||||||
:value="routeStore.activeMenu"
|
:value="routeStore.activeMenu"
|
||||||
|
:accordion="appStore.menuAccordion"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,7 @@ export const useAppStore = defineStore('app-store', {
|
|||||||
transitionAnimation: 'zoom-out' as TransitionAnimation,
|
transitionAnimation: 'zoom-out' as TransitionAnimation,
|
||||||
layoutMode: 'leftMenu' as LayoutMode,
|
layoutMode: 'leftMenu' as LayoutMode,
|
||||||
contentFullScreen: false,
|
contentFullScreen: false,
|
||||||
|
menuAccordion: true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
@ -65,10 +66,10 @@ export const useAppStore = defineStore('app-store', {
|
|||||||
this.showFooter = true
|
this.showFooter = true
|
||||||
this.showBreadcrumb = true
|
this.showBreadcrumb = true
|
||||||
this.showBreadcrumbIcon = true
|
this.showBreadcrumbIcon = true
|
||||||
this.showWatermark = false
|
|
||||||
this.transitionAnimation = 'zoom-out'
|
this.transitionAnimation = 'zoom-out'
|
||||||
this.layoutMode = 'leftMenu'
|
this.layoutMode = 'leftMenu'
|
||||||
this.contentFullScreen = false
|
this.contentFullScreen = false
|
||||||
|
this.menuAccordion = true
|
||||||
|
|
||||||
// 重置所有配色
|
// 重置所有配色
|
||||||
this.setPrimaryColor(this.primaryColor)
|
this.setPrimaryColor(this.primaryColor)
|
||||||
@ -125,6 +126,10 @@ export const useAppStore = defineStore('app-store', {
|
|||||||
docEle.value.classList.toggle('gray-mode')
|
docEle.value.classList.toggle('gray-mode')
|
||||||
this.grayMode = docEle.value.classList.contains('gray-mode')
|
this.grayMode = docEle.value.classList.contains('gray-mode')
|
||||||
},
|
},
|
||||||
|
/* 切换菜单手风琴模式 */
|
||||||
|
toggleMenuAccordion() {
|
||||||
|
this.menuAccordion = !this.menuAccordion
|
||||||
|
},
|
||||||
},
|
},
|
||||||
persist: {
|
persist: {
|
||||||
storage: localStorage,
|
storage: localStorage,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user