Skip to content

Commit f18f3d3

Browse files
committed
make sure highlighted item in search result is scrolled into view when using keyboard to navigate
1 parent dfa57f5 commit f18f3d3

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/js/vendor/docsearch.bundle.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var autocomplete = eventEmitter.autocomplete
2424
autocomplete.setVal()
2525
eventEmitter.on('autocomplete:selected', disableClose)
26+
controller.input.data('aaAutocomplete').dropdown._ensureVisible = ensureVisible
2627
searchForm.addEventListener('click', confineEvent)
2728
document.documentElement.addEventListener('click', resetSearch.bind(autocomplete))
2829
if (controller.input.attr('autofocus') != null) controller.input.focus()
@@ -42,6 +43,22 @@
4243
}
4344
}
4445

46+
function ensureVisible (el) {
47+
var item = el.get(0)
48+
var container = item
49+
while ((container = container.parentNode) && container !== document.documentElement) {
50+
if (window.getComputedStyle(container).overflowY === 'auto') break
51+
}
52+
if (!container || container.scrollHeight === container.offsetHeight) return
53+
var delta
54+
if ((delta = 15 + item.offsetTop + item.offsetHeight - (container.offsetHeight + container.scrollTop)) > 0) {
55+
container.scrollTop += delta
56+
}
57+
if ((delta = item.offsetTop - container.scrollTop) < 0) {
58+
container.scrollTop += delta
59+
}
60+
}
61+
4562
function resetSearch () {
4663
this.close()
4764
this.setVal()

0 commit comments

Comments
 (0)