mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-19 15:26:36 +00:00
Restore scrollposition on subpages after reconnecting (#6288)
This commit is contained in:
parent
ec48323a7d
commit
4ce9c71521
@ -6,6 +6,7 @@ import {
|
||||
LitElement,
|
||||
property,
|
||||
TemplateResult,
|
||||
eventOptions,
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
import "../components/ha-menu-button";
|
||||
@ -22,6 +23,17 @@ class HassSubpage extends LitElement {
|
||||
@property({ type: Boolean })
|
||||
public hassio = false;
|
||||
|
||||
@property() private _savedScrollPos?: number;
|
||||
|
||||
public connectedCallback() {
|
||||
super.connectedCallback();
|
||||
if (this._savedScrollPos) {
|
||||
(this.shadowRoot!.querySelector(
|
||||
".content"
|
||||
) as HTMLDivElement).scrollTop = this._savedScrollPos;
|
||||
}
|
||||
}
|
||||
|
||||
protected render(): TemplateResult {
|
||||
return html`
|
||||
<div class="toolbar">
|
||||
@ -34,10 +46,15 @@ class HassSubpage extends LitElement {
|
||||
<div main-title>${this.header}</div>
|
||||
<slot name="toolbar-icon"></slot>
|
||||
</div>
|
||||
<div class="content"><slot></slot></div>
|
||||
<div class="content" @scroll=${this._saveScrollPos}><slot></slot></div>
|
||||
`;
|
||||
}
|
||||
|
||||
@eventOptions({ passive: true })
|
||||
private _saveScrollPos(e: Event) {
|
||||
this._savedScrollPos = (e.target as HTMLDivElement).scrollTop;
|
||||
}
|
||||
|
||||
private _backTapped(): void {
|
||||
history.back();
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import {
|
||||
property,
|
||||
PropertyValues,
|
||||
TemplateResult,
|
||||
eventOptions,
|
||||
} from "lit-element";
|
||||
import { classMap } from "lit-html/directives/class-map";
|
||||
import memoizeOne from "memoize-one";
|
||||
@ -52,6 +53,17 @@ class HassTabsSubpage extends LitElement {
|
||||
|
||||
@property() private _activeTab?: PageNavigation;
|
||||
|
||||
@property() private _savedScrollPos?: number;
|
||||
|
||||
public connectedCallback() {
|
||||
super.connectedCallback();
|
||||
if (this._savedScrollPos) {
|
||||
(this.shadowRoot!.querySelector(
|
||||
".content"
|
||||
) as HTMLDivElement).scrollTop = this._savedScrollPos;
|
||||
}
|
||||
}
|
||||
|
||||
private _getTabs = memoizeOne(
|
||||
(
|
||||
tabs: PageNavigation[],
|
||||
@ -143,12 +155,17 @@ class HassTabsSubpage extends LitElement {
|
||||
<slot name="toolbar-icon"></slot>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="content" @scroll=${this._saveScrollPos}>
|
||||
<slot></slot>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
@eventOptions({ passive: true })
|
||||
private _saveScrollPos(e: Event) {
|
||||
this._savedScrollPos = (e.target as HTMLDivElement).scrollTop;
|
||||
}
|
||||
|
||||
private _tabTapped(ev: Event): void {
|
||||
navigate(this, (ev.currentTarget as any).path, true);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user