import React, { HTMLAttributes, useEffect, useState } from "react";
import ReactDOM from "react-dom";
interface OverlayProps {
innerRef?: React.Ref;
overlayRoot?: HTMLElement;
}
type AllOverlayProps = OverlayProps & HTMLAttributes;
const Overlay = ({
overlayRoot = document?.body,
...props
}: AllOverlayProps) => {
const [el] = useState(() => document.createElement("div"));
useEffect(() => {
if (overlayRoot) {
overlayRoot.appendChild(el);
}
return () => {
if (el && overlayRoot) {
overlayRoot.removeChild(el);
}
};
}, []);
const getContents = () => {
const { children, innerRef, ...other } = props;
return (
{children}
);
};
return ReactDOM.createPortal(getContents(), el);
};
export default React.forwardRef(
(props, ref) =>
);