diff --git a/src/Components/CreateImageWizard/CreateImageWizard.tsx b/src/Components/CreateImageWizard/CreateImageWizard.tsx index f26989158d..6647acaf6b 100644 --- a/src/Components/CreateImageWizard/CreateImageWizard.tsx +++ b/src/Components/CreateImageWizard/CreateImageWizard.tsx @@ -45,6 +45,7 @@ import { parseStateFromRequest, selectDistribution, selectImageSource, + selectImageSourceType, selectImageTypes, selectIsImageMode, selectTimezone, @@ -121,6 +122,7 @@ const CreateImageWizard = () => { const isOnPremise = useAppSelector(selectIsOnPremise); const isImageMode = useAppSelector(selectIsImageMode); const imageSource = useAppSelector(selectImageSource); + const imageSourceType = useAppSelector(selectImageSourceType); const [searchParams, setSearchParams] = useSearchParams(); const resolvePath = useAppSelector(selectPathResolver); const hasInitialized = useRef(false); @@ -170,6 +172,11 @@ const CreateImageWizard = () => { const usersHaveErrors = usersValidation.disabledNext || userGroupsValidation.disabledNext; + // The "Local images" source is a fake door: it only shows a coming-soon + // note, so the wizard must not proceed past base settings. + const localImageSourceSelected = + isOnPremise && isImageMode && imageSourceType === 'local'; + const baseSettingsHasErrors = targetEnvironments.length === 0 || (isImageMode && !imageSource) || @@ -417,10 +424,11 @@ const CreateImageWizard = () => { (s) => s.id === 'base-settings-step', )?.isVisited; const canNavigate = - mode === 'edit' || - step.isVisited || - isBaseSettingsStep || - (hasVisitedBaseSettings && !baseSettingsHasErrors); + (isBaseSettingsStep || !localImageSourceSelected) && + (mode === 'edit' || + step.isVisited || + isBaseSettingsStep || + (hasVisitedBaseSettings && !baseSettingsHasErrors)); return ( { footer={ diff --git a/src/Components/CreateImageWizard/components/CustomWizardFooter.tsx b/src/Components/CreateImageWizard/components/CustomWizardFooter.tsx index 9c25ac749d..28e82931c8 100644 --- a/src/Components/CreateImageWizard/components/CustomWizardFooter.tsx +++ b/src/Components/CreateImageWizard/components/CustomWizardFooter.tsx @@ -20,6 +20,7 @@ import { scrollToFirstError } from '../utilities/scrollToFirstError'; type CustomWizardFooterPropType = { disableBack?: boolean; + disableNext?: boolean; hasErrors: boolean; beforeNext?: () => boolean; isOnPremise: boolean; @@ -27,6 +28,7 @@ type CustomWizardFooterPropType = { export const CustomWizardFooter = ({ disableBack, + disableNext = false, hasErrors, beforeNext, isOnPremise, @@ -89,10 +91,18 @@ export const CustomWizardFooter = ({ > Back - -