UNPKG

@shopify/polaris

Version:

Shopify’s product component library

31 lines (27 loc) 911 B
import React$1, { useEffect } from 'react'; import { useUniqueId } from '../../utilities/unique-id/hooks.js'; import { usePortalsManager } from '../../utilities/portals/hooks.js'; import { createPortal } from 'react-dom'; import { useIsMountedRef as useIsMountedRef$1 } from '../../utilities/use-is-mounted-ref.js'; function Portal({ children, idPrefix = '', onPortalCreated = noop }) { const isMounted = useIsMountedRef$1(); const { container } = usePortalsManager(); const uniqueId = useUniqueId('portal'); const portalId = idPrefix !== '' ? `${idPrefix}-${uniqueId}` : uniqueId; useEffect(() => { if (isMounted) { onPortalCreated(); } }, [onPortalCreated, isMounted]); return container ? /*#__PURE__*/createPortal( /*#__PURE__*/React$1.createElement("div", { "data-portal-id": portalId }, children), container) : null; } function noop() {} export { Portal };