From 2228415323cd9685e81b49de6176e66f0d214a73 Mon Sep 17 00:00:00 2001 From: Vid ÄŒufar <32638301+cufarvid@users.noreply.github.com> Date: Fri, 26 Jan 2024 16:27:34 +0100 Subject: Fix search functionality (#62) * Improve README instructions for local setup * Fix search functionality #61 - use 'includes' for expense filtering * Ensure expense groups with no matching expenses are hidden after filtering * Improve README instructions for local setup --- src/app/groups/[groupId]/expenses/expense-list.tsx | 142 ++++++++++----------- 1 file changed, 68 insertions(+), 74 deletions(-) (limited to 'src/app/groups') diff --git a/src/app/groups/[groupId]/expenses/expense-list.tsx b/src/app/groups/[groupId]/expenses/expense-list.tsx index b083ab6..0dc7a7e 100644 --- a/src/app/groups/[groupId]/expenses/expense-list.tsx +++ b/src/app/groups/[groupId]/expenses/expense-list.tsx @@ -92,8 +92,15 @@ export function ExpenseList({ <> setSearchText(e.target.value)} /> {Object.values(EXPENSE_GROUPS).map((expenseGroup: string) => { - const groupExpenses = groupedExpensesByDate[expenseGroup] + let groupExpenses = groupedExpensesByDate[expenseGroup] if (!groupExpenses) return null + + groupExpenses = groupExpenses.filter(({ title }) => + title.toLowerCase().includes(searchText.toLowerCase()), + ) + + if (groupExpenses.length === 0) return null + return (
{expenseGroup}
- {groupExpenses - .filter( - (exp) => - exp.title.toLowerCase().match(searchText.toLowerCase()) !== - null, - ) - .map((expense: any) => ( -
{ - router.push( - `/groups/${groupId}/expenses/${expense.id}/edit`, - ) - }} - > - -
-
- {expense.title} -
-
- Paid by{' '} - {getParticipant(expense.paidById)?.name}{' '} - for{' '} - {expense.paidFor.map((paidFor: any, index: number) => ( - - {index !== 0 && <>, } - - { - participants.find( - (p) => p.id === paidFor.participantId, - )?.name - } - - - ))} -
+ {groupExpenses.map((expense: any) => ( +
{ + router.push(`/groups/${groupId}/expenses/${expense.id}/edit`) + }} + > + +
+
+ {expense.title}
-
-
- {currency} {(expense.amount / 100).toFixed(2)} -
-
- {formatDate(expense.expenseDate)} -
+
+ Paid by{' '} + {getParticipant(expense.paidById)?.name}{' '} + for{' '} + {expense.paidFor.map((paidFor: any, index: number) => ( + + {index !== 0 && <>, } + + { + participants.find( + (p) => p.id === paidFor.participantId, + )?.name + } + + + ))}
- + {currency} {(expense.amount / 100).toFixed(2)} +
+
+ {formatDate(expense.expenseDate)} +
- ))} + +
+ ))}
) })} -- cgit v1.3