import { createPortal } from 'react-dom'; import React, { useMemo, useEffect } from 'react'; import { Modal as ModalComponent, ModalBackdrop } from '@rocket.chat/fuselage'; const getModalRoot = () => { const modalRoot = document.getElementById('modal-root'); if (modalRoot) { return modalRoot; } const newElement = document.createElement('div'); newElement.id = 'modal-root'; document.body.appendChild(newElement); return newElement; }; function ModalPortal({ children = '' }) { const modalRoot = useMemo(getModalRoot, []); const node = useMemo(() => document.createElement('div'), []); useEffect(() => { modalRoot.appendChild(node); return () => modalRoot.removeChild(node); }, [node]); return createPortal(
{children}
, node, ); } export function Modal({ ...props }) { return ; } Modal.Header = ModalComponent.Header; Modal.Footer = ModalComponent.Footer; Modal.Content = ModalComponent.Content; Modal.Title = ModalComponent.Title; Modal.Close = ModalComponent.Close;