diff --git a/.changeset/fast-jokes-lay.md b/.changeset/fast-jokes-lay.md new file mode 100644 index 00000000..43339aaa --- /dev/null +++ b/.changeset/fast-jokes-lay.md @@ -0,0 +1,5 @@ +--- +"@hyperdx/app": patch +--- + +various improvements to search result drawers and nesting logic diff --git a/packages/app/src/components/ContextSidePanel.tsx b/packages/app/src/components/ContextSidePanel.tsx index f23ba7be..c51153f7 100644 --- a/packages/app/src/components/ContextSidePanel.tsx +++ b/packages/app/src/components/ContextSidePanel.tsx @@ -44,7 +44,7 @@ interface ContextSubpanelProps { } // Custom hook to manage nested panel state -function useNestedPanelState(isNested: boolean) { +export function useNestedPanelState(isNested?: boolean) { // Query state (URL-based) for root level const queryState = { contextRowId: useQueryState('contextRowId', parseAsString), diff --git a/packages/app/src/components/DBRowSidePanel.tsx b/packages/app/src/components/DBRowSidePanel.tsx index bda4170e..3fd6e72a 100644 --- a/packages/app/src/components/DBRowSidePanel.tsx +++ b/packages/app/src/components/DBRowSidePanel.tsx @@ -559,7 +559,7 @@ export default function DBRowSidePanelErrorBoundary({ { if (!subDrawerOpen) { _onClose(); diff --git a/packages/app/src/components/DBSqlRowTableWithSidebar.tsx b/packages/app/src/components/DBSqlRowTableWithSidebar.tsx index 3f0f61cb..67d10f63 100644 --- a/packages/app/src/components/DBSqlRowTableWithSidebar.tsx +++ b/packages/app/src/components/DBSqlRowTableWithSidebar.tsx @@ -11,6 +11,7 @@ import { useSource } from '@/source'; import TabBar from '@/TabBar'; import { useLocalStorage } from '@/utils'; +import { useNestedPanelState } from './ContextSidePanel'; import { RowDataPanel } from './DBRowDataPanel'; import { RowOverviewPanel } from './DBRowOverviewPanel'; import DBRowSidePanel, { @@ -60,6 +61,7 @@ export default function DBSqlRowTableWithSideBar({ const { data: sourceData } = useSource({ id: sourceId }); const [rowId, setRowId] = useQueryState('rowWhere'); const [rowSource, setRowSource] = useQueryState('rowSource'); + const { setContextRowId, setContextRowSource } = useNestedPanelState(); const onOpenSidebar = useCallback( (rowWhere: string) => { @@ -73,7 +75,19 @@ export default function DBSqlRowTableWithSideBar({ const onCloseSidebar = useCallback(() => { setRowId(null); setRowSource(null); - }, [setRowId, setRowSource]); + // When closing the main drawer, clear the nested panel state + // this ensures that re-opening the main drawer will not open the nested panel + if (!isNestedPanel) { + setContextRowId(null); + setContextRowSource(null); + } + }, [ + setRowId, + setRowSource, + isNestedPanel, + setContextRowId, + setContextRowSource, + ]); const renderRowDetails = useCallback( (r: { [key: string]: unknown }) => { if (!sourceData) {