From 321200295d130e8d6028d4632ebffa6f60a20384 Mon Sep 17 00:00:00 2001 From: Jason Quense Date: Mon, 25 Jul 2016 10:30:06 -0400 Subject: [PATCH 1/2] Support router action type --- src/LinkContainer.js | 58 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/src/LinkContainer.js b/src/LinkContainer.js index c28729d..3225df0 100644 --- a/src/LinkContainer.js +++ b/src/LinkContainer.js @@ -1,7 +1,27 @@ // This is largely taken from react-router/lib/Link. import React from 'react'; -import Link from 'react-router/lib/Link'; + +function isLeftClickEvent(event) { + return event.button === 0; +} + +function isModifiedEvent(event) { + return !!( + event.metaKey || + event.altKey || + event.ctrlKey || + event.shiftKey + ); +} + +function createLocationDescriptor(to, query, hash, state) { + if (query || hash || state) { + return { pathname: to, query, hash, state }; + } + + return to; +} const propTypes = { onlyActiveOnIndex: React.PropTypes.bool.isRequired, @@ -9,8 +29,16 @@ const propTypes = { React.PropTypes.string, React.PropTypes.object, ]).isRequired, + query: React.PropTypes.string, + hash: React.PropTypes.string, + state: React.PropTypes.object, + action: React.PropTypes.oneOf([ + 'push', + 'replace', + ]).isRequired, onClick: React.PropTypes.func, active: React.PropTypes.bool, + target: React.PropTypes.string, children: React.PropTypes.node.isRequired, }; @@ -20,15 +48,37 @@ const contextTypes = { const defaultProps = { onlyActiveOnIndex: false, + action: 'push', }; class LinkContainer extends React.Component { onClick = (event) => { - if (this.props.children.props.onClick) { - this.props.children.props.onClick(event); + const { + to, query, hash, state, children, onClick, target, action, + } = this.props; + + if (children.props.onClick) { + children.props.onClick(event); + } + + if (onClick) { + onClick(event); } - Link.prototype.handleClick.call(this, event); + if ( + target || + event.defaultPrevented || + isModifiedEvent(event) || + !isLeftClickEvent(event) + ) { + return; + } + + event.preventDefault(); + + this.context.router[action]( + createLocationDescriptor(to, query, hash, state) + ); }; render() { From 68a636cf98bf419e0fbd49669d036cd17b50da49 Mon Sep 17 00:00:00 2001 From: Jason Quense Date: Mon, 25 Jul 2016 11:18:22 -0400 Subject: [PATCH 2/2] rm RR peer --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index c7166ed..ed50ac6 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,7 @@ }, "homepage": "https://github.com/react-bootstrap/react-router-bootstrap", "peerDependencies": { - "react": ">=0.14.0", - "react-router": ">=2.0.0" + "react": ">=0.14.0" }, "devDependencies": { "babel-cli": "^6.5.2",