UNPKG

react-bootstrap

Version:

Bootstrap 3 components build with React

91 lines (76 loc) 2.42 kB
define(function (require, exports, module) {var React = require('react'); var joinClasses = require('./utils/joinClasses'); var BootstrapMixin = require('./BootstrapMixin'); var classSet = require('./utils/classSet'); var cloneWithProps = require('./utils/cloneWithProps'); var ValidComponentChildren = require('./utils/ValidComponentChildren'); var ListGroupItem = React.createClass({displayName: "ListGroupItem", mixins: [BootstrapMixin], propTypes: { bsStyle: React.PropTypes.oneOf(['danger','info','success','warning']), active: React.PropTypes.any, disabled: React.PropTypes.any, header: React.PropTypes.node, onClick: React.PropTypes.func, eventKey: React.PropTypes.any, href: React.PropTypes.string, target: React.PropTypes.string }, getDefaultProps: function () { return { bsClass: 'list-group-item' }; }, render: function () { var classes = this.getBsClassSet(); classes['active'] = this.props.active; classes['disabled'] = this.props.disabled; if (this.props.href || this.props.target || this.props.onClick) { return this.renderAnchor(classes); } else { return this.renderSpan(classes); } }, renderSpan: function (classes) { return ( React.createElement("span", React.__spread({}, this.props, {className: joinClasses(this.props.className, classSet(classes))}), this.props.header ? this.renderStructuredContent() : this.props.children ) ); }, renderAnchor: function (classes) { return ( React.createElement("a", React.__spread({}, this.props, {className: joinClasses(this.props.className, classSet(classes)) }), this.props.header ? this.renderStructuredContent() : this.props.children ) ); }, renderStructuredContent: function () { var header; if (React.isValidElement(this.props.header)) { header = cloneWithProps(this.props.header, { className: 'list-group-item-heading' }); } else { header = ( React.createElement("h4", {className: "list-group-item-heading"}, this.props.header ) ); } var content = ( React.createElement("p", {className: "list-group-item-text"}, this.props.children ) ); return { header: header, content: content }; } }); module.exports = ListGroupItem; });