From 08533c772d9b36944dce4f752f0b61ac6507285d Mon Sep 17 00:00:00 2001
From: tanjinzhou <415800467@qq.com>
Date: Fri, 21 May 2021 17:04:48 +0800
Subject: [PATCH] refactor: menu
---
components/menu/src/Menu.tsx | 1 +
components/menu/src/PopupTrigger.tsx | 5 ++++-
components/menu/src/SubMenu.tsx | 8 ++++----
components/menu/src/hooks/useMenuContext.ts | 4 +++-
v2-doc | 2 +-
5 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/components/menu/src/Menu.tsx b/components/menu/src/Menu.tsx
index 1b54e763b..b8f5fdffc 100644
--- a/components/menu/src/Menu.tsx
+++ b/components/menu/src/Menu.tsx
@@ -320,6 +320,7 @@ export default defineComponent({
registerMenuInfo,
unRegisterMenuInfo,
selectedSubMenuEventKeys,
+ isRootMenu: true,
});
return () => {
return
;
diff --git a/components/menu/src/PopupTrigger.tsx b/components/menu/src/PopupTrigger.tsx
index 7298952a8..d1f326671 100644
--- a/components/menu/src/PopupTrigger.tsx
+++ b/components/menu/src/PopupTrigger.tsx
@@ -36,6 +36,7 @@ export default defineComponent({
subMenuCloseDelay,
builtinPlacements,
triggerSubMenuAction,
+ isRootMenu,
} = useInjectMenu();
const placement = computed(() =>
@@ -77,7 +78,9 @@ export default defineComponent({
popupClassName,
)}
stretch={mode === 'horizontal' ? 'minWidth' : null}
- getPopupContainer={getPopupContainer.value}
+ getPopupContainer={
+ isRootMenu ? getPopupContainer.value : triggerNode => triggerNode.parentNode
+ }
builtinPlacements={placement.value}
popupPlacement={popupPlacement.value}
popupVisible={innerVisible.value}
diff --git a/components/menu/src/SubMenu.tsx b/components/menu/src/SubMenu.tsx
index ac523bfe1..9be235df6 100644
--- a/components/menu/src/SubMenu.tsx
+++ b/components/menu/src/SubMenu.tsx
@@ -31,7 +31,7 @@ export default defineComponent({
internalPopupClose: Boolean,
},
slots: ['icon', 'title'],
- emits: ['titleClick', 'titleMouseenter', 'titleMouseleave'],
+ emits: ['titleClick', 'mouseenter', 'mouseleave'],
inheritAttrs: false,
setup(props, { slots, attrs, emit }) {
useProvideFirstLevel(false);
@@ -130,13 +130,13 @@ export default defineComponent({
const onMouseEnter = (event: MouseEvent) => {
if (!mergedDisabled.value) {
changeActiveKeys(keysPath.value);
- emit('titleMouseenter', event);
+ emit('mouseenter', event);
}
};
const onMouseLeave = (event: MouseEvent) => {
if (!mergedDisabled.value) {
changeActiveKeys([]);
- emit('titleMouseleave', event);
+ emit('mouseleave', event);
}
};
@@ -245,7 +245,7 @@ export default defineComponent({
onVisibleChange={onPopupVisibleChange}
v-slots={{
popup: ({ visible }) => (
-
+