import { Island } from "../Island"; import { useDevice } from "../App"; import clsx from "clsx"; import Stack from "../Stack"; import React, { useRef } from "react"; import { DropdownMenuContentPropsContext } from "./common"; import { useOutsideClick } from "../../hooks/useOutsideClick"; const MenuContent = ({ children, onClickOutside, className = "", onSelect, style, }: { children?: React.ReactNode; onClickOutside?: () => void; className?: string; /** * Called when any menu item is selected (clicked on). */ onSelect?: (event: Event) => void; style?: React.CSSProperties; }) => { const device = useDevice(); const menuRef = useRef(null); useOutsideClick(menuRef, () => { onClickOutside?.(); }); const classNames = clsx(`dropdown-menu ${className}`, { "dropdown-menu--mobile": device.isMobile, }).trim(); return (
{/* the zIndex ensures this menu has higher stacking order, see https://github.com/excalidraw/excalidraw/pull/1445 */} {device.isMobile ? ( {children} ) : ( {children} )}
); }; MenuContent.displayName = "DropdownMenuContent"; export default MenuContent;