import React from 'react'; import styled from 'styled-components'; import { DataTable, TableFastCell, FormattedMessage as T } from 'components'; import { TABLES } from 'common/tables'; import TableVirtualizedListRows from 'components/Datatable/TableVirtualizedRows'; import TableSkeletonRows from 'components/Datatable/TableSkeletonRows'; import TableSkeletonHeader from 'components/Datatable/TableHeaderSkeleton'; import withSettings from '../../Settings/withSettings'; import withAlertsActions from 'containers/Alert/withAlertActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { useMemorizedColumnsWidths } from '../../../hooks'; import { useAccountTransactionsColumns, ActionsMenu } from './components'; import { useAccountTransactionsContext } from './AccountTransactionsProvider'; import { handleCashFlowTransactionType } from './utils'; import { compose } from 'utils'; import { whenRtl, whenLtr } from 'utils/styled-components'; /** * Account transactions data table. */ function AccountTransactionsDataTable({ // #withSettings cashflowTansactionsTableSize, // #withAlertsActions openAlert, // #withDrawerActions openDrawer, }) { // Retrieve table columns. const columns = useAccountTransactionsColumns(); // Retrieve list context. const { cashflowTransactions, isCashFlowTransactionsLoading } = useAccountTransactionsContext(); // Local storage memorizing columns widths. const [initialColumnsWidths, , handleColumnResizing] = useMemorizedColumnsWidths(TABLES.CASHFLOW_Transactions); // handle delete transaction const handleDeleteTransaction = ({ reference_id }) => { openAlert('account-transaction-delete', { referenceId: reference_id }); }; const handleViewDetailCashflowTransaction = (referenceType) => { handleCashFlowTransactionType(referenceType, openDrawer); }; // Handle cell click. const handleCellClick = (cell, event) => { const referenceType = cell.row.original; handleCashFlowTransactionType(referenceType, openDrawer); }; return ( } className="table-constrant" payload={{ onViewDetails: handleViewDetailCashflowTransaction, onDelete: handleDeleteTransaction, }} /> ); } export default compose( withSettings(({ cashflowTransactionsSettings }) => ({ cashflowTansactionsTableSize: cashflowTransactionsSettings?.tableSize, })), withAlertsActions, withDrawerActions, )(AccountTransactionsDataTable); const DashboardConstrantTable = styled(DataTable)` .table { .thead { .th { background: #fff; } } .tbody { .tr:last-child .td { border-bottom: 0; } } } `; const CashflowTransactionsTable = styled(DashboardConstrantTable)` .table .tbody { .tbody-inner .tr.no-results { .td { padding: 2rem 0; font-size: 14px; color: #888; font-weight: 400; border-bottom: 0; } } .tbody-inner { .tr .td:not(:first-child) { ${whenLtr(`border-left: 1px solid #e6e6e6;`)} ${whenRtl(`border-right: 1px solid #e6e6e6;`)} } } } `;