WebUI: use native event listeners for keyboard events

PR #21924.
This commit is contained in:
Chocobo1
2024-12-02 13:41:19 +08:00
committed by GitHub
parent e8d8de8f19
commit 2d1c4fc809
24 changed files with 273 additions and 366 deletions

View File

@@ -1728,35 +1728,30 @@ window.addEventListener("DOMContentLoaded", () => {
};
registerDragAndDrop();
new Keyboard({
defaultEventType: "keydown",
events: {
"ctrl+a": function(event) {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "a":
case "A":
if (event.ctrlKey) {
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;
event.preventDefault();
torrentsTable.selectAll();
}
break;
case "Delete":
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;
torrentsTable.selectAll();
event.preventDefault();
},
"delete": function(event) {
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;
deleteSelectedTorrentsFN();
event.preventDefault();
},
"shift+delete": (event) => {
if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA"))
return;
if (event.target.isContentEditable)
return;
deleteSelectedTorrentsFN(true);
event.preventDefault();
}
deleteSelectedTorrentsFN(event.shiftKey);
break;
}
}).activate();
});
new ClipboardJS(".copyToClipboard", {
text: (trigger) => {

View File

@@ -139,28 +139,25 @@ window.qBittorrent.Search ??= (() => {
}, window.qBittorrent.Misc.FILTER_INPUT_DELAY);
});
new Keyboard({
defaultEventType: "keydown",
events: {
"Enter": function(e) {
// accept enter key as a click
e.preventDefault();
e.stopPropagation();
document.getElementById("SearchPanel").addEventListener("keydown", (event) => {
switch (event.key) {
case "Enter": {
event.preventDefault();
event.stopPropagation();
const elem = e.event.srcElement;
if (elem.className.contains("searchInputField")) {
document.getElementById("startSearchButton").click();
return;
}
switch (elem.id) {
switch (event.target.id) {
case "manageSearchPlugins":
manageSearchPlugins();
break;
case "searchPattern":
document.getElementById("startSearchButton").click();
break;
}
break;
}
}
}).activate();
});
// restore search tabs
const searchJobs = JSON.parse(LocalPreferences.get("search_jobs", "[]"));