mirror of
https://github.com/flarum/core.git
synced 2025-07-24 18:21:33 +02:00
- Reintroduce cancellable scroll top on page change - IndexPage: rely on browser to retain scroll position on page reload - Remove obsolete browser hack - Fix broken selector - When on mobile, only retain scroll for IndexPage if we're coming from a discussion - Move app.cache.scrollTop save into `onbeforeremove` so we make sure to do it before DOM is detached
52 lines
985 B
JavaScript
52 lines
985 B
JavaScript
import Component from '../Component';
|
|
import PageState from '../states/PageState';
|
|
|
|
/**
|
|
* The `Page` component
|
|
*
|
|
* @abstract
|
|
*/
|
|
export default class Page extends Component {
|
|
oninit(vnode) {
|
|
super.oninit(vnode);
|
|
|
|
app.previous = app.current;
|
|
app.current = new PageState(this.constructor, { routeName: this.attrs.routeName });
|
|
|
|
app.drawer.hide();
|
|
app.modal.close();
|
|
|
|
/**
|
|
* A class name to apply to the body while the route is active.
|
|
*
|
|
* @type {String}
|
|
*/
|
|
this.bodyClass = '';
|
|
|
|
/**
|
|
* Whether we should scroll to the top of the page when its rendered.
|
|
*
|
|
* @type {Boolean}
|
|
*/
|
|
this.scrollTopOnCreate = true;
|
|
}
|
|
|
|
oncreate(vnode) {
|
|
super.oncreate(vnode);
|
|
|
|
if (this.bodyClass) {
|
|
$('#app').addClass(this.bodyClass);
|
|
}
|
|
|
|
if (this.scrollTopOnCreate) {
|
|
$(window).scrollTop(0);
|
|
}
|
|
}
|
|
|
|
onremove() {
|
|
if (this.bodyClass) {
|
|
$('#app').removeClass(this.bodyClass);
|
|
}
|
|
}
|
|
}
|