react-bootstrap
Version:
Bootstrap 3 components build with React
99 lines (76 loc) • 2.83 kB
JavaScript
'use strict';
var _objectWithoutProperties = require('babel-runtime/helpers/object-without-properties')['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 _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _BootstrapMixin = require('./BootstrapMixin');
var _BootstrapMixin2 = _interopRequireDefault(_BootstrapMixin);
var _SafeAnchor = require('./SafeAnchor');
var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
var NavItem = _react2['default'].createClass({
displayName: 'NavItem',
mixins: [_BootstrapMixin2['default']],
propTypes: {
linkId: _react2['default'].PropTypes.string,
onSelect: _react2['default'].PropTypes.func,
active: _react2['default'].PropTypes.bool,
disabled: _react2['default'].PropTypes.bool,
href: _react2['default'].PropTypes.string,
role: _react2['default'].PropTypes.string,
title: _react2['default'].PropTypes.node,
eventKey: _react2['default'].PropTypes.any,
target: _react2['default'].PropTypes.string,
'aria-controls': _react2['default'].PropTypes.string
},
render: function render() {
var _props = this.props;
var role = _props.role;
var linkId = _props.linkId;
var disabled = _props.disabled;
var active = _props.active;
var href = _props.href;
var title = _props.title;
var target = _props.target;
var children = _props.children;
var ariaControls = _props['aria-controls'];
var props = _objectWithoutProperties(_props, ['role', 'linkId', 'disabled', 'active', 'href', 'title', 'target', 'children', 'aria-controls']);
var classes = {
active: active,
disabled: disabled
};
var linkProps = {
role: role,
href: href,
title: title,
target: target,
id: linkId,
onClick: this.handleClick
};
if (!role && href === '#') {
linkProps.role = 'button';
}
return _react2['default'].createElement(
'li',
_extends({}, props, { role: 'presentation', className: _classnames2['default'](props.className, classes) }),
_react2['default'].createElement(
_SafeAnchor2['default'],
_extends({}, linkProps, { 'aria-selected': active, 'aria-controls': ariaControls }),
children
)
);
},
handleClick: function handleClick(e) {
if (this.props.onSelect) {
e.preventDefault();
if (!this.props.disabled) {
this.props.onSelect(this.props.eventKey, this.props.href, this.props.target);
}
}
}
});
exports['default'] = NavItem;
module.exports = exports['default'];