fix: backup viewer close button — add missing onclick to renderError + Escape key + proper cleanup
This commit is contained in:
+23
-9
@@ -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">×</button>
|
||||
<button class="backup-close-btn" title="Fermer" onclick="window._backupViewerClose()">×</button>
|
||||
</div>
|
||||
<div class="backup-body" style="text-align:center;padding:2rem;color:var(--text-muted)">
|
||||
<p>${escapeHtml(msg)}</p>
|
||||
|
||||
Reference in New Issue
Block a user