@@ -91,6 +101,8 @@ export default function OrdersEdit() {
shippings={(shippingsQ.data || [])}
itemsEditable={['pending', 'on-hold', 'failed', 'draft'].includes(order.status)}
showCoupons
+ formRef={formRef}
+ hideSubmitButton={true}
onSubmit={(form) => {
const payload = { ...form } as any;
upd.mutate(payload);
diff --git a/admin-spa/src/routes/Orders/New.tsx b/admin-spa/src/routes/Orders/New.tsx
index b1652e0..92f8bcd 100644
--- a/admin-spa/src/routes/Orders/New.tsx
+++ b/admin-spa/src/routes/Orders/New.tsx
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import React, { useEffect, useRef } from 'react';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { OrdersApi } from '@/lib/api';
import { useNavigate } from 'react-router-dom';
@@ -14,6 +14,7 @@ export default function OrdersNew() {
const nav = useNavigate();
const qc = useQueryClient();
const { setPageHeader, clearPageHeader } = usePageHeader();
+ const formRef = useRef
(null);
// Hide FAB on new order page
useFABConfig('none');
@@ -44,16 +45,25 @@ export default function OrdersNew() {
// Prefer global store currency injected by PHP
const { currency: storeCurrency, symbol: storeSymbol } = getStoreCurrency();
- // Set page header with back button
+ // Set page header with back button and create button
useEffect(() => {
- const backButton = (
-
+ const actions = (
+
+
+
+
);
- setPageHeader(__('New Order'), backButton);
+ setPageHeader(__('New Order'), actions);
return () => clearPageHeader();
- }, [setPageHeader, clearPageHeader, nav]);
+ }, [mutate.isPending, setPageHeader, clearPageHeader, nav]);
return (
@@ -67,6 +77,8 @@ export default function OrdersNew() {
defaultCountry={countriesQ.data?.default_country}
payments={(payments.data || [])}
shippings={(shippings.data || [])}
+ formRef={formRef}
+ hideSubmitButton={true}
onSubmit={(form) => {
mutate.mutate(form as any);
}}
diff --git a/admin-spa/src/routes/Orders/partials/OrderForm.tsx b/admin-spa/src/routes/Orders/partials/OrderForm.tsx
index c7b6f58..e45bae9 100644
--- a/admin-spa/src/routes/Orders/partials/OrderForm.tsx
+++ b/admin-spa/src/routes/Orders/partials/OrderForm.tsx
@@ -92,6 +92,8 @@ type Props = {
rightTop?: React.ReactNode;
itemsEditable?: boolean;
showCoupons?: boolean;
+ formRef?: React.RefObject
;
+ hideSubmitButton?: boolean;
};
const STATUS_LIST = ['pending','processing','on-hold','completed','cancelled','refunded','failed'];
@@ -113,6 +115,8 @@ export default function OrderForm({
showCoupons = true,
currency,
currencySymbol,
+ formRef,
+ hideSubmitButton = false,
}: Props) {
const oneCountryOnly = countries.length === 1;
const firstCountry = countries[0]?.code || 'US';
@@ -346,7 +350,7 @@ export default function OrderForm({
}
return (
-