@@ -43,38 +43,40 @@ watch(() => menuStore.actived, (val, oldVal) => {
4343 </script >
4444
4545<template >
46- <div
47- v-if =" enableSidebar" class =" sub-sidebar-container" :class =" {
48- 'is-collapse': settingsStore.mode === 'pc' && settingsStore.settings.menu.subMenuCollapse,
49- }"
50- >
51- <component :is =" useSlots('sub-sidebar-top')" />
52- <Logo
53- v-if =" ['side', 'single'].includes(settingsStore.settings.menu.mode)" :show-logo =" settingsStore.settings.menu.mode === 'single'" class =" sidebar-logo" :class =" {
54- single: settingsStore.settings.menu.mode === 'single',
46+ <Transition name =" sub-sidebar" >
47+ <div
48+ v-if =" enableSidebar" class =" sub-sidebar-container" :class =" {
49+ 'is-collapse': settingsStore.mode === 'pc' && settingsStore.settings.menu.subMenuCollapse,
5550 }"
56- />
57- <component :is =" useSlots('sub-sidebar-after-logo')" />
58- <FaScrollArea :scrollbar =" false" mask gradient-color =" var(--g-sub-sidebar-bg)" class =" flex-1" >
59- <TransitionGroup :name =" transitionName" >
60- <template v-for =" (mainItem , mainIndex ) in menuStore .allMenus " :key =" mainIndex " >
61- <div v-show =" mainIndex === menuStore.actived" >
62- <Menu
63- :menu =" mainItem.children" :value =" route.meta.activeMenu || route.path" :default-openeds =" menuStore.defaultOpenedPaths" :accordion =" settingsStore.settings.menu.subMenuUniqueOpened" :collapse =" settingsStore.mode === 'pc' && settingsStore.settings.menu.subMenuCollapse" class =" menu" :class =" {
64- '-mt-2': !['head', 'single'].includes(settingsStore.settings.menu.mode),
65- }"
66- />
67- </div >
68- </template >
69- </TransitionGroup >
70- </FaScrollArea >
71- <div v-if =" settingsStore.mode === 'pc'" class =" relative flex items-center px-4 py-3" :class =" [settingsStore.settings.menu.subMenuCollapse ? 'justify-center' : 'justify-end']" >
72- <FaButton v-show =" settingsStore.settings.menu.enableSubMenuCollapseButton" variant =" secondary" size =" icon" class =" h-8 w-8 transition" :class =" { '-rotate-z-180': settingsStore.settings.menu.subMenuCollapse }" @click =" settingsStore.toggleSidebarCollapse()" >
73- <FaIcon name =" toolbar-collapse" class =" size-4" />
74- </FaButton >
51+ >
52+ <component :is =" useSlots('sub-sidebar-top')" />
53+ <Logo
54+ v-if =" ['side', 'single'].includes(settingsStore.settings.menu.mode)" :show-logo =" settingsStore.settings.menu.mode === 'single'" class =" sidebar-logo" :class =" {
55+ single: settingsStore.settings.menu.mode === 'single',
56+ }"
57+ />
58+ <component :is =" useSlots('sub-sidebar-after-logo')" />
59+ <FaScrollArea :scrollbar =" false" mask gradient-color =" var(--g-sub-sidebar-bg)" class =" flex-1" >
60+ <TransitionGroup :name =" transitionName" >
61+ <template v-for =" (mainItem , mainIndex ) in menuStore .allMenus " :key =" mainIndex " >
62+ <div v-show =" mainIndex === menuStore.actived" >
63+ <Menu
64+ :menu =" mainItem.children" :value =" route.meta.activeMenu || route.path" :default-openeds =" menuStore.defaultOpenedPaths" :accordion =" settingsStore.settings.menu.subMenuUniqueOpened" :collapse =" settingsStore.mode === 'pc' && settingsStore.settings.menu.subMenuCollapse" class =" menu" :class =" {
65+ '-mt-2': !['head', 'single'].includes(settingsStore.settings.menu.mode),
66+ }"
67+ />
68+ </div >
69+ </template >
70+ </TransitionGroup >
71+ </FaScrollArea >
72+ <div v-if =" settingsStore.mode === 'pc'" class =" relative flex items-center px-4 py-3" :class =" [settingsStore.settings.menu.subMenuCollapse ? 'justify-center' : 'justify-end']" >
73+ <FaButton v-show =" settingsStore.settings.menu.enableSubMenuCollapseButton" variant =" secondary" size =" icon" class =" h-8 w-8 transition" :class =" { '-rotate-z-180': settingsStore.settings.menu.subMenuCollapse }" @click =" settingsStore.toggleSidebarCollapse()" >
74+ <FaIcon name =" toolbar-collapse" class =" size-4" />
75+ </FaButton >
76+ </div >
77+ <component :is =" useSlots('sub-sidebar-bottom')" />
7578 </div >
76- <component :is =" useSlots('sub-sidebar-bottom')" />
77- </div >
79+ </Transition >
7880</template >
7981
8082<style scoped>
@@ -147,4 +149,15 @@ watch(() => menuStore.actived, (val, oldVal) => {
147149.sub-sidebar-y-end-leave-active {
148150 position : absolute ;
149151}
152+
153+ /* 次侧边栏动画 */
154+ .sub-sidebar-enter-active ,
155+ .sub-sidebar-leave-active {
156+ transition : 0.3s ;
157+ }
158+
159+ .sub-sidebar-enter-from ,
160+ .sub-sidebar-leave-to {
161+ transform : translateX (calc (var (--g-sub-sidebar-width ) * -1 ));
162+ }
150163 </style >
0 commit comments