UNPKG

@carbon/ibm-products

Version:

Carbon for IBM Products

33 lines (28 loc) 1.13 kB
/** * 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. */ 'use strict'; 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;