UNPKG

1.05 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.default = scrollIntoView;
5
6var _vue = require('vue');
7
8var _vue2 = _interopRequireDefault(_vue);
9
10function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12function scrollIntoView(container, selected) {
13 if (_vue2.default.prototype.$isServer) return;
14
15 if (!selected) {
16 container.scrollTop = 0;
17 return;
18 }
19
20 var offsetParents = [];
21 var pointer = selected.offsetParent;
22 while (pointer && container !== pointer && container.contains(pointer)) {
23 offsetParents.push(pointer);
24 pointer = pointer.offsetParent;
25 }
26 var top = selected.offsetTop + offsetParents.reduce(function (prev, curr) {
27 return prev + curr.offsetTop;
28 }, 0);
29 var bottom = top + selected.offsetHeight;
30 var viewRectTop = container.scrollTop;
31 var viewRectBottom = viewRectTop + container.clientHeight;
32
33 if (top < viewRectTop) {
34 container.scrollTop = top;
35 } else if (bottom > viewRectBottom) {
36 container.scrollTop = bottom - container.clientHeight;
37 }
38}
\No newline at end of file