feat(sidebar+assistant): filtre Recents/Sauvegardes (#99), pastille Deep Research (#100) et icone du bouton + (BUG-049)
This commit is contained in:
+24
-35
@@ -2,8 +2,8 @@ import { state } from './state.js';
|
||||
import { safeCreateIcons, getFileIcon, flushIcons } from './utils.js';
|
||||
import { api } from './auth.js';
|
||||
import { populateCustomDropdown, TabManager, closeMobileSidebar, ContextMenuManager } from './ui.js';
|
||||
import { _populateRecentVaultFilter, switchSidebarTab, filterAIHistory } from './config.js';
|
||||
import { el, icon, getVaultIcon, smallBadge, attachTreeItemActionButton, attachTreeItemLongPress, showWelcome, appendHighlightedText } from './viewer.js';
|
||||
import { _populateRecentVaultFilter, switchSidebarTab, filterAIHistory, filterRecentFiles } from './config.js';
|
||||
import { el, icon, getVaultIcon, smallBadge, attachTreeItemActionButton, attachTreeItemLongPress, showWelcome, appendHighlightedText, filterSavedSearches } from './viewer.js';
|
||||
import { performAdvancedSearch } from './search.js';
|
||||
import { t } from './i18n.js';
|
||||
|
||||
@@ -700,29 +700,32 @@ function initSidebarFilter() {
|
||||
const caseBtn = document.getElementById("sidebar-filter-case-btn");
|
||||
const clearBtn = document.getElementById("sidebar-filter-clear-btn");
|
||||
|
||||
// Route the query to the active tab's own filter (#98/#99).
|
||||
const routeFilter = async (q) => {
|
||||
const tab = state.activeSidebarTab;
|
||||
if (tab === "vaults") await performTreeSearch(q);
|
||||
else if (tab === "recent") filterRecentFiles(q);
|
||||
else if (tab === "saved") filterSavedSearches(q);
|
||||
else if (tab === "ai") filterAIHistory(q);
|
||||
else filterTagCloud(q);
|
||||
};
|
||||
const routeClear = async () => {
|
||||
const tab = state.activeSidebarTab;
|
||||
if (tab === "vaults") await restoreSidebarTree();
|
||||
else if (tab === "recent") filterRecentFiles("");
|
||||
else if (tab === "saved") filterSavedSearches("");
|
||||
else if (tab === "ai") filterAIHistory("");
|
||||
else filterTagCloud("");
|
||||
};
|
||||
|
||||
input.addEventListener("input", () => {
|
||||
const hasText = input.value.length > 0;
|
||||
clearBtn.style.display = hasText ? "flex" : "none";
|
||||
clearTimeout(state.filterDebounce);
|
||||
state.filterDebounce = setTimeout(async () => {
|
||||
const q = state.sidebarFilterCaseSensitive ? input.value.trim() : input.value.trim().toLowerCase();
|
||||
if (hasText) {
|
||||
if (state.activeSidebarTab === "vaults") {
|
||||
await performTreeSearch(q);
|
||||
} else if (state.activeSidebarTab === "ai") {
|
||||
filterAIHistory(q);
|
||||
} else {
|
||||
filterTagCloud(q);
|
||||
}
|
||||
} else {
|
||||
if (state.activeSidebarTab === "vaults") {
|
||||
await restoreSidebarTree();
|
||||
} else if (state.activeSidebarTab === "ai") {
|
||||
filterAIHistory("");
|
||||
} else {
|
||||
filterTagCloud("");
|
||||
}
|
||||
}
|
||||
if (hasText) await routeFilter(q);
|
||||
else await routeClear();
|
||||
}, 220);
|
||||
});
|
||||
|
||||
@@ -730,15 +733,7 @@ function initSidebarFilter() {
|
||||
state.sidebarFilterCaseSensitive = !state.sidebarFilterCaseSensitive;
|
||||
caseBtn.classList.toggle("active");
|
||||
const q = state.sidebarFilterCaseSensitive ? input.value.trim() : input.value.trim().toLowerCase();
|
||||
if (input.value.trim()) {
|
||||
if (state.activeSidebarTab === "vaults") {
|
||||
await performTreeSearch(q);
|
||||
} else if (state.activeSidebarTab === "ai") {
|
||||
filterAIHistory(q);
|
||||
} else {
|
||||
filterTagCloud(q);
|
||||
}
|
||||
}
|
||||
if (input.value.trim()) await routeFilter(q);
|
||||
});
|
||||
|
||||
clearBtn.addEventListener("click", async () => {
|
||||
@@ -747,13 +742,7 @@ function initSidebarFilter() {
|
||||
state.sidebarFilterCaseSensitive = false;
|
||||
caseBtn.classList.remove("active");
|
||||
clearTimeout(state.filterDebounce);
|
||||
if (state.activeSidebarTab === "vaults") {
|
||||
await restoreSidebarTree();
|
||||
} else if (state.activeSidebarTab === "ai") {
|
||||
filterAIHistory("");
|
||||
} else {
|
||||
filterTagCloud("");
|
||||
}
|
||||
await routeClear();
|
||||
});
|
||||
|
||||
clearBtn.style.display = "none";
|
||||
|
||||
Reference in New Issue
Block a user