diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 593ec85856c4..d094b9b3d4f2 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 c5ad5422297b..342ccfbd211c 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 59664bdf5df3..857d253e5b56 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 c5286a26585a..3c0058777508 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;