diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx index 37458fb402..cde299da7e 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx @@ -59,6 +59,7 @@ export type StepperProps = { extensions: NextFieldExtensionOptions[]; templateName?: string; FormProps?: FormProps; + initialState?: Record; onComplete: (values: Record) => Promise; }; @@ -77,7 +78,7 @@ export const Stepper = (props: StepperProps) => { const { steps } = useTemplateSchema(props.manifest); const apiHolder = useApiHolder(); const [activeStep, setActiveStep] = useState(0); - const [formState, setFormState] = useFormDataFromQuery(); + const [formState, setFormState] = useFormDataFromQuery(props.initialState); const [errors, setErrors] = useState< undefined | Record diff --git a/plugins/scaffolder-react/src/next/hooks/useFormDataFromQuery.ts b/plugins/scaffolder-react/src/next/hooks/useFormDataFromQuery.ts index ad812480bd..966a8fe8f4 100644 --- a/plugins/scaffolder-react/src/next/hooks/useFormDataFromQuery.ts +++ b/plugins/scaffolder-react/src/next/hooks/useFormDataFromQuery.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { JsonValue } from '@backstage/types'; import qs from 'qs'; import { useState } from 'react'; @@ -21,8 +22,14 @@ import { useState } from 'react'; * This hook is used to get the formData from the query string. * @alpha */ -export const useFormDataFromQuery = () => { +export const useFormDataFromQuery = ( + initialState?: Record, +) => { return useState>(() => { + if (initialState) { + return initialState; + } + const query = qs.parse(window.location.search, { ignoreQueryPrefix: true, });