react-bootstrap
Version:
Bootstrap 3 components build with React
60 lines (41 loc) • 1.76 kB
JavaScript
;
var _inherits = require('babel-runtime/helpers/inherits')['default'];
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
var _extends = require('babel-runtime/helpers/extends')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _utilsCreateChainedFunction = require('./utils/createChainedFunction');
/**
* Note: This is intended as a stop-gap for accessibility concerns that the
* Bootstrap CSS does not address as they have styled anchors and not buttons
* in many cases.
*/
var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
var SafeAnchor = (function (_React$Component) {
_inherits(SafeAnchor, _React$Component);
function SafeAnchor(props) {
_classCallCheck(this, SafeAnchor);
_React$Component.call(this, props);
this.handleClick = this.handleClick.bind(this);
}
SafeAnchor.prototype.handleClick = function handleClick(event) {
if (this.props.href === undefined) {
event.preventDefault();
}
};
SafeAnchor.prototype.render = function render() {
return _react2['default'].createElement('a', _extends({ role: this.props.href ? undefined : 'button'
}, this.props, {
onClick: _utilsCreateChainedFunction2['default'](this.props.onClick, this.handleClick),
href: this.props.href || '' }));
};
return SafeAnchor;
})(_react2['default'].Component);
exports['default'] = SafeAnchor;
SafeAnchor.propTypes = {
href: _react2['default'].PropTypes.string,
onClick: _react2['default'].PropTypes.func
};
module.exports = exports['default'];