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:
parent
ac962bd416
commit
2686cc5d11
@ -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) {
|
||||
|
||||
@ -550,8 +550,11 @@
|
||||
|
||||
<!-- Hidden Files/Folders Configuration -->
|
||||
<section class="config-section">
|
||||
<h2><EFBFBD>️ Fichiers cachés</h2>
|
||||
<h2>🗂️ Fichiers cachés</h2>
|
||||
<p class="config-description">Gérez l'affichage des fichiers/dossiers cachés (commençant par <code>.</code>) par vault.</p>
|
||||
<p class="config-hint" style="margin-bottom: 12px; padding: 8px; background: var(--background-secondary); border-radius: 4px;">
|
||||
⚠️ <strong>Important :</strong> Après avoir modifié les paramètres, cliquez sur <strong>"Sauvegarder"</strong> puis sur <strong>"Réindexer"</strong> pour appliquer les changements.
|
||||
</p>
|
||||
|
||||
<div id="hidden-files-vault-list">
|
||||
<!-- Vault-specific settings will be injected here -->
|
||||
|
||||
@ -2785,6 +2785,15 @@ body.resizing-v {
|
||||
transition: opacity 150ms;
|
||||
}
|
||||
.config-btn-save:hover { opacity: 0.9; }
|
||||
.config-btn-save.config-btn-highlight {
|
||||
background: var(--accent-green);
|
||||
border-color: var(--accent-green);
|
||||
animation: pulse 2s ease-in-out infinite;
|
||||
}
|
||||
@keyframes pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.8; }
|
||||
}
|
||||
.config-btn-secondary {
|
||||
padding: 8px 16px;
|
||||
border: 1px solid var(--border);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user