diff --git a/src/components/ha-service-control.ts b/src/components/ha-service-control.ts index 481160fd78..6be50e0191 100644 --- a/src/components/ha-service-control.ts +++ b/src/components/ha-service-control.ts @@ -805,7 +805,8 @@ export class HaServiceControl extends LitElement { const value = ev.detail.value; if ( this._value?.data?.[key] === value || - (!this._value?.data?.[key] && (value === "" || value === undefined)) + ((!this._value?.data || !(key in this._value.data)) && + (value === "" || value === undefined)) ) { return; } diff --git a/src/components/ha-yaml-editor.ts b/src/components/ha-yaml-editor.ts index 1eb94c0aea..4782b44637 100644 --- a/src/components/ha-yaml-editor.ts +++ b/src/components/ha-yaml-editor.ts @@ -18,7 +18,7 @@ import type { HaCodeEditor } from "./ha-code-editor"; import "./ha-button"; const isEmpty = (obj: Record): boolean => { - if (typeof obj !== "object") { + if (typeof obj !== "object" || obj === null) { return false; } for (const key in obj) { @@ -59,14 +59,13 @@ export class HaYamlEditor extends LitElement { public setValue(value): void { try { - this._yaml = - value && !isEmpty(value) - ? dump(value, { - schema: this.yamlSchema, - quotingType: '"', - noRefs: true, - }) - : ""; + this._yaml = !isEmpty(value) + ? dump(value, { + schema: this.yamlSchema, + quotingType: '"', + noRefs: true, + }) + : ""; } catch (err: any) { // eslint-disable-next-line no-console console.error(err, value); @@ -75,7 +74,7 @@ export class HaYamlEditor extends LitElement { } protected firstUpdated(): void { - if (this.defaultValue) { + if (this.defaultValue !== undefined) { this.setValue(this.defaultValue); } }