From 30382d088b3b0a5b21ef94d1eb7b7f042dca0fd7 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun <cheeaun@gmail.com> Date: Thu, 4 Apr 2024 14:34:04 +0800 Subject: [PATCH] Possible fix for menus again --- src/components/nav-menu.jsx | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/components/nav-menu.jsx b/src/components/nav-menu.jsx index 9952d0dd..e5659838 100644 --- a/src/components/nav-menu.jsx +++ b/src/components/nav-menu.jsx @@ -209,7 +209,7 @@ function NavMenu(props) { </MenuLink> )} {lists?.length > 0 ? ( - <SubMenu + <SubMenu2 menuClassName="nav-submenu" overflow="auto" gap={-8} @@ -234,7 +234,7 @@ function NavMenu(props) { ))} </> )} - </SubMenu> + </SubMenu2> ) : ( <MenuLink to="/l"> <Icon icon="list" size="l" /> @@ -244,7 +244,7 @@ function NavMenu(props) { <MenuLink to="/b"> <Icon icon="bookmark" size="l" /> <span>Bookmarks</span> </MenuLink> - <SubMenu + <SubMenu2 menuClassName="nav-submenu" overflow="auto" gap={-8} @@ -293,7 +293,7 @@ function NavMenu(props) { <Icon icon="block" size="l" /> Blocked users… </MenuItem>{' '} - </SubMenu> + </SubMenu2> <MenuDivider /> <MenuItem onClick={() => { @@ -371,4 +371,27 @@ function NavMenu(props) { ); } +function SubMenu2(props) { + const menuRef = useRef(); + return ( + <SubMenu + {...props} + instanceRef={menuRef} + // Test fix for bug; submenus not opening on Android + itemProps={{ + onPointerMove: (e) => { + if (e.pointerType === 'touch') { + menuRef.current?.openMenu?.(); + } + }, + onPointerLeave: (e) => { + if (e.pointerType === 'touch') { + menuRef.current?.openMenu?.(); + } + }, + }} + /> + ); +} + export default memo(NavMenu);