diff --git a/src/components/ha-yaml-editor.ts b/src/components/ha-yaml-editor.ts index 882a12cd73a3..84f4ae5550e1 100644 --- a/src/components/ha-yaml-editor.ts +++ b/src/components/ha-yaml-editor.ts @@ -107,6 +107,7 @@ export class HaYamlEditor extends LitElement { "ui.components.yaml-editor.copy_to_clipboard" )} + ` : nothing} `; diff --git a/src/panels/developer-tools/service/developer-tools-service.ts b/src/panels/developer-tools/service/developer-tools-service.ts index fb5f374f21d2..93bf962c6b36 100644 --- a/src/panels/developer-tools/service/developer-tools-service.ts +++ b/src/panels/developer-tools/service/developer-tools-service.ts @@ -11,10 +11,13 @@ import { hasTemplate } from "../../../common/string/has-template"; import { extractSearchParam } from "../../../common/url/search-params"; import { HaProgressButton } from "../../../components/buttons/ha-progress-button"; import { LocalizeFunc } from "../../../common/translations/localize"; +import { showToast } from "../../../util/toast"; +import { copyToClipboard } from "../../../common/util/copy-clipboard"; import "../../../components/entity/ha-entity-picker"; import "../../../components/ha-card"; import "../../../components/ha-alert"; +import "../../../components/ha-button"; import "../../../components/ha-expansion-panel"; import "../../../components/ha-icon-button"; import "../../../components/ha-service-control"; @@ -189,7 +192,13 @@ class HaPanelDevService extends LitElement { readOnly autoUpdate .value=${this._response} - > + > + ${this.hass.localize( + "ui.panel.developer-tools.tabs.services.copy_clipboard_template" + )} + ` @@ -291,6 +300,15 @@ class HaPanelDevService extends LitElement { `; } + private async _copyTemplate(): Promise { + await copyToClipboard( + `{% set service_response = ${JSON.stringify(this._response)} %}` + ); + showToast(this, { + message: this.hass.localize("ui.common.copied_clipboard"), + }); + } + private _filterSelectorFields = memoizeOne((fields) => fields.filter((field) => !field.selector) ); diff --git a/src/translations/en.json b/src/translations/en.json index 822152b2214e..1b71dec0c8b8 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -6689,6 +6689,7 @@ "all_parameters": "All available parameters", "accepts_target": "This service accepts a target, for example: `entity_id: light.bed_light`", "no_template_ui_support": "The UI does not support templates, you can still use the YAML editor.", + "copy_clipboard_template": "Copy to clipboard (template)", "errors": { "ui": { "no_service": "No service selected, please select a service",