diff --git a/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.jsx b/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.jsx index 06e80bbb5e..560940e6c7 100644 --- a/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.jsx +++ b/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.jsx @@ -227,6 +227,11 @@ export default function ShippingMethods() { const hasValidShippingInfo = deliveryShipments.length > 0 && deliveryShipments.every((s) => s.shippingAddress) + // Check if any shipments are missing shipping methods + const hasMissingShippingMethods = deliveryShipments.some( + (s) => !s.shippingMethod || !s.shippingMethod.id + ) + const isFormValid = form.formState.isValid || deliveryShipments.every((s) => s.shippingMethod && s.shippingMethod.id) @@ -265,7 +270,7 @@ export default function ShippingMethods() { defaultMessage: 'Shipping & Gift Options', id: 'shipping_options.title.shipping_gift_options' })} - editing={step === STEPS.SHIPPING_OPTIONS} + editing={step === STEPS.SHIPPING_OPTIONS && hasMissingShippingMethods} isLoading={form.formState.isSubmitting} disabled={!hasValidShippingInfo} onEdit={() => goToStep(STEPS.SHIPPING_OPTIONS)} diff --git a/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.test.js b/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.test.js index 21a342870a..7f7e18b660 100644 --- a/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.test.js +++ b/packages/template-retail-react-app/app/pages/checkout/partials/shipping-methods.test.js @@ -191,6 +191,13 @@ describe('ShippingMethods', () => { }) test('should show loading spinner for shipping methods when shipping methods are loading', async () => { + mockUseCurrentBasket.mockReturnValue({ + data: null, + derivedData: { + totalShippingCost: undefined + }, + isLoading: true + }) mockUseShippingMethodsForShipment.mockReturnValue({ data: null, isLoading: true