diff --git a/src/utils/scroll-into-view.js b/src/utils/scroll-into-view.js new file mode 100644 index 000000000..ae2234b48 --- /dev/null +++ b/src/utils/scroll-into-view.js @@ -0,0 +1,21 @@ +import Vue from 'vue'; + +export default function scrollIntoView(container, selected) { + if (Vue.prototype.$isServer) return; + + if (!selected) { + container.scrollTop = 0; + return; + } + + const top = selected.offsetTop; + const bottom = selected.offsetTop + selected.offsetHeight; + const viewRectTop = container.scrollTop; + const viewRectBottom = viewRectTop + container.clientHeight; + + if (top < viewRectTop) { + container.scrollTop = top; + } else if (bottom > viewRectBottom) { + container.scrollTop = bottom - container.clientHeight; + } +}