UNPKG

@carbon/ibm-products

Version:

Carbon for IBM Products

31 lines (27 loc) 1.1 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. */ import '../../../feature-flags.js'; import { useState, useEffect, useCallback } from 'react'; import { pkg } from '../../../settings.js'; import { createPortal } from 'react-dom'; import { useFeatureFlag } from '../../../components/FeatureFlags/index.js'; const usePortalTarget = portalTargetIn => { const enablePortalTarget = useFeatureFlag('default-portal-target-body'); const [portalTarget, setPortalTarget] = useState(null); useEffect(() => { if (portalTargetIn) { setPortalTarget(portalTargetIn); } else { if (pkg.isFeatureEnabled('default-portal-target-body') || enablePortalTarget) { setPortalTarget(document.body); } } }, [portalTargetIn, enablePortalTarget]); const renderPortalUse = useCallback(children => portalTarget ? /*#__PURE__*/createPortal(children, portalTarget) : children, [portalTarget]); return renderPortalUse; }; export { usePortalTarget };