0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-14 04:12:43 +00:00
Files
homebrewery/shared/naturalcrit/nav/nav.jsx
2017-03-21 00:09:37 -04:00

73 lines
1.6 KiB
JavaScript

var React = require('react');
var _ = require('lodash');
var cx = require('classnames');
var NaturalCritIcon = require('naturalcrit/svg/naturalcrit.svg.jsx');
var Nav = {
base : React.createClass({
render : function(){
return <nav>
<div className='navContent'>
{this.props.children}
</div>
</nav>
}
}),
logo : function(){
return <a className='navLogo' href="http://naturalcrit.com">
<NaturalCritIcon />
<span className='name'>
Natural<span className='crit'>Crit</span>
</span>
</a>;
},
section : React.createClass({
render : function(){
return <div className='navSection'>
{this.props.children}
</div>
}
}),
item : React.createClass({
getDefaultProps: function() {
return {
icon : null,
href : null,
newTab : false,
onClick : function(){},
color : null,
collaspe : false
};
},
handleClick : function(){
this.props.onClick();
},
render : function(){
var classes = cx('navItem', this.props.color, this.props.className, {collaspe : this.props.collaspe});
var icon;
if(this.props.icon) icon = <i className={'fa ' + this.props.icon} />;
const props = _.omit(this.props, ['newTab', 'collaspe']);
if(this.props.href){
return <a {...props} className={classes} target={this.props.newTab ? '_blank' : '_self'} >
<span>{this.props.children}</span>
{icon}
</a>
}else{
return <div {...props} className={classes} onClick={this.handleClick} >
<span>{this.props.children}</span>
{icon}
</div>
}
}
}),
};
module.exports = Nav;