@shopify/polaris
Version:
Shopify’s product component library
31 lines (27 loc) • 911 B
JavaScript
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 };