From 2aa3876fce0523d728e48d5a849434ac3bc04b8b Mon Sep 17 00:00:00 2001 From: sjhuang26 <sjhuang26@gmail.com> Date: Mon, 28 May 2018 17:30:46 -0400 Subject: [PATCH] Scroll to top when search query or tag changed --- src/components/library/library.jsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/library/library.jsx b/src/components/library/library.jsx index 41ed6dffc..0a3e3b525 100644 --- a/src/components/library/library.jsx +++ b/src/components/library/library.jsx @@ -34,7 +34,8 @@ class LibraryComponent extends React.Component { 'handleMouseEnter', 'handleMouseLeave', 'handleSelect', - 'handleTagClick' + 'handleTagClick', + 'setFilteredDataRef' ]); this.state = { selectedItem: null, @@ -57,6 +58,7 @@ class LibraryComponent extends React.Component { filterQuery: '', selectedTag: tag.toLowerCase() }); + this.scrollToTop(); } handleMouseEnter (id) { if (this.props.onItemMouseEnter) this.props.onItemMouseEnter(this.getFilteredData()[id]); @@ -69,6 +71,7 @@ class LibraryComponent extends React.Component { filterQuery: event.target.value, selectedTag: ALL_TAG_TITLE.toLowerCase() }); + this.scrollToTop(); } handleFilterClear () { this.setState({filterQuery: ''}); @@ -92,6 +95,12 @@ class LibraryComponent extends React.Component { .indexOf(this.state.selectedTag) !== -1 )); } + scrollToTop () { + this.filteredDataRef.scrollTop = 0; + } + setFilteredDataRef (ref) { + this.filteredDataRef = ref; + } render () { return ( <Modal @@ -141,6 +150,7 @@ class LibraryComponent extends React.Component { className={classNames(styles.libraryScrollGrid, { [styles.withFilterBar]: this.props.filterable || this.props.tags })} + ref={this.setFilteredDataRef} > {this.getFilteredData().map((dataItem, index) => { const scratchURL = dataItem.md5 ? -- GitLab