Skip to content

bvaughn/use-context-menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

use-context-menu

React components for displaying configurable context menus

Documentation

ContextMenuItem

Context menu item.

<ContextMenuItem onSelect={copy}>Copy text</ContextMenuItem>

Required props

Name Description
children

Menu item name.

onSelect

Callback notified when menu item is selected.

Optional props

Name Description
className

CSS className.

data-testid

Test id.

ℹ️ Test id can be used to narrow selection when unit testing.

disabled

Disable menu item.

style

CSS style.

ContextMenuCategory

Context menu category header.

<ContextMenuCategory>Main</ContextMenuCategory>

Required props

Name Description
children

Category label.

Optional props

Name Description
className

CSS className.

style

CSS style.

ContextMenuDivider

Separator rendered between context menu sections.

Required props

None

Optional props

Name Description
className

CSS className.

style

CSS style.

Example

import { ContextMenuItem, useContextMenu } from "use-context-menu";

// You can import this anywhere, just so long as it's imported once
import "use-context-menu/styles.css";

function Example({ className }: { className: string }) {
  const { contextMenu, onContextMenu, onKeyDown } = useContextMenu(
    <>
      <ContextMenuItem onSelect={selectOne}>One</ContextMenuItem>
      <ContextMenuItem onSelect={selectTwo}>Two</ContextMenuItem>
      <ContextMenuItem onSelect={selectThree}>Three</ContextMenuItem>
    </>
  );

  return (
    <>
      <button onContextMenu={onContextMenu} onKeyDown={onKeyDown} tabIndex={0}>
        right-click me
      </button>
      {contextMenu}
    </>
  );
}

If you like this project, 🎉 become a sponsor or ☕ buy me a coffee

FAQs

Why is the context menu not styled?

CSS styles must be explicitly imported/required for this package:

import "use-context-menu/styles.css";