Skip to content

Commit f337437

Browse files
committed
Close clipboard if clicked outside
1 parent 53c67fe commit f337437

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

js/clipboard.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import "./clipboard.css";
1111
* @param {Element} trigger
1212
* @param {Element} clipboard
1313
*/
14-
export function setupClipboard(trigger, clipboard) {
14+
export function setupClipboard(trigger, clipboard, canvas) {
1515
const arrowElement = clipboard.querySelector(".arrow");
1616
function updatePosition() {
1717
computePosition(trigger, clipboard, {
@@ -53,5 +53,18 @@ export function setupClipboard(trigger, clipboard) {
5353
trigger.classList.toggle("active");
5454
updatePosition();
5555
e.preventDefault();
56+
e.stopPropagation();
57+
});
58+
59+
// If the clipboard is clicked this should not be passed to the desktop
60+
clipboard.addEventListener("click", (e) => {
61+
e.stopPropagation();
62+
});
63+
// Close the popup if we click outside it
64+
canvas.addEventListener("click", () => {
65+
if (trigger.classList.contains("active")) {
66+
clipboard.classList.toggle("hidden");
67+
trigger.classList.toggle("active");
68+
}
5669
});
5770
}

js/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ function connect() {
8585
setupClipboard(
8686
document.getElementById("clipboard-button"),
8787
document.getElementById("clipboard-container"),
88+
document.getElementsByTagName("canvas")[0],
8889
);
8990
}
9091

tests/test_browser.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,12 @@ def test_desktop(browser):
5858
# Open clipboard, enter random text, close clipboard
5959
clipboard_text = str(uuid4())
6060
page1.get_by_role("link", name="Remote Clipboard").click()
61-
page1.wait_for_selector("#clipboard-text")
61+
expect(page1.locator("#clipboard-text")).to_be_visible()
6262
page1.locator("#clipboard-text").click()
6363
page1.locator("#clipboard-text").fill(clipboard_text)
64-
page1.get_by_role("link", name="Remote Clipboard").click()
64+
# Click outside clipboard, it should be closed
65+
page1.locator("canvas").click(position={"x": 969, "y": 273})
66+
expect(page1.locator("#clipboard-text")).not_to_be_visible()
6567

6668
# Exec into container to check clipboard contents
6769
for engine in ["docker", "podman"]:

0 commit comments

Comments
 (0)