From 447306c6158be162cb327198b13b01119359bc60 Mon Sep 17 00:00:00 2001 From: r41ph Date: Tue, 21 Jan 2025 12:34:33 +0000 Subject: [PATCH] refactor: detect touch screens for header navigation handling --- .../HeaderMenuItem/HeaderMenuItem.Hover.tsx | 16 +++++----------- .../src/components/mobile-menu/index.tsx | 6 ++++-- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/web-components/src/components/header/components/HeaderMenuItem/HeaderMenuItem.Hover.tsx b/web-components/src/components/header/components/HeaderMenuItem/HeaderMenuItem.Hover.tsx index 6777f7fd69..b55131c446 100644 --- a/web-components/src/components/header/components/HeaderMenuItem/HeaderMenuItem.Hover.tsx +++ b/web-components/src/components/header/components/HeaderMenuItem/HeaderMenuItem.Hover.tsx @@ -1,11 +1,5 @@ import React, { useRef } from 'react'; -import { - MenuList, - Paper, - Popover, - useMediaQuery, - useTheme, -} from '@mui/material'; +import { MenuList, Paper, Popover, useMediaQuery } from '@mui/material'; import cx from 'clsx'; import DropdownIcon from '../../../icons/DropdownIcon'; @@ -38,8 +32,8 @@ const HeaderMenuItemHover = ({ children, }: Props): JSX.Element => { const { classes: styles } = useMenuHoverStyles(); - const theme = useTheme(); - const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + // eslint-disable-next-line lingui/no-unlocalized-strings + const isTouchScreen = useMediaQuery('(pointer: coarse)'); const popoverAnchor = useRef(null); const [anchorEl, setAnchorEl] = React.useState(null); @@ -63,9 +57,9 @@ const HeaderMenuItemHover = ({ ref={popoverAnchor} aria-owns={open ? 'mouse-over-popover' : undefined} aria-haspopup="true" - onMouseEnter={isMobile ? undefined : handlePopoverOpen} + onMouseEnter={isTouchScreen ? undefined : handlePopoverOpen} onMouseLeave={handlePopoverClose} - onClick={isMobile ? handlePopoverToggle : undefined} + onClick={isTouchScreen ? handlePopoverToggle : undefined} > {title && ( diff --git a/web-components/src/components/mobile-menu/index.tsx b/web-components/src/components/mobile-menu/index.tsx index e3b2d46980..1c75f8b890 100644 --- a/web-components/src/components/mobile-menu/index.tsx +++ b/web-components/src/components/mobile-menu/index.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { useTheme } from '@mui/material'; +import { useMediaQuery, useTheme } from '@mui/material'; import Box from '@mui/material/Box'; import Drawer from '@mui/material/Drawer'; import MenuItem from '@mui/material/MenuItem'; @@ -34,6 +34,8 @@ const MobileMenu: React.FC> = ({ }) => { const { classes: styles, cx } = useMobileMenuStyles(); const theme = useTheme(); + // eslint-disable-next-line lingui/no-unlocalized-strings + const isTouchScreen = useMediaQuery('(pointer: coarse)'); const [open, setOpen] = useState(false); const handleToggle = () => { @@ -53,7 +55,7 @@ const MobileMenu: React.FC> = ({