From 28415f151930f1d95b823e3911ece8e7e1d58841 Mon Sep 17 00:00:00 2001 From: Headless Date: Tue, 3 Mar 2015 16:33:56 +0300 Subject: [PATCH] children elements for left nav #27 --- docs/src/app/components/app-left-nav.jsx | 16 +++--- .../components/pages/components/left-nav.jsx | 53 ++++++------------- src/js/left-nav.jsx | 49 ++++++----------- 3 files changed, 40 insertions(+), 78 deletions(-) diff --git a/docs/src/app/components/app-left-nav.jsx b/docs/src/app/components/app-left-nav.jsx index 9c186f7e8c4564..593e187fc4a192 100644 --- a/docs/src/app/components/app-left-nav.jsx +++ b/docs/src/app/components/app-left-nav.jsx @@ -26,14 +26,13 @@ var AppLeftNav = React.createClass({ var header =
material ui
; return ( - + + {header} + + ); }, @@ -52,6 +51,7 @@ var AppLeftNav = React.createClass({ _onLeftNavChange: function(e, key, payload) { this.transitionTo(payload.route); + this.refs.leftNav.close(); }, _onHeaderClick: function() { diff --git a/docs/src/app/components/pages/components/left-nav.jsx b/docs/src/app/components/pages/components/left-nav.jsx index d809878f5ea6fc..859a67a7eabebd 100644 --- a/docs/src/app/components/pages/components/left-nav.jsx +++ b/docs/src/app/components/pages/components/left-nav.jsx @@ -2,6 +2,7 @@ var React = require('react'); var mui = require('mui'); var MenuItem = mui.MenuItem; var LeftNav = mui.LeftNav; +var Menu = mui.Menu; var RaisedButton = mui.RaisedButton; var ComponentDoc = require('../../component-doc.jsx'); @@ -36,40 +37,25 @@ var LeftNavPage = React.createClass({ ' },\n' + '];\n\n' + '//Docked Left Nav\n' + - '\n\n' + + ''+ '\n' + + ' '+ '\n' + + '' + '\n\n' + + '//Hideable Left Nav\n' + - '\n\n'; + ''+ '\n' + + ' '+ '\n' + + ''; var componentInfo = [ { name: 'Props', infoArray: [ - { - name: 'menuItems', - type: 'array', - header: 'required', - desc: 'JSON data representing all menu items to render.' - }, { name: 'docked', type: 'bool', header: 'default: true', desc: 'Indicates that the left nav should be docked. In this state, the ' + 'overlay won\'t show and clicking on a menu item will not close the left nav.' - }, - { - name: 'header', - type: 'element', - header: 'optional', - desc: 'A react component that will be displayed above all the menu items. ' + - 'Usually, this is used for a logo or a profile image.' - }, - { - name: 'selectedIndex', - type: 'number', - header: 'optional', - desc: 'Indicates the particular item in the menuItems array that is ' + - 'currently selected.' } ] }, @@ -87,17 +73,6 @@ var LeftNavPage = React.createClass({ desc: 'Toggles between the open and closed states.' } ] - }, - { - name: 'Events', - infoArray: [ - { - name: 'onChange', - header: 'function(e, selectedIndex, menuItem)', - desc: 'Fired when a menu item is clicked that is not the one currently ' + - 'selected.' - } - ] } ]; @@ -110,8 +85,14 @@ var LeftNavPage = React.createClass({


- - + + + + + + + +
@@ -132,4 +113,4 @@ var LeftNavPage = React.createClass({ }); -module.exports = LeftNavPage; \ No newline at end of file +module.exports = LeftNavPage; diff --git a/src/js/left-nav.jsx b/src/js/left-nav.jsx index 95ad87ddb9ffcf..aee27fb7b36438 100644 --- a/src/js/left-nav.jsx +++ b/src/js/left-nav.jsx @@ -3,19 +3,14 @@ var React = require('react'), Classable = require('./mixins/classable'), WindowListenable = require('./mixins/window-listenable'), Overlay = require('./overlay'), - Paper = require('./paper'), - Menu = require('./menu'); + Paper = require('./paper'); var LeftNav = React.createClass({ mixins: [Classable, WindowListenable], propTypes: { - docked: React.PropTypes.bool, - header: React.PropTypes.element, - onChange: React.PropTypes.func, - menuItems: React.PropTypes.array.isRequired, - selectedIndex: React.PropTypes.number + docked: React.PropTypes.bool }, windowListeners: { @@ -59,35 +54,21 @@ var LeftNav = React.createClass({ if (!this.props.docked) overlay = ; return ( -
- - {overlay} - - - {this.props.header} - - - -
+ React.createElement("div", {className: classes}, + + overlay, + React.createElement(Paper, { + ref: "clickAwayableElement", + className: "mui-left-nav-menu", + zDepth: 2, + rounded: false}, + + this.props.children + ) + ) ); }, - _onMenuItemClick: function(e, key, payload) { - if (!this.props.docked) this.close(); - if (this.props.onChange && this.props.selectedIndex !== key) { - this.props.onChange(e, key, payload); - } - }, - _onOverlayTouchTap: function() { this.close(); }, @@ -102,4 +83,4 @@ var LeftNav = React.createClass({ }); -module.exports = LeftNav; \ No newline at end of file +module.exports = LeftNav;