diff --git a/containers/libreportal/frontend/js/components/backup/backup-page.js b/containers/libreportal/frontend/js/components/backup/backup-page.js index 6a0a489..c11ae2f 100644 --- a/containers/libreportal/frontend/js/components/backup/backup-page.js +++ b/containers/libreportal/frontend/js/components/backup/backup-page.js @@ -945,10 +945,9 @@ class BackupPage { block.className = 'backup-retention-preset-block'; block.innerHTML = ` -
${this.escape(meta?.hint || '')}
`; const fieldsGrid = section.querySelector('.config-fields'); @@ -965,10 +964,10 @@ class BackupPage { applyVisibility(preset); const select = block.querySelector('[data-backup-retention-preset]'); - const hintEl = block.querySelector('.backup-retention-hint'); + const tooltipEl = block.querySelector('[data-retention-tooltip]'); select.addEventListener('change', () => { const chosen = select.value; - hintEl.textContent = BACKUP_RETENTION_PRESET_META[chosen]?.hint || ''; + if (tooltipEl) tooltipEl.title = BACKUP_RETENTION_PRESET_META[chosen]?.hint || ''; applyVisibility(chosen); if (chosen === 'custom') return; const p = BACKUP_RETENTION_PRESETS[chosen]; @@ -990,6 +989,7 @@ class BackupPage { "Custom…" is selected. */ formRetention(prefix, values, includeInherit = false) { const preset = backupRetentionDetectPreset(values, includeInherit); + const meta = BACKUP_RETENTION_PRESET_META[preset]; const presetOptions = Object.entries(BACKUP_RETENTION_PRESET_META) .filter(([k]) => k !== 'inherit-global' || includeInherit) .map(([k, v]) => ``) @@ -1002,7 +1002,7 @@ class BackupPage { return `
${customRetentionHidden} @@ -1026,6 +1026,8 @@ class BackupPage { const prefix = block.dataset.retentionPrefix; const allowInherit = block.dataset.retentionAllowInherit === '1'; const preset = selectEl.value; + const tooltipEl = block.querySelector('[data-retention-tooltip]'); + if (tooltipEl) tooltipEl.title = BACKUP_RETENTION_PRESET_META[preset]?.hint || ''; if (preset === 'custom') { if (advanced) advanced.hidden = false;