Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-menus

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-menus

React Menu Component

  • 1.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
302
increased by51.76%
Maintainers
1
Weekly downloads
 
Created
Source

react-menus

React Menu Component

Install

$ npm install --save react-menus

Usage

var items = [
    {
        label: 'hello',
        onClick: function(itemProps, index, event) {
            console.log('well, hello')
        }
    },
    {
        label: 'hi'
    },
    {
		label: 'export',
		disabled: true
	}
]

function onClick(event, props, index){

}

<Menu items={items} onClick={onClick}/>

Properties

  • items: Object[]
  • onClick: Function(event, props, index) - Called on a click on any menu item
  • columns: String[] - defaults to ['label']

For every item in the items property, a row will be rendered, with all the columns specified in props.columns. Every column displays the value in item[<column_name>].

Every item can optionally have an onClick property, which is called when the item is clicked. (onClick: Function(event, itemProps, index)). Making an item disabled is done by specifying disabled: true on the item object.

  • expander: String/ReactElement - an expander tool to use when a menu item has other subitems. Defaults to the unicode arrow character .

Styling & advanced usage

By default, the react-menus component comes with built-in structural styles as well as with styles for a default nice theme. The specified theme is applied to menu items. If you don't want to render menu items with the default theme, just specify theme='' (or any falsy value).

var items = [ {label: 'Save', onClick: function(){} }, { label: 'Export'}]
<Menu theme='' items={items} />

Or you can specify your own theme for the button. The value for the theme property is just an object with different styles:

var theme = {
	style: { background: 'blue'},
	overStyle: { background: 'red', color: 'white'},
	activeStyle: { background: 'magenta'},
	expandedStyle: { background: 'magenta'},
	disabledStyle: {background: 'gray'}
}

<Menu theme={theme} items={items} />

Or you can specify a theme as string: 'default'. The 'default' theme is the only one built in.

<Menu theme='default' />

But you can add named themes:

var theme = require('react-menus').theme

theme.goldenTheme = { overStyle: {background: 'yellow'}}

<Menu theme='goldenTheme' />

Style props

Styling menu items overrides theme styles.

  • itemStyle - style to be applied to menu items. Overrides theme.style

  • itemOverStyle - style to be applied to menu items on mouse over. Overrides theme.overStyle

  • itemActiveStyle - style to be applied to menu items on mouse down on the item. Overrides theme.activeStyle

  • itemExpandedStyle - style to be applied to menu items when the item is expanded. Overrides theme.expandedStyle

  • itemDisabledStyle - style to be applied to disabled menu items. Overrides theme.defaultStyle

  • cellStyle - style to be applied to menu item cells (expect the expander cell).

Scrolling

Menu scrolling is enabled by default (enableScroll: true). When you have too many items, and the menu is bigger than it's parent container, the menu shows a scrolling user interface.

Or you can specify a maxHeight property on the menu, and if that is exceeded, the menu is scrollable.

<Menu maxHeight={200} items={items}/>

Of course you can turn off scrolling with enableScroll: false

Smart submenus

Showing and hiding submenus is implemented with a smart algorithm, as described here. Also submenu positioning is made taking into account the available space. More documentation on this soon.

Changelog

See Changelog

License

MIT

Keywords

FAQs

Package last updated on 25 Mar 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc