react-modal-construction-kit
Version:
A flexible Modal component kit for React
102 lines (84 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getTransitionStyles = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _Portal = require('../Portal/Portal');
var _Portal2 = _interopRequireDefault(_Portal);
var _reactTransitionGroup = require('react-transition-group');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getDefaultStyle = function getDefaultStyle(transitionDuration) {
return {
position: 'fixed',
top: 0,
right: 0,
bottom: 0,
left: 0,
willChange: 'opacity',
backgroundColor: 'black',
transition: 'opacity ' + transitionDuration + 'ms ease-in-out'
};
};
var getTransitionStyles = exports.getTransitionStyles = function getTransitionStyles(opacity) {
return {
exited: {
display: 'none'
},
entering: {
opacity: 0.01
},
entered: {
opacity: opacity
},
exiting: {
opacity: 0.01
}
};
};
var Overlay = function Overlay(_ref) {
var isVisible = _ref.isVisible,
zIndex = _ref.zIndex,
transitionDuration = _ref.transitionDuration,
opacity = _ref.opacity,
onClick = _ref.onClick,
className = _ref.className;
var style = _extends({}, getDefaultStyle(transitionDuration), {
zIndex: zIndex || 500
});
return _react2.default.createElement(
_Portal2.default,
null,
_react2.default.createElement(
_reactTransitionGroup.Transition,
{
'in': isVisible,
timeout: transitionDuration },
function (state) {
return _react2.default.createElement('div', {
className: className,
onClick: onClick,
style: _extends({}, style, getTransitionStyles(opacity)[state]) });
}
)
);
};
Overlay.propTypes = {
isVisible: _propTypes2.default.bool.isRequired,
transitionDuration: _propTypes2.default.number,
zIndex: _propTypes2.default.number,
opacity: _propTypes2.default.number,
onClick: _propTypes2.default.func,
className: _propTypes2.default.string
};
Overlay.defaultProps = {
transitionDuration: 150,
zIndex: 500,
opacity: 0.7,
backgroundColor: 'black'
};
exports.default = Overlay;