feat: initialize frontend application structure and search functionality with autocomplete support

This commit is contained in:
Bruno Charest 2026-03-27 23:04:42 -04:00
parent 9e1b4f4105
commit 4e8c36cc61

View File

@ -1865,6 +1865,18 @@
syncVaultSelectors(); syncVaultSelectors();
await refreshSidebarForContext(); await refreshSidebarForContext();
await refreshTagsForContext(); await refreshTagsForContext();
// Synchroniser le dashboard et les fichiers récents
if (typeof DashboardRecentWidget !== "undefined" && DashboardRecentWidget.load) {
DashboardRecentWidget.load(vaultName);
}
if (typeof DashboardBookmarkWidget !== "undefined" && DashboardBookmarkWidget.load) {
DashboardBookmarkWidget.load(vaultName);
}
if (activeSidebarTab === "recent") {
loadRecentFiles(vaultName === "all" ? null : vaultName);
}
showWelcome(); showWelcome();
if (options && options.focusVault && vaultName !== "all") { if (options && options.focusVault && vaultName !== "all") {
await focusVaultInSidebar(vaultName); await focusVaultInSidebar(vaultName);
@ -1874,10 +1886,14 @@
function syncVaultSelectors() { function syncVaultSelectors() {
const filter = document.getElementById("vault-filter"); const filter = document.getElementById("vault-filter");
const quickSelect = document.getElementById("vault-quick-select"); const quickSelect = document.getElementById("vault-quick-select");
const recentFilter = document.getElementById("recent-vault-filter");
const dashboardFilter = document.getElementById("dashboard-vault-filter");
const contextText = document.getElementById("vault-context-text"); const contextText = document.getElementById("vault-context-text");
if (filter) filter.value = selectedContextVault; if (filter) filter.value = selectedContextVault;
if (quickSelect) quickSelect.value = selectedContextVault; if (quickSelect) quickSelect.value = selectedContextVault;
if (recentFilter) recentFilter.value = selectedContextVault === "all" ? "" : selectedContextVault;
if (dashboardFilter) dashboardFilter.value = selectedContextVault;
// Update vault context indicator // Update vault context indicator
if (contextText) { if (contextText) {
@ -1994,6 +2010,12 @@
populateCustomDropdown("vault-filter-dropdown", dropdownOptions, "all"); populateCustomDropdown("vault-filter-dropdown", dropdownOptions, "all");
populateCustomDropdown("vault-quick-select-dropdown", dropdownOptions, "all"); populateCustomDropdown("vault-quick-select-dropdown", dropdownOptions, "all");
// Populate standard selects
_populateRecentVaultFilter();
if (typeof DashboardRecentWidget !== "undefined" && DashboardRecentWidget.populateVaultFilter) {
DashboardRecentWidget.populateVaultFilter();
}
vaults.forEach((v) => { vaults.forEach((v) => {
// Sidebar tree entry // Sidebar tree entry
const vaultItem = el("div", { class: "tree-item vault-item", "data-vault": v.name }, [icon("chevron-right", 14), getVaultIcon(v.name, 16), document.createTextNode(` ${v.name} `), smallBadge(v.file_count)]); const vaultItem = el("div", { class: "tree-item vault-item", "data-vault": v.name }, [icon("chevron-right", 14), getVaultIcon(v.name, 16), document.createTextNode(` ${v.name} `), smallBadge(v.file_count)]);
@ -3090,13 +3112,14 @@
select.appendChild(opt); select.appendChild(opt);
}); });
} }
syncVaultSelectors();
}, },
init() { init() {
const select = document.getElementById("dashboard-vault-filter"); const select = document.getElementById("dashboard-vault-filter");
if (select) { if (select) {
select.addEventListener("change", () => { select.addEventListener("change", async () => {
this.load(select.value); await setSelectedVaultContext(select.value, { focusVault: select.value !== "all" });
}); });
} }
@ -3289,13 +3312,15 @@
opt.textContent = v.name; opt.textContent = v.name;
select.appendChild(opt); select.appendChild(opt);
}); });
syncVaultSelectors();
} }
function initRecentTab() { function initRecentTab() {
const select = document.getElementById("recent-vault-filter"); const select = document.getElementById("recent-vault-filter");
if (select) { if (select) {
select.addEventListener("change", () => { select.addEventListener("change", async () => {
loadRecentFiles(select.value || null); const val = select.value || "all";
await setSelectedVaultContext(val, { focusVault: val !== "all" });
}); });
} }
// Periodic timestamp refresh (every 60s) // Periodic timestamp refresh (every 60s)