WebUI: Allow closing dialogs with Escape key

Tested on the following WebUI Modals:
1. Delete
2. Rename files
3. Settings
4. About
5. Statistics
6. Add torrent

PR #22920.
Closes #13891.
This commit is contained in:
Bark 2025-07-20 11:23:22 +03:00 committed by GitHub
commit e3141ce449
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 72 additions and 0 deletions

View file

@ -11,6 +11,15 @@
"use strict"; "use strict";
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "Escape":
event.preventDefault();
window.parent.qBittorrent.Client.closeFrameWindow(window);
break;
}
});
document.getElementById("cancelBtn").focus(); document.getElementById("cancelBtn").focus();
document.getElementById("cancelBtn").addEventListener("click", (e) => { document.getElementById("cancelBtn").addEventListener("click", (e) => {
e.preventDefault(); e.preventDefault();

View file

@ -11,6 +11,15 @@
"use strict"; "use strict";
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "Escape":
event.preventDefault();
window.parent.qBittorrent.Client.closeFrameWindow(window);
break;
}
});
document.getElementById("cancelBtn").focus(); document.getElementById("cancelBtn").focus();
document.getElementById("cancelBtn").addEventListener("click", (e) => { document.getElementById("cancelBtn").addEventListener("click", (e) => {
e.preventDefault(); e.preventDefault();

View file

@ -11,6 +11,15 @@
"use strict"; "use strict";
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "Escape":
event.preventDefault();
window.parent.qBittorrent.Client.closeFrameWindow(window);
break;
}
});
document.getElementById("cancelBtn").focus(); document.getElementById("cancelBtn").focus();
document.getElementById("cancelBtn").addEventListener("click", (e) => { document.getElementById("cancelBtn").addEventListener("click", (e) => {
e.preventDefault(); e.preventDefault();

View file

@ -11,6 +11,15 @@
"use strict"; "use strict";
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "Escape":
event.preventDefault();
window.parent.qBittorrent.Client.closeFrameWindow(window);
break;
}
});
const searchParams = new URLSearchParams(window.location.search); const searchParams = new URLSearchParams(window.location.search);
const host = searchParams.get("host"); const host = searchParams.get("host");

View file

@ -14,6 +14,15 @@
"use strict"; "use strict";
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "Escape":
event.preventDefault();
window.parent.qBittorrent.Client.closeFrameWindow(window);
break;
}
});
const encodedUrls = new URLSearchParams(window.location.search).get("urls"); const encodedUrls = new URLSearchParams(window.location.search).get("urls");
if (encodedUrls !== null) { if (encodedUrls !== null) {
const urls = encodedUrls.split("|").map(decodeURIComponent); const urls = encodedUrls.split("|").map(decodeURIComponent);

View file

@ -1778,6 +1778,24 @@ window.addEventListener("DOMContentLoaded", (event) => {
deleteSelectedTorrentsFN(event.shiftKey); deleteSelectedTorrentsFN(event.shiftKey);
break; break;
case "Escape": {
if (event.target.isContentEditable)
return;
event.preventDefault();
const modalInstances = Object.values(MochaUI.Windows.instances);
if (modalInstances.length <= 0)
return;
// MochaUI.currentModal does not update after a modal is closed
const focusedModal = modalInstances.find((modal) => {
return modal.windowEl.hasClass("isFocused");
});
if (focusedModal !== undefined)
focusedModal.close();
break;
}
case "f": case "f":
case "F": case "F":
if (event.ctrlKey || event.metaKey) { if (event.ctrlKey || event.metaKey) {

View file

@ -14,6 +14,15 @@
"use strict"; "use strict";
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
window.addEventListener("keydown", (event) => {
switch (event.key) {
case "Escape":
event.preventDefault();
window.parent.qBittorrent.Client.closeFrameWindow(window);
break;
}
});
let submitted = false; let submitted = false;
document.getElementById("uploadForm").addEventListener("submit", (event) => { document.getElementById("uploadForm").addEventListener("submit", (event) => {