react-modal-lm
Version:
The simplest and lighter React modal
61 lines (46 loc) • 3.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _iconClose = _interopRequireDefault(require("./icon-close.svg"));
const _excluded = ["isShowing", "toggle"];
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
const Backgroud = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n "]))),
Wrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n height: 75px;\n width: 500px;\n background-color: white;\n border: solid 1px black;\n border-radius: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 1001;\n display: flex;\n justify-content: center;\n "]))),
ModalDiv = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n "]))),
ImgBox = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n right: 1rem;\n top: 0.5rem;\n & :hover {\n cursor: pointer;\n transform: scale(1.5);\n }\n "])));
const Modal = _ref => {
let {
isShowing,
toggle
} = _ref,
props = _objectWithoutProperties(_ref, _excluded);
return isShowing ?
/*#__PURE__*/
// createPortal() allow to display a component in the DOM outside of its parent component.
_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Backgroud, {
onClick: toggle
}, /*#__PURE__*/_react.default.createElement(Wrapper, null, /*#__PURE__*/_react.default.createElement(ModalDiv, {
className: "modal"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "modal-header"
}, /*#__PURE__*/_react.default.createElement(ImgBox, null, /*#__PURE__*/_react.default.createElement("img", {
src: _iconClose.default,
type: "button",
className: "modal-close-button",
onClick: toggle,
alt: "close button"
}))), /*#__PURE__*/_react.default.createElement("div", {
className: "modal-body"
}, props.children))))), document.body) : null;
};
var _default = Modal;
exports.default = _default;