diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/FieldOverrides/DescriptionField.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/FieldOverrides/DescriptionField.tsx
index eded38beee..3c592860ef 100644
--- a/plugins/scaffolder/src/components/MultistepJsonForm/FieldOverrides/DescriptionField.tsx
+++ b/plugins/scaffolder/src/components/MultistepJsonForm/FieldOverrides/DescriptionField.tsx
@@ -16,7 +16,7 @@
import React from 'react';
import { MarkdownContent } from '@backstage/core-components';
-import { FieldProps } from '@rjsf/utils';
+import { FieldProps } from '@rjsf/core';
export const DescriptionField = ({ description }: FieldProps) =>
description && ;
diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx
index 7ab3007e99..8c71df67b6 100644
--- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx
+++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx
@@ -29,9 +29,8 @@ import {
useApi,
featureFlagsApiRef,
} from '@backstage/core-plugin-api';
-import { UiSchema } from '@rjsf/utils';
-import { FormProps, IChangeEvent, withTheme } from '@rjsf/core';
-import { Theme } from '@rjsf/material-ui';
+import { FormProps, IChangeEvent, UiSchema, withTheme } from '@rjsf/core';
+import { Theme as MuiTheme } from '@rjsf/material-ui';
import React, { useState } from 'react';
import { transformSchemaToProps } from './schema';
import { Content, StructuredMetadataTable } from '@backstage/core-components';
@@ -39,6 +38,7 @@ import cloneDeep from 'lodash/cloneDeep';
import * as fieldOverrides from './FieldOverrides';
import { LayoutOptions } from '../../layouts';
+const Form = withTheme(MuiTheme);
type Step = {
schema: JsonObject;
title: string;
@@ -123,7 +123,6 @@ export const MultistepJsonForm = (props: Props) => {
finishButtonLabel,
layouts,
} = props;
- const Form = withTheme(Theme);
const [activeStep, setActiveStep] = useState(0);
const [disableButtons, setDisableButtons] = useState(false);
const errorApi = useApi(errorApiRef);
@@ -214,7 +213,7 @@ export const MultistepJsonForm = (props: Props) => {
formData={formData}
formContext={{ formData }}
onChange={onChange}
- onSubmit={(e: any) => {
+ onSubmit={e => {
if (e.errors.length === 0) handleNext();
}}
{...formProps}
diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
index eea5efc296..f549c9e7f2 100644
--- a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
+++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
@@ -17,7 +17,7 @@
import { createValidator } from './createValidator';
import { CustomFieldValidator } from '../../extensions';
import { ApiHolder } from '@backstage/core-plugin-api';
-import { FormValidation } from '@rjsf/utils';
+import { FormValidation } from '@rjsf/core';
describe('createValidator', () => {
const validators: Record> =
@@ -68,6 +68,6 @@ describe('createValidator', () => {
/* THEN */
expect(result).not.toBeNull();
- expect(result.p1?.addError).toHaveBeenCalledTimes(1);
+ expect(result.p1.addError).toHaveBeenCalledTimes(1);
});
});
diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.ts
index d1c55009a9..9cd1489a02 100644
--- a/plugins/scaffolder/src/components/TemplatePage/createValidator.ts
+++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.ts
@@ -15,7 +15,7 @@
*/
import { CustomFieldValidator } from '../../extensions';
-import { FormValidation } from '@rjsf/utils';
+import { FormValidation } from '@rjsf/core';
import { JsonObject, JsonValue } from '@backstage/types';
import { ApiHolder } from '@backstage/core-plugin-api';
@@ -62,7 +62,7 @@ export const createValidator = (
if (fieldName && typeof validators[fieldName] === 'function') {
validators[fieldName]!(
propData as JsonValue,
- propValidation as FormValidation,
+ propValidation,
context,
);
}
diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
index ffc447577a..942eef9d82 100644
--- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
@@ -17,7 +17,7 @@
import { Entity } from '@backstage/catalog-model';
import { CatalogApi, catalogApiRef } from '@backstage/plugin-catalog-react';
import { renderInTestApp, TestApiProvider } from '@backstage/test-utils';
-import { FieldProps } from '@rjsf/utils';
+import { FieldProps } from '@rjsf/core';
import { fireEvent } from '@testing-library/react';
import React from 'react';
import { EntityPicker } from './EntityPicker';
@@ -39,7 +39,7 @@ describe('', () => {
const rawErrors: string[] = [];
const formData = undefined;
- let props: FieldProps;
+ let props: FieldProps;
const catalogApi: jest.Mocked = {
getLocationById: jest.fn(),
@@ -76,7 +76,7 @@ describe('', () => {
uiSchema,
rawErrors,
formData,
- } as any;
+ } as unknown as FieldProps;
catalogApi.getEntities.mockResolvedValue({ items: entities });
});
@@ -117,7 +117,7 @@ describe('', () => {
uiSchema,
rawErrors,
formData,
- } as any;
+ } as unknown as FieldProps;
catalogApi.getEntities.mockResolvedValue({ items: entities });
});
diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
index a040320d79..e7883a4721 100644
--- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
@@ -45,10 +45,7 @@ export interface EntityPickerUiOptions {
* @public
*/
export const EntityPicker = (
- props: FieldExtensionComponentProps<
- string | undefined,
- EntityPickerUiOptions
- >,
+ props: FieldExtensionComponentProps,
) => {
const {
onChange,
@@ -59,9 +56,9 @@ export const EntityPicker = (
formData,
idSchema,
} = props;
- const allowedKinds = uiSchema?.['ui:options']?.allowedKinds;
- const defaultKind = uiSchema?.['ui:options']?.defaultKind;
- const defaultNamespace = uiSchema?.['ui:options']?.defaultNamespace;
+ const allowedKinds = uiSchema['ui:options']?.allowedKinds;
+ const defaultKind = uiSchema['ui:options']?.defaultKind;
+ const defaultNamespace = uiSchema['ui:options']?.defaultNamespace;
const catalogApi = useApi(catalogApiRef);
@@ -102,7 +99,7 @@ export const EntityPicker = (
onChange={onSelect}
options={entityRefs || []}
autoSelect
- freeSolo={uiSchema?.['ui:options']?.allowArbitraryValues ?? true}
+ freeSolo={uiSchema['ui:options']?.allowArbitraryValues ?? true}
renderInput={params => (
', () => {
const rawErrors: string[] = [];
const formData = undefined;
- let props: FieldProps;
+ let props: FieldProps;
const catalogApi: jest.Mocked = {
getLocationById: jest.fn(),
diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx
index 8ce01fc3ef..3de2b12bd0 100644
--- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx
@@ -36,7 +36,7 @@ export interface OwnerPickerUiOptions {
* @public
*/
export const OwnerPicker = (
- props: FieldExtensionComponentProps,
+ props: FieldExtensionComponentProps,
) => {
const {
schema: { title = 'Owner', description = 'The owner of the component' },
@@ -44,18 +44,18 @@ export const OwnerPicker = (
...restProps
} = props;
- const defaultNamespace = uiSchema?.['ui:options']?.defaultNamespace;
+ const defaultNamespace = uiSchema['ui:options']?.defaultNamespace;
const ownerUiSchema = {
...uiSchema,
'ui:options': {
- allowedKinds: (uiSchema?.['ui:options']?.allowedKinds || [
+ allowedKinds: (uiSchema['ui:options']?.allowedKinds || [
'Group',
'User',
]) as string[],
defaultKind: 'Group',
allowArbitraryValues:
- uiSchema?.['ui:options']?.allowArbitraryValues ?? true,
+ uiSchema['ui:options']?.allowArbitraryValues ?? true,
...(defaultNamespace !== undefined ? { defaultNamespace } : {}),
},
};
diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx
index f28b4bc816..7fac9f7840 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx
@@ -15,8 +15,7 @@
*/
import React, { useContext } from 'react';
import { RepoUrlPicker } from './RepoUrlPicker';
-import { withTheme } from '@rjsf/core';
-import { Theme } from '@rjsf/material-ui';
+import Form from '@rjsf/core';
import { renderInTestApp, TestApiProvider } from '@backstage/test-utils';
import {
scmIntegrationsApiRef,
@@ -26,12 +25,12 @@ import {
} from '@backstage/integration-react';
import { scaffolderApiRef } from '../../../api';
import { ScaffolderApi } from '../../../types';
+
import {
SecretsContextProvider,
SecretsContext,
} from '../../secrets/SecretsContext';
import { act, fireEvent } from '@testing-library/react';
-import { Field } from '@rjsf/utils';
describe('RepoUrlPicker', () => {
const mockScaffolderApi: Partial = {
@@ -51,8 +50,6 @@ describe('RepoUrlPicker', () => {
getCredentials: jest.fn().mockResolvedValue({ token: 'abc123' }),
};
- const Form = withTheme(Theme);
-
describe('happy path rendering', () => {
it('should render the repo url picker with minimal props', async () => {
const onSubmit = jest.fn();
@@ -68,7 +65,7 @@ describe('RepoUrlPicker', () => {