diff --git a/app/components/ReadmeTocDropdown.vue b/app/components/ReadmeTocDropdown.vue index 66f92d08e5..cafb7f1ea9 100644 --- a/app/components/ReadmeTocDropdown.vue +++ b/app/components/ReadmeTocDropdown.vue @@ -139,6 +139,27 @@ function handleKeydown(event: KeyboardEvent) { break } } + +const itemScrollIntoView = (index: number) => { + const item = props.toc[index] + if (!item) return + const el = document.getElementById(`${listboxId}-${item.id}`) + if (el) { + el.scrollIntoView({ block: 'center' }) + } +} + +watch( + isOpen, + open => { + if (open && highlightedIndex.value >= 0) { + itemScrollIntoView(highlightedIndex.value) + } + }, + { + flush: 'post', + }, +)