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() && ( -
- - { __( - 'Save and exit', - 'woocommerce-paypal-payments' - ) } - - { ! isLastStep() && ( - - ) } -
- ) } -
+ { ! 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, + }; +};