From 237f974ee8988a23fddab1dd67449ce254c61ec6 Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Sat, 8 Nov 2025 13:15:43 +0100 Subject: [PATCH] Only show panel with default visible flag in sidebar (#27838) --- src/components/ha-sidebar.ts | 3 ++- src/dialogs/sidebar/dialog-edit-sidebar.ts | 11 +++++++++++ .../dashboards/ha-config-lovelace-dashboards.ts | 12 ++++++------ src/types.ts | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 593ec85856..d094b9b3d4 100644 --- a/src/components/ha-sidebar.ts +++ b/src/components/ha-sidebar.ts @@ -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; } diff --git a/src/dialogs/sidebar/dialog-edit-sidebar.ts b/src/dialogs/sidebar/dialog-edit-sidebar.ts index c5ad542229..342ccfbd21 100644 --- a/src/dialogs/sidebar/dialog-edit-sidebar.ts +++ b/src/dialogs/sidebar/dialog-edit-sidebar.ts @@ -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)), diff --git a/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts b/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts index 59664bdf5d..857d253e5b 100644 --- a/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts +++ b/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts @@ -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: "", diff --git a/src/types.ts b/src/types.ts index c5286a2658..3c00587775 100644 --- a/src/types.ts +++ b/src/types.ts @@ -138,6 +138,7 @@ export interface PanelInfo | null> { title: string | null; url_path: string; config_panel_domain?: string; + default_visible?: boolean; } export type Panels = Record;