Unverified Commit bd09ee3d authored by Sendya's avatar Sendya

fix: BaseMenu menu-item class

parent 32ebd126
import 'ant-design-vue/dist/antd.less'; import 'ant-design-vue/dist/antd.less';
import { createApp, defineComponent, watch, ref } from 'vue'; import { createApp, defineComponent, watch, ref, watchEffect, onMounted } from 'vue';
import { createRouter, createWebHashHistory, useRoute, useRouter, RouteRecord } from 'vue-router'; import { createRouter, createWebHashHistory, useRoute, useRouter, RouteRecord } from 'vue-router';
import { Avatar } from 'ant-design-vue'; import { Avatar } from 'ant-design-vue';
import { UserOutlined } from '@ant-design/icons-vue'; import { UserOutlined } from '@ant-design/icons-vue';
...@@ -30,22 +30,36 @@ const BasicLayout = defineComponent({ ...@@ -30,22 +30,36 @@ const BasicLayout = defineComponent({
const menuData = getMenuData(getRoutes()); const menuData = getMenuData(getRoutes());
globalState.menuData = menuData; globalState.menuData = menuData;
const cacheOpenKeys = ref<string[]>([]); const updateSelectedMenu = () => {
watch( const matched = route.matched.concat().map(item => item.path);
() => state.collapsed, matched.shift();
(collapsed: boolean) => { state.selectedKeys = matched;
console.log('post watch', collapsed, state.collapsed); };
if (collapsed) {
cacheOpenKeys.value = state.openKeys; onMounted(() => {
state.openKeys = []; // if sider collapsed, set openKeys is null.
} else { const cacheOpenKeys = ref<string[]>([]);
state.openKeys = cacheOpenKeys.value; watch(
} () => state.collapsed,
}, (collapsed: boolean) => {
{ console.log('post watch', collapsed, state.collapsed);
flush: 'pre', if (collapsed) {
}, cacheOpenKeys.value = state.openKeys;
); state.openKeys = [];
} else {
state.openKeys = cacheOpenKeys.value;
}
},
{
flush: 'pre',
},
);
// watch route
watchEffect(() => {
updateSelectedMenu();
});
});
return () => ( return () => (
<RouteContextProvider value={state}> <RouteContextProvider value={state}>
...@@ -67,11 +81,7 @@ const BasicLayout = defineComponent({ ...@@ -67,11 +81,7 @@ const BasicLayout = defineComponent({
{...{ {...{
'onUpdate:collapsed': $event => (state.collapsed = $event), 'onUpdate:collapsed': $event => (state.collapsed = $event),
'onUpdate:openKeys': $event => (state.openKeys = $event), 'onUpdate:openKeys': $event => (state.openKeys = $event),
'onUpdate:selectedKeys': () => { 'onUpdate:selectedKeys': updateSelectedMenu,
const matched = route.matched.concat().map(item => item.path);
matched.shift();
state.selectedKeys = matched;
},
}} }}
v-slots={{ v-slots={{
rightContentRender: () => ( rightContentRender: () => (
......
...@@ -167,12 +167,12 @@ class MenuUtil { ...@@ -167,12 +167,12 @@ class MenuUtil {
const { prefixCls, i18n } = this.props; const { prefixCls, i18n } = this.props;
const menuTitle = (i18n && i18n(item.meta?.title)) || item.meta?.title; const menuTitle = (i18n && i18n(item.meta?.title)) || item.meta?.title;
const defaultTitle = item?.meta.icon ? ( const defaultTitle = item?.meta.icon ? (
<span class={`${prefixCls}-menu-item`}> <CustomTag {...attrs} {...props}>
<CustomTag {...attrs} {...props}> <span class={`${prefixCls}-menu-item`}>
{!isChildren && <LazyIcon icon={item.meta.icon} />} {!isChildren && <LazyIcon icon={item.meta.icon} />}
<span class={`${prefixCls}-menu-item-title`}>{menuTitle}</span> <span class={`${prefixCls}-menu-item-title`}>{menuTitle}</span>
</CustomTag> </span>
</span> </CustomTag>
) : ( ) : (
<span class={`${prefixCls}-menu-item`}>{menuTitle}</span> <span class={`${prefixCls}-menu-item`}>{menuTitle}</span>
); );
......
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
position: relative; position: relative;
background-color: @layout-sider-background; background-color: @layout-sider-background;
border-right: 0; border-right: 0;
transition: background-color 0.3s; transition: background-color 0.3s, min-width 0.3s,
max-width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
z-index: 9; z-index: 9;
&.@{ant-prefix}-menu-vertical .@{ant-prefix}-menu-item:not(:last-child), &.@{ant-prefix}-menu-vertical .@{ant-prefix}-menu-item:not(:last-child),
...@@ -108,6 +109,10 @@ ...@@ -108,6 +109,10 @@
z-index: 10; z-index: 10;
min-height: 100%; min-height: 100%;
box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
span.@{ant-prefix}-pro-menu-item-title {
transition: none;
}
} }
.@{ant-prefix}-layout-sider-children { .@{ant-prefix}-layout-sider-children {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment