react-bootstrap
Version:
Bootstrap 3 components build with React
144 lines (109 loc) • 4.48 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 _utilsCustomPropTypes = require('./utils/CustomPropTypes');
var _utilsCustomPropTypes2 = _interopRequireDefault(_utilsCustomPropTypes);
var _utilsDeprecationWarning = require('./utils/deprecationWarning');
var _utilsDeprecationWarning2 = _interopRequireDefault(_utilsDeprecationWarning);
var _utilsCreateChainedFunction = require('./utils/createChainedFunction');
var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
var _utilsCreateContextWrapper = require('./utils/createContextWrapper');
var _utilsCreateContextWrapper2 = _interopRequireDefault(_utilsCreateContextWrapper);
var _OverlayMixin = require('./OverlayMixin');
function createHideDepreciationWrapper(hide) {
return function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
(0, _utilsDeprecationWarning2['default'])('The Modal prop `onRequestHide`', 'the `onHide` prop');
return hide.apply(undefined, args);
};
}
var ModalTrigger = _react2['default'].createClass({
displayName: 'ModalTrigger',
mixins: [_OverlayMixin.OverlayMixin],
propTypes: {
modal: _react2['default'].PropTypes.node.isRequired,
/**
* The DOM Node that the Component will render it's children into
*/
container: _utilsCustomPropTypes2['default'].mountable,
onBlur: _react2['default'].PropTypes.func,
onFocus: _react2['default'].PropTypes.func,
onMouseOut: _react2['default'].PropTypes.func,
onMouseOver: _react2['default'].PropTypes.func
},
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() {
var modal = this.props.modal;
if (!this.state.isOverlayShown) {
return _react2['default'].createElement('span', null);
}
return (0, _react.cloneElement)(modal, {
onHide: this.hide,
onRequestHide: createHideDepreciationWrapper(this.hide),
__isUsedInModalTrigger: true
});
},
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');
var DepreciatedModalTrigger = _react2['default'].createClass({
displayName: 'DepreciatedModalTrigger',
componentWillMount: function componentWillMount() {
(0, _utilsDeprecationWarning2['default'])('The `ModalTrigger` component', 'the `Modal` component directly', 'http://react-bootstrap.github.io/components.html#modals');
},
render: function render() {
return _react2['default'].createElement(ModalTrigger, this.props);
}
});
DepreciatedModalTrigger.withContext = ModalTrigger.withContext;
DepreciatedModalTrigger.ModalTrigger = ModalTrigger;
exports['default'] = DepreciatedModalTrigger;
module.exports = exports['default'];