From 4e8c36cc61d4f08afa5c8c46d42a74b6aa0137f7 Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Fri, 27 Mar 2026 23:04:42 -0400 Subject: [PATCH] feat: initialize frontend application structure and search functionality with autocomplete support --- frontend/app.js | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/frontend/app.js b/frontend/app.js index 9fa6782..bbfdde2 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -1865,6 +1865,18 @@ syncVaultSelectors(); await refreshSidebarForContext(); 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(); if (options && options.focusVault && vaultName !== "all") { await focusVaultInSidebar(vaultName); @@ -1874,10 +1886,14 @@ function syncVaultSelectors() { const filter = document.getElementById("vault-filter"); 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"); if (filter) filter.value = selectedContextVault; if (quickSelect) quickSelect.value = selectedContextVault; + if (recentFilter) recentFilter.value = selectedContextVault === "all" ? "" : selectedContextVault; + if (dashboardFilter) dashboardFilter.value = selectedContextVault; // Update vault context indicator if (contextText) { @@ -1993,6 +2009,12 @@ // Populate custom dropdowns populateCustomDropdown("vault-filter-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) => { // Sidebar tree entry @@ -3090,13 +3112,14 @@ select.appendChild(opt); }); } + syncVaultSelectors(); }, init() { const select = document.getElementById("dashboard-vault-filter"); if (select) { - select.addEventListener("change", () => { - this.load(select.value); + select.addEventListener("change", async () => { + await setSelectedVaultContext(select.value, { focusVault: select.value !== "all" }); }); } @@ -3289,13 +3312,15 @@ opt.textContent = v.name; select.appendChild(opt); }); + syncVaultSelectors(); } function initRecentTab() { const select = document.getElementById("recent-vault-filter"); if (select) { - select.addEventListener("change", () => { - loadRecentFiles(select.value || null); + select.addEventListener("change", async () => { + const val = select.value || "all"; + await setSelectedVaultContext(val, { focusVault: val !== "all" }); }); } // Periodic timestamp refresh (every 60s)