Merge pull request #14700 from alexrybch/validator-form-data
added formData to validation function
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Form data is now passed to validator functions in 'next' scaffolder, so it's now possible to perform validation for fields that depend on other field values. This is something that we discourage due to the coupling that it creates, but is sometimes still the most sensible solution.
|
||||
|
||||
```typescript jsx
|
||||
export const myCustomValidation = (
|
||||
value: string,
|
||||
validation: FieldValidation,
|
||||
{ apiHolder, formData }: { apiHolder: ApiHolder; formData: JsonObject },
|
||||
) => {
|
||||
// validate
|
||||
};
|
||||
```
|
||||
@@ -224,6 +224,7 @@ export type NextCustomFieldValidator<TFieldReturnValue> = (
|
||||
field: FieldValidation_2,
|
||||
context: {
|
||||
apiHolder: ApiHolder;
|
||||
formData: JsonObject;
|
||||
},
|
||||
) => void | Promise<void>;
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import {
|
||||
} from '@rjsf/utils';
|
||||
import { PropsWithChildren } from 'react';
|
||||
import { JSONSchema7 } from 'json-schema';
|
||||
import { JsonObject } from '@backstage/types';
|
||||
|
||||
/**
|
||||
* Field validation type for Custom Field Extensions.
|
||||
@@ -100,7 +101,7 @@ export interface NextFieldExtensionComponentProps<
|
||||
export type NextCustomFieldValidator<TFieldReturnValue> = (
|
||||
data: TFieldReturnValue,
|
||||
field: FieldValidationV5,
|
||||
context: { apiHolder: ApiHolder },
|
||||
context: { apiHolder: ApiHolder; formData: JsonObject },
|
||||
) => void | Promise<void>;
|
||||
|
||||
/**
|
||||
|
||||
@@ -42,7 +42,7 @@ export const createAsyncValidators = (
|
||||
if (validator) {
|
||||
const fieldValidation = createFieldValidation();
|
||||
try {
|
||||
await validator(value, fieldValidation, context);
|
||||
await validator(value, fieldValidation, { ...context, formData });
|
||||
} catch (ex) {
|
||||
fieldValidation.addError(ex.message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user