@riophae/vue-treeselect
Version:
A multi-select component with nested options support for Vue.js
16 lines (14 loc) • 635 B
JavaScript
// from react-select
export function scrollIntoView($scrollingEl, $focusedEl) {
const scrollingReact = $scrollingEl.getBoundingClientRect()
const focusedRect = $focusedEl.getBoundingClientRect()
const overScroll = $focusedEl.offsetHeight / 3
if (focusedRect.bottom + overScroll > scrollingReact.bottom) {
$scrollingEl.scrollTop = Math.min(
$focusedEl.offsetTop + $focusedEl.clientHeight - $scrollingEl.offsetHeight + overScroll,
$scrollingEl.scrollHeight,
)
} else if (focusedRect.top - overScroll < scrollingReact.top) {
$scrollingEl.scrollTop = Math.max($focusedEl.offsetTop - overScroll, 0)
}
}