From a2a1c5be5bf00d3769b0fefc11eac9ee3449ad5b Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 1 Aug 2026 13:18:03 +0100 Subject: [PATCH] Add ObjectTableNavigationButtons to various components for improved navigation - Integrated ObjectTableNavigationButtons into multiple components including InvoiceInfo, PaymentInfo, TaxRecordInfo, and others to enhance user navigation. - Each button is configured with appropriate props for object type and ID, ensuring consistent functionality across the dashboard. - This update improves the overall user experience by providing quick access to related object actions. --- .../Finance/Invoices/InvoiceInfo.jsx | 7 + .../Finance/Payments/PaymentInfo.jsx | 7 + .../Finance/TaxRecords/TaxRecordInfo.jsx | 7 + .../FilamentStocks/FilamentStockInfo.jsx | 7 + .../Inventory/OrderItems/OrderItemInfo.jsx | 7 + .../Inventory/PartStocks/PartStockInfo.jsx | 7 + .../ProductStocks/ProductStockInfo.jsx | 7 + .../PurchaseOrders/PurchaseOrderInfo.jsx | 7 + .../Inventory/Shipments/PurchaseOrderInfo.jsx | 7 + .../Inventory/Shipments/ShipmentInfo.jsx | 7 + .../Inventory/StockAudits/StockAuditInfo.jsx | 7 + .../StockLocations/StockLocationInfo.jsx | 7 + .../StockTransfers/StockTransferInfo.jsx | 7 + .../AppPasswords/AppPasswordInfo.jsx | 7 + .../CourierServices/CourierServiceInfo.jsx | 7 + .../Management/Couriers/CourierInfo.jsx | 7 + .../DocumentJobs/DocumentJobInfo.jsx | 7 + .../DocumentPrinters/DocumentPrinterInfo.jsx | 7 + .../DocumentSizes/DocumentSizeInfo.jsx | 7 + .../DocumentTemplateInfo.jsx | 7 + .../FilamentSkus/FilamentSkuInfo.jsx | 7 + .../Management/Filaments/FilamentInfo.jsx | 7 + .../Dashboard/Management/Files/FileInfo.jsx | 7 + .../Dashboard/Management/Hosts/HostInfo.jsx | 7 + .../Management/Materials/MaterialInfo.jsx | 7 + .../Management/NoteTypes/NoteTypeInfo.jsx | 7 + .../Dashboard/Management/Notes/NoteInfo.jsx | 7 + .../Management/PartSkus/PartSkuInfo.jsx | 7 + .../Dashboard/Management/Parts/PartInfo.jsx | 7 + .../ProductCategories/ProductCategoryInfo.jsx | 7 + .../Management/ProductSkus/ProductSkuInfo.jsx | 7 + .../Management/Products/ProductInfo.jsx | 7 + .../Management/TaxRates/TaxRateInfo.jsx | 7 + .../Dashboard/Management/Users/UserInfo.jsx | 7 + .../Management/Vendors/VendorInfo.jsx | 7 + .../FilamentProfiles/FilamentProfileInfo.jsx | 33 +++-- .../Production/GCodeFiles/GCodeFileInfo.jsx | 7 + .../Dashboard/Production/Jobs/JobInfo.jsx | 7 + .../PrinterProfiles/PrinterProfileInfo.jsx | 33 +++-- .../Production/Printers/ControlPrinter.jsx | 6 + .../Production/Printers/PrinterInfo.jsx | 11 +- .../Production/SubJobs/SubJobInfo.jsx | 7 + .../Dashboard/Sales/Clients/ClientInfo.jsx | 7 + .../ListingVarients/ListingVarientInfo.jsx | 7 + .../Dashboard/Sales/Listings/ListingInfo.jsx | 7 + .../Sales/Marketplaces/MarketplaceInfo.jsx | 7 + .../Sales/SalesOrders/SalesOrderInfo.jsx | 7 + .../common/ObjectTableNavigationButtons.jsx | 120 ++++++++++++++++++ .../Dashboard/context/ApiServerContext.jsx | 54 ++++++++ 49 files changed, 533 insertions(+), 25 deletions(-) create mode 100644 src/components/Dashboard/common/ObjectTableNavigationButtons.jsx diff --git a/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx b/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx index 2fed8b5..3a7d6d2 100644 --- a/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx +++ b/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx @@ -16,6 +16,7 @@ import PaymentIcon from '../../../Icons/PaymentIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -168,6 +169,12 @@ const InvoiceInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx b/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx index 55c8546..e189492 100644 --- a/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx +++ b/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -161,6 +162,12 @@ const PaymentInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx b/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx index 7f9439e..a2c6569 100644 --- a/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx +++ b/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -125,6 +126,12 @@ const TaxRecordInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx b/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx index 41d1983..335d514 100644 --- a/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx +++ b/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx @@ -8,6 +8,7 @@ import ObjectTable from '../../common/ObjectTable' import ObjectActions from '../../common/ObjectActions' import ViewButton from '../../common/ViewButton' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActionHandler from '../../common/ActionHandler' import InfoCollapse from '../../common/InfoCollapse' import NotesPanel from '../../common/NotesPanel' @@ -125,6 +126,12 @@ const FilamentStockInfo = () => { disabled={true} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx b/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx index 180ec76..fd7bb7b 100644 --- a/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx +++ b/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -124,6 +125,12 @@ const OrderItemInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx b/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx index 5f00888..8fced32 100644 --- a/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx +++ b/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx @@ -15,6 +15,7 @@ import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import GraphIcon from '../../../Icons/GraphIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -135,6 +136,12 @@ const PartStockInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx b/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx index 8c667a4..c2b91bb 100644 --- a/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx +++ b/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx @@ -23,6 +23,7 @@ import ProductStockIcon from '../../../Icons/ProductStockIcon.jsx' import GraphIcon from '../../../Icons/GraphIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -162,6 +163,12 @@ const ProductStockInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx b/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx index 513729f..5bdafdf 100644 --- a/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx +++ b/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -195,6 +196,12 @@ const PurchaseOrderInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx b/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx index c48592c..2c11ff4 100644 --- a/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx +++ b/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -160,6 +161,12 @@ const PurchaseOrderInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx b/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx index ccdb5fe..7fa463a 100644 --- a/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx +++ b/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -149,6 +150,12 @@ const ShipmentInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx b/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx index 66ab3ac..62ac59f 100644 --- a/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx +++ b/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -127,6 +128,12 @@ const StockAuditInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx b/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx index b787993..36a53ff 100644 --- a/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx +++ b/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -128,6 +129,12 @@ const StockLocationInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx b/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx index 5939401..656c6e8 100644 --- a/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx +++ b/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx @@ -19,6 +19,7 @@ import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import StockTransferIcon from '../../../Icons/StockTransferIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -150,6 +151,12 @@ const StockTransferInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx b/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx index 66c1544..e9e1d62 100644 --- a/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx +++ b/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx @@ -10,6 +10,7 @@ import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -132,6 +133,12 @@ const AppPasswordInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx b/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx index 173981b..3cb469e 100644 --- a/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx +++ b/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -127,6 +128,12 @@ const CourierServiceInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Couriers/CourierInfo.jsx b/src/components/Dashboard/Management/Couriers/CourierInfo.jsx index 879cbf0..3fa41eb 100644 --- a/src/components/Dashboard/Management/Couriers/CourierInfo.jsx +++ b/src/components/Dashboard/Management/Couriers/CourierInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -123,6 +124,12 @@ const CourierInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx b/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx index 4457168..ef03d3c 100644 --- a/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx +++ b/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -124,6 +125,12 @@ const DocumentJobInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx b/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx index 215c47f..08c6dbb 100644 --- a/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx +++ b/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -134,6 +135,12 @@ const DocumentPrinterInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx b/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx index 8676f9d..37eda7f 100644 --- a/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx +++ b/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -126,6 +127,12 @@ const DocumentSizeInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx b/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx index c42d78e..8504eb5 100644 --- a/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx +++ b/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -131,6 +132,12 @@ const DocumentTemplateInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx b/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx index aaba220..fce3c14 100644 --- a/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx +++ b/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx @@ -8,6 +8,7 @@ import ObjectInfo from '../../common/ObjectInfo' import ViewButton from '../../common/ViewButton' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import NoteIcon from '../../../Icons/NoteIcon.jsx' @@ -122,6 +123,12 @@ const FilamentSkuInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx b/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx index 87654b2..dc04115 100644 --- a/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx +++ b/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler' import ObjectActions from '../../common/ObjectActions.jsx' @@ -143,6 +144,12 @@ const FilamentInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Files/FileInfo.jsx b/src/components/Dashboard/Management/Files/FileInfo.jsx index b5c32c0..b94d3aa 100644 --- a/src/components/Dashboard/Management/Files/FileInfo.jsx +++ b/src/components/Dashboard/Management/Files/FileInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -140,6 +141,12 @@ const FileInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Hosts/HostInfo.jsx b/src/components/Dashboard/Management/Hosts/HostInfo.jsx index 86b671c..81282fb 100644 --- a/src/components/Dashboard/Management/Hosts/HostInfo.jsx +++ b/src/components/Dashboard/Management/Hosts/HostInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -139,6 +140,12 @@ const HostInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Materials/MaterialInfo.jsx b/src/components/Dashboard/Management/Materials/MaterialInfo.jsx index baf447d..2bd03d8 100644 --- a/src/components/Dashboard/Management/Materials/MaterialInfo.jsx +++ b/src/components/Dashboard/Management/Materials/MaterialInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -125,6 +126,12 @@ const MaterialInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx b/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx index 8642fed..c6fac2d 100644 --- a/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx +++ b/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx @@ -10,6 +10,7 @@ import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -113,6 +114,12 @@ const NoteTypeInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Notes/NoteInfo.jsx b/src/components/Dashboard/Management/Notes/NoteInfo.jsx index 40ced6b..a072f37 100644 --- a/src/components/Dashboard/Management/Notes/NoteInfo.jsx +++ b/src/components/Dashboard/Management/Notes/NoteInfo.jsx @@ -16,6 +16,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -128,6 +129,12 @@ const NoteInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx b/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx index 8d738a0..90ff27a 100644 --- a/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx +++ b/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx @@ -8,6 +8,7 @@ import ObjectInfo from '../../common/ObjectInfo' import ViewButton from '../../common/ViewButton' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import NoteIcon from '../../../Icons/NoteIcon.jsx' @@ -117,6 +118,12 @@ const PartSkuInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Parts/PartInfo.jsx b/src/components/Dashboard/Management/Parts/PartInfo.jsx index b2ec82f..734dc79 100644 --- a/src/components/Dashboard/Management/Parts/PartInfo.jsx +++ b/src/components/Dashboard/Management/Parts/PartInfo.jsx @@ -8,6 +8,7 @@ import ObjectInfo from '../../common/ObjectInfo' import ViewButton from '../../common/ViewButton' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import NoteIcon from '../../../Icons/NoteIcon.jsx' @@ -123,6 +124,12 @@ const PartInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx b/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx index 9583138..3a95e4c 100644 --- a/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx +++ b/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx @@ -11,6 +11,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -122,6 +123,12 @@ const ProductCategoryInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx b/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx index b7b33e2..7fa54ea 100644 --- a/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx +++ b/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx @@ -8,6 +8,7 @@ import ObjectInfo from '../../common/ObjectInfo' import ViewButton from '../../common/ViewButton' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import NoteIcon from '../../../Icons/NoteIcon.jsx' @@ -125,6 +126,12 @@ const ProductSkuInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Products/ProductInfo.jsx b/src/components/Dashboard/Management/Products/ProductInfo.jsx index 976929a..586a29f 100644 --- a/src/components/Dashboard/Management/Products/ProductInfo.jsx +++ b/src/components/Dashboard/Management/Products/ProductInfo.jsx @@ -8,6 +8,7 @@ import ObjectInfo from '../../common/ObjectInfo' import ViewButton from '../../common/ViewButton' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx' import NoteIcon from '../../../Icons/NoteIcon.jsx' @@ -123,6 +124,12 @@ const ProductInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx b/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx index 500469e..4b0dafd 100644 --- a/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx +++ b/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -122,6 +123,12 @@ const TaxRateInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Users/UserInfo.jsx b/src/components/Dashboard/Management/Users/UserInfo.jsx index e11124c..3b61d24 100644 --- a/src/components/Dashboard/Management/Users/UserInfo.jsx +++ b/src/components/Dashboard/Management/Users/UserInfo.jsx @@ -13,6 +13,7 @@ import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import AppPasswordIcon from '../../../Icons/AppPasswordIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler' import ObjectActions from '../../common/ObjectActions.jsx' @@ -128,6 +129,12 @@ const UserInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Management/Vendors/VendorInfo.jsx b/src/components/Dashboard/Management/Vendors/VendorInfo.jsx index f70e074..d310c6d 100644 --- a/src/components/Dashboard/Management/Vendors/VendorInfo.jsx +++ b/src/components/Dashboard/Management/Vendors/VendorInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -122,6 +123,12 @@ const VendorInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx b/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx index 0581ee3..7201e6e 100644 --- a/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx +++ b/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx @@ -6,6 +6,7 @@ import ActionHandler from '../../common/ActionHandler' import AuditLogIcon from '../../../Icons/AuditLogIcon' import DocumentPrintButton from '../../common/DocumentPrintButton' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import FilamentIcon from '../../../Icons/FilamentIcon' import GCodeFileIcon from '../../../Icons/GCodeFileIcon' import HotEndIcon from '../../../Icons/HotEndIcon' @@ -155,18 +156,26 @@ const FilamentProfileInfo = () => { showStartingDivider={true} /> - actionHandlerRef.current.callAction('finishEdit')} - cancelEditing={() => - actionHandlerRef.current.callAction('cancelEdit') - } - startEditing={() => actionHandlerRef.current.callAction('edit')} - editLoading={objectFormState.editLoading} - formValid={objectFormState.formValid} - disabled={objectFormState.beingEditedByOther || objectFormState.loading} - loading={objectFormState.editLoading} - /> + + actionHandlerRef.current.callAction('finishEdit')} + cancelEditing={() => + actionHandlerRef.current.callAction('cancelEdit') + } + startEditing={() => actionHandlerRef.current.callAction('edit')} + editLoading={objectFormState.editLoading} + formValid={objectFormState.formValid} + disabled={objectFormState.beingEditedByOther || objectFormState.loading} + loading={objectFormState.editLoading} + /> + + diff --git a/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx b/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx index 2489b91..f97012e 100644 --- a/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx +++ b/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx @@ -15,6 +15,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -131,6 +132,12 @@ const GCodeFileInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Production/Jobs/JobInfo.jsx b/src/components/Dashboard/Production/Jobs/JobInfo.jsx index a6090ec..eec826b 100644 --- a/src/components/Dashboard/Production/Jobs/JobInfo.jsx +++ b/src/components/Dashboard/Production/Jobs/JobInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -145,6 +146,12 @@ const JobInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx b/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx index 0526a45..8df893e 100644 --- a/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx +++ b/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx @@ -6,6 +6,7 @@ import ActionHandler from '../../common/ActionHandler' import AuditLogIcon from '../../../Icons/AuditLogIcon' import DocumentPrintButton from '../../common/DocumentPrintButton' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import HotEndIcon from '../../../Icons/HotEndIcon' import InfoCircleIcon from '../../../Icons/InfoCircleIcon' import MultiMotionIcon from '../../../Icons/MultiMotionIcon' @@ -128,18 +129,26 @@ const PrinterProfileInfo = () => { showStartingDivider={true} /> - actionHandlerRef.current.callAction('finishEdit')} - cancelEditing={() => - actionHandlerRef.current.callAction('cancelEdit') - } - startEditing={() => actionHandlerRef.current.callAction('edit')} - editLoading={objectFormState.editLoading} - formValid={objectFormState.formValid} - disabled={objectFormState.beingEditedByOther || objectFormState.loading} - loading={objectFormState.editLoading} - /> + + actionHandlerRef.current.callAction('finishEdit')} + cancelEditing={() => + actionHandlerRef.current.callAction('cancelEdit') + } + startEditing={() => actionHandlerRef.current.callAction('edit')} + editLoading={objectFormState.editLoading} + formValid={objectFormState.formValid} + disabled={objectFormState.beingEditedByOther || objectFormState.loading} + loading={objectFormState.editLoading} + /> + + diff --git a/src/components/Dashboard/Production/Printers/ControlPrinter.jsx b/src/components/Dashboard/Production/Printers/ControlPrinter.jsx index 51b2085..4c9b154 100644 --- a/src/components/Dashboard/Production/Printers/ControlPrinter.jsx +++ b/src/components/Dashboard/Production/Printers/ControlPrinter.jsx @@ -32,6 +32,7 @@ import { ApiServerContext } from '../../context/ApiServerContext.jsx' import LoadFilamentStock from '../../Inventory/FilamentStocks/LoadFilamentStock.jsx' import UnloadFilamentStock from '../../Inventory/FilamentStocks/UnloadFilamentStock.jsx' import ScrollBox from '../../common/ScrollBox.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' const log = loglevel.getLogger('ControlPrinter') log.setLevel(config.logLevel) @@ -317,6 +318,11 @@ const ControlPrinter = ({ slicerIntegration = false }) => { /> + { }} editLoading={objectFormState.editLoading} formValid={objectFormState.formValid} - disabled={objectFormState.beingEditedByOther || objectFormState.loading} + disabled={ + objectFormState.beingEditedByOther || objectFormState.loading + } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx b/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx index e0efee4..bfe3f7f 100644 --- a/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx +++ b/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx @@ -12,6 +12,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler' import ObjectActions from '../../common/ObjectActions.jsx' @@ -115,6 +116,12 @@ const SubJobInfo = () => { disabled={true} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Sales/Clients/ClientInfo.jsx b/src/components/Dashboard/Sales/Clients/ClientInfo.jsx index 17092f8..8bd5ccd 100644 --- a/src/components/Dashboard/Sales/Clients/ClientInfo.jsx +++ b/src/components/Dashboard/Sales/Clients/ClientInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -122,6 +123,12 @@ const ClientInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx b/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx index e66c95f..6ccfc4a 100644 --- a/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx +++ b/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -139,6 +140,12 @@ const ListingVarientInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Sales/Listings/ListingInfo.jsx b/src/components/Dashboard/Sales/Listings/ListingInfo.jsx index d8c6a34..ec677cc 100644 --- a/src/components/Dashboard/Sales/Listings/ListingInfo.jsx +++ b/src/components/Dashboard/Sales/Listings/ListingInfo.jsx @@ -14,6 +14,7 @@ import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ListingVarientIcon from '../../../Icons/ListingVarientIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -144,6 +145,12 @@ const ListingInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx b/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx index 56b957d..34b2c88 100644 --- a/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx +++ b/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx @@ -13,6 +13,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -212,6 +213,12 @@ const MarketplaceInfo = () => { disabled={objectFormState.beingEditedByOther || objectFormState.loading} loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx b/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx index a626a2f..939cdad 100644 --- a/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx +++ b/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx @@ -14,6 +14,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx' import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx' import ObjectForm from '../../common/ObjectForm.jsx' import EditButtons from '../../common/EditButtons.jsx' +import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx' import ActivityIndicator from '../../common/ActivityIndicator.jsx' import ActionHandler from '../../common/ActionHandler.jsx' import ObjectActions from '../../common/ObjectActions.jsx' @@ -192,6 +193,12 @@ const SalesOrderInfo = () => { } loading={objectFormState.editLoading} /> + diff --git a/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx b/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx new file mode 100644 index 0000000..b04c843 --- /dev/null +++ b/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx @@ -0,0 +1,120 @@ +import { useContext, useEffect, useState, useCallback, useRef } from 'react' +import { Button, Divider, Flex, Space } from 'antd' +import { useSearchParams } from 'react-router-dom' +import ArrowLeftIcon from '../../Icons/ArrowLeftIcon.jsx' +import ArrowRightIcon from '../../Icons/ArrowRightIcon.jsx' +import PropTypes from 'prop-types' +import { ApiServerContext } from '../context/ApiServerContext' +import { AuthContext } from '../context/AuthContext' +import { useTableStatePersistence } from '../context/TableStateContext' + +const ObjectTableNavigationButtons = ({ + disabled, + _id, + objectType, + showEndingDivider = false +}) => { + const { getObjectNeighbors } = useContext(ApiServerContext) + const { token } = useContext(AuthContext) + const [searchParams, setSearchParams] = useSearchParams() + const [neighbors, setNeighbors] = useState({ next: null, previous: null }) + const [loading, setLoading] = useState(false) + + const { getPersistedFilter, getPersistedSorter, getActiveFilterValues } = + useTableStatePersistence({ + scope: objectType, + useFilterInSession: true, + useSortInSession: true + }) + + const getObjectNeighborsRef = useRef(getObjectNeighbors) + getObjectNeighborsRef.current = getObjectNeighbors + + const getPersistedFilterRef = useRef(getPersistedFilter) + getPersistedFilterRef.current = getPersistedFilter + + const getPersistedSorterRef = useRef(getPersistedSorter) + getPersistedSorterRef.current = getPersistedSorter + + useEffect(() => { + if (!_id || !objectType || !token) { + setNeighbors({ next: null, previous: null }) + setLoading(false) + return + } + + let cancelled = false + + const loadNeighbors = async () => { + setLoading(true) + const filter = getActiveFilterValues(getPersistedFilterRef.current()) + const sorter = getPersistedSorterRef.current() + const result = await getObjectNeighborsRef.current(objectType, { + id: _id, + filter, + sorter + }) + + if (!cancelled) { + setNeighbors(result || { next: null, previous: null }) + setLoading(false) + } + } + + loadNeighbors() + + return () => { + cancelled = true + } + }, [token, objectType, _id]) + + const navigateToNeighbor = useCallback( + (neighbor) => { + if (!neighbor?._id || !objectType) return + + const nextParams = new URLSearchParams(searchParams) + const objectTypeUpper = objectType.toUpperCase() + + for (const [key] of nextParams.entries()) { + if (key.toUpperCase().includes(objectTypeUpper)) { + nextParams.set(key, neighbor._id) + } + } + + setSearchParams(nextParams) + }, + [searchParams, setSearchParams, objectType] + ) + + const handlePrevious = () => navigateToNeighbor(neighbors.previous) + const handleNext = () => navigateToNeighbor(neighbors.next) + + return ( + + {showEndingDivider && ( + + )} + +