import React from 'react'; import { Button, Alert, EmptyState, EmptyStateHeader, EmptyStateFooter, EmptyStateBody, EmptyStateActions, EmptyStateIcon, Progress, Form, FormGroup, TextInput, HelperText, HelperTextItem, FormHelperText, Wizard, WizardStep, WizardFooterWrapper, useWizardContext } from '@breakaway/preact-core'; import CogsIcon from '@patternfly/react-icons/dist/esm/icons/cogs-icon'; interface ValidationProgressProps { onClose(): void; } const ValidationProgress: React.FunctionComponent = ({ onClose }) => { const [percentValidated, setPercentValidated] = React.useState(0); const tick = React.useCallback(() => { if (percentValidated < 100) { setPercentValidated((prevValue) => prevValue + 20); } }, [percentValidated]); React.useEffect(() => { const interval = setInterval(() => tick(), 1000); return () => { clearInterval(interval); }; }, [tick]); return (
} /> Description can be used to further elaborate on the validation step, or give the user a better idea of how long the process will take.
); }; interface LastStepFooterProps { isValid: boolean; setIsSubmitted(isSubmitted: boolean): void; setHasErrorOnSubmit(isSubmitted: boolean): void; } const LastStepFooter: React.FunctionComponent = ({ isValid, setIsSubmitted, setHasErrorOnSubmit }) => { const { goToNextStep, goToPrevStep } = useWizardContext(); const onValidate = () => { setIsSubmitted(true); if (!isValid) { setIsSubmitted(false); setHasErrorOnSubmit(true); } else { goToNextStep(); } }; return ( ); }; interface SampleFormProps { value: string; isValid: boolean; setValue: (value: string) => void; setIsValid: (isValid: boolean) => void; } const SampleForm: React.FunctionComponent = ({ value, isValid, setValue, setIsValid }) => { const validated = isValid ? 'default' : 'error'; const handleTextInputChange = (_event, value: string) => { const isValid = /^\d+$/.test(value); setValue(value); setIsValid(isValid); }; return (
{validated === 'error' ? 'Age has to be a number' : 'Write your age in numbers.'}
); }; export const WizardValidateOnButtonPress: React.FunctionComponent = () => { const [ageValue, setAgeValue] = React.useState('Thirty'); const [isSubmitted, setIsSubmitted] = React.useState(false); const [isFirstStepValid, setIsFirstStepValid] = React.useState(false); const [hasErrorOnSubmit, setHasErrorOnSubmit] = React.useState(false); // eslint-disable-next-line no-console const onClose = () => console.log('Some close action occurs here.'); if (isSubmitted && isFirstStepValid) { return ; } return ( Step 1 content Step 2 content } > {hasErrorOnSubmit && (
)} setAgeValue(value)} isValid={!hasErrorOnSubmit || isFirstStepValid} setIsValid={setIsFirstStepValid} />
); };