Skip to content

Commit 18a1a93

Browse files
committed
fix(common): use validateOnMount flag in multiple checkbox
1 parent 5b2b3f7 commit 18a1a93

File tree

2 files changed

+51
-5
lines changed

2 files changed

+51
-5
lines changed

packages/common/src/multiple-choice-list/multiple-choice-list.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ const SingleCheckbox = (props) => {
1111
};
1212

1313
const MultipleChoiceList = (props) => {
14-
const { Wrapper, Checkbox, label, isRequired, helperText, meta, input, options, isDisabled, isReadOnly, description, ...rest } = useFieldApi(props);
14+
const { Wrapper, Checkbox, label, validateOnMount, isRequired, helperText, meta, input, options, isDisabled, isReadOnly, description, ...rest } =
15+
useFieldApi(props);
1516

1617
const { error, touched, submitError } = meta;
17-
const showError = touched && (error || submitError);
18+
const showError = Boolean((touched || validateOnMount) && (error || submitError));
1819

1920
return (
2021
<Wrapper

packages/common/src/tests/multiple-choice-list/multiple-choice-list.test.js

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable react/prop-types */
22
import React from 'react';
3-
import { FormRenderer, componentTypes, useFormApi } from '@data-driven-forms/react-form-renderer';
3+
import { FormRenderer, componentTypes, useFormApi, validatorTypes } from '@data-driven-forms/react-form-renderer';
44
import { render, screen, fireEvent } from '@testing-library/react';
55
import userEvent from '@testing-library/user-event';
66

@@ -157,7 +157,7 @@ describe('multiple choice list', () => {
157157
},
158158
name: 'check',
159159
rest: {},
160-
showError: 'Required',
160+
showError: true,
161161
});
162162
});
163163

@@ -195,7 +195,52 @@ describe('multiple choice list', () => {
195195
},
196196
name: 'check',
197197
rest: {},
198-
showError: 'submitError',
198+
showError: true,
199+
});
200+
});
201+
202+
it('should set showError to true if validateOnMount prop is set to true on mount', () => {
203+
render(
204+
<FormRenderer
205+
{...rendererProps}
206+
schema={{
207+
...rendererProps.schema,
208+
fields: [{ ...rendererProps.schema.fields[0], validateOnMount: true, validate: [{ type: validatorTypes.REQUIRED }] }],
209+
}}
210+
onSubmit={() => undefined}
211+
/>
212+
);
213+
214+
expect(wrapperProps).toEqual({
215+
description: undefined,
216+
error: 'Required',
217+
helperText: 'some helper text',
218+
isRequired: true,
219+
label: 'Select animals',
220+
meta: {
221+
active: false,
222+
data: {},
223+
dirty: false,
224+
dirtySinceLastSubmit: false,
225+
error: 'Required',
226+
initial: undefined,
227+
invalid: true,
228+
length: undefined,
229+
modified: false,
230+
modifiedSinceLastSubmit: false,
231+
pristine: true,
232+
submitError: undefined,
233+
submitFailed: false,
234+
submitSucceeded: false,
235+
submitting: false,
236+
touched: false,
237+
valid: false,
238+
validating: false,
239+
visited: false,
240+
},
241+
name: 'check',
242+
rest: {},
243+
showError: true,
199244
});
200245
});
201246
});

0 commit comments

Comments
 (0)