]>
jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - js/right-click-menus.js
b3aad0c5aa07dccad497f63feffed718b2d7c907
2 * Right-click menus for use around the webpanel
5 let click_target
= null;
6 function can_clipboard()
8 if (typeof navigator
.clipboard
!== "undefined" && typeof navigator
.clipboard
.writeText
=== "function"
9 && typeof navigator
.clipboard
.readText
=== "function")
14 async
function paste_from_clipboard()
16 let text
= await navigator
.clipboard
.readText();
17 click_target
.value
= text
;
20 async
function copy_to_clipboard()
22 navigator
.clipboard
.writeText(selection
);
25 function build_rclick_menu()
27 const m
= document
.createElement('div');
28 m
.classList
.add('nav-item','list-group');
31 const m1
= document
.createElement('div');
32 m1
.classList
.add('item', 'list-group-item-action');
33 m1
.id
= 'rclick_opt1';
36 var rclickmenu
= document
.getElementById('rclickmenu');
38 document
.addEventListener("click", (e
) =>
40 rclickmenu
.classList
.remove("visible");
44 document
.addEventListener("contextmenu", (event
) =>
46 event
.preventDefault();
47 click_target
= event
.target
;
49 rclickmenu
.classList
.remove("visible"); // hide it if it was already elsweyr
50 var { clientX: mouseX
, clientY: mouseY
} = event
;
52 rclickmenu
.style
.top
= `${mouseY}px`;
53 rclickmenu
.style
.left
= `${mouseX}px`;
56 selection
= window
.getSelection().toString();
58 if (selection
.length
== 0 || !can_clipboard())
59 document
.getElementById('rclick_opt1').style
.display
= 'none';
61 else if (can_clipboard())
62 document
.getElementById('rclick_opt1').style
.display
= '';
64 /* Check if the browser supports pasting */
65 if (!can_clipboard() || (!click_target
|| click_target
.tagName
.toLowerCase() !== "input"))
66 document
.getElementById('rclick_opt2').style
.display
= 'none';
68 else if (click_target
&& click_target
.tagName
.toLowerCase() === "input")
69 document
.getElementById('rclick_opt2').style
.display
= '';
71 setTimeout(() => { rclickmenu
.classList
.add("visible"); });
73 document
.addEventListener('keydown', (event
) => {
74 if (event
.key
=== 'Escape')
76 rclickmenu
.classList
.remove("visible");