Compare commits

...

7 Commits

Author SHA1 Message Date
Bram Kragten
d98e373f64 Bumped version to 20260128.6 2026-02-04 15:41:09 +01:00
Paul Bottein
649516c9fa Change default icon for blank area if not icon configured (#29394) 2026-02-04 15:40:36 +01:00
Paul Bottein
bbc4fb96b2 Load domain translation when integration page load (#29391) 2026-02-04 15:40:35 +01:00
Paul Bottein
0ae639aeb0 Remove old lovelace overview from pickers (#29390) 2026-02-04 15:40:34 +01:00
karwosts
0e7e41065e Don't shrink ha-dropdown checkboxes (#29387) 2026-02-04 15:40:33 +01:00
Paul Bottein
685843f112 Add translations for new overview dialog (#29382) 2026-02-04 15:40:32 +01:00
Paul Bottein
5e1a99d94a Use area icon for area empty state (#29371) 2026-02-04 15:40:31 +01:00
9 changed files with 72 additions and 35 deletions

View File

@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "home-assistant-frontend"
version = "20260128.5"
version = "20260128.6"
license = "Apache-2.0"
license-files = ["LICENSE*"]
description = "The Home Assistant frontend"

View File

@@ -37,6 +37,7 @@ export class HaDropdownItem extends DropdownItem {
#check {
visibility: visible;
flex-shrink: 0;
}
#icon ::slotted(*) {

View File

@@ -260,12 +260,7 @@ export class HaNavigationPicker extends LitElement {
const viewConfigs = await Promise.all(
lovelacePanels.map((panel) =>
fetchConfig(
this.hass!.connection,
// path should be null to fetch default lovelace panel
panel.url_path === "lovelace" ? null : panel.url_path,
true
)
fetchConfig(this.hass!.connection, panel.url_path, true)
.then((config) => [panel.id, config] as [string, typeof config])
.catch((_) => [panel.id, undefined] as [string, undefined])
)

View File

@@ -168,6 +168,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
protected willUpdate(changedProperties: PropertyValues): void {
if (changedProperties.has("domain")) {
this.hass.loadBackendTranslation("title", [this.domain]);
this.hass.loadBackendTranslation("config", [this.domain]);
this.hass.loadBackendTranslation("config_subentries", [this.domain]);
this._extraConfigEntries = undefined;
this._fetchManifest();

View File

@@ -47,39 +47,70 @@ export class DialogNewOverview
<ha-wa-dialog
.hass=${this.hass}
.open=${this._open}
header-title="Welcome to your new overview"
.headerTitle=${this.hass.localize(
"ui.panel.home.new_overview_dialog.title"
)}
prevent-scrim-close
@closed=${this._dialogClosed}
>
<div class="content">
<p>
The overview dashboard has been redesigned to give you a better
experience managing your smart home.
${this.hass.localize(
"ui.panel.home.new_overview_dialog.description"
)}
</p>
<h3>What's new</h3>
<h3>
${this.hass.localize("ui.panel.home.new_overview_dialog.whats_new")}
</h3>
<ul>
<li>
<strong>Automatic organization</strong> - Your devices are now
automatically organized by area and floor.
<strong>
${this.hass.localize(
"ui.panel.home.new_overview_dialog.automatic_organization"
)}
</strong>
-
${this.hass.localize(
"ui.panel.home.new_overview_dialog.automatic_organization_description"
)}
</li>
<li>
<strong>Favorites</strong> - Pin your most used entities to the
top for quick access.
<strong>
${this.hass.localize(
"ui.panel.home.new_overview_dialog.favorites"
)}
</strong>
-
${this.hass.localize(
"ui.panel.home.new_overview_dialog.favorites_description"
)}
</li>
</ul>
<h3>Your existing dashboards</h3>
<h3>
${this.hass.localize(
"ui.panel.home.new_overview_dialog.existing_dashboards"
)}
</h3>
<p>
Your manual dashboards are still available in the sidebar. This new
overview works alongside them. You can also create a new dashboard
using the "Overview (legacy)" template in
<a href="/config/lovelace/dashboards" @click=${this.closeDialog}
>dashboard settings</a
>.
${this.hass.localize(
"ui.panel.home.new_overview_dialog.existing_dashboards_description",
{
dashboard_settings: html`<a
href="/config/lovelace/dashboards"
@click=${this.closeDialog}
>${this.hass.localize(
"ui.panel.home.new_overview_dialog.dashboard_settings"
)}</a
>`,
}
)}
</p>
</div>
<ha-dialog-footer slot="footer">
<ha-button slot="primaryAction" @click=${this.closeDialog}>
OK, understood
${this.hass.localize(
"ui.panel.home.new_overview_dialog.ok_understood"
)}
</ha-button>
</ha-dialog-footer>
</ha-wa-dialog>

View File

@@ -276,12 +276,12 @@ class PanelHome extends LitElement {
<div class="banner-content">
<ha-svg-icon .path=${mdiHomeAssistant}></ha-svg-icon>
<span class="banner-text">
Welcome to the new overview dashboard.
${this.hass.localize("ui.panel.home.banner.welcome_message")}
</span>
</div>
<div class="banner-actions">
<ha-button size="small" appearance="filled" @click=${this._learnMore}>
Learn more
${this.hass.localize("ui.panel.home.banner.learn_more")}
</ha-button>
</div>
</div>

View File

@@ -360,7 +360,7 @@ export class HomeAreaViewStrategy extends ReactiveElement {
cards: [
{
type: "empty-state",
icon: "mdi:sofa-outline",
icon: area.icon || "mdi:shape-square-rounded-plus",
icon_color: "primary",
content_only: true,
title: hass.localize(

View File

@@ -1,4 +1,3 @@
import { mdiViewDashboard } from "@mdi/js";
import type { CSSResultGroup, PropertyValues, TemplateResult } from "lit";
import { css, html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
@@ -7,8 +6,8 @@ import "../../components/ha-icon";
import "../../components/ha-list-item";
import "../../components/ha-select";
import "../../components/ha-settings-row";
import "../../components/ha-svg-icon";
import "../../components/ha-spinner";
import "../../components/ha-svg-icon";
import { saveFrontendUserData } from "../../data/frontend";
import type { LovelaceDashboard } from "../../data/lovelace/dashboard";
import { fetchDashboards } from "../../data/lovelace/dashboard";
@@ -55,13 +54,6 @@ class HaPickDashboardRow extends LitElement {
${this.hass.localize("ui.panel.profile.dashboard.system")}
</ha-list-item>
<ha-divider></ha-divider>
<ha-list-item value="lovelace" graphic="icon">
<ha-svg-icon
slot="graphic"
.path=${mdiViewDashboard}
></ha-svg-icon>
${this.hass.localize("ui.panel.profile.dashboard.lovelace")}
</ha-list-item>
${PANEL_DASHBOARDS.map((panel) => {
const panelInfo = this.hass.panels[panel] as
| PanelInfo

View File

@@ -2312,6 +2312,23 @@
"save_failed": "Failed to save home page configuration",
"areas_hint": "You can rearrange your floors and areas in the order that best represents your house on the {areas_page}.",
"areas_page": "areas page"
},
"new_overview_dialog": {
"title": "Welcome to your new overview",
"description": "The overview dashboard has been redesigned to give you a better experience managing your smart home.",
"whats_new": "What's new",
"automatic_organization": "Automatic organization",
"automatic_organization_description": "Your devices are now automatically organized by area and floor.",
"favorites": "Favorites",
"favorites_description": "Pin your most used entities to the top for quick access.",
"existing_dashboards": "Your existing dashboards",
"existing_dashboards_description": "Your manual dashboards are still available in the sidebar. Miss the old format? You can create a new dashboard using the \"Overview (legacy)\" template in {dashboard_settings} and set it as default.",
"dashboard_settings": "dashboard settings",
"ok_understood": "OK, understood"
},
"banner": {
"welcome_message": "Welcome to the new overview dashboard.",
"learn_more": "Learn more"
}
},
"my": {