Skip to content

Commit 85256fe

Browse files
committed
LeftNav support nested children (w/o menuItems)
1 parent b63a94f commit 85256fe

File tree

3 files changed

+44
-20
lines changed

3 files changed

+44
-20
lines changed

docs/src/app/components/pages/components/left-nav.jsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default class LeftNavPage extends React.Component {
1111
super();
1212
this._showLeftNavClick = this._showLeftNavClick.bind(this);
1313
this._toggleDockedLeftNavClick = this._toggleDockedLeftNavClick.bind(this);
14-
14+
this._showLeftNavChildrenClick = this._showLeftNavChildrenClick.bind(this);
1515
this.state = {
1616
isDocked: false,
1717
};
@@ -56,7 +56,7 @@ export default class LeftNavPage extends React.Component {
5656
{
5757
name: 'menuItems',
5858
type: 'array',
59-
header: 'required',
59+
header: 'optional',
6060
desc: 'JSON data representing all menu items to render.',
6161
},
6262
{
@@ -143,10 +143,18 @@ export default class LeftNavPage extends React.Component {
143143
componentInfo={componentInfo}>
144144
<CodeExample code={Code}>
145145
<div>
146-
<RaisedButton label="Toggle Docked Left Nav" onTouchTap={this._toggleDockedLeftNavClick} /><br/><br/>
147-
<RaisedButton label="Show Hideable Left Nav" onTouchTap={this._showLeftNavClick} />
146+
<div>
147+
<RaisedButton label="Toggle Docked Left Nav" onTouchTap={this._toggleDockedLeftNavClick} /><br/><br/>
148+
<RaisedButton label="Show Hideable Left Nav" onTouchTap={this._showLeftNavClick} /><br/><br/>
149+
<RaisedButton label="Show Hideable Children Left Nav" onTouchTap={this._showLeftNavChildrenClick} /><br/><br/>
150+
</div>
151+
148152
<LeftNav ref="dockedLeftNav" docked={this.state.isDocked} menuItems={menuItems} />
149153
<LeftNav ref="leftNav" docked={false} menuItems={menuItems} />
154+
<LeftNav ref="leftNavChildren" docked={false}>
155+
<MenuItem index={0}>Menu Item</MenuItem>
156+
<MenuItem index={1}><a href="/link">Link</a></MenuItem>
157+
</LeftNav>
150158
</div>
151159
</CodeExample>
152160
</ComponentDoc>
@@ -156,7 +164,9 @@ export default class LeftNavPage extends React.Component {
156164
_showLeftNavClick() {
157165
this.refs.leftNav.toggle();
158166
}
159-
167+
_showLeftNavChildrenClick() {
168+
this.refs.leftNavChildren.toggle();
169+
}
160170
_toggleDockedLeftNavClick() {
161171
this.refs.dockedLeftNav.toggle();
162172
this.setState({

docs/src/app/components/raw-code/left-nav-code.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,9 @@ this.refs.leftNav.toggle();
2828

2929
//Hideable Left Nav
3030
<LeftNav ref="leftNav" docked={false} menuItems={menuItems} />
31+
32+
//Hideable Left Nav with Nested Children
33+
<LeftNav ref="leftNavChildren" docked={false}>
34+
<MenuItem index={0}>Menu Item</MenuItem>
35+
<MenuItem index={1}><a href="/link">Link</a></MenuItem>
36+
</LeftNav>

src/left-nav.jsx

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const LeftNav = React.createClass({
4242
disableSwipeToOpen: React.PropTypes.bool,
4343
docked: React.PropTypes.bool,
4444
header: React.PropTypes.element,
45-
menuItems: React.PropTypes.array.isRequired,
45+
menuItems: React.PropTypes.array,
4646
onChange: React.PropTypes.func,
4747
onNavOpen: React.PropTypes.func,
4848
onNavClose: React.PropTypes.func,
@@ -181,7 +181,27 @@ const LeftNav = React.createClass({
181181
onTouchTap={this._onOverlayTouchTap} />
182182
);
183183
}
184-
184+
let children;
185+
if (this.props.menuItems === undefined) {
186+
children = this.props.children;
187+
}
188+
else {
189+
children = (
190+
<Menu
191+
ref="menuItems"
192+
style={this.mergeStyles(styles.menu)}
193+
zDepth={0}
194+
menuItems={this.props.menuItems}
195+
menuItemStyle={this.mergeStyles(styles.menuItem)}
196+
menuItemStyleLink={this.mergeStyles(styles.menuItemLink)}
197+
menuItemStyleSubheader={this.mergeStyles(styles.menuItemSubheader)}
198+
menuItemClassName={this.props.menuItemClassName}
199+
menuItemClassNameSubheader={this.props.menuItemClassNameSubheader}
200+
menuItemClassNameLink={this.props.menuItemClassNameLink}
201+
selectedIndex={selectedIndex}
202+
onItemTap={this._onMenuItemClick} />
203+
);
204+
}
185205
return (
186206
<div className={this.props.className}>
187207
{overlay}
@@ -195,19 +215,7 @@ const LeftNav = React.createClass({
195215
this.props.openRight && styles.rootWhenOpenRight,
196216
this.props.style)}>
197217
{this.props.header}
198-
<Menu
199-
ref="menuItems"
200-
style={this.mergeStyles(styles.menu)}
201-
zDepth={0}
202-
menuItems={this.props.menuItems}
203-
menuItemStyle={this.mergeStyles(styles.menuItem)}
204-
menuItemStyleLink={this.mergeStyles(styles.menuItemLink)}
205-
menuItemStyleSubheader={this.mergeStyles(styles.menuItemSubheader)}
206-
menuItemClassName={this.props.menuItemClassName}
207-
menuItemClassNameSubheader={this.props.menuItemClassNameSubheader}
208-
menuItemClassNameLink={this.props.menuItemClassNameLink}
209-
selectedIndex={selectedIndex}
210-
onItemTap={this._onMenuItemClick} />
218+
{children}
211219
</Paper>
212220
</div>
213221
);

0 commit comments

Comments
 (0)