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}