diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Components/Navigation.js b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Components/Navigation.js
index 2d63d6f06..74dd4bc46 100644
--- a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Components/Navigation.js
+++ b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Components/Navigation.js
@@ -4,108 +4,60 @@ import { __ } from '@wordpress/i18n';
import { OnboardingHooks } from '../../../../data';
-const Navigation = ( {
- setStep,
- setCompleted,
- currentStep,
- stepperOrder,
- title,
-} ) => {
- const isLastStep = () => currentStep + 1 === stepperOrder.length;
- const isFistStep = () => currentStep === 0;
- const navigateBy = ( stepDirection ) => {
- let newStep = currentStep + stepDirection;
+const Navigation = ( { stepDetails, onNext, onPrev, onExit } ) => {
+ const { title, isFirst, percentage, showNext, canProceed } = stepDetails;
- if ( isNaN( newStep ) || newStep < 0 ) {
- console.warn( 'Invalid next step:', newStep );
- newStep = 0;
- }
-
- if ( newStep >= stepperOrder.length ) {
- setCompleted( true );
- } else {
- setStep( newStep );
- }
- };
-
- const { products } = OnboardingHooks.useProducts();
- const { isCasualSeller } = OnboardingHooks.useBusiness();
-
- let disabled = false;
-
- switch ( currentStep ) {
- case 1:
- disabled = isCasualSeller === null;
- break;
- case 2:
- disabled = products.length < 1;
- break;
- }
+ const state = OnboardingHooks.useNavigationState();
+ const isDisabled = ! canProceed( state );
return (
- { ! isFistStep() ? (
-
- ) : (
-
- { title }
-
- ) }
+
- { ! isFistStep() && (
-
- ) }
-
+ { ! isFirst &&
+ NextButton( { showNext, isDisabled, onNext, onExit } ) }
+
);
};
+const NextButton = ( { showNext, isDisabled, onNext, onExit } ) => {
+ return (
+
+
+ { showNext && (
+
+ ) }
+
+ );
+};
+
+const ProgressBar = ( { percent } ) => {
+ percent = Math.min( Math.max( percent, 0 ), 100 );
+
+ return (
+
+ );
+};
+
export default Navigation;
diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Onboarding.js b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Onboarding.js
index eb6676b13..e59bcdeeb 100644
--- a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Onboarding.js
+++ b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/Onboarding.js
@@ -8,20 +8,26 @@ const Onboarding = () => {
const { step, setStep, setCompleted, flags } = OnboardingHooks.useSteps();
const Steps = getSteps( flags );
- const { StepComponent, title } = getCurrentStep( step, Steps );
+ const currentStep = getCurrentStep( step, Steps );
+
+ const handleNext = () => setStep( currentStep.nextStep );
+ const handlePrev = () => setStep( currentStep.prevStep );
+ const handleExit = () => {
+ window.location.href = window.ppcpSettings.wcPaymentsTabUrl;
+ };
return (
<>
+
- {
return { flags, isReady, step, setStep, completed, setCompleted };
};
+
+export const useNavigationState = () => {
+ const products = useProducts();
+ const business = useBusiness();
+
+ return {
+ products,
+ business,
+ };
+};