import * as React from "react"; import { CSSTransition } from "react-transition-group"; import styles from "./Menu.module.scss"; import classNames from "classnames"; import { BaseMenu } from "./BaseMenu"; import { MenuLayoutContainer } from "./MenuLayoutContainer"; export type MenuAlignment = | "bottomLeft" | "bottomCenter" | "bottomRight" | "topLeft" | "topCenter" | "topRight"; export interface MenuProps { alignment?: MenuAlignment; children: React.ReactNode; isOpen?: boolean; onClose: (itemValue?: string) => void; onOpen: () => void; trigger: React.ReactElement; } export const Menu: React.FC = (props) => { const { alignment = "bottomLeft", children, isOpen = false, onClose, onOpen, trigger, ...rest } = props; const menuRef = React.useRef(null); const triggerRef = React.useRef(null); return ( {React.cloneElement(trigger, { className: classNames( isOpen && styles.isOpen, styles.trigger ), onClick: () => { if (isOpen) { onClose(); } else { onOpen(); } }, ref: triggerRef, role: "button", tabIndex: 0, })} {children} ); }; Menu.displayName = "Menu";