UNPKG

react-modal-construction-kit

Version:
102 lines (84 loc) 2.61 kB
'use strict'; 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;