Allow to copy IP address of Matter devices to clipboard (#24983)

Often when debugging it is actually helpful to copy the IP address
for further investigation. This PR changes the list to allow
interaction and copies the IP address when clicked on a list item.
This commit is contained in:
Stefan Agner 2025-04-09 17:44:13 +02:00 committed by GitHub
parent 228acf1fae
commit ddc04dd48a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,6 +5,7 @@ import type { CSSResultGroup } from "lit";
import { css, html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import { fireEvent } from "../../../../../common/dom/fire_event";
import { copyToClipboard } from "../../../../../common/util/copy-clipboard";
import "../../../../../components/ha-spinner";
import "../../../../../components/ha-list-item";
import { createCloseHeading } from "../../../../../components/ha-dialog";
@ -12,6 +13,7 @@ import { pingMatterNode } from "../../../../../data/matter";
import { haStyle, haStyleDialog } from "../../../../../resources/styles";
import type { HomeAssistant } from "../../../../../types";
import type { MatterPingNodeDialogParams } from "./show-dialog-matter-ping-node";
import { showToast } from "../../../../../util/toast";
@customElement("dialog-matter-ping-node")
class DialogMatterPingNode extends LitElement {
@ -30,6 +32,14 @@ class DialogMatterPingNode extends LitElement {
this.device_id = params.device_id;
}
private async _copyIpToClipboard(ev) {
const ip = ev.currentTarget.ip;
await copyToClipboard(ip);
showToast(this, {
message: this.hass.localize("ui.common.copied_clipboard"),
});
}
protected render() {
if (!this.device_id) {
return nothing;
@ -75,7 +85,10 @@ class DialogMatterPingNode extends LitElement {
<mwc-list>
${this._pingResultEntries.map(
([ip, success]) =>
html`<ha-list-item hasMeta noninteractive
html`<ha-list-item
hasMeta
.ip=${ip}
@click=${this._copyIpToClipboard}
>${ip}
<ha-svg-icon
slot="meta"