Menu component with structural styling to give you a clean slate.
$ npm install menu-component
- events for composition
- structural CSS letting you decide on style
- fluent API
- arrow key navigation
showwhen shownhidewhen hiddenremove(item) when an item is removedclearwhen the menu has been clearedselect(item) when an item is selected*menu item events are emitted when clicked
varMenu=require('menu');varmenu=newMenu;menu.add('Add item').add('Edit item',function(){console.log('edit');}).add('Remove item',function(){console.log('remove');}).add('Remove "Add item"',function(){menu.remove('Add item');menu.remove('Remove "Add item"');});menu.on('select',function(item){console.log('selected "%s"',item);});menu.on('Add item',function(){console.log('added an item');});oncontextmenu=function(e){e.preventDefault();menu.moveTo(e.pageX,e.pageY);menu.show();};Create a new Menu:
varMenu=require('menu');varmenu=newMenu();varmenu=Menu();Add a new menu item with the given text, optional slug and callback fn.
Using events to handle selection:
menu.add('Hello');menu.on('Hello',function(){console.log('clicked hello');});Using callbacks:
menu.add('Hello',function(){console.log('clicked hello');});Using a custom slug, otherwise "hello" is generated
from the text given, which may conflict with "rich"
styling like icons within menu items, or i18n.
menu.add('add-item','Add Item');menu.on('add-item',function(){console.log('clicked "Add Item"');});menu.add('add-item','Add Item',function(){console.log('clicked "Add Item"');});Remove an item by the given slug:
menu.add('Add item');menu.remove('Add item');Or with custom slugs:
menu.add('add-item','Add item');menu.remove('add-item');Clears the menu.
menu.clear();Check if a menu item is present.
menu.add('Add item');menu.has('Add item');// => truemenu.has('add-item');// => truemenu.has('Foo');// => falseMove the menu to (x, y).
Show the menu.
Hide the menu.
MIT
