@react-md/menu
Version:
Create menus that auto-position themselves within the viewport and adhere to the accessibility guidelines
70 lines (52 loc) • 1.74 kB
Markdown
# @react-md/menu
Create accessible dropdown menus that auto-position themselves to stay within
the viewport. The menus are entirely navigable with a keyboard along with some
additional behavior:
- `ArrowUp` and `ArrowDown` to focus the previous/next `MenuItem` that also
allows wrapping
- `Home` and `End` to focus the first/last `Menuitem` in the menu
- type the starting letters of a `MenuItem` to focus it
<!-- DOCS_REMOVE -->
> More information on the built-in accessibility can be found in the
> [accessibility example](https://react-md.dev/packages/menu/demos#accessibility-example-title)
> on the documentation site.
<!-- DOCS_REMOVE_END -->
## Installation
```sh
npm install --save @react-md/menu
```
You will also need to install the following packages for their styles:
```sh
npm install --save @react-md/theme \
@react-md/typography \
@react-md/icon \
@react-md/list \
@react-md/button \
@react-md/states \
@react-md/utils
```
<!-- DOCS_REMOVE -->
## Documentation
You should check out the
[full documentation](https://react-md.dev/packages/menu/demos) for live examples
and more customization information, but an example usage is shown below.
<!-- DOCS_REMOVE_END -->
## Usage
```tsx
import React from "react";
import { render } from "react-dom";
import { DropdownMenu } from "@react-md/menu";
const App = () => (
<DropdownMenu
id="example-dropdown-menu"
items={[
{ onClick: () => console.log("Clicked Item 1"), children: "Item 1" },
{ onClick: () => console.log("Clicked Item 2"), children: "Item 2" },
{ onClick: () => console.log("Clicked Item 3"), children: "Item 3" },
]}
>
Dropdown
</DropdownMenu>
);
render(<App />, document.getElementById("root"));
```