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