Skip to content

Commit cbabb81

Browse files
fix: Mantine sub-menu rendering in the DOM (#802)
* Fixed where submenus are rendered in the DOM * Cleaned up merging `ref`s
1 parent 432110a commit cbabb81

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

packages/mantine/src/menu/Menu.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as Mantine from "@mantine/core";
2+
import { mergeRefs } from "@mantine/hooks";
23

34
import { assertEmpty } from "@blocknote/core";
45
import { ComponentProps } from "@blocknote/react";
@@ -81,6 +82,8 @@ const SubMenu = forwardRef<
8182

8283
const [opened, setOpened] = useState(false);
8384

85+
const itemRef = useRef<HTMLButtonElement | null>(null);
86+
8487
const menuCloseTimer = useRef<ReturnType<typeof setTimeout> | undefined>();
8588

8689
const mouseLeave = useCallback(() => {
@@ -107,11 +110,15 @@ const SubMenu = forwardRef<
107110
}}>
108111
<Mantine.Menu.Item
109112
className="bn-menu-item bn-mt-sub-menu-item"
110-
ref={ref}
113+
ref={mergeRefs(ref, itemRef)}
111114
onMouseOver={mouseOver}
112115
onMouseLeave={mouseLeave}>
113116
<Mantine.Menu
114-
withinPortal={false}
117+
portalProps={{
118+
target: itemRef.current
119+
? itemRef.current.parentElement!
120+
: undefined,
121+
}}
115122
middlewares={{ flip: true, shift: true, inline: false, size: true }}
116123
trigger={"hover"}
117124
opened={opened}

0 commit comments

Comments
 (0)