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
|
// Track which vaults have been modified
|
||||||
let modifiedVaults = new Set();
|
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() {
|
async function loadHiddenFilesSettings() {
|
||||||
const container = document.getElementById("hidden-files-vault-list");
|
const container = document.getElementById("hidden-files-vault-list");
|
||||||
if (!container) return;
|
if (!container) return;
|
||||||
@ -3338,15 +3361,18 @@
|
|||||||
addBtn.addEventListener("click", () => {
|
addBtn.addEventListener("click", () => {
|
||||||
addWhitelistItem(vault.name);
|
addWhitelistItem(vault.name);
|
||||||
modifiedVaults.add(vault.name);
|
modifiedVaults.add(vault.name);
|
||||||
|
updateHiddenFilesButtonStates();
|
||||||
});
|
});
|
||||||
input.addEventListener("keypress", (e) => {
|
input.addEventListener("keypress", (e) => {
|
||||||
if (e.key === "Enter") {
|
if (e.key === "Enter") {
|
||||||
addWhitelistItem(vault.name);
|
addWhitelistItem(vault.name);
|
||||||
modifiedVaults.add(vault.name);
|
modifiedVaults.add(vault.name);
|
||||||
|
updateHiddenFilesButtonStates();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
checkbox.addEventListener("change", () => {
|
checkbox.addEventListener("change", () => {
|
||||||
modifiedVaults.add(vault.name);
|
modifiedVaults.add(vault.name);
|
||||||
|
updateHiddenFilesButtonStates();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -3367,6 +3393,7 @@
|
|||||||
removeBtn.addEventListener("click", () => {
|
removeBtn.addEventListener("click", () => {
|
||||||
item.remove();
|
item.remove();
|
||||||
modifiedVaults.add(vaultName);
|
modifiedVaults.add(vaultName);
|
||||||
|
updateHiddenFilesButtonStates();
|
||||||
});
|
});
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
@ -3435,6 +3462,7 @@
|
|||||||
|
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
modifiedVaults.clear();
|
modifiedVaults.clear();
|
||||||
|
updateHiddenFilesButtonStates();
|
||||||
showToast("✓ Paramètres sauvegardés", "success");
|
showToast("✓ Paramètres sauvegardés", "success");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Failed to save hidden files settings:", err);
|
console.error("Failed to save hidden files settings:", err);
|
||||||
@ -3467,6 +3495,8 @@
|
|||||||
showToast("✓ Réindexation terminée", "success");
|
showToast("✓ Réindexation terminée", "success");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modifiedVaults.clear();
|
||||||
|
updateHiddenFilesButtonStates();
|
||||||
loadDiagnostics();
|
loadDiagnostics();
|
||||||
await Promise.all([loadVaults(), loadTags()]);
|
await Promise.all([loadVaults(), loadTags()]);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@ -550,8 +550,11 @@
|
|||||||
|
|
||||||
<!-- Hidden Files/Folders Configuration -->
|
<!-- Hidden Files/Folders Configuration -->
|
||||||
<section class="config-section">
|
<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-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">
|
<div id="hidden-files-vault-list">
|
||||||
<!-- Vault-specific settings will be injected here -->
|
<!-- Vault-specific settings will be injected here -->
|
||||||
|
|||||||
@ -2785,6 +2785,15 @@ body.resizing-v {
|
|||||||
transition: opacity 150ms;
|
transition: opacity 150ms;
|
||||||
}
|
}
|
||||||
.config-btn-save:hover { opacity: 0.9; }
|
.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 {
|
.config-btn-secondary {
|
||||||
padding: 8px 16px;
|
padding: 8px 16px;
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user