44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
function handle_toggle_id(event) {
|
|
event.target.closest(`.peer-name`)
|
|
.querySelector(`.peer-name-id`)
|
|
.classList.toggle(`invisible-gone`);
|
|
}
|
|
|
|
async function handle_copy_id(event) {
|
|
await navigator.clipboard.writeText(event.target
|
|
.closest(`.peer-name`)
|
|
.dataset.peer_id);
|
|
|
|
// TODO: Show notification here
|
|
}
|
|
|
|
export default function peer_name(peer) {
|
|
const result = document.createElement("span");
|
|
result.classList.add(`peer-name`);
|
|
result.dataset.peer_id = peer.id;
|
|
result.dataset.peer_name = peer.name;
|
|
|
|
const peer_name = document.createElement("span");
|
|
peer_name.classList.add(`peer-name-name`);
|
|
peer_name.appendChild(document.createTextNode(peer.name));
|
|
|
|
const peer_id = document.createElement("span");
|
|
peer_id.classList.add(`peer-name-id`, `invisible-gone`);
|
|
peer_id.appendChild(document.createTextNode(
|
|
peer.id.substring(0, 7)
|
|
));
|
|
|
|
peer_name.addEventListener("click", handle_toggle_id);
|
|
peer_id.addEventListener("click", handle_copy_id);
|
|
// TODO: When the id is clicked, copy it to the clipboard - we may need a fancy tooltip library for this
|
|
|
|
// text-overflow: ellipsis; may be useful here
|
|
|
|
result.replaceChildren(peer_name, peer_id);
|
|
|
|
|
|
return result;
|
|
}
|