@atlaskit/portal
Version:
A wrapper for rendering components in React portals.
27 lines (26 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.appendPortalContainerIfNotAppended = void 0;
var _constants = require("../constants");
var _getBody2 = require("./get-body");
var getPortalParent = function getPortalParent() {
var parentElement = document.querySelector(_constants.portalParentSelector);
if (!parentElement) {
var _getBody;
var parent = document.createElement('div');
parent.className = _constants.portalParentClassName;
// we are setting display to flex because we want each portal to create a new stacking context
// See https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
parent.style.display = 'flex';
(_getBody = (0, _getBody2.getBody)()) === null || _getBody === void 0 || _getBody.appendChild(parent);
return parent;
}
return parentElement;
};
var appendPortalContainerIfNotAppended = exports.appendPortalContainerIfNotAppended = function appendPortalContainerIfNotAppended(container) {
if (!container.parentElement) {
getPortalParent().appendChild(container);
}
};