import React from 'react'; import { useHistory } from 'react-router-dom'; import WarehouseTransfersEmptyStatus from './WarehouseTransfersEmptyStatus'; 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'; import withDashboardActions from 'containers/Dashboard/withDashboardActions'; import withWarehouseTransfersActions from './withWarehouseTransfersActions'; import withDrawerActions from 'containers/Drawer/withDrawerActions'; import withDialogActions from 'containers/Dialog/withDialogActions'; import withAlertsActions from 'containers/Alert/withAlertActions'; import withSettings from '../../Settings/withSettings'; import { useWarehouseTransfersTableColumns, ActionsMenu } from './components'; import { useWarehouseTranfersListContext } from './WarehouseTransfersListProvider'; import { compose } from 'utils'; /** * Warehouse transfers datatable. */ function WarehouseTransfersDataTable({ // #withWarehouseTransfersActions setWarehouseTransferTableState, // #withAlertsActions openAlert, // #withDrawerActions openDrawer, // #withDialogAction openDialog, // #withSettings warehouseTransferTableSize, }) { const history = useHistory(); // Warehouse transfers list context. const { warehousesTransfers, pagination, isEmptyStatus, isWarehouseTransfersLoading, isWarehouseTransfersFetching, } = useWarehouseTranfersListContext(); // Invoices table columns. const columns = useWarehouseTransfersTableColumns(); // Local storage memorizing columns widths. const [initialColumnsWidths, , handleColumnResizing] = useMemorizedColumnsWidths(TABLES.WAREHOUSE_TRANSFERS); // Handles fetch data once the table state change. const handleDataTableFetchData = React.useCallback( ({ pageSize, pageIndex, sortBy }) => { setWarehouseTransferTableState({ pageSize, pageIndex, sortBy, }); }, [setWarehouseTransferTableState], ); // Display invoice empty status instead of the table. if (isEmptyStatus) { return ; } // Handle view detail. const handleViewDetailWarehouseTransfer = ({ id }) => { openDrawer('warehouse-transfer-detail-drawer', { warehouseTransferId: id }); }; // Handle edit warehouse transfer. const handleEditWarehouseTransfer = ({ id }) => { history.push(`/warehouses-transfers/${id}/edit`); }; // Handle delete warehouse transfer. const handleDeleteWarehouseTransfer = ({ id }) => { openAlert('warehouse-transfer-delete', { warehouseTransferId: id }); }; // Handle initiate warehouse transfer. const handleInitateWarehouseTransfer = ({ id }) => { openAlert('warehouse-transfer-initate', { warehouseTransferId: id }); }; // Handle transferred warehouse transfer. const handleTransferredWarehouseTransfer = ({ id }) => { openAlert('transferred-warehouse-transfer', { warehouseTransferId: id }); }; // Handle cell click. const handleCellClick = (cell, event) => { openDrawer('warehouse-transfer-detail-drawer', { warehouseTransferId: cell.row.original.id, }); }; return ( ); } export default compose( withDashboardActions, withWarehouseTransfersActions, withAlertsActions, withDrawerActions, withDialogActions, withSettings(({ warehouseTransferSettings }) => ({ warehouseTransferTableSize: warehouseTransferSettings?.tableSize, })), )(WarehouseTransfersDataTable);