diff --git a/src/components/ha-textfield.ts b/src/components/ha-textfield.ts
index c18b49c2d4..289b37924c 100644
--- a/src/components/ha-textfield.ts
+++ b/src/components/ha-textfield.ts
@@ -160,6 +160,9 @@ export class HaTextField extends TextFieldBase {
.mdc-text-field__input[type="number"] {
direction: var(--direction);
}
+ .mdc-text-field__affix--prefix {
+ padding-right: var(--text-field-prefix-padding-right, 2px);
+ }
`,
// safari workaround - must be explicit
document.dir === "rtl"
diff --git a/src/panels/config/entities/entity-registry-settings-editor.ts b/src/panels/config/entities/entity-registry-settings-editor.ts
index 84764efc74..a1ce59f5ef 100644
--- a/src/panels/config/entities/entity-registry-settings-editor.ts
+++ b/src/panels/config/entities/entity-registry-settings-editor.ts
@@ -11,10 +11,12 @@ import {
} from "lit";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
+import { mdiContentCopy } from "@mdi/js";
import { isComponentLoaded } from "../../../common/config/is_component_loaded";
import { fireEvent } from "../../../common/dom/fire_event";
import { stopPropagation } from "../../../common/dom/stop_propagation";
import { computeDomain } from "../../../common/entity/compute_domain";
+import { computeObjectId } from "../../../common/entity/compute_object_id";
import { domainIcon } from "../../../common/entity/domain_icon";
import { supportsFeature } from "../../../common/entity/supports-feature";
import { formatNumber } from "../../../common/number/format_number";
@@ -79,6 +81,8 @@ import { showMoreInfoDialog } from "../../../dialogs/more-info/show-ha-more-info
import { haStyle } from "../../../resources/styles";
import type { HomeAssistant } from "../../../types";
import { showDeviceRegistryDetailDialog } from "../devices/device-registry-detail/show-dialog-device-registry-detail";
+import { copyToClipboard } from "../../../common/util/copy-clipboard";
+import { showToast } from "../../../util/toast";
const OVERRIDE_DEVICE_CLASSES = {
cover: [
@@ -325,8 +329,6 @@ export class EntityRegistrySettingsEditor extends LitElement {
const domain = computeDomain(this.entry.entity_id);
- const invalidDomainUpdate = computeDomain(this._entityId.trim()) !== domain;
-
const invalidDefaultCode =
domain === "lock" &&
this._isInvalidDefaultCode(
@@ -675,15 +677,23 @@ export class EntityRegistrySettingsEditor extends LitElement {
`
: ""}
+ iconTrailing
+ >
+
+
${!this.entry.device_id
? html` {
+ await copyToClipboard(this._entityId);
+ showToast(this, {
+ message: this.hass.localize("ui.common.copied_clipboard"),
+ });
+ }
+
private _entityIdChanged(ev): void {
fireEvent(this, "change");
- this._entityId = ev.target.value;
+ this._entityId = `${computeDomain(this._origEntityId)}.${ev.target.value}`;
}
private _deviceClassChanged(ev): void {
@@ -1343,6 +1360,20 @@ export class EntityRegistrySettingsEditor extends LitElement {
:host {
display: block;
}
+ ha-textfield.entityId {
+ --text-field-prefix-padding-right: 0;
+ --textfield-icon-trailing-padding: 0;
+ }
+ ha-textfield.entityId > ha-icon-button {
+ position: relative;
+ right: -8px;
+ --mdc-icon-button-size: 36px;
+ --mdc-icon-size: 20px;
+ color: var(--secondary-text-color);
+ inset-inline-start: initial;
+ inset-inline-end: -8px;
+ direction: var(--direction);
+ }
ha-switch {
margin-right: 16px;
}