material-ui
Version:
Material Design UI components built with React
65 lines (51 loc) • 1.81 kB
JSX
var React = require('react'),
Router = require('react-router'),
mui = require('mui'),
menuItems = [
{ route: 'get-started', text: 'Get Started' },
{ route: 'css-framework', text: 'CSS Framework' },
{ route: 'components', text: 'Components' },
{ type: mui.MenuItem.Types.SUBHEADER, text: 'Resources' },
{ type: mui.MenuItem.Types.LINK, payload: 'https://github.com/callemall/material-ui', text: 'GitHub' },
{ type: mui.MenuItem.Types.LINK, payload: 'http://facebook.github.io/react', text: 'React' },
{ type: mui.MenuItem.Types.LINK, payload: 'https://www.google.com/design/spec/material-design/introduction.html', text: 'Material Design' }
];
var AppLeftNav = React.createClass({
mixins: [Router.Navigation, Router.State],
getInitialState: function() {
return {
selectedIndex: null
};
},
render: function() {
var header = <div className="logo" onClick={this._onHeaderClick}>material ui</div>;
return (
<mui.LeftNav
ref="leftNav"
docked={false}
isInitiallyOpen={false}
header={header}
menuItems={menuItems}
selectedIndex={this._getSelectedIndex()}
onChange={this._onLeftNavChange} />
);
},
toggle: function() {
this.refs.leftNav.toggle();
},
_getSelectedIndex: function() {
var currentItem;
for (var i = menuItems.length - 1; i >= 0; i--) {
currentItem = menuItems[i];
if (currentItem.route && this.isActive(currentItem.route)) return i;
};
},
_onLeftNavChange: function(e, key, payload) {
this.transitionTo(payload.route);
},
_onHeaderClick: function() {
this.transitionTo('root');
this.refs.leftNav.close();
}
});
module.exports = AppLeftNav;