diff --git a/src/Components/CreateImageWizard/CreateImageWizard.tsx b/src/Components/CreateImageWizard/CreateImageWizard.tsx
index fc0bca841..bc6aeeae2 100644
--- a/src/Components/CreateImageWizard/CreateImageWizard.tsx
+++ b/src/Components/CreateImageWizard/CreateImageWizard.tsx
@@ -29,6 +29,7 @@ import Azure from './steps/TargetEnvironment/Azure';
import Gcp from './steps/TargetEnvironment/Gcp';
import {
useFilesystemValidation,
+ useSnapshotValidation,
useFirstBootValidation,
useDetailsValidation,
} from './utilities/useValidation';
@@ -60,8 +61,6 @@ import {
selectGcpShareMethod,
selectImageTypes,
addImageType,
- selectSnapshotDate,
- selectUseLatest,
selectRegistrationType,
selectActivationKey,
} from '../../store/wizardSlice';
@@ -181,9 +180,7 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
const registrationType = useAppSelector(selectRegistrationType);
const activationKey = useAppSelector(selectActivationKey);
// Snapshots
- const snapshotDate = useAppSelector(selectSnapshotDate);
- const useLatest = useAppSelector(selectUseLatest);
- const snapshotStepRequiresChoice = !useLatest && !snapshotDate;
+ const snapshotValidation = useSnapshotValidation();
// Filesystem
const [filesystemPristine, setFilesystemPristine] = useState(true);
const fileSystemValidation = useFilesystemValidation();
@@ -372,10 +369,12 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
name="Repository snapshot"
id="wizard-repository-snapshot"
key="wizard-repository-snapshot"
+ navItem={customStatusNavItem}
+ status={snapshotValidation.disabledNext ? 'error' : 'default'}
isHidden={!snapshottingEnabled}
footer={
}
>
@@ -385,7 +384,7 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
name="Custom repositories"
id="wizard-custom-repositories"
key="wizard-custom-repositories"
- isDisabled={snapshotStepRequiresChoice}
+ isDisabled={snapshotValidation.disabledNext}
footer={}
>
@@ -394,7 +393,7 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
name="Additional packages"
id="wizard-additional-packages"
key="wizard-additional-packages"
- isDisabled={snapshotStepRequiresChoice}
+ isDisabled={snapshotValidation.disabledNext}
footer={}
>
@@ -419,7 +418,6 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
{
}
>
{/* Intentional prop drilling for simplicity - To be removed */}
diff --git a/src/Components/CreateImageWizard/steps/Snapshot/Snapshot.tsx b/src/Components/CreateImageWizard/steps/Snapshot/Snapshot.tsx
index 2800cdb8f..8afefee5b 100644
--- a/src/Components/CreateImageWizard/steps/Snapshot/Snapshot.tsx
+++ b/src/Components/CreateImageWizard/steps/Snapshot/Snapshot.tsx
@@ -22,15 +22,7 @@ import {
dateToMMDDYYYY,
parseMMDDYYYYtoDate,
} from '../../../../Utilities/time';
-
-const dateValidators = [
- (date: Date) => {
- if (date.getTime() > Date.now()) {
- return 'Cannot set a date in the future';
- }
- return '';
- },
-];
+import { isSnapshotDateValid } from '../../validators';
export default function Snapshot() {
const dispatch = useAppDispatch();
@@ -89,7 +81,14 @@ export default function Snapshot() {
placeholder="MM/DD/YYYY"
dateParse={parseMMDDYYYYtoDate}
dateFormat={dateToMMDDYYYY}
- validators={dateValidators}
+ validators={[
+ (date: Date) => {
+ if (!isSnapshotDateValid(date)) {
+ return 'Cannot set a date in the future';
+ }
+ return '';
+ },
+ ]}
onChange={(_, val) => dispatch(changeSnapshotDate(val))}
/>