1.0.2 • Published 5 years ago

contextmenu v1.0.2

Weekly downloads
138
License
MIT
Repository
github
Last release
5 years ago

ContextMenu

ContextMenu is a context menu build on React (16.8+) hooks. ContextMenu provides a quick and easy way to create instant context menus without having to build jsx. This component supports submenus, custom component menu items, and edge detection.

Installation

Using npm:

$ npm i contextmenu

How To Use

Import:

import useContextMenu from 'contextmenu';
import 'contextmenu/ContextMenu.css';

Build out your menu:

const menuConfig = {
  'Say open': () => console.log('open'),
  'Disabled': null,
  'JSX line': <hr></hr>,
  'JSX': <div style={{height: 40, border: '1px solid green'}}>yes</div>,
  'Line': '---',
  'Submenu': {
    'Say wololol': () => console.log('wololol'),
    'Go deeper': {
      'Onceptioniningiong': () => console.log('inceptioniningiong'),
    },
    'Submenu 2': {
      'electric': console.log,
      'boogaloo': () => console.log('boogaloo'), 
    },
  },
};

Render your menu in your component:

  const [contextMenu, useCM] = useContextMenu({ submenuSymbol: 'O' });
  return <div onContextMenu={useCM(menuConfig)}>{...}{contextMenu}</div>

API

ContextMenu is built off hooks, which means you must render it within React functional components.

useContextMenu(props)

  • props is optional
  • props shape:
{
  submenuSymbol: jsx; // which means jsx component or string or null
  depth: number;
  // more to be added later
}

contextMenu

  • Returned from useContextmenu() which contains the React.portal to be rendered (onto document.body)
  • Must be in your render function, anywhere.

useCM(menuConfig)

  • menuConfig is a JSON that determines what the rendered context menu looks like.
  • menuConfig shape:
{
  [menu option name] :
    | [option callback]
    | [menuConfig]
    | [jsx]
    | "-----"
    | null
}
1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.1

7 years ago