import React, { FC, useCallback } from '../../lib/teact/teact'; import buildClassName from '../../util/buildClassName'; import useLang from '../../hooks/useLang'; import './MenuItem.scss'; type OnClickHandler = (e: React.SyntheticEvent) => void; type OwnProps = { icon?: string; className?: string; children: any; onClick?: OnClickHandler; href?: string; download?: string; disabled?: boolean; destructive?: boolean; ariaLabel?: string; }; const MenuItem: FC = (props) => { const { icon, className, children, onClick, href, download, disabled, destructive, ariaLabel, } = props; const lang = useLang(); const handleClick = useCallback((e: React.MouseEvent) => { if (disabled || !onClick) { e.stopPropagation(); e.preventDefault(); return; } onClick(e); }, [disabled, onClick]); const handleKeyDown = useCallback((e: React.KeyboardEvent) => { if (e.keyCode !== 13 && e.keyCode !== 32) { return; } if (disabled || !onClick) { e.stopPropagation(); e.preventDefault(); return; } onClick(e); }, [disabled, onClick]); const fullClassName = buildClassName( 'MenuItem', className, disabled && 'disabled', destructive && 'destructive', ); const content = ( <> {icon && ( )} {children} ); if (href) { return ( {content} ); } return (
{content}
); }; export default MenuItem;