2
2
mirror of https://github.com/mastodon/mastodon synced 2025-04-12 00:56:38 +02:00

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, 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(
(e: React.MouseEvent | React.KeyboardEvent) => {
const { type } = e;
@ -374,7 +396,7 @@ export const Dropdown = <Item = MenuItem,>({
modalProps: {
status,
actions: items,
onClick: onItemClick,
onClick: handleItemClick,
},
}),
);
@ -394,7 +416,7 @@ export const Dropdown = <Item = MenuItem,>({
currentId,
scrollKey,
onOpen,
onItemClick,
handleItemClick,
open,
status,
items,
@ -434,28 +456,6 @@ export const Dropdown = <Item = MenuItem,>({
[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(() => {
return () => {
if (currentId === openDropdownId) {