Skip to content

Commit bd09ee3

Browse files
committed
fix: BaseMenu menu-item class
1 parent 32ebd12 commit bd09ee3

File tree

3 files changed

+42
-27
lines changed

3 files changed

+42
-27
lines changed

examples/index.tsx

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'ant-design-vue/dist/antd.less';
2-
import { createApp, defineComponent, watch, ref } from 'vue';
2+
import { createApp, defineComponent, watch, ref, watchEffect, onMounted } from 'vue';
33
import { createRouter, createWebHashHistory, useRoute, useRouter, RouteRecord } from 'vue-router';
44
import { Avatar } from 'ant-design-vue';
55
import { UserOutlined } from '@ant-design/icons-vue';
@@ -30,22 +30,36 @@ const BasicLayout = defineComponent({
3030
const menuData = getMenuData(getRoutes());
3131
globalState.menuData = menuData;
3232

33-
const cacheOpenKeys = ref<string[]>([]);
34-
watch(
35-
() => state.collapsed,
36-
(collapsed: boolean) => {
37-
console.log('post watch', collapsed, state.collapsed);
38-
if (collapsed) {
39-
cacheOpenKeys.value = state.openKeys;
40-
state.openKeys = [];
41-
} else {
42-
state.openKeys = cacheOpenKeys.value;
43-
}
44-
},
45-
{
46-
flush: 'pre',
47-
},
48-
);
33+
const updateSelectedMenu = () => {
34+
const matched = route.matched.concat().map(item => item.path);
35+
matched.shift();
36+
state.selectedKeys = matched;
37+
};
38+
39+
onMounted(() => {
40+
// if sider collapsed, set openKeys is null.
41+
const cacheOpenKeys = ref<string[]>([]);
42+
watch(
43+
() => state.collapsed,
44+
(collapsed: boolean) => {
45+
console.log('post watch', collapsed, state.collapsed);
46+
if (collapsed) {
47+
cacheOpenKeys.value = state.openKeys;
48+
state.openKeys = [];
49+
} else {
50+
state.openKeys = cacheOpenKeys.value;
51+
}
52+
},
53+
{
54+
flush: 'pre',
55+
},
56+
);
57+
58+
// watch route
59+
watchEffect(() => {
60+
updateSelectedMenu();
61+
});
62+
});
4963

5064
return () => (
5165
<RouteContextProvider value={state}>
@@ -67,11 +81,7 @@ const BasicLayout = defineComponent({
6781
{...{
6882
'onUpdate:collapsed': $event => (state.collapsed = $event),
6983
'onUpdate:openKeys': $event => (state.openKeys = $event),
70-
'onUpdate:selectedKeys': () => {
71-
const matched = route.matched.concat().map(item => item.path);
72-
matched.shift();
73-
state.selectedKeys = matched;
74-
},
84+
'onUpdate:selectedKeys': updateSelectedMenu,
7585
}}
7686
v-slots={{
7787
rightContentRender: () => (

src/SiderMenu/BaseMenu.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,12 @@ class MenuUtil {
167167
const { prefixCls, i18n } = this.props;
168168
const menuTitle = (i18n && i18n(item.meta?.title)) || item.meta?.title;
169169
const defaultTitle = item?.meta.icon ? (
170-
<span class={`${prefixCls}-menu-item`}>
171-
<CustomTag {...attrs} {...props}>
170+
<CustomTag {...attrs} {...props}>
171+
<span class={`${prefixCls}-menu-item`}>
172172
{!isChildren && <LazyIcon icon={item.meta.icon} />}
173173
<span class={`${prefixCls}-menu-item-title`}>{menuTitle}</span>
174-
</CustomTag>
175-
</span>
174+
</span>
175+
</CustomTag>
176176
) : (
177177
<span class={`${prefixCls}-menu-item`}>{menuTitle}</span>
178178
);

src/SiderMenu/index.less

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
position: relative;
1010
background-color: @layout-sider-background;
1111
border-right: 0;
12-
transition: background-color 0.3s;
12+
transition: background-color 0.3s, min-width 0.3s,
13+
max-width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
1314
z-index: 9;
1415

1516
&.@{ant-prefix}-menu-vertical .@{ant-prefix}-menu-item:not(:last-child),
@@ -108,6 +109,10 @@
108109
z-index: 10;
109110
min-height: 100%;
110111
box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
112+
113+
span.@{ant-prefix}-pro-menu-item-title {
114+
transition: none;
115+
}
111116
}
112117

113118
.@{ant-prefix}-layout-sider-children {

0 commit comments

Comments
 (0)