Files
AFFiNE-Mirror/packages/frontend/component/src/ui/menu/mobile/item.tsx
CatsJuice 87ed358f2e fix(mobile): adjust mobile ui (#8112)
close AF-1274, AF-1320, AF-1333
2024-09-06 13:40:10 +00:00

42 lines
1007 B
TypeScript

import { useCallback, useContext } from 'react';
import type { MenuItemProps } from '../menu.types';
import { useMenuItem } from '../use-menu-item';
import { MobileMenuContext } from './context';
let preventDefaultFlag = false;
const preventDefault = () => {
preventDefaultFlag = true;
};
export const MobileMenuItem = (props: MenuItemProps) => {
const { setOpen } = useContext(MobileMenuContext);
const { className, children, otherProps } = useMenuItem(props);
const { onSelect, onClick, divide, ...restProps } = otherProps;
const onItemClick = useCallback(
(e: any) => {
onSelect?.(e);
onClick?.({ ...e, preventDefault });
if (preventDefaultFlag) {
preventDefaultFlag = false;
} else {
setOpen?.(false);
}
},
[onClick, onSelect, setOpen]
);
return (
<div
role="menuitem"
onClick={onItemClick}
className={className}
data-divider={divide}
{...restProps}
>
{children}
</div>
);
};