commit: 4a6cc46e8146ed65ad18e5b039993eda8cf26cce
parent: 23fc424b7aea139a0aff5cd347f46c81e50c2c56
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 7 Nov 2016 02:02:55 +0100
Keep scroll position when scrolled down and new content is added
Diffstat:
1 file changed, 12 insertions(+), 0 deletions(-)
diff --git a/app/assets/javascripts/components/components/status_list.jsx b/app/assets/javascripts/components/components/status_list.jsx
@@ -38,11 +38,23 @@ const StatusList = React.createClass({
handleScroll (e) {
const { scrollTop, scrollHeight, clientHeight } = e.target;
+ this._oldScrollPosition = scrollHeight - scrollTop;
+
if (scrollTop === scrollHeight - clientHeight) {
this.props.onScrollToBottom();
}
},
+ componentDidUpdate (prevProps) {
+ if (prevProps.statusIds.size < this.props.statusIds.size && this._oldScrollPosition) {
+ const node = ReactDOM.findDOMNode(this);
+
+ if (node.scrollTop > 0) {
+ node.scrollTop = node.scrollHeight - this._oldScrollPosition;
+ }
+ }
+ },
+
render () {
const { statusIds, onScrollToBottom, trackScroll } = this.props;