Fix dropdown menus not working on mobile (#34428)
This commit is contained in:
parent
7d50942b36
commit
23edac59ec
1 changed files with 24 additions and 24 deletions
|
@ -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) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue