From ef60cca6066c7fe3654569e93aa351eecda3ac2e Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Mon, 28 Oct 2024 18:27:12 +0100
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Integrate=20Redux=20store=20to=20on?=
=?UTF-8?q?boarding=20naviagtion?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ReusableComponents/Navigation.js | 22 +++++++++++++------
.../Screens/Onboarding/Onboarding.js | 13 +++++++----
.../Screens/Onboarding/StepBusiness.js | 8 ++++++-
.../Screens/Onboarding/StepProducts.js | 8 ++++++-
4 files changed, 38 insertions(+), 13 deletions(-)
diff --git a/modules/ppcp-settings/resources/js/Components/ReusableComponents/Navigation.js b/modules/ppcp-settings/resources/js/Components/ReusableComponents/Navigation.js
index d4e5fae4b..05950f13d 100644
--- a/modules/ppcp-settings/resources/js/Components/ReusableComponents/Navigation.js
+++ b/modules/ppcp-settings/resources/js/Components/ReusableComponents/Navigation.js
@@ -3,27 +3,35 @@ import { __ } from '@wordpress/i18n';
const Navigation = ( {
setStep,
+ setCompleted,
currentStep,
stepperOrder,
canProceeedCallback = () => true,
} ) => {
- const setNextStep = ( nextStep ) => {
- let newStep = currentStep + nextStep;
- if ( newStep > stepperOrder.length - 1 ) {
- newStep = currentStep;
+ const navigateBy = ( stepDirection ) => {
+ let newStep = currentStep + stepDirection;
+
+ if ( isNaN( newStep ) || newStep < 0 ) {
+ console.warn( 'Invalid next step:', newStep );
+ newStep = 0;
+ }
+
+ if ( newStep >= stepperOrder.length ) {
+ setCompleted( true );
+ } else {
+ setStep( newStep );
}
- setStep( newStep );
};
return (
-
diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepBusiness.js b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepBusiness.js
index dda0f39a4..9ac7de1c2 100644
--- a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepBusiness.js
+++ b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepBusiness.js
@@ -6,7 +6,12 @@ import PaymentMethodIcons from '../../ReusableComponents/PaymentMethodIcons';
import { useState } from '@wordpress/element';
import Navigation from '../../ReusableComponents/Navigation';
-const StepBusiness = ( { setStep, currentStep, stepperOrder } ) => {
+const StepBusiness = ( {
+ setStep,
+ currentStep,
+ stepperOrder,
+ setCompleted,
+} ) => {
const [ businessCategory, setBusinessCategory ] = useState( null );
const BUSINESS_RADIO_GROUP_NAME = 'business';
const CASUAL_SELLER_CHECKBOX_VALUE = 'casual_seller';
@@ -91,6 +96,7 @@ const StepBusiness = ( { setStep, currentStep, stepperOrder } ) => {
setStep={ setStep }
currentStep={ currentStep }
stepperOrder={ stepperOrder }
+ setCompleted={ setCompleted }
canProceeedCallback={ () => businessCategory !== null }
/>
diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepProducts.js b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepProducts.js
index f155dab62..6ceaf0f4d 100644
--- a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepProducts.js
+++ b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepProducts.js
@@ -5,7 +5,12 @@ import SelectBox from '../../ReusableComponents/SelectBox';
import SelectBoxWrapper from '../../ReusableComponents/SelectBoxWrapper';
import { useState } from '@wordpress/element';
-const StepProducts = ( { setStep, currentStep, stepperOrder } ) => {
+const StepProducts = ( {
+ setStep,
+ currentStep,
+ stepperOrder,
+ setCompleted,
+} ) => {
const [ products, setProducts ] = useState( [] );
const PRODUCTS_CHECKBOX_GROUP_NAME = 'products';
const VIRTUAL_CHECKBOX_VALUE = 'virtual';
@@ -118,6 +123,7 @@ const StepProducts = ( { setStep, currentStep, stepperOrder } ) => {
setStep={ setStep }
currentStep={ currentStep }
stepperOrder={ stepperOrder }
+ setCompleted={ setCompleted }
canProceeedCallback={ () => products.length > 0 }
/>