UNPKG

react-bootstrap

Version:

Bootstrap 3 components build with React

62 lines (51 loc) 1.16 kB
var React = require('react'); var OverlayMixin = require('./OverlayMixin'); var cloneWithProps = require('./utils/cloneWithProps'); var createChainedFunction = require('./utils/createChainedFunction'); var ModalTrigger = React.createClass({ mixins: [OverlayMixin], propTypes: { modal: React.PropTypes.node.isRequired }, getInitialState: function () { return { isOverlayShown: false }; }, show: function () { this.setState({ isOverlayShown: true }); }, hide: function () { this.setState({ isOverlayShown: false }); }, toggle: function () { this.setState({ isOverlayShown: !this.state.isOverlayShown }); }, renderOverlay: function () { if (!this.state.isOverlayShown) { return <span />; } return cloneWithProps( this.props.modal, { onRequestHide: this.hide } ); }, render: function () { var child = React.Children.only(this.props.children); return cloneWithProps( child, { onClick: createChainedFunction(child.props.onClick, this.toggle) } ); } }); module.exports = ModalTrigger;