[Glitch] Fix dropdown menus not working on mobile

Port 23edac59ec to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Claire
2025-04-11 11:28:25 +02:00
parent 0f7d1763c7
commit 8e461af113

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) {