import React, { useCallback, useMemo } from 'react'; import { Intent, Button, Popover, Menu, MenuItem, MenuDivider, Position, } from '@blueprintjs/core'; import { withRouter } from 'react-router'; import { FormattedMessage as T, useIntl } from 'react-intl'; import moment from 'moment'; import { compose, saveInvoke } from 'utils'; import { useIsValuePassed } from 'hooks'; import { DataTable, Money, Icon, Choose, LoadingIndicator } from 'components'; import PaymentMadesEmptyStatus from './PaymentMadesEmptyStatus'; import withPaymentMade from './withPaymentMade'; import withPaymentMadeActions from './withPaymentMadeActions'; import withCurrentView from 'containers/Views/withCurrentView'; /** * Payment made datatable transactions. */ function PaymentMadeDataTable({ // #withPaymentMades paymentMadeCurrentPage, paymentMadePageination, paymentMadesLoading, paymentMadeTableQuery, paymentMadesCurrentViewId, // #withPaymentMadeActions addPaymentMadesTableQueries, // #ownProps onEditPaymentMade, onDeletePaymentMade, onSelectedRowsChange, }) { const isLoaded = useIsValuePassed(paymentMadesLoading, false); const { formatMessage } = useIntl(); const handleEditPaymentMade = useCallback( (paymentMade) => () => { saveInvoke(onEditPaymentMade, paymentMade); }, [onEditPaymentMade], ); const handleDeletePaymentMade = useCallback( (paymentMade) => () => { saveInvoke(onDeletePaymentMade, paymentMade); }, [onDeletePaymentMade], ); const actionMenuList = useCallback( (paymentMade) => ( } text={formatMessage({ id: 'view_details' })} /> } text={formatMessage({ id: 'edit_payment_made' })} onClick={handleEditPaymentMade(paymentMade)} /> } /> ), [handleDeletePaymentMade, handleEditPaymentMade, formatMessage], ); const onRowContextMenu = useCallback( (cell) => { return actionMenuList(cell.row.original); }, [actionMenuList], ); const columns = useMemo( () => [ { id: 'payment_date', Header: formatMessage({ id: 'payment_date' }), accessor: (r) => moment(r.payment_date).format('YYYY MMM DD'), width: 140, className: 'payment_date', }, { id: 'vendor_id', Header: formatMessage({ id: 'vendor_name' }), accessor: 'vendor.display_name', width: 140, className: 'vendor_id', }, { id: 'payment_number', Header: formatMessage({ id: 'payment_number' }), accessor: (row) => `#${row.payment_number}`, width: 140, className: 'payment_number', }, { id: 'payment_account_id', Header: formatMessage({ id: 'payment_account' }), accessor: 'payment_account.name', width: 140, className: 'payment_account_id', }, { id: 'amount', Header: formatMessage({ id: 'amount' }), accessor: (r) => , width: 140, className: 'amount', }, { id: 'reference', Header: formatMessage({ id: 'reference' }), accessor: 'reference', width: 140, className: 'reference', }, { id: 'actions', Header: '', Cell: ({ cell }) => (