1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-20 00:08:02 +01:00

Merge pull request #29 from Unleash/fix-scroll-position

Keep scroll postion.
This commit is contained in:
Ivar Conradi Østhus 2016-12-30 19:23:07 +01:00 committed by GitHub
commit 1d2980940f
3 changed files with 17 additions and 9 deletions

View File

@ -45,6 +45,7 @@
"react-modal": "^1.6.4",
"react-redux": "^4.4.5",
"react-router": "^3.0.0",
"react-router-scroll": "^0.4.1",
"redux": "^3.6.0",
"redux-thunk": "^2.1.0",
"whatwg-fetch": "^2.0.0"

View File

@ -9,6 +9,7 @@ import ErrorContainer from './error/error-container';
import UserContainer from './user/user-container';
import ShowUserContainer from './user/show-user-container';
import { ScrollContainer } from 'react-router-scroll';
const base = {
name: 'Unleash',
@ -42,10 +43,6 @@ export default class App extends Component {
if (this.props.location.pathname !== nextProps.location.pathname) {
clearTimeout(this.timer);
this.timer = setTimeout(() => {
window.requestAnimationFrame(() => {
document.querySelector('.mdl-layout__content').scrollTop = 0;
});
const layout = document.querySelector('.mdl-js-layout');
const drawer = document.querySelector('.mdl-layout__drawer');
// hack, might get a built in alternative later
@ -96,12 +93,19 @@ export default class App extends Component {
}
render () {
const shouldUpdateScroll = (prevRouterProps, { location }) => {
if (prevRouterProps && location.pathname !== prevRouterProps.location.pathname) {
return location.action === 'POP';
} else {
return [0, 0];
}
};
const createListItem = (path, caption, icon) =>
<a
href={this.context.router.createHref(path)}
<Link
to={path}
className={this.context.router.isActive(path) ? style.active : ''}>
{icon && <Icon name={icon} />} {caption}
</a>;
</Link>;
return (
<div style={{}}>
@ -122,6 +126,7 @@ export default class App extends Component {
{createListItem('/applications', 'Applications', 'apps')}
</Navigation>
</Drawer>
<ScrollContainer scrollKey="container" shouldUpdateScroll={shouldUpdateScroll}>
<Content>
<Grid shadow={1} style={{ maxWidth: '1200px', margin: '0 auto' }}>
<Cell col={12}>
@ -161,6 +166,7 @@ export default class App extends Component {
</FooterSection>
</Footer>
</Content>
</ScrollContainer>
</Layout>
</div>
);

View File

@ -4,7 +4,8 @@ import 'react-mdl/extra/material.js';
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, IndexRedirect, hashHistory } from 'react-router';
import { applyRouterMiddleware, Router, Route, IndexRedirect, hashHistory } from 'react-router';
import { useScroll } from 'react-router-scroll';
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import { createStore, applyMiddleware } from 'redux';
@ -35,7 +36,7 @@ const unleashStore = createStore(
ReactDOM.render(
<Provider store={unleashStore}>
<Router history={hashHistory}>
<Router history={hashHistory} render={applyRouterMiddleware(useScroll())}>
<Route path="/" component={App}>
<IndexRedirect to="/features" />