@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
39 lines (32 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var reactDom = require('react-dom');
var hooks = require('@mantine/hooks');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e['default'] : e; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
function Portal({ children, zIndex = 1, target, className }) {
const [mounted, setMounted] = React.useState(false);
const elementRef = React.useRef();
hooks.useIsomorphicEffect(() => {
setMounted(true);
elementRef.current = target || document.createElement("div");
if (!target) {
document.body.appendChild(elementRef.current);
}
return () => {
!target && document.body.removeChild(elementRef.current);
};
}, [target]);
if (!mounted) {
return null;
}
return reactDom.createPortal(/* @__PURE__ */ React__default.createElement("div", {
className,
style: { position: "relative", zIndex },
"data-mantine-portal": true
}, children), elementRef.current);
}
Portal.displayName = "@mantine/core/Portal";
exports.Portal = Portal;
//# sourceMappingURL=Portal.js.map