@carbon/ibm-products
Version:
Carbon for IBM Products
33 lines (28 loc) • 1.13 kB
JavaScript
/**
* Copyright IBM Corp. 2020, 2025
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
;
require('../../../feature-flags.js');
var React = require('react');
var settings = require('../../../settings.js');
var reactDom = require('react-dom');
var index = require('../../../components/FeatureFlags/index.js');
const usePortalTarget = portalTargetIn => {
const enablePortalTarget = index.useFeatureFlag('default-portal-target-body');
const [portalTarget, setPortalTarget] = React.useState(null);
React.useEffect(() => {
if (portalTargetIn) {
setPortalTarget(portalTargetIn);
} else {
if (settings.pkg.isFeatureEnabled('default-portal-target-body') || enablePortalTarget) {
setPortalTarget(document.body);
}
}
}, [portalTargetIn, enablePortalTarget]);
const renderPortalUse = React.useCallback(children => portalTarget ? /*#__PURE__*/reactDom.createPortal(children, portalTarget) : children, [portalTarget]);
return renderPortalUse;
};
exports.usePortalTarget = usePortalTarget;