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",