From 65cffff8d0e4861e2e78fa09e803fb74bfeefb7f Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Mon, 6 Feb 2023 14:56:39 +0000 Subject: [PATCH] refactor types Signed-off-by: Paul Cowan --- .../src/next/components/Stepper/Stepper.tsx | 9 +++++---- .../src/next/components/Stepper/createAsyncValidators.ts | 9 ++++++--- .../src/next/components/Stepper/guards.ts | 3 ++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx index e6e3295aaf..eb30329cc6 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx @@ -27,7 +27,10 @@ import { ErrorSchema, FieldValidation } from '@rjsf/utils'; import React, { useCallback, useMemo, useState, type ReactNode } from 'react'; import { NextFieldExtensionOptions } from '../../extensions'; import { TemplateParameterSchema } from '../../../types'; -import { createAsyncValidators } from './createAsyncValidators'; +import { + createAsyncValidators, + type FormValidation, +} from './createAsyncValidators'; import { ReviewState, type ReviewStateProps } from '../ReviewState'; import { useTemplateSchema } from '../../hooks/useTemplateSchema'; import validator from '@rjsf/validator-ajv8'; @@ -93,9 +96,7 @@ export const Stepper = (stepperProps: StepperProps) => { const [activeStep, setActiveStep] = useState(0); const [formState, setFormState] = useFormDataFromQuery(props.initialState); - const [errors, setErrors] = useState< - undefined | Record - >(); + const [errors, setErrors] = useState(); const styles = useStyles(); const extensions = useMemo(() => { diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts index 299a2451ce..92774084b2 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts @@ -25,7 +25,10 @@ function isObject(value: JsonValue | undefined): value is JsonObject { return typeof value === 'object' && value !== null && !Array.isArray(value); } -type FormValidation = Record< +/** + * @internal + */ +export type FormValidation = Record< string, FieldValidation | Record >; @@ -41,7 +44,7 @@ export const createAsyncValidators = ( formData: JsonObject, pathPrefix: string = '#', current: JsonObject = formData, - ): Promise> { + ): Promise { const parsedSchema = new JSONSchema(rootSchema); const formValidation: FormValidation = {}; @@ -68,7 +71,7 @@ export const createAsyncValidators = ( } } - return formValidation as Record; + return formValidation; } return async (formData: JsonObject) => { diff --git a/plugins/scaffolder-react/src/next/components/Stepper/guards.ts b/plugins/scaffolder-react/src/next/components/Stepper/guards.ts index c7afeb5664..647dc89af7 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/guards.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/guards.ts @@ -14,12 +14,13 @@ * limitations under the License. */ import type { FieldValidation } from '@rjsf/utils'; +import { FormValidation } from './createAsyncValidators'; function isFieldValidation(error: any): error is FieldValidation { return !!error && '__errors' in error; } -export function hasErrors(errors?: Record): boolean { +export function hasErrors(errors?: FormValidation): boolean { if (!errors) { return false; }