Only show panel with default visible flag in sidebar (#27838)

This commit is contained in:
Paul Bottein 2025-11-08 13:15:43 +01:00 committed by GitHub
parent b2ec4b7d2c
commit 237f974ee8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 20 additions and 7 deletions

View File

@ -157,7 +157,8 @@ export const computePanels = memoizeOne(
Object.values(panels).forEach((panel) => {
if (
hiddenPanels.includes(panel.url_path) ||
(!panel.title && panel.url_path !== defaultPanel)
(!panel.title && panel.url_path !== defaultPanel) ||
(!panel.default_visible && !panelsOrder.includes(panel.url_path))
) {
return;
}

View File

@ -102,6 +102,17 @@ class DialogEditSidebar extends LitElement {
this.hass.locale
);
// Add default hidden panels that are missing in hidden
for (const panel of panels) {
if (
!panel.default_visible &&
!this._order.includes(panel.url_path) &&
!this._hidden.includes(panel.url_path)
) {
this._hidden.push(panel.url_path);
}
}
const items = [
...beforeSpacer,
...panels.filter((panel) => this._hidden!.includes(panel.url_path)),

View File

@ -320,9 +320,9 @@ export class HaConfigLovelaceDashboards extends LitElement {
if (this.hass.panels.light) {
result.push({
icon: "mdi:lamps",
icon: this.hass.panels.light.icon || "mdi:lamps",
title: this.hass.localize("panel.light"),
show_in_sidebar: false,
show_in_sidebar: true,
mode: "storage",
url_path: "light",
filename: "",
@ -334,9 +334,9 @@ export class HaConfigLovelaceDashboards extends LitElement {
if (this.hass.panels.security) {
result.push({
icon: "mdi:security",
icon: this.hass.panels.security.icon || "mdi:security",
title: this.hass.localize("panel.security"),
show_in_sidebar: false,
show_in_sidebar: true,
mode: "storage",
url_path: "security",
filename: "",
@ -348,9 +348,9 @@ export class HaConfigLovelaceDashboards extends LitElement {
if (this.hass.panels.climate) {
result.push({
icon: "mdi:home-thermometer",
icon: this.hass.panels.climate.icon || "mdi:home-thermometer",
title: this.hass.localize("panel.climate"),
show_in_sidebar: false,
show_in_sidebar: true,
mode: "storage",
url_path: "climate",
filename: "",

View File

@ -138,6 +138,7 @@ export interface PanelInfo<T = Record<string, any> | null> {
title: string | null;
url_path: string;
config_panel_domain?: string;
default_visible?: boolean;
}
export type Panels = Record<string, PanelInfo>;