diff --git a/frontend-modern/src/components/shared/UnifiedNodeSelector.tsx b/frontend-modern/src/components/shared/UnifiedNodeSelector.tsx index 02104cfe0..26c3ac67e 100644 --- a/frontend-modern/src/components/shared/UnifiedNodeSelector.tsx +++ b/frontend-modern/src/components/shared/UnifiedNodeSelector.tsx @@ -1,4 +1,4 @@ -import { Component, createSignal, createEffect, createMemo } from 'solid-js'; +import { Component, createSignal, createEffect, createMemo, onMount, onCleanup } from 'solid-js'; import { useWebSocket } from '@/App'; import { NodeSummaryTable } from './NodeSummaryTable'; @@ -18,6 +18,21 @@ export const UnifiedNodeSelector: Component = (props) const { state } = useWebSocket(); const [selectedNode, setSelectedNode] = createSignal(null); + // Handle ESC key to deselect node + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape' && selectedNode()) { + setSelectedNode(null); + props.onNodeSelect?.(null, null); + } + }; + + onMount(() => { + document.addEventListener('keydown', handleKeyDown); + }); + + onCleanup(() => { + document.removeEventListener('keydown', handleKeyDown); + }); // Reset selection when tab changes createEffect(() => {