diff options
Diffstat (limited to 'packages/gitbook-core/src/components/Dropdown.js')
-rw-r--r-- | packages/gitbook-core/src/components/Dropdown.js | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/packages/gitbook-core/src/components/Dropdown.js b/packages/gitbook-core/src/components/Dropdown.js index 78bad8d..83a377f 100644 --- a/packages/gitbook-core/src/components/Dropdown.js +++ b/packages/gitbook-core/src/components/Dropdown.js @@ -38,11 +38,30 @@ const DropdownContainer = React.createClass({ }); /** - * A dropdown item, which is always a link, and can contain a nested - * DropdownMenu. + * A dropdown item which can contains informations. */ const DropdownItem = React.createClass({ propTypes: { + children: React.PropTypes.node + }, + + render() { + const { children } = this.props; + + return ( + <div className="GitBook-DropdownItem"> + {children} + </div> + ); + } +}); + + +/** + * A dropdown item, which is always a link. + */ +const DropdownItemLink = React.createClass({ + propTypes: { children: React.PropTypes.node, onClick: React.PropTypes.func, href: React.PropTypes.string @@ -64,26 +83,17 @@ const DropdownItem = React.createClass({ }, render() { - const { children, href, onClick, ...otherProps } = this.props; - - let inner = children; - - if (href || onClick) { - inner = ( - <a className="GitBook-DropdownItemLink" href={href || '#'} onClick={this.onClick} {...otherProps} > - {inner} - </a> - ); - } + const { children, href, ...otherProps } = this.props; return ( - <div className="GitBook-DropdownItem"> - {inner} - </div> + <a {...otherProps} className="GitBook-DropdownItemLink" href={href || '#'} onClick={this.onClick} > + {children} + </a> ); } }); + /** * A DropdownMenu to display DropdownItems. Must be inside a * DropdownContainer. @@ -108,6 +118,7 @@ const DropdownMenu = React.createClass({ const Dropdown = { Item: DropdownItem, + ItemLink: DropdownItemLink, Menu: DropdownMenu, Container: DropdownContainer }; |