From e059ca146b98e10cda1f5e168bfa9928cd257c86 Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Wed, 29 May 2024 13:57:13 +0200 Subject: [PATCH] Script change icon (#20885) * Add icon to rename dialog * Check in entity registry * Only use icon for script --- .../dialog-automation-rename.ts | 67 ++++++++++++++++--- .../show-dialog-automation-rename.ts | 8 ++- .../config/automation/ha-automation-editor.ts | 4 +- src/panels/config/script/ha-script-editor.ts | 5 +- src/translations/en.json | 1 + 5 files changed, 70 insertions(+), 15 deletions(-) diff --git a/src/panels/config/automation/automation-rename-dialog/dialog-automation-rename.ts b/src/panels/config/automation/automation-rename-dialog/dialog-automation-rename.ts index 7d869fd5b9..29e304208d 100644 --- a/src/panels/config/automation/automation-rename-dialog/dialog-automation-rename.ts +++ b/src/panels/config/automation/automation-rename-dialog/dialog-automation-rename.ts @@ -4,12 +4,18 @@ import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-alert"; import { createCloseHeading } from "../../../../components/ha-dialog"; +import "../../../../components/ha-domain-icon"; +import "../../../../components/ha-icon-picker"; import "../../../../components/ha-textarea"; import "../../../../components/ha-textfield"; + import { HassDialog } from "../../../../dialogs/make-dialog-manager"; import { haStyle, haStyleDialog } from "../../../../resources/styles"; import type { HomeAssistant } from "../../../../types"; -import type { AutomationRenameDialog } from "./show-dialog-automation-rename"; +import type { + AutomationRenameDialogParams, + ScriptRenameDialogParams, +} from "./show-dialog-automation-rename"; @customElement("ha-dialog-automation-rename") class DialogAutomationRename extends LitElement implements HassDialog { @@ -19,15 +25,20 @@ class DialogAutomationRename extends LitElement implements HassDialog { @state() private _error?: string; - private _params!: AutomationRenameDialog; + private _params!: AutomationRenameDialogParams | ScriptRenameDialogParams; private _newName?: string; + private _newIcon?: string; + private _newDescription?: string; - public showDialog(params: AutomationRenameDialog): void { + public showDialog( + params: AutomationRenameDialogParams | ScriptRenameDialogParams + ): void { this._opened = true; this._params = params; + this._newIcon = "icon" in params.config ? params.config.icon : undefined; this._newName = params.config.alias || this.hass.localize("ui.panel.config.automation.editor.default_name"); @@ -82,6 +93,25 @@ class DialogAutomationRename extends LitElement implements HassDialog { @input=${this._valueChanged} > + ${this._params.domain === "script" + ? html` + + + + + ` + : nothing} import("./dialog-automation-rename"); -export interface AutomationRenameDialog { +export interface AutomationRenameDialogParams { config: AutomationConfig; + domain: "automation"; updateConfig: (config: AutomationConfig) => void; onClose: () => void; } -export interface ScriptRenameDialog { +export interface ScriptRenameDialogParams { config: ScriptConfig; + domain: "script"; updateConfig: (config: ScriptConfig) => void; onClose: () => void; } export const showAutomationRenameDialog = ( element: HTMLElement, - dialogParams: AutomationRenameDialog | ScriptRenameDialog + dialogParams: AutomationRenameDialogParams | ScriptRenameDialogParams ): void => { fireEvent(element, "show-dialog", { dialogTag: "ha-dialog-automation-rename", diff --git a/src/panels/config/automation/ha-automation-editor.ts b/src/panels/config/automation/ha-automation-editor.ts index 2279338010..0cfac00e71 100644 --- a/src/panels/config/automation/ha-automation-editor.ts +++ b/src/panels/config/automation/ha-automation-editor.ts @@ -32,10 +32,11 @@ import { computeRTL } from "../../../common/util/compute_rtl"; import { afterNextRender } from "../../../common/util/render-status"; import "../../../components/ha-button-menu"; import "../../../components/ha-fab"; +import "../../../components/ha-icon"; import "../../../components/ha-icon-button"; +import "../../../components/ha-list-item"; import "../../../components/ha-svg-icon"; import "../../../components/ha-yaml-editor"; -import "../../../components/ha-list-item"; import { AutomationConfig, AutomationEntity, @@ -688,6 +689,7 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) { return new Promise((resolve) => { showAutomationRenameDialog(this, { config: this._config!, + domain: "automation", updateConfig: (config) => { this._config = config; this._dirty = true; diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts index 0d8d3d0841..3f12a64f55 100644 --- a/src/panels/config/script/ha-script-editor.ts +++ b/src/panels/config/script/ha-script-editor.ts @@ -33,9 +33,9 @@ import "../../../components/ha-button-menu"; import "../../../components/ha-fab"; import "../../../components/ha-icon-button"; +import "../../../components/ha-list-item"; import "../../../components/ha-svg-icon"; import "../../../components/ha-yaml-editor"; -import "../../../components/ha-list-item"; import { validateConfig } from "../../../data/config"; import { UNAVAILABLE } from "../../../data/entity"; import { EntityRegistryEntry } from "../../../data/entity_registry"; @@ -50,6 +50,7 @@ import { triggerScript, } from "../../../data/script"; import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box"; +import { showMoreInfoDialog } from "../../../dialogs/more-info/show-ha-more-info-dialog"; import "../../../layouts/hass-subpage"; import { KeyboardShortcutMixin } from "../../../mixins/keyboard-shortcut-mixin"; import { haStyle } from "../../../resources/styles"; @@ -60,7 +61,6 @@ import { showAutomationRenameDialog } from "../automation/automation-rename-dial import "./blueprint-script-editor"; import "./manual-script-editor"; import type { HaManualScriptEditor } from "./manual-script-editor"; -import { showMoreInfoDialog } from "../../../dialogs/more-info/show-ha-more-info-dialog"; export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { @property({ attribute: false }) public hass!: HomeAssistant; @@ -654,6 +654,7 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { return new Promise((resolve) => { showAutomationRenameDialog(this, { config: this._config!, + domain: "script", updateConfig: (config) => { this._config = config; this._dirty = true; diff --git a/src/translations/en.json b/src/translations/en.json index 229ce92e2f..1a04fdcb71 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2768,6 +2768,7 @@ "placeholder": "Optional description", "add": "Add description" }, + "icon": "Icon", "blueprint": { "header": "Blueprint", "blueprint_to_use": "Blueprint to use",