From 1c9a9af11c66d751bd828d0a9c20353a4aa61931 Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 6 Oct 2025 17:16:20 +0800 Subject: [PATCH] fix: prevent modal cascade closing when ESC is pressed - Add state checks to prevent parent modal from closing when child modals (endpoint speed test or template wizard) are open - Update ESC key handler dependencies to track all modal states - Ensures only the topmost modal responds to ESC key --- src/components/ProviderForm.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/components/ProviderForm.tsx b/src/components/ProviderForm.tsx index a961d59..b5a495c 100644 --- a/src/components/ProviderForm.tsx +++ b/src/components/ProviderForm.tsx @@ -1345,13 +1345,26 @@ const ProviderForm: React.FC = ({ useEffect(() => { const onKeyDown = (e: KeyboardEvent) => { if (e.key === "Escape") { + // 若有子弹窗(端点测速/模板向导)处于打开状态,则交由子弹窗自身处理,避免级联关闭 + if ( + isEndpointModalOpen || + isCodexEndpointModalOpen || + isCodexTemplateModalOpen + ) { + return; + } e.preventDefault(); onClose(); } }; window.addEventListener("keydown", onKeyDown); return () => window.removeEventListener("keydown", onKeyDown); - }, [onClose]); + }, [ + onClose, + isEndpointModalOpen, + isCodexEndpointModalOpen, + isCodexTemplateModalOpen, + ]); return (