UNPKG

react-bootstrap

Version:

Bootstrap 3 components build with React

88 lines (71 loc) 2.19 kB
var React = require('react'); var joinClasses = require('./utils/joinClasses'); var classSet = require('./utils/classSet'); var BootstrapMixin = require('./BootstrapMixin'); var Button = React.createClass({displayName: "Button", mixins: [BootstrapMixin], propTypes: { active: React.PropTypes.bool, disabled: React.PropTypes.bool, block: React.PropTypes.bool, navItem: React.PropTypes.bool, navDropdown: React.PropTypes.bool, componentClass: React.PropTypes.node, href: React.PropTypes.string, target: React.PropTypes.string }, getDefaultProps: function () { return { bsClass: 'button', bsStyle: 'default', type: 'button' }; }, render: function () { var classes = this.props.navDropdown ? {} : this.getBsClassSet(); var renderFuncName; classes['active'] = this.props.active; classes['btn-block'] = this.props.block; if (this.props.navItem) { return this.renderNavItem(classes); } renderFuncName = this.props.href || this.props.target || this.props.navDropdown ? 'renderAnchor' : 'renderButton'; return this[renderFuncName](classes); }, renderAnchor: function (classes) { var Component = this.props.componentClass || 'a'; var href = this.props.href || '#'; classes['disabled'] = this.props.disabled; return ( React.createElement(Component, React.__spread({}, this.props, {href: href, className: joinClasses(this.props.className, classSet(classes)), role: "button"}), this.props.children ) ); }, renderButton: function (classes) { var Component = this.props.componentClass || 'button'; return ( React.createElement(Component, React.__spread({}, this.props, {className: joinClasses(this.props.className, classSet(classes))}), this.props.children ) ); }, renderNavItem: function (classes) { var liClasses = { active: this.props.active }; return ( React.createElement("li", {className: classSet(liClasses)}, this.renderAnchor(classes) ) ); } }); module.exports = Button;