From 7145cb6f30738ea8f3b791d869f2fdbaa5e86dcc Mon Sep 17 00:00:00 2001 From: Sergio Behrends Date: Fri, 2 Aug 2024 16:57:18 +0200 Subject: [PATCH] Increase fuzzines of search results (#187) * Introduce normalizeString fn * Prettier --------- Co-authored-by: Sebastien Castiel --- src/app/groups/[groupId]/expenses/expense-list.tsx | 7 +++++-- src/lib/utils.ts | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/app/groups/[groupId]/expenses/expense-list.tsx b/src/app/groups/[groupId]/expenses/expense-list.tsx index 40674fd..90f0ce3 100644 --- a/src/app/groups/[groupId]/expenses/expense-list.tsx +++ b/src/app/groups/[groupId]/expenses/expense-list.tsx @@ -4,6 +4,7 @@ import { getGroupExpensesAction } from '@/app/groups/[groupId]/expenses/expense- import { Button } from '@/components/ui/button' import { SearchBar } from '@/components/ui/search-bar' import { Skeleton } from '@/components/ui/skeleton' +import { normalizeString } from '@/lib/utils' import { Participant } from '@prisma/client' import dayjs, { type Dayjs } from 'dayjs' import Link from 'next/link' @@ -134,13 +135,15 @@ export function ExpenseList({ return expenses.length > 0 ? ( <> - setSearchText(value)} /> + setSearchText(normalizeString(value))} + /> {Object.values(EXPENSE_GROUPS).map((expenseGroup: string) => { let groupExpenses = groupedExpensesByDate[expenseGroup] if (!groupExpenses) return null groupExpenses = groupExpenses.filter(({ title }) => - title.toLowerCase().includes(searchText.toLowerCase()), + normalizeString(title).includes(searchText), ) if (groupExpenses.length === 0) return null diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 4158166..04052c3 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -48,3 +48,13 @@ export function formatFileSize(size: number) { if (size > 1024) return `${formatNumber(size / 1024)} kB` return `${formatNumber(size)} B` } + +export function normalizeString(input: string): string { + // Replaces special characters + // Input: áäåèéę + // Output: aaaeee + return input + .toLowerCase() + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') +}