import React, { useCallback, useMemo } from 'react'; import { Intent, Button, Popover, Menu, MenuItem, MenuDivider, Position, } from '@blueprintjs/core'; import { useIntl } from 'react-intl'; import moment from 'moment'; import classNames from 'classnames'; import { DataTable, If, Choose, Icon, } from 'components'; import { CLASSES } from 'common/classes'; import ManualJournalsEmptyStatus from './ManualJournalsEmptyStatus'; import TableSkeletonRows from 'components/Datatable/TableSkeletonRows'; import TableSkeletonHeader from 'components/Datatable/TableHeaderSkeleton'; import { NoteAccessor, StatusAccessor, DateAccessor, AmountAccessor } from './components'; import withManualJournalsActions from 'containers/Accounting/withManualJournalsActions'; import { compose, saveInvoke } from 'utils'; import { useManualJournalsContext } from './ManualJournalsListProvider'; /** * Manual journals data-table. */ function ManualJournalsDataTable({ // #withManualJournalsActions addManualJournalsTableQueries, // #ownProps onSelectedRowsChange, }) { const { formatMessage } = useIntl(); const { manualJournals, isManualJournalsLoading } = useManualJournalsContext(); const handlePublishJournal = useCallback( (journal) => () => { }, [], ); const handleEditJournal = useCallback( (journal) => () => { }, [], ); const handleDeleteJournal = useCallback( (journal) => () => { }, [], ); const actionMenuList = useCallback( (journal) => (
), [ handleEditJournal, handleDeleteJournal, handlePublishJournal, formatMessage, ], ); const onRowContextMenu = useCallback( (cell) => actionMenuList(cell.row.original), [actionMenuList], ); const columns = useMemo( () => [ { id: 'date', Header: formatMessage({ id: 'date' }), accessor: DateAccessor, width: 115, className: 'date', }, { id: 'amount', Header: formatMessage({ id: 'amount' }), accessor: AmountAccessor, className: 'amount', width: 115, }, { id: 'journal_number', Header: formatMessage({ id: 'journal_no' }), accessor: (row) => `#${row.journal_number}`, className: 'journal_number', width: 100, }, { id: 'journal_type', Header: formatMessage({ id: 'journal_type' }), accessor: 'journal_type', width: 110, className: 'journal_type', }, { id: 'publish', Header: formatMessage({ id: 'publish' }), accessor: (row) => StatusAccessor(row), width: 95, className: 'publish', }, { id: 'note', Header: formatMessage({ id: 'note' }), accessor: NoteAccessor, disableSorting: true, width: 85, className: 'note', }, { id: 'created_at', Header: formatMessage({ id: 'created_at' }), accessor: (r) => moment(r.created_at).format('YYYY MMM DD'), width: 125, className: 'created_at', }, { id: 'actions', Header: '', Cell: ({ cell }) => (