diff --git a/frontend/src/lib/components/notes/InternalLinkPicker.svelte b/frontend/src/lib/components/notes/InternalLinkPicker.svelte
index 8c49f1e..cb13563 100644
--- a/frontend/src/lib/components/notes/InternalLinkPicker.svelte
+++ b/frontend/src/lib/components/notes/InternalLinkPicker.svelte
@@ -17,7 +17,8 @@
let activeType = 'note';
let query = '';
- let results = [];
+ let rawResults = []; // all search results (unfiltered)
+ let results = []; // filtered by activeType
let selectedIndex = 0;
let loading = false;
let error = '';
@@ -31,8 +32,15 @@
return 'case';
}
+ // Filter rawResults by activeType into displayed results
+ function applyTypeFilter() {
+ results = rawResults.filter(n => nodeTypeToFilter(n.type) === activeType);
+ selectedIndex = 0;
+ }
+
async function search() {
if (!query.trim() || query.trim().length < 2) {
+ rawResults = [];
results = [];
return;
}
@@ -41,7 +49,6 @@
try {
// Expand query with keyboard layout variants for tolerant search
const variants = expandKeyboardVariants(query.trim());
- // Deduplicate: skip variants identical to the original query's lowercase
const seen = new Set();
const queries = [];
for (const v of variants) {
@@ -63,11 +70,11 @@
}
}
}
- // Filter by active type
- results = Array.from(merged.values()).filter(n => nodeTypeToFilter(n.type) === activeType);
- selectedIndex = 0;
+ rawResults = Array.from(merged.values());
+ applyTypeFilter();
} catch (e) {
error = String(e);
+ rawResults = [];
results = [];
} finally {
loading = false;
@@ -104,9 +111,7 @@
function handleTypeChange(typeId) {
activeType = typeId;
- query = '';
- results = [];
- error = '';
+ applyTypeFilter();
if (inputRef) inputRef.focus();
}
@@ -159,8 +164,10 @@
Загрузка...
{:else if error}
{error}
- {:else if query.trim().length >= 2 && results.length === 0}
- Ничего не найдено
+ {:else if query.trim().length >= 2 && results.length === 0 && !loading}
+
+ {rawResults.length > 0 ? 'Нет результатов для этого типа' : 'Ничего не найдено'}
+
{:else}
{#each results as item, i}