From d1085b665750c63362db4b77cb847112be39562e Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Tue, 8 Mar 2022 19:13:08 +0100 Subject: [PATCH 01/12] Fix theme setting (#11977) --- gallery/src/components/demo-cards.ts | 3 +++ hassio/src/hassio-main.ts | 3 ++- src/auth/ha-authorize.ts | 20 +++++++++++++------- src/common/dom/apply_themes_on_element.ts | 9 +++++---- src/fake_data/provide_hass.ts | 4 +++- src/layouts/supervisor-error-screen.ts | 3 ++- src/onboarding/ha-onboarding.ts | 20 +++++++++++++------- src/state/themes-mixin.ts | 23 +++++++++++++++-------- 8 files changed, 56 insertions(+), 29 deletions(-) diff --git a/gallery/src/components/demo-cards.ts b/gallery/src/components/demo-cards.ts index fa91ca2097..d2c485e76e 100644 --- a/gallery/src/components/demo-cards.ts +++ b/gallery/src/components/demo-cards.ts @@ -78,6 +78,9 @@ class DemoCards extends LitElement { ha-formfield { margin-right: 16px; } + #container { + background-color: var(--primary-background-color); + } `; } diff --git a/hassio/src/hassio-main.ts b/hassio/src/hassio-main.ts index b64e505d37..53df932748 100644 --- a/hassio/src/hassio-main.ts +++ b/hassio/src/hassio-main.ts @@ -121,7 +121,8 @@ export class HassioMain extends SupervisorBaseElement { this.parentElement, this.hass.themes, themeName, - themeSettings + themeSettings, + true ); } } diff --git a/src/auth/ha-authorize.ts b/src/auth/ha-authorize.ts index 8f91bfe8bf..add29139bc 100644 --- a/src/auth/ha-authorize.ts +++ b/src/auth/ha-authorize.ts @@ -101,13 +101,19 @@ class HaAuthorize extends litLocalizeLiteMixin(LitElement) { this._fetchAuthProviders(); if (matchMedia("(prefers-color-scheme: dark)").matches) { - applyThemesOnElement(document.documentElement, { - default_theme: "default", - default_dark_theme: null, - themes: {}, - darkMode: true, - theme: "default", - }); + applyThemesOnElement( + document.documentElement, + { + default_theme: "default", + default_dark_theme: null, + themes: {}, + darkMode: true, + theme: "default", + }, + undefined, + undefined, + true + ); } if (!this.redirectUri) { diff --git a/src/common/dom/apply_themes_on_element.ts b/src/common/dom/apply_themes_on_element.ts index dd5aebc423..ab80caf54b 100644 --- a/src/common/dom/apply_themes_on_element.ts +++ b/src/common/dom/apply_themes_on_element.ts @@ -31,11 +31,12 @@ export const applyThemesOnElement = ( element, themes: HomeAssistant["themes"], selectedTheme?: string, - themeSettings?: Partial + themeSettings?: Partial, + main?: boolean ) => { - // If there is no explicitly desired theme provided, we automatically + // If there is no explicitly desired theme provided, and the element is the main element we automatically // use the active one from `themes`. - const themeToApply = selectedTheme || themes.theme; + const themeToApply = selectedTheme || (main ? themes.theme : undefined); // If there is no explicitly desired dark mode provided, we automatically // use the active one from `themes`. @@ -47,7 +48,7 @@ export const applyThemesOnElement = ( let cacheKey = themeToApply; let themeRules: Partial = {}; - if (darkMode) { + if (themeToApply && darkMode) { cacheKey = `${cacheKey}__dark`; themeRules = { ...darkStyles }; } diff --git a/src/fake_data/provide_hass.ts b/src/fake_data/provide_hass.ts index dc9e875b32..3fd29bcdbf 100644 --- a/src/fake_data/provide_hass.ts +++ b/src/fake_data/provide_hass.ts @@ -300,7 +300,9 @@ export const provideHass = ( applyThemesOnElement( document.documentElement, themes, - selectedTheme!.theme + selectedTheme!.theme, + undefined, + true ); }, diff --git a/src/layouts/supervisor-error-screen.ts b/src/layouts/supervisor-error-screen.ts index cc9a9be2ad..eabb00e439 100644 --- a/src/layouts/supervisor-error-screen.ts +++ b/src/layouts/supervisor-error-screen.ts @@ -101,7 +101,8 @@ class SupervisorErrorScreen extends LitElement { this.parentElement, this.hass.themes, themeName, - themeSettings + themeSettings, + true ); } diff --git a/src/onboarding/ha-onboarding.ts b/src/onboarding/ha-onboarding.ts index eb01f05877..3c05e5b680 100644 --- a/src/onboarding/ha-onboarding.ts +++ b/src/onboarding/ha-onboarding.ts @@ -133,13 +133,19 @@ class HaOnboarding extends litLocalizeLiteMixin(HassElement) { import("./particles"); } if (matchMedia("(prefers-color-scheme: dark)").matches) { - applyThemesOnElement(document.documentElement, { - default_theme: "default", - default_dark_theme: null, - themes: {}, - darkMode: true, - theme: "default", - }); + applyThemesOnElement( + document.documentElement, + { + default_theme: "default", + default_dark_theme: null, + themes: {}, + darkMode: true, + theme: "default", + }, + undefined, + undefined, + true + ); } } diff --git a/src/state/themes-mixin.ts b/src/state/themes-mixin.ts index 3595a54a59..d56443be0f 100644 --- a/src/state/themes-mixin.ts +++ b/src/state/themes-mixin.ts @@ -38,13 +38,19 @@ export default >(superClass: T) => }); mql.addListener((ev) => this._applyTheme(ev.matches)); if (!this._themeApplied && mql.matches) { - applyThemesOnElement(document.documentElement, { - default_theme: "default", - default_dark_theme: null, - themes: {}, - darkMode: true, - theme: "default", - }); + applyThemesOnElement( + document.documentElement, + { + default_theme: "default", + default_dark_theme: null, + themes: {}, + darkMode: true, + theme: "default", + }, + undefined, + undefined, + true + ); } } @@ -93,7 +99,8 @@ export default >(superClass: T) => document.documentElement, this.hass.themes, themeName, - themeSettings + themeSettings, + true ); if (darkMode !== this.hass.themes.darkMode) { From 72c107484ad91fe3c08668d7395af06bbcf742ba Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Thu, 10 Mar 2022 08:45:12 -0500 Subject: [PATCH 02/12] Fix zwave_js 'add/remove device' disabled bug (#12000) * Fix zwave_js 'add/remove device' disabled bug * revert extra change --- .../zwave_js/zwave_js-config-dashboard.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-config-dashboard.ts b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-config-dashboard.ts index ac4f75522f..3c75b59df0 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-config-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-config-dashboard.ts @@ -237,8 +237,10 @@ class ZWaveJSConfigDashboard extends LitElement { ${this.hass.localize( "ui.panel.config.zwave_js.common.remove_node" @@ -304,7 +306,9 @@ class ZWaveJSConfigDashboard extends LitElement { ?rtl=${computeRTL(this.hass)} @click=${this._addNodeClicked} .disabled=${this._status !== "connected" || - this._network?.controller.inclusion_state !== InclusionState.Idle} + (this._network?.controller.inclusion_state !== InclusionState.Idle && + this._network?.controller.inclusion_state !== + InclusionState.SmartStart)} > From 6b995969b1c7a9b0318882305bafd95e517750ea Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Thu, 10 Mar 2022 10:21:04 -0500 Subject: [PATCH 03/12] Fix zwave_js set config dropdown default value (#11974) Co-authored-by: Paulus Schoutsen --- .../integration-panels/zwave_js/zwave_js-node-config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts index 5426b494a3..70e9d26390 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts @@ -289,7 +289,7 @@ class ZWaveJSNodeConfig extends SubscribeMixin(LitElement) {
Date: Fri, 11 Mar 2022 11:37:22 -0600 Subject: [PATCH 04/12] Fix changing cost number in energy settings (#12009) --- .../config/energy/dialogs/dialog-energy-grid-flow-settings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/energy/dialogs/dialog-energy-grid-flow-settings.ts b/src/panels/config/energy/dialogs/dialog-energy-grid-flow-settings.ts index 2599f61ee3..c018640263 100644 --- a/src/panels/config/energy/dialogs/dialog-energy-grid-flow-settings.ts +++ b/src/panels/config/energy/dialogs/dialog-energy-grid-flow-settings.ts @@ -240,7 +240,7 @@ export class DialogEnergyGridFlowSettings this._costStat = null; this._source = { ...this._source!, - number_energy_price: Number(ev.detail.value), + number_energy_price: Number((ev.target as any).value), entity_energy_price: null, }; } From 27a98a32fc8b33572473a4eb362c290af57c5547 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 11 Mar 2022 11:38:18 -0600 Subject: [PATCH 05/12] Fix Dashboard Editing (#12011) --- .../dashboards/dialog-lovelace-dashboard-detail.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts b/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts index 75db9e031c..f48ef1f439 100644 --- a/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts +++ b/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts @@ -11,6 +11,7 @@ import { CoreFrontendUserData } from "../../../../data/frontend"; import { LovelaceDashboard, LovelaceDashboardCreateParams, + LovelaceDashboardMutableParams, } from "../../../../data/lovelace"; import { DEFAULT_PANEL, setDefaultPanel } from "../../../../data/panel"; import { haStyleDialog } from "../../../../resources/styles"; @@ -40,7 +41,7 @@ export class DialogLovelaceDashboardDetail extends LitElement { } else { this._data = { show_in_sidebar: true, - icon: "", + icon: undefined, title: "", require_admin: false, mode: "storage", @@ -264,7 +265,13 @@ export class DialogLovelaceDashboardDetail extends LitElement { this._submitting = true; try { if (this._params!.dashboard) { - await this._params!.updateDashboard(this._data as LovelaceDashboard); + const values: Partial = { + require_admin: this._data!.require_admin, + show_in_sidebar: this._data!.show_in_sidebar, + icon: this._data!.icon || undefined, + title: this._data!.title, + }; + await this._params!.updateDashboard(values); } else { await this._params!.createDashboard( this._data as LovelaceDashboardCreateParams From 1e5ec241d50131c5d259093e522db7bd5c300a3c Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 11 Mar 2022 11:39:04 -0600 Subject: [PATCH 06/12] Fix For Selecting Device Class (#12010) --- src/panels/config/entities/entity-registry-settings.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/panels/config/entities/entity-registry-settings.ts b/src/panels/config/entities/entity-registry-settings.ts index 4c59b0d99e..72854d8389 100644 --- a/src/panels/config/entities/entity-registry-settings.ts +++ b/src/panels/config/entities/entity-registry-settings.ts @@ -11,6 +11,7 @@ import { } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../common/dom/fire_event"; +import { stopPropagation } from "../../../common/dom/stop_propagation"; import { computeDomain } from "../../../common/entity/compute_domain"; import { domainIcon } from "../../../common/entity/domain_icon"; import "../../../components/ha-alert"; @@ -166,7 +167,10 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { "ui.dialogs.entity_registry.editor.device_class" )} .value=${this._deviceClass} + naturalMenuWidth + fixedMenuPosition @selected=${this._deviceClassChanged} + @closed=${stopPropagation} > ${OVERRIDE_DEVICE_CLASSES[domain].map( (deviceClass: string) => html` @@ -422,6 +426,7 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { } ha-select { width: 100%; + margin: 8px 0; } ha-switch { margin-right: 16px; From affa6a92e7637390ddf184c4e823d099d3f79030 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 11 Mar 2022 19:07:56 -0600 Subject: [PATCH 07/12] Fix: Allow for deleting Input_select options (#12007) --- src/panels/config/helpers/forms/ha-input_select-form.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/helpers/forms/ha-input_select-form.ts b/src/panels/config/helpers/forms/ha-input_select-form.ts index cec1eb952e..c7abc8e176 100644 --- a/src/panels/config/helpers/forms/ha-input_select-form.ts +++ b/src/panels/config/helpers/forms/ha-input_select-form.ts @@ -85,7 +85,7 @@ class HaInputSelectForm extends LitElement { ${this._options.length ? this._options.map( (option, index) => html` - + ${option} Date: Fri, 11 Mar 2022 23:25:09 -0600 Subject: [PATCH 08/12] Script ID update with Alias (#12008) --- src/panels/config/script/ha-script-editor.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts index 2aeb262d47..611e52abec 100644 --- a/src/panels/config/script/ha-script-editor.ts +++ b/src/panels/config/script/ha-script-editor.ts @@ -569,9 +569,13 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { } private _aliasChanged(alias: string) { - if (this.scriptEntityId || this._entityId) { + if ( + this.scriptEntityId || + (this._entityId && this._entityId !== slugify(this._config!.alias)) + ) { return; } + const aliasSlugify = slugify(alias); let id = aliasSlugify; let i = 2; @@ -595,6 +599,7 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { private _valueChanged(ev: CustomEvent) { ev.stopPropagation(); const values = ev.detail.value as any; + const currentId = this._entityId; for (const key of Object.keys(values)) { if (key === "sequence") { @@ -603,7 +608,10 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { const value = values[key]; - if (value === this._config![key]) { + if ( + value === this._config![key] || + (key === "id" && currentId === value) + ) { continue; } From 9d1618024ef71bc68c199cdcb1ddf1fbffee4641 Mon Sep 17 00:00:00 2001 From: Zack Date: Mon, 14 Mar 2022 07:52:06 -0500 Subject: [PATCH 09/12] Bumped version to 20220314.0 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 3b273584c0..6abaa273e6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = home-assistant-frontend -version = 20220301.1 +version = 20220314.0 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From c6a103bd30259685e98b56a74b4ddc7a65d7e213 Mon Sep 17 00:00:00 2001 From: Zack Date: Mon, 14 Mar 2022 10:27:59 -0500 Subject: [PATCH 10/12] Minor Version whoops --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 6abaa273e6..a73c6937e0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = home-assistant-frontend -version = 20220314.0 +version = 20220301.2 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0 From fc1c6cea24657a14de05128446993ffc43b0d626 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Mon, 14 Mar 2022 10:33:49 -0500 Subject: [PATCH 11/12] Fix: Changing Blueprint Automation Name (#12036) --- src/panels/config/automation/blueprint-automation-editor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/automation/blueprint-automation-editor.ts b/src/panels/config/automation/blueprint-automation-editor.ts index e134f3dacd..907ee3bb03 100644 --- a/src/panels/config/automation/blueprint-automation-editor.ts +++ b/src/panels/config/automation/blueprint-automation-editor.ts @@ -278,7 +278,7 @@ export class HaBlueprintAutomationEditor extends LitElement { if (!name) { return; } - const newVal = ev.detail.value; + const newVal = target.value; if ((this.config![name] || "") === newVal) { return; } From 070e11a2db09c51ec4049ae291c9fb18b5d25ed7 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Mon, 14 Mar 2022 11:11:46 -0500 Subject: [PATCH 12/12] Fix @changed where using ev.detail (#12043) --- src/panels/config/users/dialog-user-detail.ts | 5 ++--- .../editor/config-elements/hui-picture-card-editor.ts | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/panels/config/users/dialog-user-detail.ts b/src/panels/config/users/dialog-user-detail.ts index 9729262167..490839b3cd 100644 --- a/src/panels/config/users/dialog-user-detail.ts +++ b/src/panels/config/users/dialog-user-detail.ts @@ -22,7 +22,6 @@ import { showAlertDialog, showPromptDialog, } from "../../../dialogs/generic/show-dialog-box"; -import { PolymerChangedEvent } from "../../../polymer-types"; import { haStyleDialog } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; import { UserDetailDialogParams } from "./show-dialog-user-detail"; @@ -212,9 +211,9 @@ class DialogUserDetail extends LitElement { `; } - private _nameChanged(ev: PolymerChangedEvent) { + private _nameChanged(ev) { this._error = undefined; - this._name = ev.detail.value; + this._name = ev.target.value; } private _adminChanged(ev): void { diff --git a/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts index 9b1f46f96b..0df731ba97 100644 --- a/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-picture-card-editor.ts @@ -113,9 +113,9 @@ export class HuiPictureCardEditor return; } const target = ev.target! as EditorTarget; - const value = ev.detail.value; + const value = ev.detail?.value ?? target.value; - if (this[`_${target.configValue}`] === target.value) { + if (this[`_${target.configValue}`] === value) { return; } if (target.configValue) {