-
Notifications
You must be signed in to change notification settings - Fork 134
/
navbar.jsx
67 lines (59 loc) · 1.87 KB
/
navbar.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import React from "react";
import classNames from "classnames";
export class Navbar extends React.Component {
static propTypes = {
brand: React.PropTypes.node.isRequired,
};
render() {
const _className = classNames("navbar neal-navbar", this.props.className);
return (
<header className="neal-navbar-wrapper">
<nav className={_className}>
<div className="container">
<button className="navbar-toggler hidden-md-up" type="button" data-toggle="collapse"
data-target="#mobile-nav">
☰
</button>
<a className="navbar-brand hidden-sm-down" href="/">{this.props.brand}</a>
<div className="navbar-toggleable-sm hidden-sm-down" id="header-nav">
<ul className="nav navbar-nav pull-right">
{this.props.children}
</ul>
</div>
<div className="collapse navbar-toggleable-sm hidden-md-up neal-mobile-nav" id="mobile-nav">
<ul className="nav navbar-nav">
{this.props.children}
</ul>
</div>
</div>
</nav>
</header>
);
}
}
export class NavItem extends React.Component {
static propTypes = {
dropdown: React.PropTypes.bool,
};
render() {
const _className = classNames("nav-item", { dropdown: this.props.dropdown }, this.props.className);
return (
<li {...this.props} className={_className}>
{ this.props.children }
</li>
);
}
}
export class DropdownToggle extends React.Component {
render() {
return (
<a className="nav-link" data-toggle="dropdown" role="button" {... this.props}>
{this.props.children}
</a>);
}
}
export class DropdownMenu extends React.Component {
render() {
return <div className="dropdown-menu" {... this.props}>{this.props.children}</div>;
}
}