I haven’t been able to figure out why the scrolling resets, but I have a workaround. I basically have a function bound to the scroll event, where I keep track of the current scroll location. I then check if the current value is 0, and the previous value is greater than some threshold (I found 100 works well). If so, then I reset the position to the old value.
handleScroll(e) {
let targetDiv = get(this, 'targetDiv'); // CSS selector of panel with scrollbar
let prevScrollPosition = get(this, 'scrollPosition');
let currScrollPosition = this.$(targetDiv).scrollTop();
if (currScrollPosition === 0 && prevScrollPosition > 100) {
this.$(targetDiv).scrollTop(prevScrollPosition);
return;
}
set(this, 'scrollPosition', currScrollPosition);
},
This approach feels all sorts of hacky and not ideal, but it works for my use case. I still hope to figure out the underlying issue though.