From a4c39532100eb5f746d7f942e78e8722c1e17a0b Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:50:44 -0700 Subject: [PATCH] Support multiple partial matches --- src-ui/src/app/utils/text-search.spec.ts | 7 +++++++ src-ui/src/app/utils/text-search.ts | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src-ui/src/app/utils/text-search.spec.ts b/src-ui/src/app/utils/text-search.spec.ts index fdf6e55c5..daa432851 100644 --- a/src-ui/src/app/utils/text-search.spec.ts +++ b/src-ui/src/app/utils/text-search.spec.ts @@ -7,4 +7,11 @@ describe('text search utilities', () => { expect(matchesSearchText('\u0152uvre', 'oeuvre')).toBeTruthy() expect(matchesSearchText('Invoice', 'receipt')).toBeFalsy() }) + + it('matches all whitespace-separated search terms independently', () => { + expect(matchesSearchText('taxes 2026', 'tax 26')).toBeTruthy() + expect(matchesSearchText('2026 taxes', 'tax 26')).toBeTruthy() + expect(matchesSearchText('Tax\u00e9s 2026', 'taxe 26')).toBeTruthy() + expect(matchesSearchText('taxes 2026', 'tax receipt')).toBeFalsy() + }) }) diff --git a/src-ui/src/app/utils/text-search.ts b/src-ui/src/app/utils/text-search.ts index 52b240456..d54f77726 100644 --- a/src-ui/src/app/utils/text-search.ts +++ b/src-ui/src/app/utils/text-search.ts @@ -8,5 +8,8 @@ export function matchesSearchText( value: unknown, searchText: unknown ): boolean { - return normalizeSearchText(value).includes(normalizeSearchText(searchText)) + const normalizedValue = normalizeSearchText(value) + const searchTerms = normalizeSearchText(searchText).trim().split(/\s+/) + + return searchTerms.every((term) => normalizedValue.includes(term)) }