From 4394311c5bed04250e3b7e2e01ebe87da8b2e3d6 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:35:19 +0200 Subject: [PATCH 01/10] Added ButtonLink wrapper --- src/ButtonLink.js | 27 +++++++++++++++++++++++++++ src/index.js | 1 + 2 files changed, 28 insertions(+) create mode 100644 src/ButtonLink.js diff --git a/src/ButtonLink.js b/src/ButtonLink.js new file mode 100644 index 0000000..0a71a95 --- /dev/null +++ b/src/ButtonLink.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; + +import LinkContainer from './LinkContainer'; + +const propTypes = { + children: React.PropTypes.node, +}; + +// Don't use a stateless function, to allow users to set a ref. +/* eslint-disable react/prefer-stateless-function */ +class ButtonLink extends React.Component { + render() { + return ( + + + + ); + } +} +/* eslint-enable react/prefer-stateless-function */ + +ButtonLink.propTypes = propTypes; + +export default ButtonLink; diff --git a/src/index.js b/src/index.js index 5fd05e4..e37d62f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,2 +1,3 @@ export IndexLinkContainer from './IndexLinkContainer'; export LinkContainer from './LinkContainer'; +export ButtonLink from './ButtonLink'; From 351416cafe07a4628041309313adb46e86116ba3 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:35:44 +0200 Subject: [PATCH 02/10] Updated visual test to use ButtonLink --- test/visual/ButtonVisual.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/test/visual/ButtonVisual.js b/test/visual/ButtonVisual.js index da54a81..bf43dbe 100644 --- a/test/visual/ButtonVisual.js +++ b/test/visual/ButtonVisual.js @@ -3,7 +3,7 @@ import ButtonToolbar from 'react-bootstrap/lib/ButtonToolbar'; import Button from 'react-bootstrap/lib/Button'; import { Link } from 'react-router'; -import LinkContainer from '../../src/LinkContainer'; +import ButtonLink from '../../src/ButtonLink'; export default () => (
@@ -20,26 +20,14 @@ export default () => ( -

LinkContainer

+

ButtonLink

- - - - - - - - - - - - - - - - - - + Default + Success + Info + Warning + Danger + Link
); From 1be93d25baa75b0625288e36d7e0557d98a9e9f9 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:36:40 +0200 Subject: [PATCH 03/10] Added NavItemLink wrapper --- src/NavItemLink.js | 27 +++++++++++++++++++++++++++ src/index.js | 1 + 2 files changed, 28 insertions(+) create mode 100644 src/NavItemLink.js diff --git a/src/NavItemLink.js b/src/NavItemLink.js new file mode 100644 index 0000000..cc9409b --- /dev/null +++ b/src/NavItemLink.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { NavItem } from 'react-bootstrap'; + +import LinkContainer from './LinkContainer'; + +const propTypes = { + children: React.PropTypes.node, +}; + +// Don't use a stateless function, to allow users to set a ref. +/* eslint-disable react/prefer-stateless-function */ +class NavItemLink extends React.Component { + render() { + return ( + + + {this.props.children} + + + ); + } +} +/* eslint-enable react/prefer-stateless-function */ + +NavItemLink.propTypes = propTypes; + +export default NavItemLink; diff --git a/src/index.js b/src/index.js index e37d62f..7379b85 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,4 @@ export IndexLinkContainer from './IndexLinkContainer'; export LinkContainer from './LinkContainer'; export ButtonLink from './ButtonLink'; +export NavItemLink from './NavItemLink'; From af5e8b68fc23fd3aa1b7814500158f2ab88db3d7 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:37:10 +0200 Subject: [PATCH 04/10] Update visual test to use NavItemLink --- test/visual/NavItemVisual.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/test/visual/NavItemVisual.js b/test/visual/NavItemVisual.js index 3b957b7..3f6c17f 100644 --- a/test/visual/NavItemVisual.js +++ b/test/visual/NavItemVisual.js @@ -3,7 +3,7 @@ import Nav from 'react-bootstrap/lib/Nav'; import NavItem from 'react-bootstrap/lib/NavItem'; import { Link } from 'react-router'; -import LinkContainer from '../../src/LinkContainer'; +import NavItemLink from '../../src/NavItemLink'; export default () => (
@@ -17,17 +17,11 @@ export default () => ( NavItem 3 content -

LinkContainer

+

NavItemLink

); From 6efce56d450468324e1d4f9bf7d53b0325aa4781 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:37:33 +0200 Subject: [PATCH 05/10] Added MenuItem wrapper --- src/MenuItemLink.js | 27 +++++++++++++++++++++++++++ src/index.js | 1 + 2 files changed, 28 insertions(+) create mode 100644 src/MenuItemLink.js diff --git a/src/MenuItemLink.js b/src/MenuItemLink.js new file mode 100644 index 0000000..16773a4 --- /dev/null +++ b/src/MenuItemLink.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { MenuItem } from 'react-bootstrap'; + +import LinkContainer from './LinkContainer'; + +const propTypes = { + children: React.PropTypes.node, +}; + +// Don't use a stateless function, to allow users to set a ref. +/* eslint-disable react/prefer-stateless-function */ +class MenuItemLink extends React.Component { + render() { + return ( + + + {this.props.children} + + + ); + } +} +/* eslint-enable react/prefer-stateless-function */ + +MenuItemLink.propTypes = propTypes + +export default MenuItemLink; diff --git a/src/index.js b/src/index.js index 7379b85..0b129e7 100644 --- a/src/index.js +++ b/src/index.js @@ -2,3 +2,4 @@ export IndexLinkContainer from './IndexLinkContainer'; export LinkContainer from './LinkContainer'; export ButtonLink from './ButtonLink'; export NavItemLink from './NavItemLink'; +export MenuItemLink from './MenuItemLink'; From 20b0ffbeb137279c2ff6d265d04aa77033c434ed Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:38:10 +0200 Subject: [PATCH 06/10] Updated visual test to use MenuItemLink --- test/visual/MenuItemVisual.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/test/visual/MenuItemVisual.js b/test/visual/MenuItemVisual.js index 0359f40..64f50b8 100644 --- a/test/visual/MenuItemVisual.js +++ b/test/visual/MenuItemVisual.js @@ -4,7 +4,7 @@ import MenuItem from 'react-bootstrap/lib/MenuItem'; import SplitButton from 'react-bootstrap/lib/SplitButton'; import { Link } from 'react-router'; -import LinkContainer from '../../src/LinkContainer'; +import MenuItemLink from '../../src/MenuItemLink'; export default () => (
@@ -22,22 +22,14 @@ export default () => ( -

LinkContainer

+

MenuItemLink

- - Action - - - Active action - - - Another action - + Action + Active action + Another action - - Separated link - + Separated link
From bb2dc9008041e16bfcc9ee9b7b138f7e5cf35fea Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:38:39 +0200 Subject: [PATCH 07/10] Added ListGroupItemLink wrapper --- src/ListGroupItemLink.js | 27 +++++++++++++++++++++++++++ src/index.js | 1 + 2 files changed, 28 insertions(+) create mode 100644 src/ListGroupItemLink.js diff --git a/src/ListGroupItemLink.js b/src/ListGroupItemLink.js new file mode 100644 index 0000000..44ce6b5 --- /dev/null +++ b/src/ListGroupItemLink.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { ListGroupItem } from 'react-bootstrap'; + +import LinkContainer from './LinkContainer'; + +const propTypes = { + children: React.PropTypes.node, +}; + +// Don't use a stateless function, to allow users to set a ref. +/* eslint-disable react/prefer-stateless-function */ +class ListGroupItemLink extends React.Component { + render() { + return ( + + + {this.props.children} + + + ); + } +} +/* eslint-enable react/prefer-stateless-function */ + +ListGroupItemLink.propTypes = propTypes; + +export default ListGroupItemLink; diff --git a/src/index.js b/src/index.js index 0b129e7..f234d8d 100644 --- a/src/index.js +++ b/src/index.js @@ -3,3 +3,4 @@ export LinkContainer from './LinkContainer'; export ButtonLink from './ButtonLink'; export NavItemLink from './NavItemLink'; export MenuItemLink from './MenuItemLink'; +export ListGroupItemLink from './ListGroupItemLink'; From 6130ad3ed967eed3eda2b5ef03941e934136135f Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:39:08 +0200 Subject: [PATCH 08/10] Updated visual test to use ListGroupItemLink --- test/visual/ListGroupItemVisual.js | 46 +++++++++++------------------- 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/test/visual/ListGroupItemVisual.js b/test/visual/ListGroupItemVisual.js index 75f2ff1..dbf5f1f 100644 --- a/test/visual/ListGroupItemVisual.js +++ b/test/visual/ListGroupItemVisual.js @@ -3,7 +3,7 @@ import ListGroup from 'react-bootstrap/lib/ListGroup'; import ListGroupItem from 'react-bootstrap/lib/ListGroupItem'; import { Link } from 'react-router'; -import LinkContainer from '../../src/LinkContainer'; +import ListGroupItemLink from '../../src/ListGroupItemLink'; export default () => (
@@ -35,43 +35,29 @@ export default () => ( -

LinkContainer

+

ListGroupItemLink

- - + ListGroupItem 1 content - - - - + + ListGroupItem 2 content - - - - + + ListGroupItem 3 content disabled - - - - + + ListGroupItem 4 content success - - - - + + ListGroupItem 5 content info - - - - + + ListGroupItem 6 content warning - - - - + + ListGroupItem 7 content danger - - +
); From 9fd0b7034f29bf0be3aa83ba71e8c80cf95ee4d5 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:42:25 +0200 Subject: [PATCH 09/10] Added missing semicolon in MenuItemLink --- src/MenuItemLink.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MenuItemLink.js b/src/MenuItemLink.js index 16773a4..efafd12 100644 --- a/src/MenuItemLink.js +++ b/src/MenuItemLink.js @@ -22,6 +22,6 @@ class MenuItemLink extends React.Component { } /* eslint-enable react/prefer-stateless-function */ -MenuItemLink.propTypes = propTypes +MenuItemLink.propTypes = propTypes; export default MenuItemLink; From bf28250a2f909d2b4fff76acdcdaa7b9b2c3e7a4 Mon Sep 17 00:00:00 2001 From: Lionel Ringenbach Date: Wed, 8 Jun 2016 10:59:22 +0200 Subject: [PATCH 10/10] Updated readme with pre-built components section --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 2b5bb34..fc54cf8 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,23 @@ Wrap your React-Bootstrap element in a `` to make it behave like For the equivalent of ``, use ``. +## Pre-built components + +Common navigation components already have a prebuilt version to make usage easier. For example `ButtonLink`: + +```js + +``` + +Just add the property `onlyActiveOnIndex` to make it behave like a React Router ``. + +Here is a list of the pre-built components: +- `ButtonLink` +- `NavItemLink` +- `MenuItemLink` +- `ListGroupItemLink` + + ## Installation ```