Skip to content

Commit d9f62aa

Browse files
fix(antd): forward required to base inputs (#4994)
Co-authored-by: Heath C <51679588+heath-freenome@users.noreply.github.com>
1 parent c23a5f3 commit d9f62aa

7 files changed

Lines changed: 115 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ should change the heading of the (upcoming) version to include a major version b
1818

1919
# 6.4.2
2020

21+
## @rjsf/antd
22+
23+
- Forward `required` to `BaseInputTemplate` so that required string and number fields render the HTML `required` attribute, fixing [#3743](https://github.com/rjsf-team/react-jsonschema-form/issues/3743)
24+
2125
## @rjsf/core
2226

2327
- Fixed a breaking change introduced in v6.4.0 where array properties with enum items no longer used `ui:enumNames` from the array property's uiSchema ([#4985](https://github.com/rjsf-team/react-jsonschema-form/issues/4985))

packages/antd/src/templates/BaseInputTemplate/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default function BaseInputTemplate<
3939
options,
4040
placeholder,
4141
readonly,
42+
required,
4243
schema,
4344
value,
4445
type,
@@ -79,6 +80,7 @@ export default function BaseInputTemplate<
7980
onChange={!readonly ? handleNumberChange : undefined}
8081
onFocus={!readonly ? handleFocus : undefined}
8182
placeholder={placeholder}
83+
required={required}
8284
style={INPUT_STYLE}
8385
list={schema.examples ? examplesId(id) : undefined}
8486
{...inputProps}
@@ -94,6 +96,7 @@ export default function BaseInputTemplate<
9496
onChange={!readonly ? handleTextChange : undefined}
9597
onFocus={!readonly ? handleFocus : undefined}
9698
placeholder={placeholder}
99+
required={required}
97100
style={INPUT_STYLE}
98101
list={schema.examples ? examplesId(id) : undefined}
99102
{...inputProps}

packages/antd/test/Form.test.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,40 @@ import Form from '../src';
99
formTests(Form);
1010

1111
describe('antd specific tests', () => {
12+
test('applies the required attribute to required input fields', () => {
13+
const schema: RJSFSchema = {
14+
type: 'object',
15+
required: ['name'],
16+
properties: {
17+
name: {
18+
type: 'string',
19+
title: 'Name',
20+
},
21+
},
22+
};
23+
24+
const { container } = render(<Form schema={schema} validator={validator} />);
25+
26+
expect(container.querySelector('input#root_name')).toHaveAttribute('required');
27+
});
28+
29+
test('applies the required attribute to required number fields', () => {
30+
const schema: RJSFSchema = {
31+
type: 'object',
32+
required: ['age'],
33+
properties: {
34+
age: {
35+
type: 'number',
36+
title: 'Age',
37+
},
38+
},
39+
};
40+
41+
const { container } = render(<Form schema={schema} validator={validator} />);
42+
43+
expect(container.querySelector('input#root_age')).toHaveAttribute('required');
44+
});
45+
1246
test('descriptionLocation tooltip in formContext', () => {
1347
const schema: RJSFSchema = {
1448
type: 'object',

packages/antd/test/__snapshots__/Array.test.tsx.snap

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ exports[`array fields array icons 1`] = `
175175
id="root_0"
176176
name="root_0"
177177
placeholder=""
178+
required=""
178179
type="text"
179180
value="a"
180181
/>
@@ -361,6 +362,7 @@ exports[`array fields array icons 1`] = `
361362
id="root_1"
362363
name="root_1"
363364
placeholder=""
365+
required=""
364366
type="text"
365367
value="b"
366368
/>
@@ -881,6 +883,7 @@ exports[`array fields fixed array 1`] = `
881883
id="root_0"
882884
name="root_0"
883885
placeholder=""
886+
required=""
884887
type="text"
885888
value=""
886889
/>
@@ -997,6 +1000,7 @@ exports[`array fields fixed array 1`] = `
9971000
id="root_1"
9981001
name="root_1"
9991002
placeholder=""
1003+
required=""
10001004
role="spinbutton"
10011005
step="1"
10021006
type="number"
@@ -2208,6 +2212,7 @@ exports[`nameGenerator bracketNameGenerator array of strings 1`] = `
22082212
id="root_0"
22092213
name="root[0]"
22102214
placeholder=""
2215+
required=""
22112216
type="text"
22122217
value="foo"
22132218
/>
@@ -2363,6 +2368,7 @@ exports[`nameGenerator bracketNameGenerator array of strings 1`] = `
23632368
id="root_1"
23642369
name="root[1]"
23652370
placeholder=""
2371+
required=""
23662372
type="text"
23672373
value="bar"
23682374
/>
@@ -2745,6 +2751,7 @@ exports[`nameGenerator bracketNameGenerator fixed array 1`] = `
27452751
id="root_0"
27462752
name="root[0]"
27472753
placeholder=""
2754+
required=""
27482755
type="text"
27492756
value="text"
27502757
/>
@@ -2862,6 +2869,7 @@ exports[`nameGenerator bracketNameGenerator fixed array 1`] = `
28622869
id="root_1"
28632870
name="root[1]"
28642871
placeholder=""
2872+
required=""
28652873
role="spinbutton"
28662874
step="1"
28672875
type="number"
@@ -3067,6 +3075,7 @@ exports[`nameGenerator bracketNameGenerator nested arrays 1`] = `
30673075
id="root_0_0"
30683076
name="root[0][0]"
30693077
placeholder=""
3078+
required=""
30703079
type="text"
30713080
value="a"
30723081
/>
@@ -3222,6 +3231,7 @@ exports[`nameGenerator bracketNameGenerator nested arrays 1`] = `
32223231
id="root_0_1"
32233232
name="root[0][1]"
32243233
placeholder=""
3234+
required=""
32253235
type="text"
32263236
value="b"
32273237
/>
@@ -3579,6 +3589,7 @@ exports[`nameGenerator bracketNameGenerator nested arrays 1`] = `
35793589
id="root_1_0"
35803590
name="root[1][0]"
35813591
placeholder=""
3592+
required=""
35823593
type="text"
35833594
value="c"
35843595
/>
@@ -3734,6 +3745,7 @@ exports[`nameGenerator bracketNameGenerator nested arrays 1`] = `
37343745
id="root_1_1"
37353746
name="root[1][1]"
37363747
placeholder=""
3748+
required=""
37373749
type="text"
37383750
value="d"
37393751
/>
@@ -4925,6 +4937,7 @@ exports[`nameGenerator dotNotationNameGenerator array of strings 1`] = `
49254937
id="root_0"
49264938
name="root.0"
49274939
placeholder=""
4940+
required=""
49284941
type="text"
49294942
value="foo"
49304943
/>
@@ -5080,6 +5093,7 @@ exports[`nameGenerator dotNotationNameGenerator array of strings 1`] = `
50805093
id="root_1"
50815094
name="root.1"
50825095
placeholder=""
5096+
required=""
50835097
type="text"
50845098
value="bar"
50855099
/>
@@ -5502,6 +5516,7 @@ exports[`with title and description array icons 1`] = `
55025516
id="root_0"
55035517
name="root_0"
55045518
placeholder=""
5519+
required=""
55055520
type="text"
55065521
value="a"
55075522
/>
@@ -5712,6 +5727,7 @@ exports[`with title and description array icons 1`] = `
57125727
id="root_1"
57135728
name="root_1"
57145729
placeholder=""
5730+
required=""
57155731
type="text"
57165732
value="b"
57175733
/>
@@ -6203,6 +6219,7 @@ exports[`with title and description fixed array 1`] = `
62036219
id="root_0"
62046220
name="root_0"
62056221
placeholder=""
6222+
required=""
62066223
type="text"
62076224
value=""
62086225
/>
@@ -6343,6 +6360,7 @@ exports[`with title and description fixed array 1`] = `
63436360
id="root_1"
63446361
name="root_1"
63456362
placeholder=""
6363+
required=""
63466364
role="spinbutton"
63476365
step="1"
63486366
type="number"
@@ -6642,6 +6660,7 @@ exports[`with title and description from both array icons 1`] = `
66426660
id="root_0"
66436661
name="root_0"
66446662
placeholder=""
6663+
required=""
66456664
type="text"
66466665
value="a"
66476666
/>
@@ -6852,6 +6871,7 @@ exports[`with title and description from both array icons 1`] = `
68526871
id="root_1"
68536872
name="root_1"
68546873
placeholder=""
6874+
required=""
68556875
type="text"
68566876
value="b"
68576877
/>
@@ -7343,6 +7363,7 @@ exports[`with title and description from both fixed array 1`] = `
73437363
id="root_0"
73447364
name="root_0"
73457365
placeholder=""
7366+
required=""
73467367
type="text"
73477368
value=""
73487369
/>
@@ -7483,6 +7504,7 @@ exports[`with title and description from both fixed array 1`] = `
74837504
id="root_1"
74847505
name="root_1"
74857506
placeholder=""
7507+
required=""
74867508
role="spinbutton"
74877509
step="1"
74887510
type="number"
@@ -7782,6 +7804,7 @@ exports[`with title and description from uiSchema array icons 1`] = `
77827804
id="root_0"
77837805
name="root_0"
77847806
placeholder=""
7807+
required=""
77857808
type="text"
77867809
value="a"
77877810
/>
@@ -7992,6 +8015,7 @@ exports[`with title and description from uiSchema array icons 1`] = `
79928015
id="root_1"
79938016
name="root_1"
79948017
placeholder=""
8018+
required=""
79958019
type="text"
79968020
value="b"
79978021
/>
@@ -8483,6 +8507,7 @@ exports[`with title and description from uiSchema fixed array 1`] = `
84838507
id="root_0"
84848508
name="root_0"
84858509
placeholder=""
8510+
required=""
84868511
type="text"
84878512
value=""
84888513
/>
@@ -8623,6 +8648,7 @@ exports[`with title and description from uiSchema fixed array 1`] = `
86238648
id="root_1"
86248649
name="root_1"
86258650
placeholder=""
8651+
required=""
86268652
role="spinbutton"
86278653
step="1"
86288654
type="number"
@@ -8885,6 +8911,7 @@ exports[`with title and description with global label off array icons 1`] = `
88858911
id="root_0"
88868912
name="root_0"
88878913
placeholder=""
8914+
required=""
88888915
type="text"
88898916
value="a"
88908917
/>
@@ -9084,6 +9111,7 @@ exports[`with title and description with global label off array icons 1`] = `
90849111
id="root_1"
90859112
name="root_1"
90869113
placeholder=""
9114+
required=""
90879115
type="text"
90889116
value="b"
90899117
/>
@@ -9540,6 +9568,7 @@ exports[`with title and description with global label off fixed array 1`] = `
95409568
id="root_0"
95419569
name="root_0"
95429570
placeholder=""
9571+
required=""
95439572
type="text"
95449573
value=""
95459574
/>
@@ -9669,6 +9698,7 @@ exports[`with title and description with global label off fixed array 1`] = `
96699698
id="root_1"
96709699
name="root_1"
96719700
placeholder=""
9701+
required=""
96729702
role="spinbutton"
96739703
step="1"
96749704
type="number"

0 commit comments

Comments
 (0)