diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-07 02:02:55 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-07 02:02:55 +0100 |
commit | 4a6cc46e8146ed65ad18e5b039993eda8cf26cce (patch) | |
tree | 5975c4fe232f0972de68656e9f00076e8d0d2344 | |
parent | 23fc424b7aea139a0aff5cd347f46c81e50c2c56 (diff) |
Keep scroll position when scrolled down and new content is added
-rw-r--r-- | app/assets/javascripts/components/components/status_list.jsx | 12 |
1 files 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 index 488d42dba..633f06816 100644 --- 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; |