import classNames from "classnames" ; import * as React from "react" ; import { polyfill } from "react-lifecycles-compat" ; import { AbstractPureComponent2 , Classes , IRef } from "../../common" ; import { DISPLAYNAME_PREFIX , Props } from "../../common/props" ; import { MenuDivider } from "./menuDivider" ; import { MenuItem } from "./menuItem" ; export type MenuProps = IMenuProps ; deprecated export interface IMenuProps extends Props , React . HTMLAttributes < HTMLUListElement > { /** Whether the menu items in this menu should use a large appearance. */ large ? : boolean ; /** Ref handler that receives the HTML `<ul>` element backing this component. */ ulRef ? : IRef < HTMLUListElement > ; } @ polyfill export class Menu extends AbstractPureComponent2 < MenuProps > { public static displayName = `${ DISPLAYNAME_PREFIX }.Menu` ; deprecated public static Divider = MenuDivider ; deprecated public static Item = MenuItem ; public render ( ) { const { className , children , large , ulRef , ... htmlProps } = this . props ; const classes = classNames ( Classes . MENU , { [ Classes . LARGE ] : large } , className ) ; return ( < ul { ... htmlProps } className = { classes } ref = { ulRef } > { children } < /ul>); } }