From 571d9eb2fd84f92641f68110dd9231aa0861f49d Mon Sep 17 00:00:00 2001 From: elforjani3 Date: Tue, 27 Apr 2021 16:06:26 +0200 Subject: [PATCH] feat: manual journal drawer. --- .../ManualJournalsDataTable.js | 14 ++++ .../Accounting/JournalsLanding/components.js | 3 +- .../ManualJournalDrawerActionBar.js | 69 ++++++++++++++++ .../ManualJournalDrawerContent.js | 17 ++++ .../ManualJournalDrawerDetails.js | 27 +++++++ .../ManualJournalDrawerFooter.js | 20 +++++ .../ManualJournalDrawerHeader.js | 48 +++++++++++ .../ManualJournalDrawerProvider.js | 33 ++++++++ .../ManualJournalDrawerTable.js | 79 +++++++++++++++++++ .../Drawers/ManualJournalDrawer/index.js | 37 +++++++++ 10 files changed, 346 insertions(+), 1 deletion(-) create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerContent.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerDetails.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerFooter.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerHeader.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerProvider.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerTable.js create mode 100644 client/src/containers/Drawers/ManualJournalDrawer/index.js diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js b/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js index 2b3a6c50e..f40ff74d8 100644 --- a/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js +++ b/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js @@ -10,6 +10,7 @@ import TableSkeletonHeader from 'components/Datatable/TableHeaderSkeleton'; import withManualJournals from './withManualJournals'; import withManualJournalsActions from './withManualJournalsActions'; import withAlertsActions from 'containers/Alert/withAlertActions'; +import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { useManualJournalsContext } from './ManualJournalsListProvider'; import { useManualJournalsColumns } from './utils'; @@ -27,6 +28,9 @@ function ManualJournalsDataTable({ // #withAlertsActions openAlert, + // #withDrawerActions + openDrawer, + // #withManualJournals manualJournalsTableState, @@ -62,6 +66,14 @@ function ManualJournalsDataTable({ openAlert('journal-delete', { manualJournalId: id }); }; + // Handle view detail journal. + const handleViewDetailJournal = ({ id, journal_number }) => { + openDrawer('journal-drawer', { + manualJournalId: id, + title: `Manual Journal ${journal_number}`, + }); + }; + // Handle fetch data once the page index, size or sort by of the table change. const handleFetchData = React.useCallback( ({ pageSize, pageIndex, sortBy }) => { @@ -104,6 +116,7 @@ function ManualJournalsDataTable({ onDelete: handleDeleteJournal, onPublish: handlePublishJournal, onEdit: handleEditJournal, + onViewDetails: handleViewDetailJournal, }} /> ); @@ -115,4 +128,5 @@ export default compose( manualJournalsTableState, })), withAlertsActions, + withDrawerActions, )(ManualJournalsDataTable); diff --git a/client/src/containers/Accounting/JournalsLanding/components.js b/client/src/containers/Accounting/JournalsLanding/components.js index bb3924399..6cb1cdd2f 100644 --- a/client/src/containers/Accounting/JournalsLanding/components.js +++ b/client/src/containers/Accounting/JournalsLanding/components.js @@ -148,7 +148,7 @@ export const ActionsCell = (props) => { * Actions menu of the table. */ export const ActionsMenu = ({ - payload: { onPublish, onEdit, onDelete }, + payload: { onPublish, onEdit, onDelete, onViewDetails }, row: { original }, }) => { return ( @@ -156,6 +156,7 @@ export const ActionsMenu = ({ } text={formatMessage({ id: 'view_details' })} + onClick={safeCallback(onViewDetails, original)} /> diff --git a/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js b/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js new file mode 100644 index 000000000..8c1f1ba46 --- /dev/null +++ b/client/src/containers/Drawers/ManualJournalDrawer/ManualJournalDrawerActionBar.js @@ -0,0 +1,69 @@ +import React from 'react'; +import { useHistory } from 'react-router-dom'; +import Icon from 'components/Icon'; +import { Button, Classes, NavbarGroup, Intent } from '@blueprintjs/core'; +import { FormattedMessage as T } from 'react-intl'; +import { safeCallback } from 'utils'; + +import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; +import withAlertsActions from 'containers/Alert/withAlertActions'; +import withDrawerActions from 'containers/Drawer/withDrawerActions'; + +import { compose } from 'utils'; + +/** + * Manual journal action bar. + */ +function ManualJournalDrawerActionBar({ + // #ownProps + manualJournal, + + // #withAlertsDialog + openAlert, + + // #withDrawerActions + closeDrawer, +}) { + const history = useHistory(); + + // Handle edit manual journal action. + const onEditManualJournal = () => { + if (manualJournal) { + history.push(`/manual-journals/${manualJournal.id}/edit`); + closeDrawer('journal-drawer'); + } + }; + + // Handle manual journal delete action. + const onDeleteManualJournal = () => { + if (manualJournal) { + openAlert('journal-delete', { manualJournalId: manualJournal.id }); + closeDrawer('journal-drawer'); + } + }; + + return ( + + +