import React, { useEffect, useCallback, useState, useMemo } from 'react'; import { Intent, Button, Classes, Popover, Tooltip, Menu, MenuItem, MenuDivider, Position, Tag, } from '@blueprintjs/core'; import { useParams } from 'react-router-dom'; import { FormattedMessage as T, useIntl } from 'react-intl'; import Icon from 'components/Icon'; import { compose } from 'utils'; import moment from 'moment'; import LoadingIndicator from 'components/LoadingIndicator'; import withDialog from 'containers/Dialogs/withDialog'; import { useUpdateEffect } from 'hooks'; import DataTable from 'components/DataTable'; import withDashboardActions from 'containers/Dashboard/withDashboard'; import withViewDetails from 'containers/Views/withViewDetails'; import withManualJournals from 'containers/Accounting/withManualJournals'; import withManualJournalsActions from 'containers/Accounting/withManualJournalsActions'; import { If, Money } from 'components'; function ManualJournalsDataTable({ loading, manualJournals, manualJournalsLoading, changeCurrentView, changePageSubtitle, viewId, viewMeta, setTopbarEditView, onFetchData, onEditJournal, onDeleteJournal, onPublishJournal, onSelectedRowsChange, }) { const { custom_view_id: customViewId } = useParams(); const [initialMount, setInitialMount] = useState(false); const { formatMessage } = useIntl(); useUpdateEffect(() => { if (!manualJournalsLoading) { setInitialMount(true); } }, [manualJournalsLoading, setInitialMount]); useEffect(() => { if (customViewId) { changeCurrentView(customViewId); setTopbarEditView(customViewId); } changePageSubtitle(customViewId && viewMeta ? viewMeta.name : ''); }, [ customViewId, changeCurrentView, changePageSubtitle, setTopbarEditView, viewMeta, ]); const handlePublishJournal = useCallback( (journal) => () => { onPublishJournal && onPublishJournal(journal); }, [onPublishJournal] ); const handleEditJournal = useCallback( (journal) => () => { onEditJournal && onEditJournal(journal); }, [onEditJournal] ); const handleDeleteJournal = useCallback( (journal) => () => { onDeleteJournal && onDeleteJournal(journal); }, [onDeleteJournal] ); // const actionMenuList = (journal) => ( // // } /> // // {!journal.status && ( // } // onClick={handlePublishJournal(journal)} // /> // )} // } // onClick={handleEditJournal(journal)} // /> // } // intent={Intent.DANGER} // onClick={handleDeleteJournal(journal)} // /> // // ); const actionMenuList =useCallback((journal)=>( } /> {!journal.status && ( } onClick={handlePublishJournal(journal)} /> )} } onClick={handleEditJournal(journal)} /> } intent={Intent.DANGER} onClick={handleDeleteJournal(journal)} /> ),[handleEditJournal,handleDeleteJournal,handlePublishJournal]); const columns = useMemo(() => [ { id: 'date', Header: formatMessage({ id: 'date' }), accessor: (r) => moment().format('YYYY-MM-DD'), disableResizing: true, width: 150, className: 'date', }, { id: 'amount', Header: formatMessage({ id: 'amount' }), accessor: r => (), disableResizing: true, className: 'amount', }, { id: 'journal_number', Header: formatMessage({ id: 'journal_no' }), accessor: 'journal_number', disableResizing: true, className: 'journal_number', }, { id: 'status', Header: formatMessage({ id: 'status' }), accessor: (r) => { return r.status ? : ; }, disableResizing: true, width: 100, className: 'status', }, { id: 'note', Header: formatMessage({ id: 'note' }), accessor: (row) => ( ), disableResizing: true, disableSorting: true, width: 100, className: 'note', }, { id: 'transaction_type', Header: formatMessage({ id: 'transaction_type' }), accessor: 'transaction_type', width: 100, className: 'transaction_type', }, { id: 'created_at', Header: formatMessage({ id: 'created_at' }), accessor: r => moment().format('YYYY-MM-DD'), disableResizing: true, width: 150, className: 'created_at', }, { id: 'actions', Header: '', Cell: ({ cell }) => (