Preview: portal-utils.js
Size: 1.02 KB
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/@adminjs/design-system/build/utils/portal-utils.js
/* eslint-disable arrow-body-style */
import React, { useEffect, useState } from 'react';
import ReactDOM from 'react-dom';
import generateId from "./generate-id.js";
// TODO: handle iframe case with ref.current.ownerDocument
export const PortalUtils = {
appendElement: element => {
window.document.body.appendChild(element);
},
removeElement: id => {
const domElement = window.document.getElementById(id);
domElement?.remove();
},
createPortalForKey: function createPortalForKey(idKey, Component) {
const Portal = props => {
const [id] = useState(generateId(idKey));
const [portalElement] = useState(window.document.createElement('div'));
useEffect(() => {
portalElement.id = id;
PortalUtils.appendElement(portalElement);
return () => {
PortalUtils.removeElement(id);
};
});
return /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(Component, props), portalElement);
};
return Portal;
}
};
export default PortalUtils;
Directory Contents
Dirs: 0 × Files: 21