diff --git a/client/src/common/tables.js b/client/src/common/tables.js new file mode 100644 index 000000000..2e5e51ba8 --- /dev/null +++ b/client/src/common/tables.js @@ -0,0 +1,15 @@ +export const TABLES = { + ITEMS: 'items', + INVENTORY_ADJUSTMENTS: 'inventory_adjustment', + ESTIMATES: 'estimates', + INVOICES: 'invoices', + RECEIPTS: 'receipts', + PAYMENT_RECEIVES: 'payment_receives', + BILLS: 'bills', + PAYMENT_MADES: 'payment_mades', + CUSTOMER: 'customers', + VENDORS: 'vendors', + ACCOUNTS: 'accounts', + MANUAL_JOURNALS: 'manual_journal', + EXPENSES: 'expenses', +}; diff --git a/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js b/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js index 9e9a8d4b7..ccc6748b6 100644 --- a/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js +++ b/client/src/containers/Accounting/JournalsLanding/ManualJournalsDataTable.js @@ -2,6 +2,7 @@ import React from 'react'; import { useHistory } from 'react-router-dom'; import { DataTable, DashboardContentTable } from 'components'; +import { TABLES } from 'common/tables'; import ManualJournalsEmptyStatus from './ManualJournalsEmptyStatus'; import TableSkeletonRows from 'components/Datatable/TableSkeletonRows'; @@ -15,6 +16,7 @@ import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { useManualJournalsContext } from './ManualJournalsListProvider'; import { useManualJournalsColumns } from './utils'; import { ActionsMenu } from './components'; +import { useMemorizedColumnsWidths } from 'hooks'; import { compose } from 'utils'; @@ -78,6 +80,10 @@ function ManualJournalsDataTable({ openDrawer('journal-drawer', { manualJournalId: cell.row.original.id }); }; + // Local storage memorizing columns widths. + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.MANUAL_JOURNALS); + // Handle fetch data once the page index, size or sort by of the table change. const handleFetchData = React.useCallback( ({ pageSize, pageIndex, sortBy }) => { @@ -101,7 +107,6 @@ function ManualJournalsDataTable({ noInitialFetch={true} columns={columns} data={manualJournals} - initialState={manualJournalsTableState} manualSortBy={true} selectionColumn={true} expandable={true} @@ -118,6 +123,8 @@ function ManualJournalsDataTable({ ContextMenu={ActionsMenu} onFetchData={handleFetchData} onCellClick={handleCellClick} + initialColumnsWidths={initialColumnsWidths} + onColumnResizing={handleColumnResizing} payload={{ onDelete: handleDeleteJournal, onPublish: handlePublishJournal, diff --git a/client/src/containers/Accounts/AccountsDataTable.js b/client/src/containers/Accounts/AccountsDataTable.js index a51fa1d75..ef05bfa4b 100644 --- a/client/src/containers/Accounts/AccountsDataTable.js +++ b/client/src/containers/Accounts/AccountsDataTable.js @@ -5,6 +5,7 @@ import { compose } from 'utils'; import { useAccountsTableColumns, rowClassNames } from './utils'; import { ActionsMenu } from './components'; +import { TABLES } from 'common/tables'; import TableVirtualizedListRows from 'components/Datatable/TableVirtualizedRows'; import TableSkeletonRows from 'components/Datatable/TableSkeletonRows'; @@ -81,7 +82,7 @@ function AccountsDataTable({ }; // Local storage memorizing columns widths. const [initialColumnsWidths, , handleColumnResizing] = - useMemorizedColumnsWidths('accounts'); + useMemorizedColumnsWidths(TABLES.ACCOUNTS); return ( { @@ -110,7 +116,6 @@ function CustomersTable({ noInitialFetch={true} columns={columns} data={customers} - initialState={customersTableState} loading={isCustomersLoading} headerLoading={isCustomersLoading} progressBarLoading={isCustomersFetching} @@ -128,6 +133,8 @@ function CustomersTable({ TableLoadingRenderer={TableSkeletonRows} TableHeaderSkeletonRenderer={TableSkeletonHeader} onCellClick={handleCellClick} + initialColumnsWidths={initialColumnsWidths} + onColumnResizing={handleColumnResizing} payload={{ onDelete: handleCustomerDelete, onEdit: handleCustomerEdit, diff --git a/client/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js b/client/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js index d433d20ac..d85b7dd72 100644 --- a/client/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js +++ b/client/src/containers/Expenses/ExpensesLanding/ExpenseDataTable.js @@ -3,6 +3,8 @@ import { useHistory } from 'react-router-dom'; import { compose } from 'utils'; import { useExpensesListContext } from './ExpensesListProvider'; +import { useMemorizedColumnsWidths } from 'hooks'; +import { TABLES } from 'common/tables'; import { DashboardContentTable } from 'components'; import DataTable from 'components/DataTable'; @@ -45,6 +47,10 @@ function ExpensesDataTable({ // Expenses table columns. const columns = useExpensesTableColumns(); + // Local storage memorizing columns widths. + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.EXPENSES); + // Handle fetch data of manual jouranls datatable. const handleFetchData = useCallback( ({ pageIndex, pageSize, sortBy }) => { @@ -111,6 +117,8 @@ function ExpensesDataTable({ TableHeaderSkeletonRenderer={TableSkeletonHeader} ContextMenu={ActionsMenu} onCellClick={handleCellClick} + initialColumnsWidths={initialColumnsWidths} + onColumnResizing={handleColumnResizing} payload={{ onPublish: handlePublishExpense, onDelete: handleDeleteExpense, diff --git a/client/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js b/client/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js index 4f4af0535..bb6d25c11 100644 --- a/client/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js +++ b/client/src/containers/InventoryAdjustments/InventoryAdjustmentTable.js @@ -1,6 +1,10 @@ import React, { useCallback } from 'react'; import { DataTable } from 'components'; + +import { TABLES } from 'common/tables'; import { useInventoryAdjustmentsColumns, ActionsMenu } from './components'; +import { useMemorizedColumnsWidths } from 'hooks'; + import intl from 'react-intl-universal'; import withAlertsActions from 'containers/Alert/withAlertActions'; @@ -55,6 +59,9 @@ function InventoryAdjustmentDataTable({ // Inventory adjustments columns. const columns = useInventoryAdjustmentsColumns(); + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.INVENTORY_ADJUSTMENTS); + // Handle the table fetch data once states changing. const handleDataTableFetchData = useCallback( ({ pageSize, pageIndex, sortBy }) => { @@ -79,7 +86,6 @@ function InventoryAdjustmentDataTable({ loading={isAdjustmentsLoading} headerLoading={isAdjustmentsLoading} progressBarLoading={isAdjustmentsFetching} - initialState={inventoryAdjustmentTableState} noInitialFetch={true} onFetchData={handleDataTableFetchData} manualSortBy={true} @@ -89,6 +95,8 @@ function InventoryAdjustmentDataTable({ autoResetSortBy={false} autoResetPage={false} onCellClick={handleCellClick} + initialColumnsWidths={initialColumnsWidths} + onColumnResizing={handleColumnResizing} payload={{ onDelete: handleDeleteAdjustment, onPublish: handlePublishInventoryAdjustment, diff --git a/client/src/containers/Items/ItemsDataTable.js b/client/src/containers/Items/ItemsDataTable.js index 50a370025..bbaf51d11 100644 --- a/client/src/containers/Items/ItemsDataTable.js +++ b/client/src/containers/Items/ItemsDataTable.js @@ -8,6 +8,8 @@ import ItemsEmptyStatus from './ItemsEmptyStatus'; import TableSkeletonRows from 'components/Datatable/TableSkeletonRows'; import TableSkeletonHeader from 'components/Datatable/TableHeaderSkeleton'; +import { TABLES } from 'common/tables'; + import withItems from 'containers/Items/withItems'; import withItemsActions from 'containers/Items/withItemsActions'; import withAlertsActions from 'containers/Alert/withAlertActions'; @@ -16,6 +18,7 @@ import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { useItemsListContext } from './ItemsListProvider'; import { useItemsTableColumns, ItemsActionMenuList } from './components'; +import { useMemorizedColumnsWidths } from 'hooks'; import { compose } from 'utils'; /** @@ -55,6 +58,10 @@ function ItemsDataTable({ inactive: !row.original.active, }); + // Local storage memorizing columns widths. + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.ITEMS); + // Handle fetch data once the page index, size or sort by of the table change. const handleFetchData = React.useCallback( ({ pageSize, pageIndex, sortBy }) => { @@ -117,7 +124,6 @@ function ItemsDataTable({ ; } return ( - + ); } diff --git a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js b/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js index bc362e56b..d74ac204c 100644 --- a/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js +++ b/client/src/containers/Purchases/PaymentMades/PaymentsLanding/PaymentMadesTable.js @@ -3,6 +3,7 @@ import { useHistory } from 'react-router-dom'; import { compose } from 'utils'; +import { TABLES } from 'common/tables'; import { DataTable, DashboardContentTable } from 'components'; import PaymentMadesEmptyStatus from './PaymentMadesEmptyStatus'; @@ -17,6 +18,7 @@ import withAlertsActions from 'containers/Alert/withAlertActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { usePaymentMadesTableColumns, ActionsMenu } from './components'; import { usePaymentMadesListContext } from './PaymentMadesListProvider'; +import { useMemorizedColumnsWidths } from 'hooks'; /** * Payment made datatable transactions. @@ -71,6 +73,10 @@ function PaymentMadesTable({ }); }; + // Local storage memorizing columns widths. + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.PAYMENT_MADES); + // Handle datatable fetch data once the table state change. const handleDataTableFetchData = useCallback( ({ pageIndex, pageSize, sortBy }) => { @@ -89,7 +95,6 @@ function PaymentMadesTable({ { openDrawer('estimate-detail-drawer', { estimateId: cell.row.original.id }); }; + + // Local storage memorizing columns widths. + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.ESTIMATES); + // Handles fetch data. const handleFetchData = useCallback( ({ pageIndex, pageSize, sortBy }) => { @@ -126,6 +133,8 @@ function EstimatesDataTable({ TableHeaderSkeletonRenderer={TableSkeletonHeader} ContextMenu={ActionsMenu} onCellClick={handleCellClick} + initialColumnsWidths={initialColumnsWidths} + onColumnResizing={handleColumnResizing} payload={{ onApprove: handleApproveEstimate, onEdit: handleEditEstimate, diff --git a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js b/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js index 081964ee4..407e553d0 100644 --- a/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js +++ b/client/src/containers/Sales/Invoices/InvoicesLanding/InvoicesDataTable.js @@ -3,8 +3,10 @@ import { useHistory } from 'react-router-dom'; import InvoicesEmptyStatus from './InvoicesEmptyStatus'; -import { compose } from 'utils'; import { DataTable, DashboardContentTable } from 'components'; +import { TABLES } from 'common/tables'; +import { useMemorizedColumnsWidths } from 'hooks'; + import TableSkeletonRows from 'components/Datatable/TableSkeletonRows'; import TableSkeletonHeader from 'components/Datatable/TableHeaderSkeleton'; @@ -18,6 +20,8 @@ import withDialogActions from 'containers/Dialog/withDialogActions'; import { useInvoicesTableColumns, ActionsMenu } from './components'; import { useInvoicesListContext } from './InvoicesListProvider'; +import { compose } from 'utils'; + /** * Invoices datatable. */ @@ -85,6 +89,11 @@ function InvoicesDataTable({ const handleCellClick = (cell, event) => { openDrawer('invoice-detail-drawer', { invoiceId: cell.row.original.id }); }; + + // Local storage memorizing columns widths. + const [initialColumnsWidths, , handleColumnResizing] = + useMemorizedColumnsWidths(TABLES.INVOICES); + // Handles fetch data once the table state change. const handleDataTableFetchData = useCallback( ({ pageSize, pageIndex, sortBy }) => { @@ -107,7 +116,6 @@ function InvoicesDataTable({ { @@ -95,7 +101,6 @@ function PaymentReceivesDataTable({ { @@ -100,7 +106,6 @@ function ReceiptsDataTable({ { @@ -114,7 +121,6 @@ function VendorsTable({ noInitialFetch={true} columns={columns} data={vendors} - initialState={vendorsTableState} loading={isVendorsLoading} headerLoading={isVendorsLoading} progressBarLoading={isVendorsFetching} @@ -131,6 +137,8 @@ function VendorsTable({ TableHeaderSkeletonRenderer={TableSkeletonHeader} ContextMenu={ActionsMenu} onCellClick={handleCellClick} + initialColumnsWidths={initialColumnsWidths} + onColumnResizing={handleColumnResizing} payload={{ onEdit: handleEditVendor, onDelete: handleDeleteVendor,