diff --git a/index.html b/index.html index c38cafc..e55656b 100644 --- a/index.html +++ b/index.html @@ -76,12 +76,12 @@ __ __ _ __ ____ __ HDD 🟢 - -
- Connect via Tailscale - -
-
+ +
+ Connect via Tailscale + +
+
Join Discord diff --git a/network.js b/network.js index 638a431..3a68d7e 100644 --- a/network.js +++ b/network.js @@ -32,9 +32,40 @@ function setupNetworkInterface() }; const netmapUpdateCb = (map) => { const ip = map.self.addresses[0]; - statusElem.innerHTML = "IP: "+ip; + statusElem.innerText = "IP: "+ip; + loginElem.title = "Right click to copy the IP" + loginElem.draggable = false; + const rmb_to_copy = (event) => { + // To prevent the default contexmenu from showing up when right-clicking.. + event.preventDefault(); + // Copy the IP to the clipboard. + window.navigator.clipboard.writeText(ip) + .catch((msg) => { console.log("network.js: Copy ip to clipboard: Error: " + msg) }); + + // We add the tooltip to the DOM and create the div element. + const tooltip = document.createElement("div"); + statusElem.classList.add("clicked"); + tooltip.classList.add("tooltip"); + + // Show tooltip underneath mouse when copied to clipboard. + tooltip.style.fontSize = "13px" + tooltip.style.position = "absolute" + tooltip.style.left = `${event.clientX}px` + tooltip.style.top = `${event.clientY}px` + tooltip.style.fontWeight = "bold" + tooltip.innerText = "Copied to clipboard"; + statusElem.appendChild(tooltip); + + // To remove the tooltip again after some time passes. + setTimeout(() => { + tooltip.remove(); + statusElem.classList.remove("clicked"); + }, 1500); + }; + loginElem.addEventListener("contextmenu", rmb_to_copy); }; loginElem.style.cursor = "pointer"; + loginElem.title = "Connect to Tailscale"; statusElem.style.color = "white"; return { loginUrlCb,