Skip to content

Commit 25cad9a

Browse files
committed
Add convertWarningToError option
1 parent 0fcca0a commit 25cad9a

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

packages/react-form-renderer/src/files/use-field-api.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ export interface ValidatorType extends Object {
1010
export interface UseFieldApiConfig extends AnyObject {
1111
name: string;
1212
validate?: ValidatorType[];
13+
useWarnings?: boolean;
14+
convertWarningToError?: boolean;
1315
}
1416
export interface UseFieldApiComponentConfig extends UseFieldConfig<any> {
1517
name: string;

packages/react-form-renderer/src/files/use-field-api.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ const createFieldProps = (name, formOptions) => {
6666
};
6767
};
6868

69-
const useFieldApi = ({ name, initializeOnMount, component, render, validate, resolveProps, useWarnings, ...props }) => {
69+
const useFieldApi = ({ name, initializeOnMount, component, render, validate, resolveProps, useWarnings, convertWarningToError, ...props }) => {
7070
const { validatorMapper, formOptions } = useContext(RendererContext);
7171

7272
// eslint-disable-next-line react-hooks/rules-of-hooks
@@ -219,7 +219,8 @@ const useFieldApi = ({ name, initializeOnMount, component, render, validate, res
219219
...(useWarnings && {
220220
meta: {
221221
...fieldProps.meta,
222-
warning
222+
warning,
223+
...(convertWarningToError && { error: warning })
223224
}
224225
}),
225226
input: {

packages/react-form-renderer/src/tests/form-renderer/validator.test.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,34 @@ describe('FormRenderer validator', () => {
110110
expect(wrapper.find('#warning').text()).toEqual('Required');
111111
});
112112

113+
it('should convert warning to error', async () => {
114+
await act(async () => {
115+
wrapper = mount(
116+
<FormRenderer
117+
FormTemplate={FormTemplate}
118+
componentMapper={{
119+
[componentTypes.TEXT_FIELD]: TextField
120+
}}
121+
schema={{
122+
fields: [
123+
{
124+
useWarnings: true,
125+
convertWarningToError: true,
126+
component: 'text-field',
127+
name: NAME,
128+
validate: [{ type: 'required', warning: true }]
129+
}
130+
]
131+
}}
132+
onSubmit={jest.fn()}
133+
/>
134+
);
135+
});
136+
wrapper.update();
137+
138+
expect(wrapper.find('#error').text()).toEqual('Required');
139+
});
140+
113141
it('should convert function validator to warning', async () => {
114142
const ERROR = 'SOME-ERROR';
115143

0 commit comments

Comments
 (0)