UNPKG

react-bootstrap

Version:

Bootstrap 3 components build with React

99 lines (75 loc) 2.85 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _OverlayMixin = require('./OverlayMixin'); var _OverlayMixin2 = _interopRequireDefault(_OverlayMixin); var _utilsCreateChainedFunction = require('./utils/createChainedFunction'); var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction); var _utilsCreateContextWrapper = require('./utils/createContextWrapper'); var _utilsCreateContextWrapper2 = _interopRequireDefault(_utilsCreateContextWrapper); var ModalTrigger = _react2['default'].createClass({ displayName: 'ModalTrigger', mixins: [_OverlayMixin2['default']], propTypes: { modal: _react2['default'].PropTypes.node.isRequired }, getInitialState: function getInitialState() { return { isOverlayShown: false }; }, show: function show() { this.setState({ isOverlayShown: true }); }, hide: function hide() { this.setState({ isOverlayShown: false }); }, toggle: function toggle() { this.setState({ isOverlayShown: !this.state.isOverlayShown }); }, renderOverlay: function renderOverlay() { if (!this.state.isOverlayShown) { return _react2['default'].createElement('span', null); } return (0, _react.cloneElement)(this.props.modal, { onRequestHide: this.hide }); }, render: function render() { var child = _react2['default'].Children.only(this.props.children); var props = {}; props.onClick = (0, _utilsCreateChainedFunction2['default'])(child.props.onClick, this.toggle); props.onMouseOver = (0, _utilsCreateChainedFunction2['default'])(child.props.onMouseOver, this.props.onMouseOver); props.onMouseOut = (0, _utilsCreateChainedFunction2['default'])(child.props.onMouseOut, this.props.onMouseOut); props.onFocus = (0, _utilsCreateChainedFunction2['default'])(child.props.onFocus, this.props.onFocus); props.onBlur = (0, _utilsCreateChainedFunction2['default'])(child.props.onBlur, this.props.onBlur); return (0, _react.cloneElement)(child, props); } }); /** * Creates a new ModalTrigger class that forwards the relevant context * * This static method should only be called at the module level, instead of in * e.g. a render() method, because it's expensive to create new classes. * * For example, you would want to have: * * > export default ModalTrigger.withContext({ * > myContextKey: React.PropTypes.object * > }); * * and import this when needed. */ ModalTrigger.withContext = (0, _utilsCreateContextWrapper2['default'])(ModalTrigger, 'modal'); exports['default'] = ModalTrigger; module.exports = exports['default'];