fix: backup viewer close button — add missing onclick to renderError + Escape key + proper cleanup
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 17s

This commit is contained in:
2026-06-04 15:12:38 -04:00
parent e22967ada8
commit af05604e99
+23 -9
View File
@@ -91,6 +91,14 @@ function createOverlay() {
if (e.target === overlay) close();
});
// Keyboard: Escape closes the viewer
_escHandler = (e) => {
if (e.key === 'Escape' && state.overlay) {
close();
}
};
document.addEventListener('keydown', _escHandler);
const panel = document.createElement('div');
panel.className = 'backup-viewer-panel';
panel.id = 'backup-viewer-panel';
@@ -124,17 +132,23 @@ function setBody(html) {
}
}
let _escHandler = null;
function close() {
if (state.overlay) {
state.overlay.classList.remove('active');
setTimeout(() => {
if (state.overlay) state.overlay.remove();
state.overlay = null;
}, 200);
if (!state.overlay) return;
// Remove keyboard listener
if (_escHandler) {
document.removeEventListener('keydown', _escHandler);
_escHandler = null;
}
state.overlay.classList.remove('active');
setTimeout(() => {
if (state.overlay) state.overlay.remove();
state.overlay = null;
}, 200);
}
// Expose globally for inline onclick handlers (bypasses text-node target issues)
// Expose globally for inline onclick handlers
window._backupViewerClose = close;
// ---------------------------------------------------------------------------
@@ -156,10 +170,10 @@ function renderLoading() {
}
function renderError(msg) {
return `
return \`
<div class="backup-header">
<h3>Backups</h3>
<button class="backup-close-btn" title="Fermer">&times;</button>
<button class="backup-close-btn" title="Fermer" onclick="window._backupViewerClose()">&times;</button>
</div>
<div class="backup-body" style="text-align:center;padding:2rem;color:var(--text-muted)">
<p>${escapeHtml(msg)}</p>