From f32662e256e20a63f9bbaa950a89045b773d1f95 Mon Sep 17 00:00:00 2001 From: Vasily Zubarev Date: Tue, 8 Apr 2025 22:08:16 +0200 Subject: [PATCH] fix: extra field rendering --- components/transactions/list.tsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/components/transactions/list.tsx b/components/transactions/list.tsx index 4755792..d6a640a 100644 --- a/components/transactions/list.tsx +++ b/components/transactions/list.tsx @@ -21,6 +21,10 @@ type FieldRenderer = { footerValue?: (transactions: Transaction[]) => React.ReactNode } +type FieldWithRenderer = Field & { + renderer: FieldRenderer +} + export const standardFieldRenderers: Record = { name: { name: "Name", @@ -151,7 +155,7 @@ export function TransactionList({ transactions, fields = [] }: { transactions: T }) const visibleFields = useMemo( - () => + (): FieldWithRenderer[] => fields .filter((field) => field.isVisibleInList) .map((field) => ({ @@ -196,6 +200,16 @@ export function TransactionList({ transactions, fields = [] }: { transactions: T }) } + const renderFieldInTable = (transaction: Transaction, field: FieldWithRenderer) => { + if (field.isExtra) { + return transaction.extra?.[field.code as keyof typeof transaction.extra] + } else if (field.renderer.formatValue) { + return field.renderer.formatValue(transaction) + } else { + return transaction[field.code as keyof Transaction] + } + } + useEffect(() => { const params = new URLSearchParams(searchParams.toString()) if (sorting.field && sorting.direction) { @@ -258,7 +272,7 @@ export function TransactionList({ transactions, fields = [] }: { transactions: T {visibleFields.map((field) => ( - {field.renderer.formatValue ? field.renderer.formatValue(transaction) : transaction[field.code]} + {renderFieldInTable(transaction, field)} ))}