feat: add dynamic button state updates for hidden files config with modified vault count display and visual highlights to indicate unsaved changes

This commit is contained in:
2026-03-26 15:17:55 -04:00
parent ac962bd416
commit 2686cc5d11
3 changed files with 43 additions and 1 deletions
+30
View File
@@ -3234,6 +3234,29 @@
// Track which vaults have been modified
let modifiedVaults = new Set();
function updateHiddenFilesButtonStates() {
const saveBtn = document.getElementById("cfg-save-hidden-files");
const reindexBtn = document.getElementById("cfg-reindex-hidden");
if (modifiedVaults.size > 0) {
if (saveBtn) {
saveBtn.textContent = `💾 Sauvegarder (${modifiedVaults.size} modifié${modifiedVaults.size > 1 ? 's' : ''})`;
saveBtn.classList.add("config-btn-highlight");
}
if (reindexBtn) {
reindexBtn.textContent = "🔄 Sauvegarder et réindexer";
}
} else {
if (saveBtn) {
saveBtn.textContent = "💾 Sauvegarder";
saveBtn.classList.remove("config-btn-highlight");
}
if (reindexBtn) {
reindexBtn.textContent = "🔄 Réindexer";
}
}
}
async function loadHiddenFilesSettings() {
const container = document.getElementById("hidden-files-vault-list");
if (!container) return;
@@ -3338,15 +3361,18 @@
addBtn.addEventListener("click", () => {
addWhitelistItem(vault.name);
modifiedVaults.add(vault.name);
updateHiddenFilesButtonStates();
});
input.addEventListener("keypress", (e) => {
if (e.key === "Enter") {
addWhitelistItem(vault.name);
modifiedVaults.add(vault.name);
updateHiddenFilesButtonStates();
}
});
checkbox.addEventListener("change", () => {
modifiedVaults.add(vault.name);
updateHiddenFilesButtonStates();
});
});
}
@@ -3367,6 +3393,7 @@
removeBtn.addEventListener("click", () => {
item.remove();
modifiedVaults.add(vaultName);
updateHiddenFilesButtonStates();
});
return item;
@@ -3435,6 +3462,7 @@
await Promise.all(promises);
modifiedVaults.clear();
updateHiddenFilesButtonStates();
showToast("✓ Paramètres sauvegardés", "success");
} catch (err) {
console.error("Failed to save hidden files settings:", err);
@@ -3467,6 +3495,8 @@
showToast("✓ Réindexation terminée", "success");
}
modifiedVaults.clear();
updateHiddenFilesButtonStates();
loadDiagnostics();
await Promise.all([loadVaults(), loadTags()]);
} catch (err) {