envoc-form 5.0.3 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -15
- package/es/Input/CheckboxGroup.d.ts +6 -0
- package/es/Input/CheckboxGroup.js +14 -0
- package/es/Input/CheckboxInputGroup.d.ts +13 -0
- package/es/Input/CheckboxInputGroup.js +41 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -0
- package/lib/Input/CheckboxGroup.d.ts +6 -0
- package/lib/Input/CheckboxGroup.js +20 -0
- package/lib/Input/CheckboxInputGroup.d.ts +13 -0
- package/lib/Input/CheckboxInputGroup.js +46 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/package.json +111 -111
- package/src/AddressInput/AddressInput.test.tsx +27 -27
- package/src/AddressInput/AddressInput.tsx +82 -82
- package/src/AddressInput/UsStates.ts +55 -55
- package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +182 -182
- package/src/ConfirmBaseForm/ConfirmBaseForm.test.tsx +24 -24
- package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +74 -74
- package/src/ConfirmBaseForm/__snapshots__/ConfirmBaseForm.test.tsx.snap +23 -23
- package/src/ConfirmDeleteForm/ConfirmDeleteForm.test.tsx +24 -24
- package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +87 -87
- package/src/ConfirmDeleteForm/__snapshots__/ConfirmDeleteForm.test.tsx.snap +25 -25
- package/src/DatePicker/DatePicker.test.tsx +48 -48
- package/src/DatePicker/DatePickerGroup.tsx +115 -115
- package/src/DatePicker/DatePickerHelper.ts +4 -4
- package/src/DatePicker/StringDateOnlyPickerGroup.tsx +28 -28
- package/src/DatePicker/StringDatePickerGroup.tsx +20 -20
- package/src/DatePicker/__snapshots__/DatePicker.test.tsx.snap +152 -152
- package/src/Field/CustomFieldInputProps.ts +10 -10
- package/src/Field/CustomFieldMetaProps.ts +5 -5
- package/src/Field/Field.tsx +113 -113
- package/src/Field/FieldErrorScrollTarget.tsx +12 -12
- package/src/Field/FieldNameContext.ts +6 -6
- package/src/Field/FieldSection.tsx +18 -18
- package/src/Field/InjectedFieldProps.ts +8 -8
- package/src/Field/StandAloneInput.tsx +55 -55
- package/src/Field/useStandardField.ts +125 -125
- package/src/FieldArray/FieldArray.tsx +154 -154
- package/src/File/FileGroup.test.tsx +35 -35
- package/src/File/FileGroup.tsx +85 -85
- package/src/File/FileList.tsx +21 -21
- package/src/File/__snapshots__/FileGroup.test.tsx.snap +34 -34
- package/src/File/humanFileSize.ts +8 -8
- package/src/Form/FocusError.tsx +55 -55
- package/src/Form/Form.test.tsx +14 -14
- package/src/Form/Form.tsx +237 -237
- package/src/Form/FormBasedPreventNavigation.tsx +56 -56
- package/src/Form/LegacyFormBasedPreventNavigation.tsx +77 -77
- package/src/Form/NewFormBasedPreventNavigation.tsx +59 -59
- package/src/Form/ServerErrorContext.ts +18 -18
- package/src/Form/__snapshots__/Form.test.tsx.snap +10 -10
- package/src/FormActions.tsx +47 -47
- package/src/FormDefaults.ts +2 -2
- package/src/Group.tsx +62 -62
- package/src/Input/CheckboxGroup.tsx +60 -0
- package/src/Input/CheckboxInputGroup.tsx +78 -0
- package/src/Input/IconInputGroup.tsx +54 -54
- package/src/Input/InputGroup.tsx +72 -72
- package/src/Input/MoneyInputGroup.tsx +50 -50
- package/src/Input/NumberInputGroup.tsx +48 -48
- package/src/Input/PhoneNumberInputGroup.tsx +45 -45
- package/src/Input/StringInputGroup.tsx +53 -53
- package/src/Input/__Tests__/CheckboxInputGroup.test.tsx +26 -0
- package/src/Input/__Tests__/IconInputGroup.test.tsx +35 -35
- package/src/Input/__Tests__/MoneyInputGroup.test.tsx +37 -37
- package/src/Input/__Tests__/NumberInputGroup.test.tsx +35 -35
- package/src/Input/__Tests__/PhoneNumberInputGroup.test.tsx +36 -36
- package/src/Input/__Tests__/StringInputGroup.test.tsx +27 -27
- package/src/Input/__Tests__/__snapshots__/CheckboxInputGroup.test.tsx.snap +33 -0
- package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +32 -32
- package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +34 -34
- package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +32 -32
- package/src/Input/__Tests__/__snapshots__/PhoneNumberInputGroup.test.tsx.snap +33 -33
- package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +31 -31
- package/src/Normalization/NormalizationFunction.ts +4 -4
- package/src/Normalization/normalizers.ts +44 -44
- package/src/Select/BooleanSelectGroup.tsx +28 -28
- package/src/Select/NumberSelectGroup.tsx +16 -16
- package/src/Select/SelectGroup.tsx +124 -124
- package/src/Select/SelectGroupPropsHelper.ts +4 -4
- package/src/Select/StringSelectGroup.tsx +16 -16
- package/src/Select/__tests__/BooleanSelectGroup.test.tsx +35 -35
- package/src/Select/__tests__/NumberSelectGroup.test.tsx +87 -87
- package/src/Select/__tests__/StringSelectGroup.test.tsx +89 -89
- package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +98 -98
- package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +195 -195
- package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +195 -195
- package/src/StandardFormActions.tsx +41 -41
- package/src/SubmitFormButton.tsx +54 -54
- package/src/TextArea/TextAreaGroup.tsx +64 -64
- package/src/Validation/ValidatedApiResult.ts +8 -8
- package/src/Validation/ValidationError.ts +6 -6
- package/src/Validation/ValidationFunction.ts +4 -4
- package/src/Validation/validators.test.tsx +81 -81
- package/src/Validation/validators.ts +97 -97
- package/src/__Tests__/FormTestBase.tsx +65 -64
- package/src/__Tests__/RealisticForm.test.tsx +82 -82
- package/src/__Tests__/StandardFormActions.test.tsx +17 -17
- package/src/__Tests__/SubmitFormButton.test.tsx +17 -17
- package/src/__Tests__/__snapshots__/StandardFormActions.test.tsx.snap +27 -27
- package/src/__Tests__/__snapshots__/SubmitFormButton.test.tsx.snap +20 -20
- package/src/__Tests__/index.ts +3 -3
- package/src/_variables.scss +11 -11
- package/src/index.ts +156 -153
- package/src/react-app-env.d.ts +1 -1
- package/src/setupTests.ts +1 -1
- package/src/utils/objectContainsNonSerializableProperty.test.tsx +49 -49
- package/src/utils/objectContainsNonSerializableProperty.ts +17 -17
- package/src/utils/objectToFormData.test.tsx +76 -76
- package/src/utils/objectToFormData.ts +105 -105
- package/src/utils/typeChecks.ts +18 -18
@@ -1,16 +1,16 @@
|
|
1
|
-
import SelectGroup from './SelectGroup';
|
2
|
-
import { SelectGroupPropsHelper } from './SelectGroupPropsHelper';
|
3
|
-
|
4
|
-
export interface MultiStringSelectGroupProps
|
5
|
-
extends SelectGroupPropsHelper<string[]> {}
|
6
|
-
/** A `<SelectGroup/>` dropdown with values as strings. Multiple options can be selected at a time. */
|
7
|
-
export function MultiStringSelectGroup(props: MultiStringSelectGroupProps) {
|
8
|
-
return <SelectGroup multiple={true} {...props} />;
|
9
|
-
}
|
10
|
-
|
11
|
-
export interface SingleStringSelectGroupProps
|
12
|
-
extends SelectGroupPropsHelper<string> {}
|
13
|
-
/** A `<SelectGroup/>` dropdown with the value as a string. Only one option can be selected at a time. */
|
14
|
-
export function SingleStringSelectGroup(props: SingleStringSelectGroupProps) {
|
15
|
-
return <SelectGroup multiple={false} {...props} />;
|
16
|
-
}
|
1
|
+
import SelectGroup from './SelectGroup';
|
2
|
+
import { SelectGroupPropsHelper } from './SelectGroupPropsHelper';
|
3
|
+
|
4
|
+
export interface MultiStringSelectGroupProps
|
5
|
+
extends SelectGroupPropsHelper<string[]> {}
|
6
|
+
/** A `<SelectGroup/>` dropdown with values as strings. Multiple options can be selected at a time. */
|
7
|
+
export function MultiStringSelectGroup(props: MultiStringSelectGroupProps) {
|
8
|
+
return <SelectGroup multiple={true} {...props} />;
|
9
|
+
}
|
10
|
+
|
11
|
+
export interface SingleStringSelectGroupProps
|
12
|
+
extends SelectGroupPropsHelper<string> {}
|
13
|
+
/** A `<SelectGroup/>` dropdown with the value as a string. Only one option can be selected at a time. */
|
14
|
+
export function SingleStringSelectGroup(props: SingleStringSelectGroupProps) {
|
15
|
+
return <SelectGroup multiple={false} {...props} />;
|
16
|
+
}
|
@@ -1,35 +1,35 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { render } from '@testing-library/react';
|
3
|
-
import FormTestBase from '../../__Tests__/FormTestBase';
|
4
|
-
import { BooleanSelectGroup } from '../BooleanSelectGroup';
|
5
|
-
|
6
|
-
describe('BooleanSelectGroup', () => {
|
7
|
-
it('renders without crashing', () => {
|
8
|
-
render(
|
9
|
-
<FormTestBase>
|
10
|
-
{({ Field }) => (
|
11
|
-
<Field
|
12
|
-
name="allowLogin"
|
13
|
-
Component={BooleanSelectGroup}
|
14
|
-
label="Allow Login"
|
15
|
-
/>
|
16
|
-
)}
|
17
|
-
</FormTestBase>
|
18
|
-
);
|
19
|
-
});
|
20
|
-
|
21
|
-
it('has matching snapshot', () => {
|
22
|
-
const renderResult = render(
|
23
|
-
<FormTestBase>
|
24
|
-
{({ Field }) => (
|
25
|
-
<Field
|
26
|
-
name="allowLogin"
|
27
|
-
Component={BooleanSelectGroup}
|
28
|
-
label="Allow Login"
|
29
|
-
/>
|
30
|
-
)}
|
31
|
-
</FormTestBase>
|
32
|
-
);
|
33
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
34
|
-
});
|
35
|
-
});
|
1
|
+
import React from 'react';
|
2
|
+
import { render } from '@testing-library/react';
|
3
|
+
import FormTestBase from '../../__Tests__/FormTestBase';
|
4
|
+
import { BooleanSelectGroup } from '../BooleanSelectGroup';
|
5
|
+
|
6
|
+
describe('BooleanSelectGroup', () => {
|
7
|
+
it('renders without crashing', () => {
|
8
|
+
render(
|
9
|
+
<FormTestBase>
|
10
|
+
{({ Field }) => (
|
11
|
+
<Field
|
12
|
+
name="allowLogin"
|
13
|
+
Component={BooleanSelectGroup}
|
14
|
+
label="Allow Login"
|
15
|
+
/>
|
16
|
+
)}
|
17
|
+
</FormTestBase>
|
18
|
+
);
|
19
|
+
});
|
20
|
+
|
21
|
+
it('has matching snapshot', () => {
|
22
|
+
const renderResult = render(
|
23
|
+
<FormTestBase>
|
24
|
+
{({ Field }) => (
|
25
|
+
<Field
|
26
|
+
name="allowLogin"
|
27
|
+
Component={BooleanSelectGroup}
|
28
|
+
label="Allow Login"
|
29
|
+
/>
|
30
|
+
)}
|
31
|
+
</FormTestBase>
|
32
|
+
);
|
33
|
+
expect(renderResult.asFragment()).toMatchSnapshot();
|
34
|
+
});
|
35
|
+
});
|
@@ -1,87 +1,87 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { render } from '@testing-library/react';
|
3
|
-
import FormTestBase from '../../__Tests__/FormTestBase';
|
4
|
-
import {
|
5
|
-
MultiNumberSelectGroup,
|
6
|
-
SingleNumberSelectGroup,
|
7
|
-
} from '../NumberSelectGroup';
|
8
|
-
|
9
|
-
describe('SingleNumberSelectGroup', () => {
|
10
|
-
it('renders without crashing', () => {
|
11
|
-
render(
|
12
|
-
<FormTestBase>
|
13
|
-
{({ Field }) => (
|
14
|
-
<Field
|
15
|
-
name="favoriteNumber"
|
16
|
-
Component={SingleNumberSelectGroup}
|
17
|
-
label="Favorite Number"
|
18
|
-
options={[
|
19
|
-
{ label: 'I like one', value: 1 },
|
20
|
-
{ label: 'Occasionally two', value: 2 },
|
21
|
-
{ label: 'Forever three', value: 3 },
|
22
|
-
]}
|
23
|
-
/>
|
24
|
-
)}
|
25
|
-
</FormTestBase>
|
26
|
-
);
|
27
|
-
});
|
28
|
-
|
29
|
-
it('has matching snapshot', () => {
|
30
|
-
const renderResult = render(
|
31
|
-
<FormTestBase>
|
32
|
-
{({ Field }) => (
|
33
|
-
<Field
|
34
|
-
name="favoriteNumber"
|
35
|
-
Component={SingleNumberSelectGroup}
|
36
|
-
label="Favorite Number"
|
37
|
-
options={[
|
38
|
-
{ label: 'I like one', value: 1 },
|
39
|
-
{ label: 'Occasionally two', value: 2 },
|
40
|
-
{ label: 'Forever three', value: 3 },
|
41
|
-
]}
|
42
|
-
/>
|
43
|
-
)}
|
44
|
-
</FormTestBase>
|
45
|
-
);
|
46
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
47
|
-
});
|
48
|
-
});
|
49
|
-
|
50
|
-
describe('MultiNumberSelectGroup', () => {
|
51
|
-
it('renders without crashing', () => {
|
52
|
-
render(
|
53
|
-
<FormTestBase>
|
54
|
-
{({ Field }) => (
|
55
|
-
<Field
|
56
|
-
name="userRoles"
|
57
|
-
Component={MultiNumberSelectGroup}
|
58
|
-
label="Favorite Number"
|
59
|
-
options={[
|
60
|
-
{ label: 'Tyrannosaurus Rex', value: 1 },
|
61
|
-
{ label: 'Stegosaurus', value: 2 },
|
62
|
-
]}
|
63
|
-
/>
|
64
|
-
)}
|
65
|
-
</FormTestBase>
|
66
|
-
);
|
67
|
-
});
|
68
|
-
|
69
|
-
it('has matching snapshot', () => {
|
70
|
-
const renderResult = render(
|
71
|
-
<FormTestBase>
|
72
|
-
{({ Field }) => (
|
73
|
-
<Field
|
74
|
-
name="userRoles"
|
75
|
-
Component={MultiNumberSelectGroup}
|
76
|
-
label="Favorite Number"
|
77
|
-
options={[
|
78
|
-
{ label: 'Tyrannosaurus Rex', value: 1 },
|
79
|
-
{ label: 'Stegosaurus', value: 2 },
|
80
|
-
]}
|
81
|
-
/>
|
82
|
-
)}
|
83
|
-
</FormTestBase>
|
84
|
-
);
|
85
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
86
|
-
});
|
87
|
-
});
|
1
|
+
import React from 'react';
|
2
|
+
import { render } from '@testing-library/react';
|
3
|
+
import FormTestBase from '../../__Tests__/FormTestBase';
|
4
|
+
import {
|
5
|
+
MultiNumberSelectGroup,
|
6
|
+
SingleNumberSelectGroup,
|
7
|
+
} from '../NumberSelectGroup';
|
8
|
+
|
9
|
+
describe('SingleNumberSelectGroup', () => {
|
10
|
+
it('renders without crashing', () => {
|
11
|
+
render(
|
12
|
+
<FormTestBase>
|
13
|
+
{({ Field }) => (
|
14
|
+
<Field
|
15
|
+
name="favoriteNumber"
|
16
|
+
Component={SingleNumberSelectGroup}
|
17
|
+
label="Favorite Number"
|
18
|
+
options={[
|
19
|
+
{ label: 'I like one', value: 1 },
|
20
|
+
{ label: 'Occasionally two', value: 2 },
|
21
|
+
{ label: 'Forever three', value: 3 },
|
22
|
+
]}
|
23
|
+
/>
|
24
|
+
)}
|
25
|
+
</FormTestBase>
|
26
|
+
);
|
27
|
+
});
|
28
|
+
|
29
|
+
it('has matching snapshot', () => {
|
30
|
+
const renderResult = render(
|
31
|
+
<FormTestBase>
|
32
|
+
{({ Field }) => (
|
33
|
+
<Field
|
34
|
+
name="favoriteNumber"
|
35
|
+
Component={SingleNumberSelectGroup}
|
36
|
+
label="Favorite Number"
|
37
|
+
options={[
|
38
|
+
{ label: 'I like one', value: 1 },
|
39
|
+
{ label: 'Occasionally two', value: 2 },
|
40
|
+
{ label: 'Forever three', value: 3 },
|
41
|
+
]}
|
42
|
+
/>
|
43
|
+
)}
|
44
|
+
</FormTestBase>
|
45
|
+
);
|
46
|
+
expect(renderResult.asFragment()).toMatchSnapshot();
|
47
|
+
});
|
48
|
+
});
|
49
|
+
|
50
|
+
describe('MultiNumberSelectGroup', () => {
|
51
|
+
it('renders without crashing', () => {
|
52
|
+
render(
|
53
|
+
<FormTestBase>
|
54
|
+
{({ Field }) => (
|
55
|
+
<Field
|
56
|
+
name="userRoles"
|
57
|
+
Component={MultiNumberSelectGroup}
|
58
|
+
label="Favorite Number"
|
59
|
+
options={[
|
60
|
+
{ label: 'Tyrannosaurus Rex', value: 1 },
|
61
|
+
{ label: 'Stegosaurus', value: 2 },
|
62
|
+
]}
|
63
|
+
/>
|
64
|
+
)}
|
65
|
+
</FormTestBase>
|
66
|
+
);
|
67
|
+
});
|
68
|
+
|
69
|
+
it('has matching snapshot', () => {
|
70
|
+
const renderResult = render(
|
71
|
+
<FormTestBase>
|
72
|
+
{({ Field }) => (
|
73
|
+
<Field
|
74
|
+
name="userRoles"
|
75
|
+
Component={MultiNumberSelectGroup}
|
76
|
+
label="Favorite Number"
|
77
|
+
options={[
|
78
|
+
{ label: 'Tyrannosaurus Rex', value: 1 },
|
79
|
+
{ label: 'Stegosaurus', value: 2 },
|
80
|
+
]}
|
81
|
+
/>
|
82
|
+
)}
|
83
|
+
</FormTestBase>
|
84
|
+
);
|
85
|
+
expect(renderResult.asFragment()).toMatchSnapshot();
|
86
|
+
});
|
87
|
+
});
|
@@ -1,89 +1,89 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { render } from '@testing-library/react';
|
3
|
-
import FormTestBase from '../../__Tests__/FormTestBase';
|
4
|
-
import {
|
5
|
-
MultiStringSelectGroup,
|
6
|
-
SingleStringSelectGroup,
|
7
|
-
} from '../StringSelectGroup';
|
8
|
-
|
9
|
-
describe('SingleStringSelectGroup', () => {
|
10
|
-
it('renders without crashing', () => {
|
11
|
-
render(
|
12
|
-
<FormTestBase>
|
13
|
-
{({ Field }) => (
|
14
|
-
<Field
|
15
|
-
name="favoriteColor"
|
16
|
-
Component={SingleStringSelectGroup}
|
17
|
-
label="Favorite Color"
|
18
|
-
options={[
|
19
|
-
{ label: 'Blue', value: 'Blue' },
|
20
|
-
{ label: 'Green', value: 'Green' },
|
21
|
-
{ label: 'Red', value: 'Red' },
|
22
|
-
]}
|
23
|
-
/>
|
24
|
-
)}
|
25
|
-
</FormTestBase>
|
26
|
-
);
|
27
|
-
});
|
28
|
-
|
29
|
-
it('has matching snapshot', () => {
|
30
|
-
const renderResult = render(
|
31
|
-
<FormTestBase>
|
32
|
-
{({ Field }) => (
|
33
|
-
<Field
|
34
|
-
name="favoriteColor"
|
35
|
-
Component={SingleStringSelectGroup}
|
36
|
-
label="Favorite Color"
|
37
|
-
options={[
|
38
|
-
{ label: 'Blue', value: 'Blue' },
|
39
|
-
{ label: 'Green', value: 'Green' },
|
40
|
-
{ label: 'Red', value: 'Red' },
|
41
|
-
]}
|
42
|
-
/>
|
43
|
-
)}
|
44
|
-
</FormTestBase>
|
45
|
-
);
|
46
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
47
|
-
});
|
48
|
-
});
|
49
|
-
|
50
|
-
describe('MultiStringSelectGroup', () => {
|
51
|
-
it('renders without crashing', () => {
|
52
|
-
render(
|
53
|
-
<FormTestBase>
|
54
|
-
{({ Field }) => (
|
55
|
-
<Field
|
56
|
-
name="favoriteColors"
|
57
|
-
Component={MultiStringSelectGroup}
|
58
|
-
label="Favorite Color"
|
59
|
-
options={[
|
60
|
-
{ label: 'Blue', value: 'Blue' },
|
61
|
-
{ label: 'Green', value: 'Green' },
|
62
|
-
{ label: 'Red', value: 'Red' },
|
63
|
-
]}
|
64
|
-
/>
|
65
|
-
)}
|
66
|
-
</FormTestBase>
|
67
|
-
);
|
68
|
-
});
|
69
|
-
|
70
|
-
it('has matching snapshot', () => {
|
71
|
-
const renderResult = render(
|
72
|
-
<FormTestBase>
|
73
|
-
{({ Field }) => (
|
74
|
-
<Field
|
75
|
-
name="favoriteColors"
|
76
|
-
Component={MultiStringSelectGroup}
|
77
|
-
label="Favorite Color"
|
78
|
-
options={[
|
79
|
-
{ label: 'Blue', value: 'Blue' },
|
80
|
-
{ label: 'Green', value: 'Green' },
|
81
|
-
{ label: 'Red', value: 'Red' },
|
82
|
-
]}
|
83
|
-
/>
|
84
|
-
)}
|
85
|
-
</FormTestBase>
|
86
|
-
);
|
87
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
88
|
-
});
|
89
|
-
});
|
1
|
+
import React from 'react';
|
2
|
+
import { render } from '@testing-library/react';
|
3
|
+
import FormTestBase from '../../__Tests__/FormTestBase';
|
4
|
+
import {
|
5
|
+
MultiStringSelectGroup,
|
6
|
+
SingleStringSelectGroup,
|
7
|
+
} from '../StringSelectGroup';
|
8
|
+
|
9
|
+
describe('SingleStringSelectGroup', () => {
|
10
|
+
it('renders without crashing', () => {
|
11
|
+
render(
|
12
|
+
<FormTestBase>
|
13
|
+
{({ Field }) => (
|
14
|
+
<Field
|
15
|
+
name="favoriteColor"
|
16
|
+
Component={SingleStringSelectGroup}
|
17
|
+
label="Favorite Color"
|
18
|
+
options={[
|
19
|
+
{ label: 'Blue', value: 'Blue' },
|
20
|
+
{ label: 'Green', value: 'Green' },
|
21
|
+
{ label: 'Red', value: 'Red' },
|
22
|
+
]}
|
23
|
+
/>
|
24
|
+
)}
|
25
|
+
</FormTestBase>
|
26
|
+
);
|
27
|
+
});
|
28
|
+
|
29
|
+
it('has matching snapshot', () => {
|
30
|
+
const renderResult = render(
|
31
|
+
<FormTestBase>
|
32
|
+
{({ Field }) => (
|
33
|
+
<Field
|
34
|
+
name="favoriteColor"
|
35
|
+
Component={SingleStringSelectGroup}
|
36
|
+
label="Favorite Color"
|
37
|
+
options={[
|
38
|
+
{ label: 'Blue', value: 'Blue' },
|
39
|
+
{ label: 'Green', value: 'Green' },
|
40
|
+
{ label: 'Red', value: 'Red' },
|
41
|
+
]}
|
42
|
+
/>
|
43
|
+
)}
|
44
|
+
</FormTestBase>
|
45
|
+
);
|
46
|
+
expect(renderResult.asFragment()).toMatchSnapshot();
|
47
|
+
});
|
48
|
+
});
|
49
|
+
|
50
|
+
describe('MultiStringSelectGroup', () => {
|
51
|
+
it('renders without crashing', () => {
|
52
|
+
render(
|
53
|
+
<FormTestBase>
|
54
|
+
{({ Field }) => (
|
55
|
+
<Field
|
56
|
+
name="favoriteColors"
|
57
|
+
Component={MultiStringSelectGroup}
|
58
|
+
label="Favorite Color"
|
59
|
+
options={[
|
60
|
+
{ label: 'Blue', value: 'Blue' },
|
61
|
+
{ label: 'Green', value: 'Green' },
|
62
|
+
{ label: 'Red', value: 'Red' },
|
63
|
+
]}
|
64
|
+
/>
|
65
|
+
)}
|
66
|
+
</FormTestBase>
|
67
|
+
);
|
68
|
+
});
|
69
|
+
|
70
|
+
it('has matching snapshot', () => {
|
71
|
+
const renderResult = render(
|
72
|
+
<FormTestBase>
|
73
|
+
{({ Field }) => (
|
74
|
+
<Field
|
75
|
+
name="favoriteColors"
|
76
|
+
Component={MultiStringSelectGroup}
|
77
|
+
label="Favorite Color"
|
78
|
+
options={[
|
79
|
+
{ label: 'Blue', value: 'Blue' },
|
80
|
+
{ label: 'Green', value: 'Green' },
|
81
|
+
{ label: 'Red', value: 'Red' },
|
82
|
+
]}
|
83
|
+
/>
|
84
|
+
)}
|
85
|
+
</FormTestBase>
|
86
|
+
);
|
87
|
+
expect(renderResult.asFragment()).toMatchSnapshot();
|
88
|
+
});
|
89
|
+
});
|
@@ -1,98 +1,98 @@
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
-
|
3
|
-
exports[`BooleanSelectGroup has matching snapshot 1`] = `
|
4
|
-
<DocumentFragment>
|
5
|
-
<form
|
6
|
-
action="#"
|
7
|
-
class="envoc-form-form"
|
8
|
-
>
|
9
|
-
<div
|
10
|
-
class="envoc-form-select-group envoc-form-group"
|
11
|
-
>
|
12
|
-
<div
|
13
|
-
id="allowlogin-error-scroll-target"
|
14
|
-
style="display: none;"
|
15
|
-
/>
|
16
|
-
<label
|
17
|
-
for="allowLogin"
|
18
|
-
>
|
19
|
-
Allow Login
|
20
|
-
</label>
|
21
|
-
<div
|
22
|
-
class="envoc-form-select-group css-b62m3t-container"
|
23
|
-
>
|
24
|
-
<span
|
25
|
-
class="css-1f43avz-a11yText-A11yText"
|
26
|
-
id="react-select-3-live-region"
|
27
|
-
/>
|
28
|
-
<span
|
29
|
-
aria-atomic="false"
|
30
|
-
aria-live="polite"
|
31
|
-
aria-relevant="additions text"
|
32
|
-
class="css-1f43avz-a11yText-A11yText"
|
33
|
-
/>
|
34
|
-
<div
|
35
|
-
class="react-select__control css-13cymwt-control"
|
36
|
-
>
|
37
|
-
<div
|
38
|
-
class="react-select__value-container css-16674sh-Component"
|
39
|
-
>
|
40
|
-
<div
|
41
|
-
class="react-select__placeholder css-1jqq78o-placeholder"
|
42
|
-
id="react-select-3-placeholder"
|
43
|
-
>
|
44
|
-
Select...
|
45
|
-
</div>
|
46
|
-
<div
|
47
|
-
class="react-select__input-container css-d9r47t-Component"
|
48
|
-
data-value=""
|
49
|
-
>
|
50
|
-
<input
|
51
|
-
aria-autocomplete="list"
|
52
|
-
aria-describedby="react-select-3-placeholder"
|
53
|
-
aria-expanded="false"
|
54
|
-
aria-haspopup="true"
|
55
|
-
autocapitalize="none"
|
56
|
-
autocomplete="off"
|
57
|
-
autocorrect="off"
|
58
|
-
class="react-select__input"
|
59
|
-
id="allowLogin"
|
60
|
-
role="combobox"
|
61
|
-
spellcheck="false"
|
62
|
-
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
63
|
-
tabindex="0"
|
64
|
-
type="text"
|
65
|
-
value=""
|
66
|
-
/>
|
67
|
-
</div>
|
68
|
-
</div>
|
69
|
-
<div
|
70
|
-
class="react-select__indicators css-ny0e4k-Component"
|
71
|
-
>
|
72
|
-
<span
|
73
|
-
class="react-select__indicator-separator css-1u9des2-indicatorSeparator"
|
74
|
-
/>
|
75
|
-
<div
|
76
|
-
aria-hidden="true"
|
77
|
-
class="react-select__indicator react-select__dropdown-indicator css-1xc3v61-indicatorContainer"
|
78
|
-
>
|
79
|
-
<svg
|
80
|
-
aria-hidden="true"
|
81
|
-
class="css-tj5bde-Svg"
|
82
|
-
focusable="false"
|
83
|
-
height="20"
|
84
|
-
viewBox="0 0 20 20"
|
85
|
-
width="20"
|
86
|
-
>
|
87
|
-
<path
|
88
|
-
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
89
|
-
/>
|
90
|
-
</svg>
|
91
|
-
</div>
|
92
|
-
</div>
|
93
|
-
</div>
|
94
|
-
</div>
|
95
|
-
</div>
|
96
|
-
</form>
|
97
|
-
</DocumentFragment>
|
98
|
-
`;
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`BooleanSelectGroup has matching snapshot 1`] = `
|
4
|
+
<DocumentFragment>
|
5
|
+
<form
|
6
|
+
action="#"
|
7
|
+
class="envoc-form-form"
|
8
|
+
>
|
9
|
+
<div
|
10
|
+
class="envoc-form-select-group envoc-form-group"
|
11
|
+
>
|
12
|
+
<div
|
13
|
+
id="allowlogin-error-scroll-target"
|
14
|
+
style="display: none;"
|
15
|
+
/>
|
16
|
+
<label
|
17
|
+
for="allowLogin"
|
18
|
+
>
|
19
|
+
Allow Login
|
20
|
+
</label>
|
21
|
+
<div
|
22
|
+
class="envoc-form-select-group css-b62m3t-container"
|
23
|
+
>
|
24
|
+
<span
|
25
|
+
class="css-1f43avz-a11yText-A11yText"
|
26
|
+
id="react-select-3-live-region"
|
27
|
+
/>
|
28
|
+
<span
|
29
|
+
aria-atomic="false"
|
30
|
+
aria-live="polite"
|
31
|
+
aria-relevant="additions text"
|
32
|
+
class="css-1f43avz-a11yText-A11yText"
|
33
|
+
/>
|
34
|
+
<div
|
35
|
+
class="react-select__control css-13cymwt-control"
|
36
|
+
>
|
37
|
+
<div
|
38
|
+
class="react-select__value-container css-16674sh-Component"
|
39
|
+
>
|
40
|
+
<div
|
41
|
+
class="react-select__placeholder css-1jqq78o-placeholder"
|
42
|
+
id="react-select-3-placeholder"
|
43
|
+
>
|
44
|
+
Select...
|
45
|
+
</div>
|
46
|
+
<div
|
47
|
+
class="react-select__input-container css-d9r47t-Component"
|
48
|
+
data-value=""
|
49
|
+
>
|
50
|
+
<input
|
51
|
+
aria-autocomplete="list"
|
52
|
+
aria-describedby="react-select-3-placeholder"
|
53
|
+
aria-expanded="false"
|
54
|
+
aria-haspopup="true"
|
55
|
+
autocapitalize="none"
|
56
|
+
autocomplete="off"
|
57
|
+
autocorrect="off"
|
58
|
+
class="react-select__input"
|
59
|
+
id="allowLogin"
|
60
|
+
role="combobox"
|
61
|
+
spellcheck="false"
|
62
|
+
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
63
|
+
tabindex="0"
|
64
|
+
type="text"
|
65
|
+
value=""
|
66
|
+
/>
|
67
|
+
</div>
|
68
|
+
</div>
|
69
|
+
<div
|
70
|
+
class="react-select__indicators css-ny0e4k-Component"
|
71
|
+
>
|
72
|
+
<span
|
73
|
+
class="react-select__indicator-separator css-1u9des2-indicatorSeparator"
|
74
|
+
/>
|
75
|
+
<div
|
76
|
+
aria-hidden="true"
|
77
|
+
class="react-select__indicator react-select__dropdown-indicator css-1xc3v61-indicatorContainer"
|
78
|
+
>
|
79
|
+
<svg
|
80
|
+
aria-hidden="true"
|
81
|
+
class="css-tj5bde-Svg"
|
82
|
+
focusable="false"
|
83
|
+
height="20"
|
84
|
+
viewBox="0 0 20 20"
|
85
|
+
width="20"
|
86
|
+
>
|
87
|
+
<path
|
88
|
+
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
89
|
+
/>
|
90
|
+
</svg>
|
91
|
+
</div>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
</form>
|
97
|
+
</DocumentFragment>
|
98
|
+
`;
|