Fix dropdown menus not working on mobile (#34428)

This commit is contained in:
Claire 2025-04-11 11:28:25 +02:00 committed by GitHub
parent 7d50942b36
commit 23edac59ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -354,6 +354,28 @@ export const Dropdown = <Item = MenuItem,>({
dispatch(closeDropdownMenu({ id: currentId })); dispatch(closeDropdownMenu({ id: currentId }));
}, [dispatch, currentId]); }, [dispatch, currentId]);
const handleItemClick = useCallback(
(e: React.MouseEvent | React.KeyboardEvent) => {
const i = Number(e.currentTarget.getAttribute('data-index'));
const item = items?.[i];
handleClose();
if (!item) {
return;
}
if (typeof onItemClick === 'function') {
e.preventDefault();
onItemClick(item, i);
} else if (isActionItem(item)) {
e.preventDefault();
item.action();
}
},
[handleClose, onItemClick, items],
);
const handleClick = useCallback( const handleClick = useCallback(
(e: React.MouseEvent | React.KeyboardEvent) => { (e: React.MouseEvent | React.KeyboardEvent) => {
const { type } = e; const { type } = e;
@ -374,7 +396,7 @@ export const Dropdown = <Item = MenuItem,>({
modalProps: { modalProps: {
status, status,
actions: items, actions: items,
onClick: onItemClick, onClick: handleItemClick,
}, },
}), }),
); );
@ -394,7 +416,7 @@ export const Dropdown = <Item = MenuItem,>({
currentId, currentId,
scrollKey, scrollKey,
onOpen, onOpen,
onItemClick, handleItemClick,
open, open,
status, status,
items, items,
@ -434,28 +456,6 @@ export const Dropdown = <Item = MenuItem,>({
[handleClick], [handleClick],
); );
const handleItemClick = useCallback(
(e: React.MouseEvent | React.KeyboardEvent) => {
const i = Number(e.currentTarget.getAttribute('data-index'));
const item = items?.[i];
handleClose();
if (!item) {
return;
}
if (typeof onItemClick === 'function') {
e.preventDefault();
onItemClick(item, i);
} else if (isActionItem(item)) {
e.preventDefault();
item.action();
}
},
[handleClose, onItemClick, items],
);
useEffect(() => { useEffect(() => {
return () => { return () => {
if (currentId === openDropdownId) { if (currentId === openDropdownId) {