diff --git a/web_app/frontend/src/App.js b/web_app/frontend/src/App.js index b202a471..7aaf90ac 100644 --- a/web_app/frontend/src/App.js +++ b/web_app/frontend/src/App.js @@ -27,6 +27,35 @@ function App() { const [isLoadingTransformedData, setIsLoadingTransformedData] = useState(false); const [transformedDataError, setTransformedDataError] = useState(null); + // Close only the topmost open modal on Escape, preserving underlying modals + useEffect(() => { + const handleKeyDown = (e) => { + if (e.key === 'Escape') { + if (showDetailModal) { + setShowDetailModal(false); + return; + } + if (showWidgetsView) { + setShowWidgetsView(false); + return; + } + if (showTransformedDataModal) { + setShowTransformedDataModal(false); + return; + } + if (showResultsModal) { + setShowResultsModal(false); + return; + } + if (showAnalysisModal) { + setShowAnalysisModal(false); + } + } + }; + window.addEventListener('keydown', handleKeyDown); + return () => window.removeEventListener('keydown', handleKeyDown); + }, [showDetailModal, showWidgetsView, showTransformedDataModal, showResultsModal, showAnalysisModal]); + useEffect(() => { checkBackendStatus(); fetchCompanies();