@gravity-ui/uikit
Version:
Gravity UI base styling and components
28 lines (27 loc) • 1.25 kB
JavaScript
'use client';
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Portal = Portal;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const React = tslib_1.__importStar(require("react"));
const react_1 = require("@floating-ui/react");
const hooks_1 = require("../../hooks/index.js");
const theme_1 = require("../theme/index.js");
const useThemeContext_1 = require("../theme/useThemeContext.js");
const cn_1 = require("../utils/cn.js");
require("./Portal.css");
const b = (0, cn_1.block)('portal');
function Portal({ container, children, disablePortal }) {
const defaultContainer = (0, hooks_1.usePortalContainer)();
const { scoped } = (0, useThemeContext_1.useThemeContext)();
const containerNode = container ?? defaultContainer;
if (disablePortal) {
return (0, jsx_runtime_1.jsx)(React.Fragment, { children: children });
}
if (containerNode) {
return ((0, jsx_runtime_1.jsx)(react_1.FloatingPortal, { root: containerNode, children: scoped ? ((0, jsx_runtime_1.jsx)(theme_1.ThemeProvider, { rootClassName: b('theme-wrapper'), scoped: true, children: children })) : (children) }));
}
return null;
}
//# sourceMappingURL=Portal.js.map