Prevent opening disabled NestedMenuItem

This commit is contained in:
schroda
2024-04-29 01:06:22 +02:00
parent ee0bf3c1e0
commit 045c60c828

View File

@@ -81,19 +81,32 @@ const NestedMenuItem = forwardRef<HTMLLIElement | null, NestedMenuItemProps>((pr
const [isSubMenuOpen, setIsSubMenuOpen] = useState(false); const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);
const changeMenuOpenState = (open: boolean) => {
if (isSubMenuOpen === open) {
return;
}
if (props.disabled) {
setIsSubMenuOpen(false);
return;
}
setIsSubMenuOpen(open);
};
const handleMouseEnter = (e: MouseEvent<HTMLElement>) => { const handleMouseEnter = (e: MouseEvent<HTMLElement>) => {
if (isMobile) { if (isMobile) {
return; return;
} }
setIsSubMenuOpen(true); changeMenuOpenState(true);
if (ContainerProps.onMouseEnter) { if (ContainerProps.onMouseEnter) {
ContainerProps.onMouseEnter(e); ContainerProps.onMouseEnter(e);
} }
}; };
const handleMouseLeave = (e: MouseEvent<HTMLElement>) => { const handleMouseLeave = (e: MouseEvent<HTMLElement>) => {
setIsSubMenuOpen(false); changeMenuOpenState(false);
if (ContainerProps.onMouseLeave) { if (ContainerProps.onMouseLeave) {
ContainerProps.onMouseLeave(e); ContainerProps.onMouseLeave(e);
@@ -121,7 +134,7 @@ const NestedMenuItem = forwardRef<HTMLLIElement | null, NestedMenuItemProps>((pr
} }
if (e.target === containerRef.current) { if (e.target === containerRef.current) {
setIsSubMenuOpen(true); changeMenuOpenState(true);
} }
if (ContainerProps.onFocus) { if (ContainerProps.onFocus) {
@@ -130,7 +143,7 @@ const NestedMenuItem = forwardRef<HTMLLIElement | null, NestedMenuItemProps>((pr
}; };
const handleClick = (e: MouseEvent<HTMLElement>) => { const handleClick = (e: MouseEvent<HTMLElement>) => {
setIsSubMenuOpen(!isSubMenuOpen); changeMenuOpenState(!isSubMenuOpen);
if (ContainerProps.onClick) { if (ContainerProps.onClick) {
ContainerProps.onClick(e); ContainerProps.onClick(e);
@@ -205,7 +218,7 @@ const NestedMenuItem = forwardRef<HTMLLIElement | null, NestedMenuItemProps>((pr
disableAutoFocus disableAutoFocus
disableEnforceFocus disableEnforceFocus
onClose={() => { onClose={() => {
setIsSubMenuOpen(false); changeMenuOpenState(false);
}} }}
{...MenuProps} {...MenuProps}
> >