26 lines
690 B
JavaScript
26 lines
690 B
JavaScript
// @flow
|
|
// based on: https://reacttraining.com/react-router/web/guides/scroll-restoration
|
|
import * as React from 'react';
|
|
import { withRouter } from 'react-router-dom';
|
|
|
|
class ScrollToTop extends React.Component<*> {
|
|
componentDidUpdate(prevProps) {
|
|
if (this.props.location.pathname === prevProps.location.pathname) return;
|
|
|
|
// exception for when entering or exiting document edit, scroll postion should not reset
|
|
if (
|
|
this.props.location.pathname.match(/\/edit\/?$/) ||
|
|
prevProps.location.pathname.match(/\/edit\/?$/)
|
|
)
|
|
return;
|
|
|
|
window.scrollTo(0, 0);
|
|
}
|
|
|
|
render() {
|
|
return this.props.children;
|
|
}
|
|
}
|
|
|
|
export default withRouter(ScrollToTop);
|