From d2ec24f32afeb77fd7c89b2eb6dd6700d58793e4 Mon Sep 17 00:00:00 2001 From: Wendelin <12148533+wendevlin@users.noreply.github.com> Date: Thu, 12 Dec 2024 17:40:52 +0100 Subject: [PATCH] Automation/Script editor add settings,category overflow actions (#23272) * Add settings, category actions * Add script category and settings actions * Correct overflow actions order * Use consume instead of subscribe --- .../config/automation/ha-automation-editor.ts | 68 +++++++++++++++++- src/panels/config/script/ha-script-editor.ts | 72 ++++++++++++++++++- 2 files changed, 136 insertions(+), 4 deletions(-) diff --git a/src/panels/config/automation/ha-automation-editor.ts b/src/panels/config/automation/ha-automation-editor.ts index 6f0a809257..5a4a4ce6e0 100644 --- a/src/panels/config/automation/ha-automation-editor.ts +++ b/src/panels/config/automation/ha-automation-editor.ts @@ -1,5 +1,6 @@ import "@material/mwc-button"; import { + mdiCog, mdiContentDuplicate, mdiContentSave, mdiDebugStepOver, @@ -13,6 +14,7 @@ import { mdiRenameBox, mdiRobotConfused, mdiStopCircleOutline, + mdiTag, mdiTransitConnection, } from "@mdi/js"; import type { UnsubscribeFunc } from "home-assistant-js-websocket"; @@ -20,6 +22,7 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from "lit"; import { LitElement, css, html, nothing } from "lit"; import { property, state } from "lit/decorators"; import { classMap } from "lit/directives/class-map"; +import { consume } from "@lit-labs/context"; import { fireEvent } from "../../../common/dom/fire_event"; import { navigate } from "../../../common/navigate"; import { computeRTL } from "../../../common/util/compute_rtl"; @@ -49,7 +52,10 @@ import { import { substituteBlueprint } from "../../../data/blueprint"; import { validateConfig } from "../../../data/config"; import { UNAVAILABLE } from "../../../data/entity"; -import { fetchEntityRegistry } from "../../../data/entity_registry"; +import { + fetchEntityRegistry, + type EntityRegistryEntry, +} from "../../../data/entity_registry"; import { showAlertDialog, showConfirmationDialog, @@ -64,7 +70,11 @@ import { showAutomationModeDialog } from "./automation-mode-dialog/show-dialog-a import { showAutomationRenameDialog } from "./automation-rename-dialog/show-dialog-automation-rename"; import "./blueprint-automation-editor"; import "./manual-automation-editor"; +import { showMoreInfoDialog } from "../../../dialogs/more-info/show-ha-more-info-dialog"; +import { showAssignCategoryDialog } from "../category/show-dialog-assign-category"; import { PreventUnsavedMixin } from "../../../mixins/prevent-unsaved-mixin"; +import { fullEntitiesContext } from "../../../data/context"; +import { transform } from "../../../common/decorators/transform"; declare global { interface HTMLElementTagNameMap { @@ -118,6 +128,15 @@ export class HaAutomationEditor extends PreventUnsavedMixin( @state() private _blueprintConfig?: BlueprintAutomationConfig; + @consume({ context: fullEntitiesContext, subscribe: true }) + @transform({ + transformer: function (this: HaAutomationEditor, value) { + return value.find(({ entity_id }) => entity_id === this._entityId); + }, + watch: ["_entityId"], + }) + private _registryEntry?: EntityRegistryEntry; + private _configSubscriptions: Record< string, (config?: AutomationConfig) => void @@ -172,6 +191,28 @@ export class HaAutomationEditor extends PreventUnsavedMixin( > + + ${this.hass.localize( + "ui.panel.config.automation.picker.show_settings" + )} + + + + + ${this.hass.localize( + `ui.panel.config.scene.picker.${this._registryEntry?.categories?.automation ? "edit_category" : "assign_category"}` + )} + + + ({ + transformer: function (this: HaScriptEditor, value) { + return value.find(({ entity_id }) => entity_id === this._entityId); + }, + watch: ["_entityId"], + }) + private _registryEntry?: EntityRegistryEntry; + @query("manual-script-editor") private _manualEditor?: HaManualScriptEditor; @@ -143,6 +162,28 @@ export class HaScriptEditor extends PreventUnsavedMixin( > + + ${this.hass.localize( + "ui.panel.config.automation.picker.show_settings" + )} + + + + + ${this.hass.localize( + `ui.panel.config.scene.picker.${this._registryEntry?.categories?.script ? "edit_category" : "assign_category"}` + )} + + +