Focus Add-ons & Backups in config panel when clicking Supervisor in sidebar (#10745)

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
This commit is contained in:
Joakim Sørensen 2021-12-01 17:46:38 +01:00 committed by GitHub
parent 01049e8eb8
commit 68373e6372
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 2 deletions

View File

@ -370,7 +370,9 @@ class HaSidebar extends LitElement {
private _renderPanels(panels: PanelInfo[]) { private _renderPanels(panels: PanelInfo[]) {
return panels.map((panel) => return panels.map((panel) =>
this._renderPanel( this._renderPanel(
panel.url_path, panel.url_path === "hassio"
? "config/dashboard?focusedPath=hassio"
: panel.url_path,
panel.url_path === this.hass.defaultPanel panel.url_path === this.hass.defaultPanel
? panel.title || this.hass.localize("panel.states") ? panel.title || this.hass.localize("panel.states")
: this.hass.localize(`panel.${panel.title}`) || panel.title, : this.hass.localize(`panel.${panel.title}`) || panel.title,

View File

@ -11,6 +11,7 @@ import {
} from "lit"; } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { isComponentLoaded } from "../../../common/config/is_component_loaded";
import { extractSearchParam } from "../../../common/url/search-params";
import "../../../components/ha-card"; import "../../../components/ha-card";
import "../../../components/ha-icon-next"; import "../../../components/ha-icon-next";
import "../../../components/ha-menu-button"; import "../../../components/ha-menu-button";
@ -135,6 +136,7 @@ class HaConfigDashboard extends LitElement {
.narrow=${this.narrow} .narrow=${this.narrow}
.showAdvanced=${this.showAdvanced} .showAdvanced=${this.showAdvanced}
.pages=${configSections.dashboard} .pages=${configSections.dashboard}
.focusedPath=${extractSearchParam("focusedPath")}
></ha-config-navigation> ></ha-config-navigation>
</ha-card>`} </ha-card>`}
</ha-config-section> </ha-config-section>

View File

@ -1,6 +1,13 @@
import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-icon-item";
import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item-body";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import {
css,
CSSResultGroup,
html,
LitElement,
PropertyValues,
TemplateResult,
} from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { canShowPage } from "../../../common/config/can_show_page"; import { canShowPage } from "../../../common/config/can_show_page";
import "../../../components/ha-card"; import "../../../components/ha-card";
@ -19,6 +26,21 @@ class HaConfigNavigation extends LitElement {
@property() public pages!: PageNavigation[]; @property() public pages!: PageNavigation[];
@property() public focusedPath?: string | null;
protected firstUpdated(changedProps: PropertyValues) {
super.firstUpdated(changedProps);
if (!this.focusedPath) {
return;
}
for (const a of this.shadowRoot!.querySelectorAll("a")) {
if (a.href.endsWith(this.focusedPath)) {
a.querySelector("paper-icon-item")?.focus();
break;
}
}
}
protected render(): TemplateResult { protected render(): TemplateResult {
return html` return html`
${this.pages.map((page) => ${this.pages.map((page) =>