Skip to content

Commit 4e60f54

Browse files
committed
Merge branch 'master' into 'v0.26-rc'
2 parents a1494c8 + 59c89b9 commit 4e60f54

12 files changed

Lines changed: 357 additions & 2 deletions

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
sudo: false
22
language: node_js
33
node_js:
4-
- "iojs"
4+
- 4
55
cache:
66
directories:
77
- node_modules

docs/examples/.eslintrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
"Accordion",
1111
"Alert",
1212
"Badge",
13+
"Breadcrumb",
14+
"BreadcrumbItem",
1315
"Button",
1416
"ButtonGroup",
1517
"ButtonInput",

docs/examples/Breadcrumb.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const breadcrumbInstance = (
2+
<Breadcrumb>
3+
<BreadcrumbItem href="#">
4+
Home
5+
</BreadcrumbItem>
6+
<BreadcrumbItem href="http://getbootstrap.com/components/#breadcrumbs">
7+
Library
8+
</BreadcrumbItem>
9+
<BreadcrumbItem active>
10+
Data
11+
</BreadcrumbItem>
12+
</Breadcrumb>
13+
);
14+
15+
React.render(breadcrumbInstance, mountNode);

docs/src/ComponentsPage.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,22 @@ const ComponentsPage = React.createClass({
541541
<PropTable component="Navbar"/>
542542
</div>
543543

544+
{/* Breadcrumb */}
545+
<div className="bs-docs-section">
546+
<h1 className="page-header"><Anchor id="breadcrumbs">Breadcrumbs</Anchor> <small>Breadcrumb, BreadcrumbItems</small></h1>
547+
<p>Breadcrumbs are used to indicate the current page's location. Add <code>active</code> attribute to active <code>BreadcrumbItem</code>.</p>
548+
<p>Do not set both <code>active</code> and <code>href</code> attributes. <code>active</code> overrides <code>href</code> and <code>span</code> element is rendered instead of <code>a</code>.</p>
549+
550+
<h3><Anchor id="breadcrumbs-example">Breadcrumbs Example</Anchor></h3>
551+
<ReactPlayground codeText={Samples.Breadcrumb} />
552+
553+
<h3><Anchor id="breadcrumbs-props">Props</Anchor></h3>
554+
<p><code>Breadcrumb</code> component itself doesn't have any specific public properties</p>
555+
556+
<h4><Anchor id="breadcrumbs-props-breadcrumbItem">BreadcrumbItem</Anchor></h4>
557+
<PropTable component="BreadcrumbItem"/>
558+
</div>
559+
544560
{/* Tabbed Areas */}
545561
<div className="bs-docs-section">
546562
<h1 className="page-header"><Anchor id="tabs">Togglable tabs</Anchor> <small>Tabs, Tab</small></h1>
@@ -947,6 +963,7 @@ const ComponentsPage = React.createClass({
947963
<NavItem href="#progress" key={8}>Progress bars</NavItem>
948964
<NavItem href="#navs" key={9}>Navs</NavItem>
949965
<NavItem href="#navbars" key={10}>Navbars</NavItem>
966+
<NavItem href="#breadcrumbs" key={30}>Breadcrumbs</NavItem>
950967
<NavItem href="#tabs" key={11}>Tabs</NavItem>
951968
<NavItem href="#pager" key={12}>Pager</NavItem>
952969
<NavItem href="#pagination" key={13}>Pagination</NavItem>

docs/src/ReactPlayground.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ const React = require('react');
88
const Accordion = require('../../src/Accordion');
99
const Alert = require('../../src/Alert');
1010
const Badge = require('../../src/Badge');
11+
const Breadcrumb = require('../../src/Breadcrumb');
12+
const BreadcrumbItem = require('../../src/BreadcrumbItem');
1113
const Button = require('../../src/Button');
1214
const ButtonGroup = require('../../src/ButtonGroup');
1315
const ButtonInput = require('../../src/ButtonInput');

docs/src/Samples.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export default {
44
Collapse: require('fs').readFileSync(__dirname + '/../examples/Collapse.js', 'utf8'),
55
Fade: require('fs').readFileSync(__dirname + '/../examples/Fade.js', 'utf8'),
66

7+
Breadcrumb: require('fs').readFileSync(__dirname + '/../examples/Breadcrumb.js', 'utf8'),
78
ButtonTypes: require('fs').readFileSync(__dirname + '/../examples/ButtonTypes.js', 'utf8'),
89
ButtonSizes: require('fs').readFileSync(__dirname + '/../examples/ButtonSizes.js', 'utf8'),
910
ButtonBlock: require('fs').readFileSync(__dirname + '/../examples/ButtonBlock.js', 'utf8'),

src/Breadcrumb.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import React, { cloneElement } from 'react';
2+
import classNames from 'classnames';
3+
import ValidComponentChildren from './utils/ValidComponentChildren';
4+
5+
const Breadcrumb = React.createClass({
6+
propTypes: {
7+
/**
8+
* bootstrap className
9+
* @private
10+
*/
11+
bsClass: React.PropTypes.string
12+
},
13+
14+
getDefaultProps() {
15+
return {
16+
bsClass: 'breadcrumb'
17+
};
18+
},
19+
20+
render() {
21+
const { className, ...props } = this.props;
22+
23+
return (
24+
<ol
25+
{...props}
26+
role="navigation"
27+
aria-label="breadcrumbs"
28+
className={classNames(className, this.props.bsClass)}>
29+
{ValidComponentChildren.map(this.props.children, this.renderBreadcrumbItem)}
30+
</ol>
31+
);
32+
},
33+
34+
renderBreadcrumbItem(child, index) {
35+
return cloneElement( child, { key: child.key ? child.key : index } );
36+
}
37+
});
38+
39+
export default Breadcrumb;

src/BreadcrumbItem.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import React from 'react';
2+
import classNames from 'classnames';
3+
import SafeAnchor from './SafeAnchor';
4+
import warning from 'react/lib/warning';
5+
6+
const BreadcrumbItem = React.createClass({
7+
propTypes: {
8+
/**
9+
* If set to true, renders `span` instead of `a`
10+
*/
11+
active: React.PropTypes.bool,
12+
/**
13+
* HTML id for the wrapper `li` element
14+
*/
15+
id: React.PropTypes.oneOfType([
16+
React.PropTypes.string,
17+
React.PropTypes.number
18+
]),
19+
/**
20+
* HTML id for the inner `a` element
21+
*/
22+
linkId: React.PropTypes.oneOfType([
23+
React.PropTypes.string,
24+
React.PropTypes.number
25+
]),
26+
/**
27+
* `href` attribute for the inner `a` element
28+
*/
29+
href: React.PropTypes.string,
30+
/**
31+
* `title` attribute for the inner `a` element
32+
*/
33+
title: React.PropTypes.node,
34+
/**
35+
* `target` attribute for the inner `a` element
36+
*/
37+
target: React.PropTypes.string
38+
},
39+
40+
getDefaultProps() {
41+
return {
42+
active: false,
43+
};
44+
},
45+
46+
render() {
47+
const {
48+
active,
49+
className,
50+
id,
51+
linkId,
52+
children,
53+
href,
54+
title,
55+
target,
56+
...props } = this.props;
57+
58+
warning(!(href && active), '[react-bootstrap] `href` and `active` properties cannot be set at the same time');
59+
60+
const linkProps = {
61+
href,
62+
title,
63+
target,
64+
id: linkId
65+
};
66+
67+
return (
68+
<li id={id} className={classNames(className, { active })}>
69+
{
70+
active ?
71+
<span {...props}>
72+
{ children }
73+
</span> :
74+
<SafeAnchor {...props} {...linkProps}>
75+
{ children }
76+
</SafeAnchor>
77+
}
78+
</li>
79+
);
80+
}
81+
});
82+
83+
export default BreadcrumbItem;

src/Input.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import deprecationWarning from './utils/deprecationWarning';
66
class Input extends InputBase {
77
render() {
88
if (this.props.type === 'static') {
9-
deprecationWarning('Input type=static', 'StaticText');
9+
deprecationWarning('Input type=static', 'FormControls.Static');
1010
return <FormControls.Static {...this.props} />;
1111
}
1212

src/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ export Button from './Button';
88
export ButtonGroup from './ButtonGroup';
99
export ButtonInput from './ButtonInput';
1010
export ButtonToolbar from './ButtonToolbar';
11+
export Breadcrumb from './Breadcrumb';
12+
export BreadcrumbItem from './BreadcrumbItem';
1113
export Carousel from './Carousel';
1214
export CarouselItem from './CarouselItem';
1315
export Col from './Col';

0 commit comments

Comments
 (0)