From e1dc42c2548d86e1a7fc1bad177c077791e4da4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Pluta?= Date: Wed, 21 May 2025 14:12:36 +0200 Subject: [PATCH] Replace transactions table with notifications --- .../TransactionsTable.module.css | 18 ++------ .../TransactionsTable.tsx | 45 +++++++++---------- 2 files changed, 25 insertions(+), 38 deletions(-) diff --git a/web/src/pages/PrepareTransactionsPage/TransactionsTable.module.css b/web/src/pages/PrepareTransactionsPage/TransactionsTable.module.css index 5c4f66e..24dc5e5 100644 --- a/web/src/pages/PrepareTransactionsPage/TransactionsTable.module.css +++ b/web/src/pages/PrepareTransactionsPage/TransactionsTable.module.css @@ -1,19 +1,9 @@ -.transactionTable { - tbody tr { +.transactionsTable { + .transaction { cursor: pointer; } - td { - .date { - white-space: nowrap; - } - - .amount { - font-family: monospace; - } - } - - .disabled td { - color: var(--bulma-text-light); + .amount { + } } diff --git a/web/src/pages/PrepareTransactionsPage/TransactionsTable.tsx b/web/src/pages/PrepareTransactionsPage/TransactionsTable.tsx index 464f683..c170ed5 100644 --- a/web/src/pages/PrepareTransactionsPage/TransactionsTable.tsx +++ b/web/src/pages/PrepareTransactionsPage/TransactionsTable.tsx @@ -1,6 +1,7 @@ import { useCallback, useMemo } from "react"; import type { Transaction } from "../../types/api"; import styles from "./TransactionsTable.module.css"; +import classNames from "classnames"; export type TransactionsTableProps = { transactions: Transaction[]; @@ -45,33 +46,29 @@ export default function TransactionsTable({ transactions, deselected, deselect, const reversedTransactions = useMemo(() => transactions.slice().reverse(), [transactions]); const renderRow = useCallback((transaction: Transaction, index: number) => ( - changeSelection(index)} className={`${!readonly && deselected.includes(index) ? styles.disabled : ""}`}> - {transactionEmoji(transaction)} - {transaction.date} - {transaction.amount} - {transaction.id ? {transaction.title} : transaction.title} - {transaction.from} - {transaction.to} - +
changeSelection(index)} + className={classNames('notification', styles.transaction, { + 'is-success': transaction.kind === 'regular' && transaction.amount > 0, + 'is-danger': transaction.kind === 'regular' && transaction.amount < 0, + 'is-info': transaction.kind === 'transfer', + 'is-light': deselected.includes(index) + })}> +
+ {transactionEmoji(transaction)} {transaction.date} +
+ {transaction.id && (<>ID: {transaction.id}
)} + From: {transaction.from}
+ To: {transaction.to}
+ Title: {transaction.title}
+ Amount: {transaction.amount} +
), [changeSelection]); return ( -
- - - - - - - - - - - - - {reversedTransactions.map(renderRow)} - -
DateAmountTitleFromTo
+
+ {reversedTransactions.map(renderRow)}
); } \ No newline at end of file