diff --git a/frontend/src/lib/components/Sidebar.svelte b/frontend/src/lib/components/Sidebar.svelte index 60dddc2..d5c6c88 100644 --- a/frontend/src/lib/components/Sidebar.svelte +++ b/frontend/src/lib/components/Sidebar.svelte @@ -66,6 +66,24 @@ }); let totalCount = $derived(tree.reduce((sum, n) => sum + n.count, 0)); + + // ArrowUp/Down 키보드 nav — 현재 펼쳐진 tree-row만 traverse + function handleTreeKeydown(e) { + if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp') return; + const root = e.currentTarget; + const rows = Array.from(root.querySelectorAll('[data-tree-row]')); + if (rows.length === 0) return; + const active = document.activeElement; + const idx = active ? rows.indexOf(active) : -1; + let next; + if (e.key === 'ArrowDown') { + next = idx < 0 ? 0 : Math.min(idx + 1, rows.length - 1); + } else { + next = idx <= 0 ? 0 : idx - 1; + } + e.preventDefault(); + rows[next].focus(); + }