mirror of
https://github.com/flarum/core.git
synced 2025-10-11 06:54:26 +02:00
Retain scroll position when navigating between index/discussion
This commit is contained in:
@@ -8,6 +8,7 @@ import DiscussionList from 'flarum/components/discussion-list';
|
||||
import WelcomeHero from 'flarum/components/welcome-hero';
|
||||
import ComposerDiscussion from 'flarum/components/composer-discussion';
|
||||
import LoginModal from 'flarum/components/login-modal';
|
||||
import DiscussionPage from 'flarum/components/discussion-page';
|
||||
|
||||
import SelectInput from 'flarum/components/select-input';
|
||||
import ActionButton from 'flarum/components/action-button';
|
||||
@@ -33,13 +34,17 @@ export default class IndexPage extends Component {
|
||||
app.cache.discussionList = new DiscussionList({params});
|
||||
}
|
||||
|
||||
if (app.current instanceof DiscussionPage) {
|
||||
this.lastDiscussion = app.current.discussion();
|
||||
}
|
||||
|
||||
app.history.push('index');
|
||||
app.current = this;
|
||||
app.composer.minimize();
|
||||
}
|
||||
|
||||
onunload() {
|
||||
app.cache.discussionList.willRedraw();
|
||||
app.cache.scrollTop = $(window).scrollTop();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,6 +128,20 @@ export default class IndexPage extends Component {
|
||||
context.onunload = function() {
|
||||
$('body').removeClass('index-page');
|
||||
}
|
||||
|
||||
var scrollTop = app.cache.scrollTop;
|
||||
$(window).scrollTop(scrollTop);
|
||||
|
||||
if (this.lastDiscussion) {
|
||||
var $discussion = this.$('.discussion-summary[data-id='+this.lastDiscussion.id()+']');
|
||||
if ($discussion.length) {
|
||||
var indexTop = $('#header').outerHeight();
|
||||
var discussionTop = $discussion.offset().top;
|
||||
if (discussionTop < scrollTop + indexTop || discussionTop + $discussion.outerHeight() > scrollTop + $(window).height()) {
|
||||
$(window).scrollTop(discussionTop - indexTop);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newDiscussion() {
|
||||
|
Reference in New Issue
Block a user