diff --git a/static/js/managers/FilterPresetManager.js b/static/js/managers/FilterPresetManager.js index a8d12234..e63fe693 100644 --- a/static/js/managers/FilterPresetManager.js +++ b/static/js/managers/FilterPresetManager.js @@ -743,8 +743,16 @@ export class FilterPresetManager { presetEl.classList.add('active'); } - presetEl.addEventListener('click', (e) => { - e.stopPropagation(); + // Apply preset on click (toggle if already active) + // Bind to the whole .filter-preset div so clicking anywhere inside triggers apply + presetEl.addEventListener('click', async () => { + this.cancelPendingDelete(); + + if (this.activePreset === preset.name) { + await this.filterManager.clearFilters(); + } else { + await this.applyPreset(preset.name); + } }); const presetName = document.createElement('span'); @@ -757,18 +765,6 @@ export class FilterPresetManager { deleteBtn.innerHTML = ''; deleteBtn.title = translate('header.filter.presetDeleteTooltip', {}, 'Delete preset'); - // Apply preset on name click (toggle if already active) - presetName.addEventListener('click', async (e) => { - e.stopPropagation(); - this.cancelPendingDelete(); - - if (this.activePreset === preset.name) { - await this.filterManager.clearFilters(); - } else { - await this.applyPreset(preset.name); - } - }); - // Two-step delete on delete button click deleteBtn.addEventListener('click', (e) => { e.stopPropagation(); diff --git a/static/js/utils/uiHelpers.js b/static/js/utils/uiHelpers.js index 537d0e40..5e1763f6 100644 --- a/static/js/utils/uiHelpers.js +++ b/static/js/utils/uiHelpers.js @@ -134,7 +134,10 @@ export async function copyToClipboard(text, successMessage = null) { } export function showToast(key, params = {}, type = 'info', fallback = null) { - const message = translate(key, params, fallback); + // Plain messages (contain spaces) are not i18n dot-notation keys — use verbatim + // to avoid spurious "Translation key not found" warnings from i18next + const isPlainMessage = typeof key === 'string' && /\s/.test(key); + const message = isPlainMessage ? key : translate(key, params, fallback); const toast = document.createElement('div'); toast.className = `toast toast-${type}`; toast.textContent = message;