react-split-button
A carefully crafted split-button for React
Install
$ npm install react-split-button --save
Description
The split-button is similar to the dropdown button, but also enables a default action on the button, without showing the drop-down menu.
The split button smartly positions the drop-down menu to fit into the document. You can customize how the menu is aligned to the button. With one function, you can respond to a click in the menu at any nesting level.
Worth trying out, see the demo page
Changelog
See Changelog
Usage
var SplitButton = var items = label: 'save as' { console } items: label: 'PDF' { console } label: 'Postscript' label: 'export' { console } { console} <SplitButton = => Save</SplitButton> { console} <SplitButton = = => Save</SplitButton>
Properties
The split button is implemented as two buttons, one next to the other (named button
and arrow
from now on). The arrow
button is just a react-dropdown-button
Actions
- onClick: Function - function to be called when the button is clicked (not the arrow!)
- onToggle: Function(pressed: boolean) - function to be called when the button is toggled
- onArrowClick: Function - function to be called when the arrow is clicked
- onMenuClick: Function(event, itemProps) - a function to be called when a menu item is clicked
Menu-related attributes
- items - an array of menu items to build the menu
- menu - you can specify a menu instead of the menu items
Other attributes
-
href -
href
for the button -
align - applied to the button
-
label - applied to the button
-
disabled - applied to the button and the arrow
-
pressed - applied to the button
-
defaultPressed - applied to the button
-
theme - a theme to apply the button and the arrow. See buttom styling
-
buttonProps - props for the button
-
arrowProps - props for the arrow
-
commonProps - props for both the button and the arrow
-
buttonStyle
-
arrowStyle
-
commonStyle - styles to be applied to both the arrow and the button
Contributing
$ npm install$ npm run dev # to start webpack-dev-server $ npm run serve # to start http-server on port 9091
now navigate to localhost:9091
Roadmap
See Roadmap