|
@@ -8,8 +8,14 @@ export default function scrollIntoView(container, selected) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- const top = selected.offsetTop;
|
|
|
- const bottom = selected.offsetTop + selected.offsetHeight;
|
|
|
+ const offsetParents = [];
|
|
|
+ let pointer = selected.offsetParent;
|
|
|
+ while (pointer && container !== pointer && container.contains(pointer)) {
|
|
|
+ offsetParents.push(pointer);
|
|
|
+ pointer = pointer.offsetParent;
|
|
|
+ }
|
|
|
+ const top = selected.offsetTop + offsetParents.reduce((prev, curr) => (prev + curr.offsetTop), 0);
|
|
|
+ const bottom = top + selected.offsetHeight;
|
|
|
const viewRectTop = container.scrollTop;
|
|
|
const viewRectBottom = viewRectTop + container.clientHeight;
|
|
|
|