react-bootstrap
Version:
Bootstrap 3 components build with React
99 lines (75 loc) • 2.85 kB
JavaScript
;
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'];