react-crossroads
Version:
Client side router for web applications built with React and utilizing the Flux architecture. The backing routing engine is CrossroadsJs.
54 lines (45 loc) • 1.23 kB
JavaScript
var ActiveState, Link, React, RouteTo, cx, isLeftClick, isModifiedEvent;
React = require('react/addons');
ActiveState = require('../mixins/ActiveState');
RouteTo = require('../mixins/RouteTo');
cx = React.addons.classSet;
isLeftClick = function(event) {
return event.button === 0;
};
isModifiedEvent = function(event) {
return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
};
Link = React.createClass({
displayName: 'Link',
mixins: [ActiveState, RouteTo],
propTypes: {
activeClassName: React.PropTypes.string
},
getDefaultProps: function() {
return {
activeClassName: 'active'
};
},
getInitialState: function() {
return {
isActive: false
};
},
updateActiveState: function() {
return this.setState({
isActive: this.isActive(this.props.to, this.props.params)
});
},
render: function() {
var classes;
classes = {};
classes[this.props.activeClassName] = this.state.isActive;
classes[this.props.className] = true;
return React.createElement(React.DOM.a, {
"className": cx(classes),
"href": this.getHref(),
"onClick": this.handleRouteTo
}, this.props.children);
}
});
module.exports = Link;