UNPKG

react-bootstrap

Version:

Bootstrap 3 components build with React

60 lines (49 loc) 1.77 kB
define(function (require, exports, module) {var React = require('react'); var joinClasses = require('./utils/joinClasses'); var classSet = require('./utils/classSet'); var BootstrapMixin = require('./BootstrapMixin'); var Popover = React.createClass({displayName: "Popover", mixins: [BootstrapMixin], propTypes: { placement: React.PropTypes.oneOf(['top','right', 'bottom', 'left']), positionLeft: React.PropTypes.number, positionTop: React.PropTypes.number, arrowOffsetLeft: React.PropTypes.number, arrowOffsetTop: React.PropTypes.number, title: React.PropTypes.node }, getDefaultProps: function () { return { placement: 'right' }; }, render: function () { var classes = {}; classes['popover'] = true; classes[this.props.placement] = true; classes['in'] = this.props.positionLeft != null || this.props.positionTop != null; var style = {}; style['left'] = this.props.positionLeft; style['top'] = this.props.positionTop; style['display'] = 'block'; var arrowStyle = {}; arrowStyle['left'] = this.props.arrowOffsetLeft; arrowStyle['top'] = this.props.arrowOffsetTop; return ( React.createElement("div", React.__spread({}, this.props, {className: joinClasses(this.props.className, classSet(classes)), style: style, title: null}), React.createElement("div", {className: "arrow", style: arrowStyle}), this.props.title ? this.renderTitle() : null, React.createElement("div", {className: "popover-content"}, this.props.children ) ) ); }, renderTitle: function() { return ( React.createElement("h3", {className: "popover-title"}, this.props.title) ); } }); module.exports = Popover; });