@atlaskit/portal
Version:
A wrapper for rendering components in React portals.
22 lines • 954 B
JavaScript
import { portalParentClassName, portalParentSelector } from '../constants';
import { getBody } from './get-body';
var getPortalParent = function getPortalParent() {
var parentElement = document.querySelector(portalParentSelector);
if (!parentElement) {
var _getBody;
var parent = document.createElement('div');
parent.className = 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 = getBody()) === null || _getBody === void 0 || _getBody.appendChild(parent);
return parent;
}
return parentElement;
};
export var removePortalContainer = function removePortalContainer(container) {
var parent = getPortalParent();
if (parent.contains(container)) {
parent.removeChild(container);
}
};