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;