import { useEffect, useRef, type ReactNode } from "react"; import { createPortal } from "react-dom"; export function InspectorModal({ title, onClose, children }: { title: string; onClose: () => void; children: ReactNode }) { const dialogRef = useRef(null); useEffect(() => { const dialog = dialogRef.current!; const opener = document.activeElement instanceof HTMLElement ? document.activeElement : null; const overflow = document.body.style.overflow; document.body.style.overflow = "hidden"; dialog.showModal(); return () => { dialog.close(); document.body.style.overflow = overflow; opener?.focus({ preventScroll: true }); }; }, []); return createPortal( { event.preventDefault(); onClose(); }} onClick={event => { if (event.target !== event.currentTarget) return; const rect = event.currentTarget.getBoundingClientRect(); if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) onClose(); }}>

Questionnaire inspector

{title}

{children}
, document.body ); }