mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 13:25:18 +00:00
fix: extra field rendering
This commit is contained in:
@@ -21,6 +21,10 @@ type FieldRenderer = {
|
||||
footerValue?: (transactions: Transaction[]) => React.ReactNode
|
||||
}
|
||||
|
||||
type FieldWithRenderer = Field & {
|
||||
renderer: FieldRenderer
|
||||
}
|
||||
|
||||
export const standardFieldRenderers: Record<string, FieldRenderer> = {
|
||||
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
|
||||
</TableCell>
|
||||
{visibleFields.map((field) => (
|
||||
<TableCell key={field.code} className={field.renderer.classes}>
|
||||
{field.renderer.formatValue ? field.renderer.formatValue(transaction) : transaction[field.code]}
|
||||
{renderFieldInTable(transaction, field)}
|
||||
</TableCell>
|
||||
))}
|
||||
</TableRow>
|
||||
|
||||
Reference in New Issue
Block a user