@nypl/design-system-react-components 0.25.13 → 0.26.0
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/CHANGELOG.md +58 -0
- package/README.md +10 -10
- package/dist/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +11 -9
- package/dist/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +5 -4
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -6
- package/dist/components/Fieldset/Fieldset.d.ts +5 -6
- package/dist/components/Form/Form.d.ts +6 -6
- package/dist/components/Grid/GridTypes.d.ts +7 -7
- package/dist/components/Grid/SimpleGrid.d.ts +1 -1
- package/dist/components/Heading/Heading.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +2 -1
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Image/Image.d.ts +2 -2
- package/dist/components/Label/Label.d.ts +7 -4
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +11 -11
- package/dist/components/List/ListTypes.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +2 -1
- package/dist/components/Logo/LogoSvgs.d.ts +2 -0
- package/dist/components/Logo/LogoTypes.d.ts +2 -0
- package/dist/components/Notification/Notification.d.ts +4 -4
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +4 -6
- package/dist/components/RadioGroup/RadioGroup.d.ts +12 -6
- package/dist/components/SearchBar/SearchBar.d.ts +4 -4
- package/dist/components/Select/Select.d.ts +10 -6
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +4 -3
- package/dist/components/Slider/Slider.d.ts +6 -4
- package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +2 -2
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +4 -3
- package/dist/components/Template/Template.d.ts +4 -3
- package/dist/components/Text/Text.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +5 -5
- package/dist/components/Toggle/Toggle.d.ts +3 -4
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1663 -1139
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +1667 -1143
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +4 -1
- package/dist/styles.css +1 -1
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +42 -22
- package/dist/theme/components/checkbox.d.ts +5 -4
- package/dist/theme/components/checkboxGroup.d.ts +1 -1
- package/dist/theme/components/componentWrapper.d.ts +2 -2
- package/dist/theme/components/customTable.d.ts +84 -1
- package/dist/theme/components/fieldset.d.ts +4 -14
- package/dist/theme/components/global.d.ts +23 -17
- package/dist/theme/components/heading.d.ts +53 -0
- package/dist/theme/components/helperErrorText.d.ts +1 -0
- package/dist/theme/components/hero.d.ts +20 -14
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +99 -9
- package/dist/theme/components/radio.d.ts +6 -4
- package/dist/theme/components/radioGroup.d.ts +1 -1
- package/dist/theme/components/select.d.ts +34 -5
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +6 -3
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +18 -6
- package/dist/theme/components/toggle.d.ts +7 -4
- package/dist/theme/foundations/global.d.ts +2 -0
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/package.json +5 -6
- package/src/components/Accordion/Accordion.stories.mdx +9 -9
- package/src/components/Accordion/Accordion.test.tsx +21 -0
- package/src/components/Accordion/Accordion.tsx +13 -9
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +276 -27
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +21 -5
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +52 -31
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +8 -7
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
- package/src/components/Button/Button.stories.mdx +87 -23
- package/src/components/Button/Button.test.tsx +25 -0
- package/src/components/Button/Button.tsx +18 -7
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
- package/src/components/Card/Card.stories.mdx +287 -194
- package/src/components/Card/Card.test.tsx +102 -0
- package/src/components/Card/Card.tsx +73 -32
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +195 -35
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +62 -10
- package/src/components/Checkbox/Checkbox.test.tsx +32 -9
- package/src/components/Checkbox/Checkbox.tsx +20 -15
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +134 -7
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +65 -17
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +137 -81
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +31 -21
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +332 -97
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
- package/src/components/DatePicker/DatePicker.test.tsx +89 -13
- package/src/components/DatePicker/DatePicker.tsx +62 -56
- package/src/components/DatePicker/_DatePicker.scss +71 -13
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
- package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
- package/src/components/Fieldset/Fieldset.test.tsx +58 -28
- package/src/components/Fieldset/Fieldset.tsx +35 -30
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
- package/src/components/Form/Form.stories.mdx +72 -39
- package/src/components/Form/Form.test.tsx +58 -15
- package/src/components/Form/Form.tsx +89 -67
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
- package/src/components/Grid/GridTypes.tsx +7 -7
- package/src/components/Grid/SimpleGrid.stories.mdx +34 -6
- package/src/components/Grid/SimpleGrid.test.tsx +9 -0
- package/src/components/Grid/SimpleGrid.tsx +29 -20
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
- package/src/components/Heading/Heading.stories.mdx +36 -3
- package/src/components/Heading/Heading.test.tsx +10 -0
- package/src/components/Heading/Heading.tsx +56 -50
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +26 -7
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
- package/src/components/Hero/Hero.stories.mdx +125 -95
- package/src/components/Hero/Hero.test.tsx +33 -0
- package/src/components/Hero/Hero.tsx +135 -126
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -19
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -26
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +31 -6
- package/src/components/Icons/Icon.test.tsx +38 -0
- package/src/components/Icons/Icon.tsx +93 -76
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +29 -5
- package/src/components/Image/Image.test.tsx +8 -0
- package/src/components/Image/Image.tsx +38 -26
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- package/src/components/Label/Label.stories.mdx +42 -20
- package/src/components/Label/Label.test.tsx +42 -17
- package/src/components/Label/Label.tsx +22 -13
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
- package/src/components/Link/Link.stories.mdx +25 -1
- package/src/components/Link/Link.test.tsx +21 -0
- package/src/components/Link/Link.tsx +8 -8
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
- package/src/components/List/List.stories.mdx +75 -40
- package/src/components/List/List.test.tsx +67 -19
- package/src/components/List/List.tsx +38 -25
- package/src/components/List/ListTypes.tsx +1 -1
- package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
- package/src/components/Logo/Logo.stories.mdx +30 -6
- package/src/components/Logo/Logo.test.tsx +17 -0
- package/src/components/Logo/Logo.tsx +18 -6
- package/src/components/Logo/LogoSvgs.tsx +4 -0
- package/src/components/Logo/LogoTypes.tsx +2 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
- package/src/components/Modal/Modal.stories.mdx +13 -0
- package/src/components/Notification/Notification.stories.mdx +25 -1
- package/src/components/Notification/Notification.test.tsx +23 -0
- package/src/components/Notification/Notification.tsx +46 -44
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
- package/src/components/Pagination/Pagination.stories.mdx +24 -4
- package/src/components/Pagination/Pagination.test.tsx +25 -0
- package/src/components/Pagination/Pagination.tsx +6 -6
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +81 -11
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +17 -9
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +64 -12
- package/src/components/Radio/Radio.test.tsx +28 -8
- package/src/components/Radio/Radio.tsx +66 -63
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +103 -6
- package/src/components/RadioGroup/RadioGroup.stories.mdx +224 -89
- package/src/components/RadioGroup/RadioGroup.test.tsx +122 -62
- package/src/components/RadioGroup/RadioGroup.tsx +106 -100
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1236 -1020
- package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
- package/src/components/SearchBar/SearchBar.tsx +17 -8
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +128 -49
- package/src/components/Select/Select.test.tsx +63 -16
- package/src/components/Select/Select.tsx +125 -92
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +42 -10
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +8 -0
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +76 -72
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +91 -42
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +26 -19
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
- package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
- package/src/components/StatusBadge/StatusBadge.test.tsx +16 -0
- package/src/components/StatusBadge/StatusBadge.tsx +25 -20
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
- package/src/components/StructuredContent/StructuredContent.stories.mdx +131 -12
- package/src/components/StructuredContent/StructuredContent.test.tsx +34 -0
- package/src/components/StructuredContent/StructuredContent.tsx +80 -75
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +1 -1
- package/src/components/StyleGuide/Colors.stories.mdx +1 -2
- package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
- package/src/components/StyleGuide/Forms.stories.mdx +27 -12
- package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
- package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
- package/src/components/StyleGuide/Typography.stories.mdx +30 -21
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +15 -0
- package/src/components/Table/Table.tsx +7 -7
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +52 -3
- package/src/components/Tabs/Tabs.test.tsx +16 -0
- package/src/components/Tabs/Tabs.tsx +10 -6
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +47 -43
- package/src/components/Template/Template.test.tsx +33 -0
- package/src/components/Template/Template.tsx +65 -60
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +191 -20
- package/src/components/Text/Text.stories.mdx +20 -1
- package/src/components/Text/Text.test.tsx +12 -0
- package/src/components/Text/Text.tsx +6 -4
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +65 -19
- package/src/components/TextInput/TextInput.test.tsx +42 -28
- package/src/components/TextInput/TextInput.tsx +121 -113
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +80 -22
- package/src/components/Toggle/Toggle.test.tsx +27 -9
- package/src/components/Toggle/Toggle.tsx +22 -18
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +128 -5
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +23 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +133 -126
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +50 -9
- package/src/docs/Welcome.stories.mdx +160 -41
- package/src/hooks/useCarouselStyles.stories.mdx +22 -2
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +30 -6
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +4 -1
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +30 -19
- package/src/theme/components/checkbox.ts +10 -8
- package/src/theme/components/checkboxGroup.ts +1 -1
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +1 -2
- package/src/theme/components/global.ts +25 -20
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +13 -15
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +73 -66
- package/src/theme/components/notification.ts +2 -2
- package/src/theme/components/radio.ts +9 -9
- package/src/theme/components/radioGroup.ts +1 -1
- package/src/theme/components/select.ts +35 -22
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +8 -7
- package/src/theme/components/statusBadge.ts +2 -2
- package/src/theme/components/structuredContent.ts +66 -1
- package/src/theme/components/tabs.ts +2 -2
- package/src/theme/components/template.ts +9 -9
- package/src/theme/components/textInput.ts +13 -12
- package/src/theme/components/toggle.ts +17 -10
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +1 -1
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +2 -2
- package/src/utils/componentCategories.ts +1 -2
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -5,18 +5,22 @@ import { axe } from "jest-axe";
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import renderer from "react-test-renderer";
|
|
7
7
|
|
|
8
|
-
import RadioGroup from "./RadioGroup";
|
|
9
8
|
import Radio from "../Radio/Radio";
|
|
9
|
+
import RadioGroup from "./RadioGroup";
|
|
10
10
|
import { LayoutTypes } from "../../helpers/enums";
|
|
11
11
|
|
|
12
12
|
describe("Radio Accessibility", () => {
|
|
13
13
|
it("passes axe accessibility with string labels", async () => {
|
|
14
14
|
const { container } = render(
|
|
15
|
-
<RadioGroup
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
<RadioGroup
|
|
16
|
+
id="radioGroup"
|
|
17
|
+
labelText="RadioGroup example"
|
|
18
|
+
name="a11y-test"
|
|
19
|
+
>
|
|
20
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
21
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
22
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
23
|
+
<Radio id="radio5" value="5" labelText="Radio 5" />
|
|
20
24
|
</RadioGroup>
|
|
21
25
|
);
|
|
22
26
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -24,7 +28,12 @@ describe("Radio Accessibility", () => {
|
|
|
24
28
|
|
|
25
29
|
it("passes axe accessibility with jsx labels", async () => {
|
|
26
30
|
const { container } = render(
|
|
27
|
-
<RadioGroup
|
|
31
|
+
<RadioGroup
|
|
32
|
+
id="radioGroup"
|
|
33
|
+
labelText="RadioGroup example"
|
|
34
|
+
name="a11y-test"
|
|
35
|
+
isFullWidth
|
|
36
|
+
>
|
|
28
37
|
<Radio
|
|
29
38
|
id="arts"
|
|
30
39
|
labelText={
|
|
@@ -56,10 +65,10 @@ describe("Radio Accessibility", () => {
|
|
|
56
65
|
describe("Radio Button", () => {
|
|
57
66
|
it("renders with radio inputs and a label", () => {
|
|
58
67
|
render(
|
|
59
|
-
<RadioGroup labelText="Test Label" name="test1">
|
|
60
|
-
<Radio value="2" labelText="Radio 2" />
|
|
61
|
-
<Radio value="3" labelText="Radio 3" />
|
|
62
|
-
<Radio value="4" labelText="Radio 4" />
|
|
68
|
+
<RadioGroup id="radioGroup" labelText="Test Label" name="test1">
|
|
69
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
70
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
71
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
63
72
|
</RadioGroup>
|
|
64
73
|
);
|
|
65
74
|
expect(screen.getByText(/Test Label/i)).toBeInTheDocument();
|
|
@@ -71,10 +80,15 @@ describe("Radio Button", () => {
|
|
|
71
80
|
|
|
72
81
|
it("renders with appropriate 'aria-label' attribute and value when 'showLabel' prop is set to false", () => {
|
|
73
82
|
render(
|
|
74
|
-
<RadioGroup
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
<RadioGroup
|
|
84
|
+
id="radioGroup"
|
|
85
|
+
labelText="Test Label"
|
|
86
|
+
name="test2"
|
|
87
|
+
showLabel={false}
|
|
88
|
+
>
|
|
89
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
90
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
91
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
78
92
|
</RadioGroup>
|
|
79
93
|
);
|
|
80
94
|
expect(screen.getByRole("radiogroup")).toHaveAttribute(
|
|
@@ -86,14 +100,15 @@ describe("Radio Button", () => {
|
|
|
86
100
|
it("renders visible helper or error text", () => {
|
|
87
101
|
const { rerender } = render(
|
|
88
102
|
<RadioGroup
|
|
103
|
+
id="radioGroup"
|
|
89
104
|
labelText="Test Label"
|
|
90
105
|
name="test3"
|
|
91
106
|
helperText="This is the helper text for the full group."
|
|
92
107
|
invalidText="This is the error text :("
|
|
93
108
|
>
|
|
94
|
-
<Radio value="2" labelText="Radio 2" />
|
|
95
|
-
<Radio value="3" labelText="Radio 3" />
|
|
96
|
-
<Radio value="4" labelText="Radio 4" />
|
|
109
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
110
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
111
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
97
112
|
</RadioGroup>
|
|
98
113
|
);
|
|
99
114
|
expect(
|
|
@@ -105,15 +120,16 @@ describe("Radio Button", () => {
|
|
|
105
120
|
|
|
106
121
|
rerender(
|
|
107
122
|
<RadioGroup
|
|
123
|
+
id="radioGroup"
|
|
108
124
|
labelText="Test Label"
|
|
109
125
|
name="test4"
|
|
110
126
|
helperText="This is the helper text for the full group."
|
|
111
127
|
invalidText="This is the error text :("
|
|
112
128
|
isInvalid
|
|
113
129
|
>
|
|
114
|
-
<Radio value="2" labelText="Radio 2" />
|
|
115
|
-
<Radio value="3" labelText="Radio 3" />
|
|
116
|
-
<Radio value="4" labelText="Radio 4" />
|
|
130
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
131
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
132
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
117
133
|
</RadioGroup>
|
|
118
134
|
);
|
|
119
135
|
expect(screen.getByText("This is the error text :(")).toBeVisible();
|
|
@@ -125,7 +141,7 @@ describe("Radio Button", () => {
|
|
|
125
141
|
it("sets the RadioGroup's ID", () => {
|
|
126
142
|
render(
|
|
127
143
|
<RadioGroup labelText="Test Label" name="test5" id="some-id">
|
|
128
|
-
<Radio value="2" labelText="Radio 2" />
|
|
144
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
129
145
|
</RadioGroup>
|
|
130
146
|
);
|
|
131
147
|
|
|
@@ -143,14 +159,15 @@ describe("Radio Button", () => {
|
|
|
143
159
|
};
|
|
144
160
|
render(
|
|
145
161
|
<RadioGroup
|
|
162
|
+
id="radioGroup"
|
|
146
163
|
labelText="Test Label"
|
|
147
164
|
name="getValue"
|
|
148
165
|
defaultValue="4"
|
|
149
166
|
onChange={onChange}
|
|
150
167
|
>
|
|
151
|
-
<Radio value="2" labelText="Radio 2" />
|
|
152
|
-
<Radio value="3" labelText="Radio 3" />
|
|
153
|
-
<Radio value="4" labelText="Radio 4" />
|
|
168
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
169
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
170
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
154
171
|
</RadioGroup>
|
|
155
172
|
);
|
|
156
173
|
|
|
@@ -161,25 +178,17 @@ describe("Radio Button", () => {
|
|
|
161
178
|
expect(newValue).toEqual("2");
|
|
162
179
|
});
|
|
163
180
|
|
|
164
|
-
// TODO: Figure out why this renders twice with two different calls
|
|
165
|
-
// to the render function.
|
|
166
|
-
// it("calls the UUID generation function if no id prop value is passed", () => {
|
|
167
|
-
// const generateUUIDSpy = jest.spyOn(generateUUID, "default");
|
|
168
|
-
// expect(generateUUIDSpy).toHaveBeenCalledTimes(0);
|
|
169
|
-
// render(
|
|
170
|
-
// <RadioGroup labelText="Test Label" name="test6">
|
|
171
|
-
// <Radio value="2" labelText="Radio 2" id="radio2" />
|
|
172
|
-
// </RadioGroup>
|
|
173
|
-
// );
|
|
174
|
-
// expect(generateUUIDSpy).toHaveBeenCalledTimes(1);
|
|
175
|
-
// });
|
|
176
|
-
|
|
177
181
|
it("sets the 'disabled' attribute for all its Radio children", () => {
|
|
178
182
|
render(
|
|
179
|
-
<RadioGroup
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
<RadioGroup
|
|
184
|
+
id="radioGroup"
|
|
185
|
+
labelText="Test Label"
|
|
186
|
+
name="test7"
|
|
187
|
+
isDisabled
|
|
188
|
+
>
|
|
189
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
190
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
191
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
183
192
|
</RadioGroup>
|
|
184
193
|
);
|
|
185
194
|
const radios = screen.getAllByRole("radio");
|
|
@@ -192,10 +201,15 @@ describe("Radio Button", () => {
|
|
|
192
201
|
|
|
193
202
|
it("sets the 'required' attribute for all its Radio children", () => {
|
|
194
203
|
render(
|
|
195
|
-
<RadioGroup
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
204
|
+
<RadioGroup
|
|
205
|
+
id="radioGroup"
|
|
206
|
+
labelText="Test Label"
|
|
207
|
+
name="test8"
|
|
208
|
+
isRequired
|
|
209
|
+
>
|
|
210
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
211
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
212
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
199
213
|
</RadioGroup>
|
|
200
214
|
);
|
|
201
215
|
const radios = screen.getAllByRole("radio");
|
|
@@ -212,14 +226,15 @@ describe("Radio Button", () => {
|
|
|
212
226
|
it("sets the error state for all its Radio children", () => {
|
|
213
227
|
render(
|
|
214
228
|
<RadioGroup
|
|
229
|
+
id="radioGroup"
|
|
215
230
|
labelText="Test Label"
|
|
216
231
|
name="test9"
|
|
217
232
|
isInvalid
|
|
218
233
|
invalidText="There is an error :("
|
|
219
234
|
>
|
|
220
|
-
<Radio value="2" labelText="Radio 2" />
|
|
221
|
-
<Radio value="3" labelText="Radio 3" />
|
|
222
|
-
<Radio value="4" labelText="Radio 4" />
|
|
235
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
236
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
237
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
223
238
|
</RadioGroup>
|
|
224
239
|
);
|
|
225
240
|
const radios = screen.getAllByRole("radio");
|
|
@@ -234,15 +249,16 @@ describe("Radio Button", () => {
|
|
|
234
249
|
it("does not render the error text when 'showHelperInvalidText' is false", () => {
|
|
235
250
|
render(
|
|
236
251
|
<RadioGroup
|
|
252
|
+
id="radioGroup"
|
|
237
253
|
labelText="Test Label"
|
|
238
254
|
name="test10"
|
|
239
255
|
isInvalid
|
|
240
256
|
invalidText="There is an error :("
|
|
241
257
|
showHelperInvalidText={false}
|
|
242
258
|
>
|
|
243
|
-
<Radio value="2" labelText="Radio 2" />
|
|
244
|
-
<Radio value="3" labelText="Radio 3" />
|
|
245
|
-
<Radio value="4" labelText="Radio 4" />
|
|
259
|
+
<Radio id="radio2" value="2" labelText="Radio 2" />
|
|
260
|
+
<Radio id="radio3" value="3" labelText="Radio 3" />
|
|
261
|
+
<Radio id="radio4" value="4" labelText="Radio 4" />
|
|
246
262
|
</RadioGroup>
|
|
247
263
|
);
|
|
248
264
|
expect(screen.queryByText("There is an error :(")).not.toBeInTheDocument();
|
|
@@ -309,26 +325,27 @@ describe("Radio Button", () => {
|
|
|
309
325
|
</RadioGroup>
|
|
310
326
|
)
|
|
311
327
|
.toJSON();
|
|
312
|
-
const
|
|
328
|
+
const isRequired = renderer
|
|
313
329
|
.create(
|
|
314
330
|
<RadioGroup
|
|
315
|
-
labelText="
|
|
316
|
-
name="
|
|
317
|
-
id="
|
|
318
|
-
|
|
331
|
+
labelText="required"
|
|
332
|
+
name="required"
|
|
333
|
+
id="required"
|
|
334
|
+
isRequired
|
|
319
335
|
>
|
|
320
336
|
<Radio value="2" labelText="Radio 2" id="radio-2" />
|
|
321
337
|
<Radio value="3" labelText="Radio 3" id="radio-3" />
|
|
322
338
|
</RadioGroup>
|
|
323
339
|
)
|
|
324
340
|
.toJSON();
|
|
325
|
-
const
|
|
341
|
+
const noRequiredLabel = renderer
|
|
326
342
|
.create(
|
|
327
343
|
<RadioGroup
|
|
328
|
-
labelText="required"
|
|
329
|
-
name="
|
|
330
|
-
id="
|
|
344
|
+
labelText="no optional or required label"
|
|
345
|
+
name="noRequiredLabel"
|
|
346
|
+
id="noRequiredLabel"
|
|
331
347
|
isRequired
|
|
348
|
+
showRequiredLabel={false}
|
|
332
349
|
>
|
|
333
350
|
<Radio value="2" labelText="Radio 2" id="radio-2" />
|
|
334
351
|
<Radio value="3" labelText="Radio 3" id="radio-3" />
|
|
@@ -389,17 +406,46 @@ describe("Radio Button", () => {
|
|
|
389
406
|
</RadioGroup>
|
|
390
407
|
)
|
|
391
408
|
.toJSON();
|
|
409
|
+
const withChakraProps = renderer
|
|
410
|
+
.create(
|
|
411
|
+
<RadioGroup
|
|
412
|
+
labelText="chakra"
|
|
413
|
+
name="chakra"
|
|
414
|
+
id="chakra"
|
|
415
|
+
p="20px"
|
|
416
|
+
color="ui.error.primary"
|
|
417
|
+
>
|
|
418
|
+
<Radio value="2" labelText="Radio 2" id="radio-2" />
|
|
419
|
+
<Radio value="3" labelText="Radio 3" id="radio-3" />
|
|
420
|
+
</RadioGroup>
|
|
421
|
+
)
|
|
422
|
+
.toJSON();
|
|
423
|
+
const withOtherProps = renderer
|
|
424
|
+
.create(
|
|
425
|
+
<RadioGroup
|
|
426
|
+
labelText="props"
|
|
427
|
+
name="props"
|
|
428
|
+
id="props"
|
|
429
|
+
data-testid="props"
|
|
430
|
+
>
|
|
431
|
+
<Radio value="2" labelText="Radio 2" id="radio-2" />
|
|
432
|
+
<Radio value="3" labelText="Radio 3" id="radio-3" />
|
|
433
|
+
</RadioGroup>
|
|
434
|
+
)
|
|
435
|
+
.toJSON();
|
|
392
436
|
|
|
393
437
|
expect(column).toMatchSnapshot();
|
|
394
438
|
expect(row).toMatchSnapshot();
|
|
395
439
|
expect(noLabel).toMatchSnapshot();
|
|
396
440
|
expect(helperText).toMatchSnapshot();
|
|
397
441
|
expect(invalidText).toMatchSnapshot();
|
|
398
|
-
expect(
|
|
442
|
+
expect(noRequiredLabel).toMatchSnapshot();
|
|
399
443
|
expect(isRequired).toMatchSnapshot();
|
|
400
444
|
expect(isInvalid).toMatchSnapshot();
|
|
401
445
|
expect(isDisabled).toMatchSnapshot();
|
|
402
446
|
expect(withJSXRadioLabels).toMatchSnapshot();
|
|
447
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
448
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
403
449
|
});
|
|
404
450
|
|
|
405
451
|
it("should throw warning when a non-Radio component is used as a child", () => {
|
|
@@ -414,4 +460,18 @@ describe("Radio Button", () => {
|
|
|
414
460
|
"the `RadioGroup` component."
|
|
415
461
|
);
|
|
416
462
|
});
|
|
463
|
+
|
|
464
|
+
it("logs a warning when there is no `id` passed", () => {
|
|
465
|
+
const warn = jest.spyOn(console, "warn");
|
|
466
|
+
render(
|
|
467
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
468
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
469
|
+
<RadioGroup labelText="RadioGroup example" name="a11y-test">
|
|
470
|
+
<Radio id="radio1" value="1" labelText="Radio 1" />
|
|
471
|
+
</RadioGroup>
|
|
472
|
+
);
|
|
473
|
+
expect(warn).toHaveBeenCalledWith(
|
|
474
|
+
"NYPL Reservoir RadioGroup: This component's required `id` prop was not passed."
|
|
475
|
+
);
|
|
476
|
+
});
|
|
417
477
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
chakra,
|
|
3
|
+
RadioGroup as ChakraRadioGroup,
|
|
3
4
|
Stack,
|
|
4
5
|
useMultiStyleConfig,
|
|
5
|
-
useRadioGroup,
|
|
6
6
|
} from "@chakra-ui/react";
|
|
7
7
|
import * as React from "react";
|
|
8
8
|
|
|
@@ -13,8 +13,6 @@ import HelperErrorText, {
|
|
|
13
13
|
import { spacing } from "../../theme/foundations/spacing";
|
|
14
14
|
import Radio from "../Radio/Radio";
|
|
15
15
|
import { LayoutTypes } from "../../helpers/enums";
|
|
16
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
17
|
-
|
|
18
16
|
export interface RadioGroupProps {
|
|
19
17
|
/** Additional class name. */
|
|
20
18
|
className?: string;
|
|
@@ -23,7 +21,7 @@ export interface RadioGroupProps {
|
|
|
23
21
|
/** Optional string to populate the HelperErrorText for standard state */
|
|
24
22
|
helperText?: HelperErrorTextType;
|
|
25
23
|
/** ID that other components can cross reference for accessibility purposes */
|
|
26
|
-
id
|
|
24
|
+
id: string;
|
|
27
25
|
/** Optional string to populate the HelperErrorText for error state */
|
|
28
26
|
invalidText?: HelperErrorTextType;
|
|
29
27
|
/** Adds the 'disabled' prop to the input when true. */
|
|
@@ -44,117 +42,125 @@ export interface RadioGroupProps {
|
|
|
44
42
|
name: string;
|
|
45
43
|
/** The action to perform on the `<input>`'s onChange function */
|
|
46
44
|
onChange?: (value: string) => void;
|
|
47
|
-
/** Whether or not to display "Required"/"Optional" in the label text. */
|
|
48
|
-
optReqFlag?: boolean;
|
|
49
45
|
/** Offers the ability to hide the helper/invalid text. */
|
|
50
46
|
showHelperInvalidText?: boolean;
|
|
51
47
|
/** Offers the ability to show the group's legend onscreen or hide it. Refer
|
|
52
48
|
* to the `labelText` property for more information. */
|
|
53
49
|
showLabel?: boolean;
|
|
50
|
+
/** Whether or not to display the "(Required)" text in the label text.
|
|
51
|
+
* True by default. */
|
|
52
|
+
showRequiredLabel?: boolean;
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
const noop = () => {};
|
|
57
|
-
export const onChangeDefault = () => {
|
|
58
|
-
return;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const RadioGroup = React.forwardRef<
|
|
62
|
-
HTMLInputElement,
|
|
63
|
-
React.PropsWithChildren<RadioGroupProps>
|
|
64
|
-
>((props, ref?) => {
|
|
65
|
-
const {
|
|
66
|
-
children,
|
|
67
|
-
className = "",
|
|
68
|
-
defaultValue,
|
|
69
|
-
helperText,
|
|
70
|
-
id = generateUUID(),
|
|
71
|
-
invalidText,
|
|
72
|
-
isDisabled = false,
|
|
73
|
-
isFullWidth = false,
|
|
74
|
-
isInvalid = false,
|
|
75
|
-
isRequired = false,
|
|
76
|
-
labelText,
|
|
77
|
-
layout = LayoutTypes.Column,
|
|
78
|
-
name,
|
|
79
|
-
onChange = onChangeDefault,
|
|
80
|
-
optReqFlag = true,
|
|
81
|
-
showHelperInvalidText = true,
|
|
82
|
-
showLabel = true,
|
|
83
|
-
} = props;
|
|
84
|
-
const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
|
|
85
|
-
const spacingProp = layout === LayoutTypes.Column ? spacing.s : spacing.l;
|
|
86
|
-
const newChildren = [];
|
|
87
56
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
57
|
+
/**
|
|
58
|
+
* RadioGroup is a wrapper for DS `Radio` components that renders as a fieldset
|
|
59
|
+
* HTML element along with optional helper text. The `name` prop is essential
|
|
60
|
+
* for this form group element and is not needed for individual DS `Radio`
|
|
61
|
+
* components when `RadioGroup` is used.
|
|
62
|
+
*/
|
|
63
|
+
export const RadioGroup = chakra(
|
|
64
|
+
React.forwardRef<HTMLInputElement, React.PropsWithChildren<RadioGroupProps>>(
|
|
65
|
+
(props, ref?) => {
|
|
66
|
+
const {
|
|
67
|
+
children,
|
|
68
|
+
className = "",
|
|
69
|
+
defaultValue,
|
|
70
|
+
helperText,
|
|
71
|
+
id,
|
|
72
|
+
invalidText,
|
|
73
|
+
isDisabled = false,
|
|
74
|
+
isFullWidth = false,
|
|
75
|
+
isInvalid = false,
|
|
76
|
+
isRequired = false,
|
|
77
|
+
labelText,
|
|
78
|
+
layout = LayoutTypes.Column,
|
|
79
|
+
name,
|
|
80
|
+
onChange,
|
|
81
|
+
showHelperInvalidText = true,
|
|
82
|
+
showLabel = true,
|
|
83
|
+
showRequiredLabel = true,
|
|
84
|
+
...rest
|
|
85
|
+
} = props;
|
|
86
|
+
const [value, setValue] = React.useState(defaultValue);
|
|
87
|
+
const footnote: HelperErrorTextType = isInvalid
|
|
88
|
+
? invalidText
|
|
89
|
+
: helperText;
|
|
90
|
+
const spacingProp = layout === LayoutTypes.Column ? spacing.s : spacing.l;
|
|
91
|
+
const newChildren: JSX.Element[] = [];
|
|
92
|
+
// Get the Chakra-based styles for the custom elements in this component.
|
|
93
|
+
const styles = useMultiStyleConfig("RadioGroup", { isFullWidth });
|
|
94
|
+
// Props for the `ChakraRadioGroup` component.
|
|
95
|
+
const radioGroupProps = {
|
|
96
|
+
"aria-label": !showLabel ? labelText : undefined,
|
|
97
|
+
name,
|
|
98
|
+
onChange: (selected: string) => {
|
|
99
|
+
setValue(selected);
|
|
100
|
+
onChange && onChange(selected);
|
|
101
|
+
},
|
|
102
|
+
ref,
|
|
103
|
+
value,
|
|
104
|
+
};
|
|
96
105
|
|
|
97
|
-
|
|
98
|
-
React.Children.map(children, (child: React.ReactElement, i) => {
|
|
99
|
-
if (child.type !== Radio) {
|
|
100
|
-
// Special case for Storybook MDX documentation.
|
|
101
|
-
if (child.props.mdxType && child.props.mdxType === "Radio") {
|
|
102
|
-
noop();
|
|
103
|
-
} else {
|
|
106
|
+
if (!id) {
|
|
104
107
|
console.warn(
|
|
105
|
-
"NYPL Reservoir RadioGroup:
|
|
106
|
-
"inside the `RadioGroup` component."
|
|
108
|
+
"NYPL Reservoir RadioGroup: This component's required `id` prop was not passed."
|
|
107
109
|
);
|
|
108
110
|
}
|
|
109
|
-
}
|
|
110
111
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
// Go through the Radio children and update them as needed.
|
|
113
|
+
React.Children.map(children, (child: React.ReactElement, key) => {
|
|
114
|
+
if (child?.type !== Radio) {
|
|
115
|
+
// Special case for Storybook MDX documentation.
|
|
116
|
+
if (child.props?.mdxType && child.props?.mdxType === "Radio") {
|
|
117
|
+
noop();
|
|
118
|
+
} else {
|
|
119
|
+
console.warn(
|
|
120
|
+
"NYPL Reservoir RadioGroup: Only `Radio` components are allowed " +
|
|
121
|
+
"inside the `RadioGroup` component."
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
114
125
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
if (child !== undefined && child !== null) {
|
|
127
|
+
const newProps = {
|
|
128
|
+
key,
|
|
129
|
+
isDisabled,
|
|
130
|
+
isInvalid,
|
|
131
|
+
isRequired,
|
|
132
|
+
};
|
|
133
|
+
newChildren.push(React.cloneElement(child, newProps));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
return (
|
|
138
|
+
<Fieldset
|
|
139
|
+
className={className}
|
|
140
|
+
id={`radio-group-${id}`}
|
|
141
|
+
isLegendHidden={!showLabel}
|
|
142
|
+
isRequired={isRequired}
|
|
143
|
+
legendText={labelText}
|
|
144
|
+
showRequiredLabel={showRequiredLabel}
|
|
145
|
+
{...rest}
|
|
146
|
+
>
|
|
147
|
+
<ChakraRadioGroup {...radioGroupProps}>
|
|
148
|
+
<Stack direction={[layout]} spacing={spacingProp} sx={styles.stack}>
|
|
149
|
+
{newChildren}
|
|
150
|
+
</Stack>
|
|
151
|
+
</ChakraRadioGroup>
|
|
152
|
+
{footnote && showHelperInvalidText && (
|
|
153
|
+
<HelperErrorText
|
|
154
|
+
additionalStyles={styles.helperErrorText}
|
|
155
|
+
id={`${id}-helperErrorText`}
|
|
156
|
+
isInvalid={isInvalid}
|
|
157
|
+
text={footnote}
|
|
158
|
+
/>
|
|
159
|
+
)}
|
|
160
|
+
</Fieldset>
|
|
122
161
|
);
|
|
123
162
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// Get the Chakra-based styles for the custom elements in this component.
|
|
127
|
-
const styles = useMultiStyleConfig("RadioGroup", { isFullWidth });
|
|
128
|
-
|
|
129
|
-
return (
|
|
130
|
-
<Fieldset
|
|
131
|
-
className={className}
|
|
132
|
-
id={`radio-group-${id}`}
|
|
133
|
-
isLegendHidden={!showLabel}
|
|
134
|
-
legendText={labelText}
|
|
135
|
-
optReqFlag={optReqFlag}
|
|
136
|
-
>
|
|
137
|
-
<Stack
|
|
138
|
-
aria-label={!showLabel ? labelText : null}
|
|
139
|
-
direction={[layout]}
|
|
140
|
-
spacing={spacingProp}
|
|
141
|
-
ref={ref}
|
|
142
|
-
{...radioGroupProps}
|
|
143
|
-
sx={styles.stack}
|
|
144
|
-
>
|
|
145
|
-
{newChildren}
|
|
146
|
-
</Stack>
|
|
147
|
-
{footnote && showHelperInvalidText && (
|
|
148
|
-
<Box __css={styles.helper}>
|
|
149
|
-
<HelperErrorText
|
|
150
|
-
id={`${id}-helperErrorText`}
|
|
151
|
-
isInvalid={isInvalid}
|
|
152
|
-
text={footnote}
|
|
153
|
-
/>
|
|
154
|
-
</Box>
|
|
155
|
-
)}
|
|
156
|
-
</Fieldset>
|
|
157
|
-
);
|
|
158
|
-
});
|
|
163
|
+
)
|
|
164
|
+
);
|
|
159
165
|
|
|
160
166
|
export default RadioGroup;
|