@nypl/design-system-react-components 0.25.13 → 0.27.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 +85 -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/Modal/Modal.d.ts +28 -8
- 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 +1767 -1180
- 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 +1774 -1188
- 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 +5 -2
- 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 +28 -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 +17 -19
- 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 +196 -36
- 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 -15
- package/src/components/Link/Link.test.tsx +21 -22
- 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 +256 -136
- package/src/components/Modal/Modal.test.tsx +151 -9
- package/src/components/Modal/Modal.tsx +140 -20
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +25 -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 +25 -6
- 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 +131 -92
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +765 -425
- 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 +5 -2
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/styles.scss +0 -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 +31 -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/components/Modal/_Modal.scss +0 -18
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -5,7 +5,6 @@ import { axe } from "jest-axe";
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import renderer from "react-test-renderer";
|
|
7
7
|
|
|
8
|
-
import * as generateUUID from "../../helpers/generateUUID";
|
|
9
8
|
import CheckboxGroup from "./CheckboxGroup";
|
|
10
9
|
import Checkbox from "../Checkbox/Checkbox";
|
|
11
10
|
import { LayoutTypes } from "../../helpers/enums";
|
|
@@ -13,11 +12,15 @@ import { LayoutTypes } from "../../helpers/enums";
|
|
|
13
12
|
describe("CheckboxGroup Accessibility", () => {
|
|
14
13
|
it("passes axe accessibility with string labels ", async () => {
|
|
15
14
|
const { container } = render(
|
|
16
|
-
<CheckboxGroup
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
<CheckboxGroup
|
|
16
|
+
id="checkboxGroup"
|
|
17
|
+
labelText="CheckboxGroup example"
|
|
18
|
+
name="a11y-test"
|
|
19
|
+
>
|
|
20
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
21
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
22
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
23
|
+
<Checkbox id="checkbox5" value="5" labelText="Checkbox 5" />
|
|
21
24
|
</CheckboxGroup>
|
|
22
25
|
);
|
|
23
26
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -61,10 +64,10 @@ describe("CheckboxGroup Accessibility", () => {
|
|
|
61
64
|
describe("Checkbox", () => {
|
|
62
65
|
it("renders with Checkbox inputs and a label", () => {
|
|
63
66
|
render(
|
|
64
|
-
<CheckboxGroup labelText="Test Label" name="test1">
|
|
65
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
66
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
67
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
67
|
+
<CheckboxGroup id="checkboxGroup" labelText="Test Label" name="test1">
|
|
68
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
69
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
70
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
68
71
|
</CheckboxGroup>
|
|
69
72
|
);
|
|
70
73
|
expect(screen.getByText(/Test Label/i)).toBeInTheDocument();
|
|
@@ -76,10 +79,10 @@ describe("Checkbox", () => {
|
|
|
76
79
|
|
|
77
80
|
it("renders with appropriate 'aria-label' attribute and value when 'showLabel' prop is set to false", () => {
|
|
78
81
|
const { rerender } = render(
|
|
79
|
-
<CheckboxGroup labelText="Test Label" name="test2">
|
|
80
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
81
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
82
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
82
|
+
<CheckboxGroup id="checkboxGroup" labelText="Test Label" name="test2">
|
|
83
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
84
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
85
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
83
86
|
</CheckboxGroup>
|
|
84
87
|
);
|
|
85
88
|
expect(screen.getByTestId("checkbox-group")).not.toHaveAttribute(
|
|
@@ -88,10 +91,15 @@ describe("Checkbox", () => {
|
|
|
88
91
|
);
|
|
89
92
|
|
|
90
93
|
rerender(
|
|
91
|
-
<CheckboxGroup
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
<CheckboxGroup
|
|
95
|
+
id="checkboxGroup"
|
|
96
|
+
labelText="Test Label"
|
|
97
|
+
name="test2"
|
|
98
|
+
showLabel={false}
|
|
99
|
+
>
|
|
100
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
101
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
102
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
95
103
|
</CheckboxGroup>
|
|
96
104
|
);
|
|
97
105
|
expect(screen.getByTestId("checkbox-group")).toHaveAttribute(
|
|
@@ -103,14 +111,15 @@ describe("Checkbox", () => {
|
|
|
103
111
|
it("renders visible helper or error text", () => {
|
|
104
112
|
const { rerender } = render(
|
|
105
113
|
<CheckboxGroup
|
|
114
|
+
id="checkboxGroup"
|
|
106
115
|
labelText="Test Label"
|
|
107
116
|
name="test3"
|
|
108
117
|
helperText="This is the helper text for the full group."
|
|
109
118
|
invalidText="This is the error text :("
|
|
110
119
|
>
|
|
111
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
112
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
113
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
120
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
121
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
122
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
114
123
|
</CheckboxGroup>
|
|
115
124
|
);
|
|
116
125
|
expect(
|
|
@@ -122,15 +131,16 @@ describe("Checkbox", () => {
|
|
|
122
131
|
|
|
123
132
|
rerender(
|
|
124
133
|
<CheckboxGroup
|
|
134
|
+
id="checkboxGroup"
|
|
125
135
|
labelText="Test Label"
|
|
126
136
|
name="test3"
|
|
127
137
|
helperText="This is the helper text for the full group."
|
|
128
138
|
invalidText="This is the error text :("
|
|
129
139
|
isInvalid
|
|
130
140
|
>
|
|
131
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
132
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
133
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
141
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
142
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
143
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
134
144
|
</CheckboxGroup>
|
|
135
145
|
);
|
|
136
146
|
expect(screen.getByText("This is the error text :(")).toBeVisible();
|
|
@@ -142,7 +152,7 @@ describe("Checkbox", () => {
|
|
|
142
152
|
it("sets the CheckboxGroup's ID", () => {
|
|
143
153
|
render(
|
|
144
154
|
<CheckboxGroup labelText="Test Label" name="test5" id="some-id">
|
|
145
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
155
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
146
156
|
</CheckboxGroup>
|
|
147
157
|
);
|
|
148
158
|
|
|
@@ -160,14 +170,15 @@ describe("Checkbox", () => {
|
|
|
160
170
|
};
|
|
161
171
|
render(
|
|
162
172
|
<CheckboxGroup
|
|
173
|
+
id="checkboxGroup"
|
|
163
174
|
labelText="Test Label"
|
|
164
175
|
name="getValue"
|
|
165
176
|
defaultValue={["4"]}
|
|
166
177
|
onChange={onChange}
|
|
167
178
|
>
|
|
168
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
169
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
170
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
179
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
180
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
181
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
171
182
|
</CheckboxGroup>
|
|
172
183
|
);
|
|
173
184
|
|
|
@@ -182,23 +193,17 @@ describe("Checkbox", () => {
|
|
|
182
193
|
expect(newValue).toEqual(["4", "2"]);
|
|
183
194
|
});
|
|
184
195
|
|
|
185
|
-
it("calls the UUID generation function if no id prop value is passed", () => {
|
|
186
|
-
const generateUUIDSpy = jest.spyOn(generateUUID, "default");
|
|
187
|
-
expect(generateUUIDSpy).toHaveBeenCalledTimes(0);
|
|
188
|
-
render(
|
|
189
|
-
<CheckboxGroup labelText="Test Label" name="test6">
|
|
190
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
191
|
-
</CheckboxGroup>
|
|
192
|
-
);
|
|
193
|
-
expect(generateUUIDSpy).toHaveBeenCalledTimes(1);
|
|
194
|
-
});
|
|
195
|
-
|
|
196
196
|
it("sets the 'disabled' attribute for all its Checkbox children", () => {
|
|
197
197
|
render(
|
|
198
|
-
<CheckboxGroup
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
198
|
+
<CheckboxGroup
|
|
199
|
+
id="checkboxGroup"
|
|
200
|
+
labelText="Test Label"
|
|
201
|
+
name="test7"
|
|
202
|
+
isDisabled
|
|
203
|
+
>
|
|
204
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
205
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
206
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
202
207
|
</CheckboxGroup>
|
|
203
208
|
);
|
|
204
209
|
const Checkboxes = screen.getAllByRole("checkbox");
|
|
@@ -211,10 +216,15 @@ describe("Checkbox", () => {
|
|
|
211
216
|
|
|
212
217
|
it("sets the 'required' attribute for all its Checkbox children", () => {
|
|
213
218
|
render(
|
|
214
|
-
<CheckboxGroup
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
<CheckboxGroup
|
|
220
|
+
id="checkboxGroup"
|
|
221
|
+
labelText="Test Label"
|
|
222
|
+
name="test8"
|
|
223
|
+
isRequired
|
|
224
|
+
>
|
|
225
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
226
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
227
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
218
228
|
</CheckboxGroup>
|
|
219
229
|
);
|
|
220
230
|
const Checkboxes = screen.getAllByRole("checkbox");
|
|
@@ -228,14 +238,15 @@ describe("Checkbox", () => {
|
|
|
228
238
|
it("sets the error state for all its Checkbox children", () => {
|
|
229
239
|
render(
|
|
230
240
|
<CheckboxGroup
|
|
241
|
+
id="checkboxGroup"
|
|
231
242
|
labelText="Test Label"
|
|
232
243
|
name="test9"
|
|
233
244
|
isInvalid
|
|
234
245
|
invalidText="There's an error!"
|
|
235
246
|
>
|
|
236
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
237
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
238
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
247
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
248
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
249
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
239
250
|
</CheckboxGroup>
|
|
240
251
|
);
|
|
241
252
|
const Checkboxes = screen.getAllByRole("checkbox");
|
|
@@ -249,15 +260,16 @@ describe("Checkbox", () => {
|
|
|
249
260
|
it("does not render the invalid text when 'isInvalid' is true but 'showHelperInvalidText' is false", () => {
|
|
250
261
|
render(
|
|
251
262
|
<CheckboxGroup
|
|
263
|
+
id="checkboxGroup"
|
|
252
264
|
labelText="Test Label"
|
|
253
265
|
name="test9"
|
|
254
266
|
isInvalid
|
|
255
267
|
invalidText="There's an error!"
|
|
256
268
|
showHelperInvalidText={false}
|
|
257
269
|
>
|
|
258
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
259
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
260
|
-
<Checkbox value="4" labelText="Checkbox 4" />
|
|
270
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
271
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
272
|
+
<Checkbox id="checkbox4" value="4" labelText="Checkbox 4" />
|
|
261
273
|
</CheckboxGroup>
|
|
262
274
|
);
|
|
263
275
|
const Checkboxes = screen.getAllByRole("checkbox");
|
|
@@ -268,12 +280,26 @@ describe("Checkbox", () => {
|
|
|
268
280
|
expect(Checkboxes[2]).toHaveAttribute("aria-invalid");
|
|
269
281
|
});
|
|
270
282
|
|
|
283
|
+
it("logs a warning when there is no `id` passed", () => {
|
|
284
|
+
const warn = jest.spyOn(console, "warn");
|
|
285
|
+
render(
|
|
286
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
287
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
288
|
+
<CheckboxGroup labelText="column" name="column">
|
|
289
|
+
<Checkbox id="checkbox1" value="1" labelText="Checkbox 1" />
|
|
290
|
+
</CheckboxGroup>
|
|
291
|
+
);
|
|
292
|
+
expect(warn).toHaveBeenCalledWith(
|
|
293
|
+
"NYPL Reservoir CheckboxGroup: This component's required `id` prop was not passed."
|
|
294
|
+
);
|
|
295
|
+
});
|
|
296
|
+
|
|
271
297
|
it("renders the UI snapshot correctly", () => {
|
|
272
298
|
const column = renderer
|
|
273
299
|
.create(
|
|
274
300
|
<CheckboxGroup labelText="column" name="column" id="column">
|
|
275
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
276
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
301
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
302
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
277
303
|
</CheckboxGroup>
|
|
278
304
|
)
|
|
279
305
|
.toJSON();
|
|
@@ -285,8 +311,8 @@ describe("Checkbox", () => {
|
|
|
285
311
|
id="row"
|
|
286
312
|
layout={LayoutTypes.Row}
|
|
287
313
|
>
|
|
288
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
289
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
314
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
315
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
290
316
|
</CheckboxGroup>
|
|
291
317
|
)
|
|
292
318
|
.toJSON();
|
|
@@ -298,8 +324,8 @@ describe("Checkbox", () => {
|
|
|
298
324
|
id="noLabel"
|
|
299
325
|
showLabel={false}
|
|
300
326
|
>
|
|
301
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
302
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
327
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
328
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
303
329
|
</CheckboxGroup>
|
|
304
330
|
)
|
|
305
331
|
.toJSON();
|
|
@@ -311,8 +337,8 @@ describe("Checkbox", () => {
|
|
|
311
337
|
id="helperText"
|
|
312
338
|
helperText="helper text"
|
|
313
339
|
>
|
|
314
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
315
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
340
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
341
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
316
342
|
</CheckboxGroup>
|
|
317
343
|
)
|
|
318
344
|
.toJSON();
|
|
@@ -324,34 +350,35 @@ describe("Checkbox", () => {
|
|
|
324
350
|
id="invalidText"
|
|
325
351
|
invalidText="error text"
|
|
326
352
|
>
|
|
327
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
328
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
353
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
354
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
329
355
|
</CheckboxGroup>
|
|
330
356
|
)
|
|
331
357
|
.toJSON();
|
|
332
|
-
const
|
|
358
|
+
const isRequired = renderer
|
|
333
359
|
.create(
|
|
334
360
|
<CheckboxGroup
|
|
335
|
-
labelText="
|
|
336
|
-
name="
|
|
337
|
-
id="
|
|
338
|
-
|
|
361
|
+
labelText="required"
|
|
362
|
+
name="required"
|
|
363
|
+
id="required"
|
|
364
|
+
isRequired
|
|
339
365
|
>
|
|
340
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
341
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
366
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
367
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
342
368
|
</CheckboxGroup>
|
|
343
369
|
)
|
|
344
370
|
.toJSON();
|
|
345
|
-
const
|
|
371
|
+
const noRequiredLabel = renderer
|
|
346
372
|
.create(
|
|
347
373
|
<CheckboxGroup
|
|
348
|
-
labelText="required"
|
|
349
|
-
name="
|
|
350
|
-
id="
|
|
374
|
+
labelText="no optional or required label"
|
|
375
|
+
name="noRequiredLabel"
|
|
376
|
+
id="noRequiredLabel"
|
|
351
377
|
isRequired
|
|
378
|
+
showRequiredLabel={false}
|
|
352
379
|
>
|
|
353
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
354
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
380
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
381
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
355
382
|
</CheckboxGroup>
|
|
356
383
|
)
|
|
357
384
|
.toJSON();
|
|
@@ -363,8 +390,8 @@ describe("Checkbox", () => {
|
|
|
363
390
|
id="invalid"
|
|
364
391
|
isInvalid
|
|
365
392
|
>
|
|
366
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
367
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
393
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
394
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
368
395
|
</CheckboxGroup>
|
|
369
396
|
)
|
|
370
397
|
.toJSON();
|
|
@@ -376,8 +403,8 @@ describe("Checkbox", () => {
|
|
|
376
403
|
id="disabled"
|
|
377
404
|
isDisabled
|
|
378
405
|
>
|
|
379
|
-
<Checkbox value="2" labelText="Checkbox 2" />
|
|
380
|
-
<Checkbox value="3" labelText="Checkbox 3" />
|
|
406
|
+
<Checkbox id="checkbox2" value="2" labelText="Checkbox 2" />
|
|
407
|
+
<Checkbox id="checkbox3" value="3" labelText="Checkbox 3" />
|
|
381
408
|
</CheckboxGroup>
|
|
382
409
|
)
|
|
383
410
|
.toJSON();
|
|
@@ -414,17 +441,46 @@ describe("Checkbox", () => {
|
|
|
414
441
|
</CheckboxGroup>
|
|
415
442
|
)
|
|
416
443
|
.toJSON();
|
|
444
|
+
const withChakraProps = renderer
|
|
445
|
+
.create(
|
|
446
|
+
<CheckboxGroup
|
|
447
|
+
labelText="chakraProps"
|
|
448
|
+
name="chakraProps"
|
|
449
|
+
id="chakraProps"
|
|
450
|
+
p="s"
|
|
451
|
+
color="ui.error.primary"
|
|
452
|
+
>
|
|
453
|
+
<Checkbox id="2" value="2" labelText="Checkbox 2" />
|
|
454
|
+
<Checkbox id="3" value="3" labelText="Checkbox 3" />
|
|
455
|
+
</CheckboxGroup>
|
|
456
|
+
)
|
|
457
|
+
.toJSON();
|
|
458
|
+
const withOtherProps = renderer
|
|
459
|
+
.create(
|
|
460
|
+
<CheckboxGroup
|
|
461
|
+
labelText="otherProps"
|
|
462
|
+
name="otherProps"
|
|
463
|
+
id="otherProps"
|
|
464
|
+
data-testid="props"
|
|
465
|
+
>
|
|
466
|
+
<Checkbox id="2" value="2" labelText="Checkbox 2" />
|
|
467
|
+
<Checkbox id="3" value="3" labelText="Checkbox 3" />
|
|
468
|
+
</CheckboxGroup>
|
|
469
|
+
)
|
|
470
|
+
.toJSON();
|
|
417
471
|
|
|
418
472
|
expect(column).toMatchSnapshot();
|
|
419
473
|
expect(row).toMatchSnapshot();
|
|
420
474
|
expect(noLabel).toMatchSnapshot();
|
|
421
475
|
expect(helperText).toMatchSnapshot();
|
|
422
476
|
expect(invalidText).toMatchSnapshot();
|
|
423
|
-
expect(
|
|
477
|
+
expect(noRequiredLabel).toMatchSnapshot();
|
|
424
478
|
expect(isRequired).toMatchSnapshot();
|
|
425
479
|
expect(isInvalid).toMatchSnapshot();
|
|
426
480
|
expect(isDisabled).toMatchSnapshot();
|
|
427
481
|
expect(withJSXCheckboxLabels).toMatchSnapshot();
|
|
482
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
483
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
428
484
|
});
|
|
429
485
|
|
|
430
486
|
it("should throw warning when a non-Checkbox component is used as a child", () => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import {
|
|
3
|
-
|
|
2
|
+
chakra,
|
|
4
3
|
CheckboxGroup as ChakraCheckboxGroup,
|
|
5
4
|
Stack,
|
|
6
5
|
useMultiStyleConfig,
|
|
7
6
|
} from "@chakra-ui/react";
|
|
7
|
+
import * as React from "react";
|
|
8
8
|
|
|
9
9
|
import Checkbox from "../Checkbox/Checkbox";
|
|
10
10
|
import Fieldset from "../Fieldset/Fieldset";
|
|
@@ -13,8 +13,6 @@ import HelperErrorText, {
|
|
|
13
13
|
} from "../HelperErrorText/HelperErrorText";
|
|
14
14
|
import { LayoutTypes } from "../../helpers/enums";
|
|
15
15
|
import { spacing } from "../../theme/foundations/spacing";
|
|
16
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
17
|
-
|
|
18
16
|
export interface CheckboxGroupProps {
|
|
19
17
|
/** Any child node passed to the component. */
|
|
20
18
|
children: React.ReactNode;
|
|
@@ -23,7 +21,7 @@ export interface CheckboxGroupProps {
|
|
|
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,13 +42,14 @@ export interface CheckboxGroupProps {
|
|
|
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 = () => {};
|
|
@@ -61,13 +60,13 @@ const noop = () => {};
|
|
|
61
60
|
* wrapping and associated text elements, but the checkbox input elements
|
|
62
61
|
* _need_ to be child `Checkbox` components from the NYPL Design System.
|
|
63
62
|
*/
|
|
64
|
-
const CheckboxGroup =
|
|
65
|
-
(props, ref?) => {
|
|
63
|
+
export const CheckboxGroup = chakra(
|
|
64
|
+
React.forwardRef<HTMLInputElement, CheckboxGroupProps>((props, ref?) => {
|
|
66
65
|
const {
|
|
67
66
|
children,
|
|
68
67
|
defaultValue = [],
|
|
69
68
|
helperText,
|
|
70
|
-
id
|
|
69
|
+
id,
|
|
71
70
|
invalidText,
|
|
72
71
|
isDisabled = false,
|
|
73
72
|
isFullWidth = false,
|
|
@@ -77,12 +76,16 @@ const CheckboxGroup = React.forwardRef<HTMLInputElement, CheckboxGroupProps>(
|
|
|
77
76
|
layout = LayoutTypes.Column,
|
|
78
77
|
name,
|
|
79
78
|
onChange,
|
|
80
|
-
optReqFlag = true,
|
|
81
79
|
showHelperInvalidText = true,
|
|
82
80
|
showLabel = true,
|
|
81
|
+
showRequiredLabel = true,
|
|
82
|
+
...rest
|
|
83
83
|
} = props;
|
|
84
84
|
const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
|
|
85
|
-
const spacingProp =
|
|
85
|
+
const spacingProp =
|
|
86
|
+
layout === LayoutTypes.Column
|
|
87
|
+
? spacing.input.group.default.vstack
|
|
88
|
+
: spacing.input.group.default.hstack;
|
|
86
89
|
const newChildren = [];
|
|
87
90
|
const checkboxProps =
|
|
88
91
|
defaultValue && onChange
|
|
@@ -92,6 +95,12 @@ const CheckboxGroup = React.forwardRef<HTMLInputElement, CheckboxGroupProps>(
|
|
|
92
95
|
}
|
|
93
96
|
: {};
|
|
94
97
|
|
|
98
|
+
if (!id) {
|
|
99
|
+
console.warn(
|
|
100
|
+
"NYPL Reservoir CheckboxGroup: This component's required `id` prop was not passed."
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
95
104
|
// Go through the Checkbox children and update them as needed.
|
|
96
105
|
React.Children.map(children, (child: React.ReactElement, i) => {
|
|
97
106
|
if (child.type !== Checkbox) {
|
|
@@ -126,8 +135,10 @@ const CheckboxGroup = React.forwardRef<HTMLInputElement, CheckboxGroupProps>(
|
|
|
126
135
|
<Fieldset
|
|
127
136
|
id={`${id}-checkbox-group`}
|
|
128
137
|
isLegendHidden={!showLabel}
|
|
138
|
+
isRequired={isRequired}
|
|
129
139
|
legendText={labelText}
|
|
130
|
-
|
|
140
|
+
showRequiredLabel={showRequiredLabel}
|
|
141
|
+
{...rest}
|
|
131
142
|
>
|
|
132
143
|
<ChakraCheckboxGroup {...checkboxProps}>
|
|
133
144
|
<Stack
|
|
@@ -143,17 +154,16 @@ const CheckboxGroup = React.forwardRef<HTMLInputElement, CheckboxGroupProps>(
|
|
|
143
154
|
</Stack>
|
|
144
155
|
</ChakraCheckboxGroup>
|
|
145
156
|
{footnote && showHelperInvalidText && (
|
|
146
|
-
<
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
</Box>
|
|
157
|
+
<HelperErrorText
|
|
158
|
+
additionalStyles={styles.helperErrorText}
|
|
159
|
+
id={`${id}-helperErrorText`}
|
|
160
|
+
isInvalid={isInvalid}
|
|
161
|
+
text={footnote}
|
|
162
|
+
/>
|
|
153
163
|
)}
|
|
154
164
|
</Fieldset>
|
|
155
165
|
);
|
|
156
|
-
}
|
|
166
|
+
})
|
|
157
167
|
);
|
|
158
168
|
|
|
159
169
|
export default CheckboxGroup;
|