import { createContext, useContext, useState } from 'react'; import { Radio, Wizard, WizardStep } from '@patternfly/react-core'; interface SomeContextProps { errorMessage: string | undefined; setErrorMessage(error: string | undefined): void; successMessage: string | undefined; setSuccessMessage(error: string | undefined): void; warningMessage: string | undefined; setWarningMessage(error: string | undefined): void; } type SomeContextRenderProps = Pick; interface SomeContextProviderProps { children: (context: SomeContextRenderProps) => React.ReactElement; } const SomeContext: React.Context = createContext({} as SomeContextProps); const SomeContextProvider = ({ children }: SomeContextProviderProps) => { const [errorMessage, setErrorMessage] = useState(); const [successMessage, setSuccessMessage] = useState(); const [warningMessage, setWarningMessage] = useState(); return ( {children({ errorMessage, successMessage, warningMessage })} ); }; const StepContentWithAction = () => { const { errorMessage, setErrorMessage, successMessage, setSuccessMessage, warningMessage, setWarningMessage } = useContext(SomeContext); return ( <> { setErrorMessage(checked ? 'Some error message' : undefined); setSuccessMessage(checked ? undefined : successMessage); setWarningMessage(checked ? undefined : warningMessage); }} id="toggle-error-checkbox" name="Toggle Status" /> { setSuccessMessage(checked ? 'Some success message' : undefined); setErrorMessage(checked ? undefined : errorMessage); setWarningMessage(checked ? undefined : warningMessage); }} id="toggle-success-checkbox" name="Toggle Status" /> { setWarningMessage(checked ? 'Some warning message' : undefined); setErrorMessage(checked ? undefined : errorMessage); setSuccessMessage(checked ? undefined : successMessage); }} id="toggle-warning-checkbox" name="Toggle Status" /> ); }; export const WizardStepStatus: React.FunctionComponent = () => ( {({ errorMessage, successMessage, warningMessage }) => { let status = 'default'; if (errorMessage) { status = 'error'; } else if (successMessage) { status = 'success'; } else if (warningMessage) { status = 'warning'; } return ( Step 1 content Review step content ); }} );