@nypl/design-system-react-components 0.25.12 → 0.26.1
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 +131 -1
- package/README.md +10 -10
- package/dist/components/Accordion/Accordion.d.ts +6 -4
- package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +22 -29
- package/dist/components/Checkbox/Checkbox.d.ts +3 -3
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
- 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 +5 -5
- package/dist/components/Heading/HeadingTypes.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +9 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Icons/IconTypes.d.ts +1 -0
- package/dist/components/Image/Image.d.ts +27 -9
- package/dist/components/Image/ImageTypes.d.ts +4 -4
- 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 +4 -2
- package/dist/components/Notification/Notification.d.ts +7 -7
- 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 +5 -7
- package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
- package/dist/components/SearchBar/SearchBar.d.ts +4 -4
- package/dist/components/Select/Select.d.ts +12 -8
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
- 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 +10 -23
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +7 -6
- package/dist/components/Template/Template.d.ts +17 -8
- package/dist/components/Text/Text.d.ts +4 -4
- package/dist/components/Text/TextTypes.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +7 -7
- package/dist/components/Toggle/Toggle.d.ts +8 -10
- package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +2075 -1468
- 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 +2086 -1483
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/helpers/enums.d.ts +4 -0
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +11 -9
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +7 -12
- package/dist/theme/components/breadcrumb.d.ts +3 -0
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +44 -24
- package/dist/theme/components/checkbox.d.ts +6 -4
- package/dist/theme/components/checkboxGroup.d.ts +4 -2
- 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 +25 -18
- 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 +21 -15
- package/dist/theme/components/image.d.ts +1 -1
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +99 -9
- package/dist/theme/components/notification.d.ts +4 -4
- package/dist/theme/components/pagination.d.ts +2 -5
- package/dist/theme/components/radio.d.ts +7 -4
- package/dist/theme/components/radioGroup.d.ts +4 -2
- package/dist/theme/components/select.d.ts +37 -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 +20 -5
- 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/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
- package/src/components/Accordion/Accordion.stories.mdx +150 -66
- package/src/components/Accordion/Accordion.test.tsx +65 -17
- package/src/components/Accordion/Accordion.tsx +61 -27
- package/src/components/Accordion/AccordionTypes.tsx +5 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +37 -19
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +57 -36
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -1
- 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 +493 -329
- package/src/components/Card/Card.test.tsx +138 -18
- package/src/components/Card/Card.tsx +151 -85
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +221 -101
- package/src/components/Chakra/Center.stories.mdx +2 -2
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
- package/src/components/Checkbox/Checkbox.test.tsx +89 -10
- package/src/components/Checkbox/Checkbox.tsx +26 -16
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
- 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 +94 -15
- package/src/components/DatePicker/DatePicker.tsx +67 -58
- 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 +118 -47
- package/src/components/Form/Form.test.tsx +59 -16
- package/src/components/Form/Form.tsx +89 -65
- 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 +87 -41
- package/src/components/Grid/SimpleGrid.test.tsx +24 -9
- 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 +56 -25
- package/src/components/Heading/Heading.test.tsx +17 -7
- package/src/components/Heading/Heading.tsx +60 -58
- package/src/components/Heading/HeadingTypes.tsx +1 -1
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
- 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 +143 -113
- package/src/components/Hero/Hero.test.tsx +146 -58
- package/src/components/Hero/Hero.tsx +144 -112
- 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 -17
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +80 -23
- package/src/components/Icons/Icon.test.tsx +51 -2
- package/src/components/Icons/Icon.tsx +93 -71
- package/src/components/Icons/IconTypes.tsx +1 -0
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +160 -71
- package/src/components/Image/Image.test.tsx +40 -48
- package/src/components/Image/Image.tsx +80 -48
- package/src/components/Image/ImageTypes.ts +4 -4
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
- 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 +16 -9
- 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 +73 -22
- package/src/components/List/List.tsx +44 -28
- 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 +40 -16
- package/src/components/Logo/Logo.test.tsx +29 -2
- package/src/components/Logo/Logo.tsx +28 -11
- package/src/components/Logo/LogoSvgs.tsx +4 -0
- package/src/components/Logo/LogoTypes.tsx +3 -1
- 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 +29 -5
- package/src/components/Notification/Notification.test.tsx +23 -0
- package/src/components/Notification/Notification.tsx +53 -51
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
- package/src/components/Pagination/Pagination.stories.mdx +27 -6
- package/src/components/Pagination/Pagination.test.tsx +55 -2
- package/src/components/Pagination/Pagination.tsx +12 -9
- 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 +87 -13
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +75 -11
- package/src/components/Radio/Radio.test.tsx +83 -9
- package/src/components/Radio/Radio.tsx +70 -62
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +163 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
- package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
- package/src/components/RadioGroup/RadioGroup.tsx +110 -101
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
- 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 +20 -11
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +151 -62
- package/src/components/Select/Select.test.tsx +56 -44
- package/src/components/Select/Select.tsx +125 -104
- 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 +53 -23
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +123 -41
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +30 -23
- 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 +19 -1
- 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 +229 -61
- package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
- package/src/components/StructuredContent/StructuredContent.tsx +98 -103
- 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 +4 -4
- 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 +47 -33
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +16 -1
- package/src/components/Table/Table.tsx +10 -8
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +59 -10
- package/src/components/Tabs/Tabs.test.tsx +29 -11
- package/src/components/Tabs/Tabs.tsx +28 -21
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +73 -32
- package/src/components/Template/Template.test.tsx +68 -5
- package/src/components/Template/Template.tsx +89 -71
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
- package/src/components/Text/Text.stories.mdx +32 -15
- package/src/components/Text/Text.test.tsx +14 -11
- package/src/components/Text/Text.tsx +13 -16
- package/src/components/Text/TextTypes.tsx +1 -1
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +73 -27
- package/src/components/TextInput/TextInput.test.tsx +65 -50
- package/src/components/TextInput/TextInput.tsx +123 -115
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +74 -26
- package/src/components/Toggle/Toggle.test.tsx +41 -10
- package/src/components/Toggle/Toggle.tsx +29 -26
- package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +191 -4
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
- package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
- 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 +168 -0
- package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
- package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +31 -7
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +11 -15
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/theme/components/accordion.ts +7 -12
- package/src/theme/components/breadcrumb.ts +3 -0
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +56 -36
- package/src/theme/components/checkbox.ts +10 -8
- package/src/theme/components/checkboxGroup.ts +4 -2
- 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 +29 -23
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +14 -16
- package/src/theme/components/icon.ts +5 -2
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +73 -66
- package/src/theme/components/notification.ts +7 -7
- package/src/theme/components/pagination.ts +2 -5
- package/src/theme/components/progressIndicator.ts +3 -3
- package/src/theme/components/radio.ts +9 -9
- package/src/theme/components/radioGroup.ts +4 -2
- package/src/theme/components/select.ts +35 -16
- 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 +43 -13
- 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 +28 -21
- package/dist/components/Card/CardTypes.d.ts +0 -4
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
- package/src/docs/Intro.stories.mdx +0 -53
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -1,16 +1,32 @@
|
|
|
1
|
+
import { Flex, Spacer } from "@chakra-ui/react";
|
|
1
2
|
import * as React from "react";
|
|
2
3
|
import { render, screen } from "@testing-library/react";
|
|
3
4
|
import { axe } from "jest-axe";
|
|
4
5
|
import renderer from "react-test-renderer";
|
|
5
6
|
|
|
6
|
-
import * as generateUUID from "../../helpers/generateUUID";
|
|
7
7
|
import Radio from "./Radio";
|
|
8
8
|
|
|
9
9
|
describe("Radio Accessibility", () => {
|
|
10
|
-
it("passes axe accessibility", async () => {
|
|
10
|
+
it("passes axe accessibility test with string label", async () => {
|
|
11
11
|
const { container } = render(<Radio id="inputID" labelText="Test Label" />);
|
|
12
12
|
expect(await axe(container)).toHaveNoViolations();
|
|
13
13
|
});
|
|
14
|
+
|
|
15
|
+
it("passes axe accessibility test with jsx label", async () => {
|
|
16
|
+
const { container } = render(
|
|
17
|
+
<Radio
|
|
18
|
+
id="jsxLabel"
|
|
19
|
+
labelText={
|
|
20
|
+
<Flex>
|
|
21
|
+
<span>Arts</span>
|
|
22
|
+
<Spacer />
|
|
23
|
+
<span>4</span>
|
|
24
|
+
</Flex>
|
|
25
|
+
}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
29
|
+
});
|
|
14
30
|
});
|
|
15
31
|
|
|
16
32
|
describe("Radio Button", () => {
|
|
@@ -76,13 +92,6 @@ describe("Radio Button", () => {
|
|
|
76
92
|
expect(screen.getByRole("radio")).toHaveAttribute("id", "inputID");
|
|
77
93
|
});
|
|
78
94
|
|
|
79
|
-
it("calls the UUID generation function if no id prop value is passed", () => {
|
|
80
|
-
const generateUUIDSpy = jest.spyOn(generateUUID, "default");
|
|
81
|
-
expect(generateUUIDSpy).toHaveBeenCalledTimes(0);
|
|
82
|
-
render(<Radio labelText="Hello" />);
|
|
83
|
-
expect(generateUUIDSpy).toHaveBeenCalledTimes(1);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
95
|
it("sets the 'checked' attribute", () => {
|
|
87
96
|
render(
|
|
88
97
|
<Radio
|
|
@@ -147,6 +156,40 @@ describe("Radio Button", () => {
|
|
|
147
156
|
expect(screen.queryByText("There is an error!")).not.toBeInTheDocument();
|
|
148
157
|
});
|
|
149
158
|
|
|
159
|
+
it("logs a warning if `labelText` is not a string and `showLabel` is false", () => {
|
|
160
|
+
const warn = jest.spyOn(console, "warn");
|
|
161
|
+
render(
|
|
162
|
+
<Radio
|
|
163
|
+
id="radio"
|
|
164
|
+
value="arts"
|
|
165
|
+
labelText={
|
|
166
|
+
<Flex>
|
|
167
|
+
<span>Arts</span>
|
|
168
|
+
<Spacer />
|
|
169
|
+
<span>4</span>
|
|
170
|
+
</Flex>
|
|
171
|
+
}
|
|
172
|
+
showLabel={false}
|
|
173
|
+
/>
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
expect(warn).toHaveBeenCalledWith(
|
|
177
|
+
"NYPL Reservoir Radio: `labelText` must be a string when `showLabel` is false."
|
|
178
|
+
);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("logs a warning when there is no `id` passed", () => {
|
|
182
|
+
const warn = jest.spyOn(console, "warn");
|
|
183
|
+
render(
|
|
184
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
185
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
186
|
+
<Radio labelText="Arts" />
|
|
187
|
+
);
|
|
188
|
+
expect(warn).toHaveBeenCalledWith(
|
|
189
|
+
"NYPL Reservoir Radio: This component's required `id` prop was not passed."
|
|
190
|
+
);
|
|
191
|
+
});
|
|
192
|
+
|
|
150
193
|
it("renders the UI snapshot correctly", () => {
|
|
151
194
|
const primary = renderer
|
|
152
195
|
.create(<Radio id="inputID" labelText="Test Label" />)
|
|
@@ -163,11 +206,42 @@ describe("Radio Button", () => {
|
|
|
163
206
|
const isDisabled = renderer
|
|
164
207
|
.create(<Radio id="radio-disabled" labelText="Test Label" isDisabled />)
|
|
165
208
|
.toJSON();
|
|
209
|
+
const withJSXLabel = renderer
|
|
210
|
+
.create(
|
|
211
|
+
<Radio
|
|
212
|
+
id="jsxLabel"
|
|
213
|
+
labelText={
|
|
214
|
+
<Flex>
|
|
215
|
+
<span>Arts</span>
|
|
216
|
+
<Spacer />
|
|
217
|
+
<span>4</span>
|
|
218
|
+
</Flex>
|
|
219
|
+
}
|
|
220
|
+
value="arts"
|
|
221
|
+
/>
|
|
222
|
+
)
|
|
223
|
+
.toJSON();
|
|
224
|
+
const withChakraProps = renderer
|
|
225
|
+
.create(
|
|
226
|
+
<Radio
|
|
227
|
+
id="chakra"
|
|
228
|
+
labelText="Test Label"
|
|
229
|
+
p="20px"
|
|
230
|
+
color="ui.error.primary"
|
|
231
|
+
/>
|
|
232
|
+
)
|
|
233
|
+
.toJSON();
|
|
234
|
+
const withOtherProps = renderer
|
|
235
|
+
.create(<Radio id="props" labelText="Test Label" data-testid="props" />)
|
|
236
|
+
.toJSON();
|
|
166
237
|
|
|
167
238
|
expect(primary).toMatchSnapshot();
|
|
168
239
|
expect(isChecked).toMatchSnapshot();
|
|
169
240
|
expect(isRequired).toMatchSnapshot();
|
|
170
241
|
expect(isInvalid).toMatchSnapshot();
|
|
171
242
|
expect(isDisabled).toMatchSnapshot();
|
|
243
|
+
expect(withJSXLabel).toMatchSnapshot();
|
|
244
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
245
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
172
246
|
});
|
|
173
247
|
});
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import {
|
|
3
|
-
|
|
2
|
+
chakra,
|
|
4
3
|
Radio as ChakraRadio,
|
|
5
4
|
useMultiStyleConfig,
|
|
6
5
|
} from "@chakra-ui/react";
|
|
6
|
+
import * as React from "react";
|
|
7
7
|
|
|
8
8
|
import HelperErrorText, {
|
|
9
9
|
HelperErrorTextType,
|
|
10
10
|
} from "../HelperErrorText/HelperErrorText";
|
|
11
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
12
|
-
|
|
13
11
|
export interface RadioProps {
|
|
14
12
|
/** Additional class name. */
|
|
15
13
|
className?: string;
|
|
16
14
|
/** Optional string to populate the HelperErrorText for the standard state. */
|
|
17
15
|
helperText?: HelperErrorTextType;
|
|
18
16
|
/** ID that other components can cross reference for accessibility purposes */
|
|
19
|
-
id
|
|
17
|
+
id: string;
|
|
20
18
|
/** Optional string to populate the HelperErrorText for the error state
|
|
21
19
|
* when `isInvalid` is true.
|
|
22
20
|
*/
|
|
@@ -26,19 +24,17 @@ export interface RadioProps {
|
|
|
26
24
|
* Learn more about controlled and uncontrolled form fields: https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ */
|
|
27
25
|
isChecked?: boolean;
|
|
28
26
|
/** Adds the 'disabled' and `aria-disabled` attributes to the input when true.
|
|
29
|
-
* This also makes the text italic and color scheme gray.
|
|
30
|
-
*/
|
|
27
|
+
* This also makes the text italic and color scheme gray. */
|
|
31
28
|
isDisabled?: boolean;
|
|
32
29
|
/** Adds the 'aria-invalid' attribute to the input when true. This also makes
|
|
33
|
-
* the color theme "NYPL error" red for the button and text.
|
|
34
|
-
*/
|
|
30
|
+
* the color theme "NYPL error" red for the button and text. */
|
|
35
31
|
isInvalid?: boolean;
|
|
36
32
|
/** Adds the 'required' attribute to the input when true. */
|
|
37
33
|
isRequired?: boolean;
|
|
38
34
|
/** The radio button's label. This will serve as the text content for the
|
|
39
35
|
* `<label>` element if `showlabel` is true, or an "aria-label" if `showLabel`
|
|
40
36
|
* is false. */
|
|
41
|
-
labelText: string;
|
|
37
|
+
labelText: string | JSX.Element;
|
|
42
38
|
/** Used to reference the input element in forms. */
|
|
43
39
|
name?: string;
|
|
44
40
|
/** Should be passed along with `isChecked` for controlled components. */
|
|
@@ -52,66 +48,78 @@ export interface RadioProps {
|
|
|
52
48
|
value?: string;
|
|
53
49
|
}
|
|
54
50
|
|
|
55
|
-
const Radio =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
51
|
+
export const Radio = chakra(
|
|
52
|
+
React.forwardRef<HTMLInputElement, RadioProps>((props, ref?) => {
|
|
53
|
+
const {
|
|
54
|
+
className,
|
|
55
|
+
helperText,
|
|
56
|
+
id,
|
|
57
|
+
invalidText,
|
|
58
|
+
isChecked,
|
|
59
|
+
isDisabled = false,
|
|
60
|
+
isInvalid = false,
|
|
61
|
+
isRequired = false,
|
|
62
|
+
labelText,
|
|
63
|
+
name,
|
|
64
|
+
onChange,
|
|
65
|
+
showHelperInvalidText = true,
|
|
66
|
+
showLabel = true,
|
|
67
|
+
value,
|
|
68
|
+
...rest
|
|
69
|
+
} = props;
|
|
70
|
+
const styles = useMultiStyleConfig("Radio", {});
|
|
71
|
+
const footnote = isInvalid ? invalidText : helperText;
|
|
72
|
+
const attributes = {};
|
|
73
|
+
|
|
74
|
+
if (!id) {
|
|
75
|
+
console.warn(
|
|
76
|
+
"NYPL Reservoir Radio: This component's required `id` prop was not passed."
|
|
77
|
+
);
|
|
78
|
+
}
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
if (!showLabel) {
|
|
81
|
+
if (typeof labelText !== "string") {
|
|
82
|
+
console.warn(
|
|
83
|
+
"NYPL Reservoir Radio: `labelText` must be a string when `showLabel` is false."
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
attributes["aria-label"] =
|
|
87
|
+
labelText && footnote ? `${labelText} - ${footnote}` : labelText;
|
|
88
|
+
} else if (footnote) {
|
|
81
89
|
attributes["aria-describedby"] = `${id}-helperText`;
|
|
82
90
|
}
|
|
83
|
-
}
|
|
84
91
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
92
|
+
return (
|
|
93
|
+
<>
|
|
94
|
+
<ChakraRadio
|
|
95
|
+
className={className}
|
|
96
|
+
id={id}
|
|
97
|
+
isChecked={isChecked}
|
|
98
|
+
isDisabled={isDisabled}
|
|
99
|
+
isInvalid={isInvalid}
|
|
100
|
+
isRequired={isRequired}
|
|
101
|
+
name={name}
|
|
102
|
+
onChange={onChange}
|
|
103
|
+
value={value}
|
|
104
|
+
ref={ref}
|
|
105
|
+
alignItems="flex-start"
|
|
106
|
+
__css={styles}
|
|
107
|
+
{...attributes}
|
|
108
|
+
{...rest}
|
|
109
|
+
>
|
|
110
|
+
{showLabel && labelText}
|
|
111
|
+
</ChakraRadio>
|
|
112
|
+
{footnote && showHelperInvalidText && (
|
|
106
113
|
<HelperErrorText
|
|
114
|
+
additionalStyles={styles.helperErrorText}
|
|
107
115
|
id={`${id}-helperText`}
|
|
108
116
|
isInvalid={isInvalid}
|
|
109
117
|
text={footnote}
|
|
110
118
|
/>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
)
|
|
115
|
-
|
|
119
|
+
)}
|
|
120
|
+
</>
|
|
121
|
+
);
|
|
122
|
+
})
|
|
123
|
+
);
|
|
116
124
|
|
|
117
125
|
export default Radio;
|
|
@@ -32,7 +32,7 @@ exports[`Radio Button renders the UI snapshot correctly 1`] = `
|
|
|
32
32
|
/>
|
|
33
33
|
<span
|
|
34
34
|
aria-hidden={true}
|
|
35
|
-
className="css-
|
|
35
|
+
className="css-14wybg9"
|
|
36
36
|
onMouseDown={[Function]}
|
|
37
37
|
onMouseEnter={[Function]}
|
|
38
38
|
onMouseLeave={[Function]}
|
|
@@ -81,7 +81,7 @@ exports[`Radio Button renders the UI snapshot correctly 2`] = `
|
|
|
81
81
|
/>
|
|
82
82
|
<span
|
|
83
83
|
aria-hidden={true}
|
|
84
|
-
className="css-
|
|
84
|
+
className="css-14wybg9"
|
|
85
85
|
data-checked=""
|
|
86
86
|
onMouseDown={[Function]}
|
|
87
87
|
onMouseEnter={[Function]}
|
|
@@ -132,7 +132,7 @@ exports[`Radio Button renders the UI snapshot correctly 3`] = `
|
|
|
132
132
|
/>
|
|
133
133
|
<span
|
|
134
134
|
aria-hidden={true}
|
|
135
|
-
className="css-
|
|
135
|
+
className="css-14wybg9"
|
|
136
136
|
onMouseDown={[Function]}
|
|
137
137
|
onMouseEnter={[Function]}
|
|
138
138
|
onMouseLeave={[Function]}
|
|
@@ -182,7 +182,7 @@ exports[`Radio Button renders the UI snapshot correctly 4`] = `
|
|
|
182
182
|
/>
|
|
183
183
|
<span
|
|
184
184
|
aria-hidden={true}
|
|
185
|
-
className="css-
|
|
185
|
+
className="css-14wybg9"
|
|
186
186
|
data-invalid=""
|
|
187
187
|
onMouseDown={[Function]}
|
|
188
188
|
onMouseEnter={[Function]}
|
|
@@ -234,7 +234,7 @@ exports[`Radio Button renders the UI snapshot correctly 5`] = `
|
|
|
234
234
|
/>
|
|
235
235
|
<span
|
|
236
236
|
aria-hidden={true}
|
|
237
|
-
className="css-
|
|
237
|
+
className="css-14wybg9"
|
|
238
238
|
data-disabled=""
|
|
239
239
|
onMouseDown={[Function]}
|
|
240
240
|
onMouseEnter={[Function]}
|
|
@@ -251,3 +251,161 @@ exports[`Radio Button renders the UI snapshot correctly 5`] = `
|
|
|
251
251
|
</span>
|
|
252
252
|
</label>
|
|
253
253
|
`;
|
|
254
|
+
|
|
255
|
+
exports[`Radio Button renders the UI snapshot correctly 6`] = `
|
|
256
|
+
<label
|
|
257
|
+
className="chakra-radio css-13p0l12"
|
|
258
|
+
>
|
|
259
|
+
<input
|
|
260
|
+
checked={false}
|
|
261
|
+
className="chakra-radio__input"
|
|
262
|
+
disabled={false}
|
|
263
|
+
id="jsxLabel"
|
|
264
|
+
onBlur={[Function]}
|
|
265
|
+
onChange={[Function]}
|
|
266
|
+
onFocus={[Function]}
|
|
267
|
+
onKeyDown={[Function]}
|
|
268
|
+
onKeyUp={[Function]}
|
|
269
|
+
required={false}
|
|
270
|
+
style={
|
|
271
|
+
Object {
|
|
272
|
+
"border": "0px",
|
|
273
|
+
"clip": "rect(0px, 0px, 0px, 0px)",
|
|
274
|
+
"height": "1px",
|
|
275
|
+
"margin": "-1px",
|
|
276
|
+
"overflow": "hidden",
|
|
277
|
+
"padding": "0px",
|
|
278
|
+
"position": "absolute",
|
|
279
|
+
"whiteSpace": "nowrap",
|
|
280
|
+
"width": "1px",
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
type="radio"
|
|
284
|
+
value="arts"
|
|
285
|
+
/>
|
|
286
|
+
<span
|
|
287
|
+
aria-hidden={true}
|
|
288
|
+
className="css-14wybg9"
|
|
289
|
+
onMouseDown={[Function]}
|
|
290
|
+
onMouseEnter={[Function]}
|
|
291
|
+
onMouseLeave={[Function]}
|
|
292
|
+
onMouseUp={[Function]}
|
|
293
|
+
/>
|
|
294
|
+
<span
|
|
295
|
+
className="chakra-radio__label css-1y8kf23"
|
|
296
|
+
onMouseDown={[Function]}
|
|
297
|
+
onTouchStart={[Function]}
|
|
298
|
+
>
|
|
299
|
+
<div
|
|
300
|
+
className="css-k008qs"
|
|
301
|
+
>
|
|
302
|
+
<span>
|
|
303
|
+
Arts
|
|
304
|
+
</span>
|
|
305
|
+
<div
|
|
306
|
+
className="css-17xejub"
|
|
307
|
+
/>
|
|
308
|
+
<span>
|
|
309
|
+
4
|
|
310
|
+
</span>
|
|
311
|
+
</div>
|
|
312
|
+
</span>
|
|
313
|
+
</label>
|
|
314
|
+
`;
|
|
315
|
+
|
|
316
|
+
exports[`Radio Button renders the UI snapshot correctly 7`] = `
|
|
317
|
+
<label
|
|
318
|
+
className="chakra-radio css-13p0l12"
|
|
319
|
+
>
|
|
320
|
+
<input
|
|
321
|
+
checked={false}
|
|
322
|
+
className="chakra-radio__input"
|
|
323
|
+
disabled={false}
|
|
324
|
+
id="chakra"
|
|
325
|
+
onBlur={[Function]}
|
|
326
|
+
onChange={[Function]}
|
|
327
|
+
onFocus={[Function]}
|
|
328
|
+
onKeyDown={[Function]}
|
|
329
|
+
onKeyUp={[Function]}
|
|
330
|
+
required={false}
|
|
331
|
+
style={
|
|
332
|
+
Object {
|
|
333
|
+
"border": "0px",
|
|
334
|
+
"clip": "rect(0px, 0px, 0px, 0px)",
|
|
335
|
+
"height": "1px",
|
|
336
|
+
"margin": "-1px",
|
|
337
|
+
"overflow": "hidden",
|
|
338
|
+
"padding": "0px",
|
|
339
|
+
"position": "absolute",
|
|
340
|
+
"whiteSpace": "nowrap",
|
|
341
|
+
"width": "1px",
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
type="radio"
|
|
345
|
+
/>
|
|
346
|
+
<span
|
|
347
|
+
aria-hidden={true}
|
|
348
|
+
className="css-1dwi2jm"
|
|
349
|
+
onMouseDown={[Function]}
|
|
350
|
+
onMouseEnter={[Function]}
|
|
351
|
+
onMouseLeave={[Function]}
|
|
352
|
+
onMouseUp={[Function]}
|
|
353
|
+
/>
|
|
354
|
+
<span
|
|
355
|
+
className="chakra-radio__label css-1y8kf23"
|
|
356
|
+
onMouseDown={[Function]}
|
|
357
|
+
onTouchStart={[Function]}
|
|
358
|
+
>
|
|
359
|
+
Test Label
|
|
360
|
+
</span>
|
|
361
|
+
</label>
|
|
362
|
+
`;
|
|
363
|
+
|
|
364
|
+
exports[`Radio Button renders the UI snapshot correctly 8`] = `
|
|
365
|
+
<label
|
|
366
|
+
className="chakra-radio css-13p0l12"
|
|
367
|
+
>
|
|
368
|
+
<input
|
|
369
|
+
checked={false}
|
|
370
|
+
className="chakra-radio__input"
|
|
371
|
+
disabled={false}
|
|
372
|
+
id="props"
|
|
373
|
+
onBlur={[Function]}
|
|
374
|
+
onChange={[Function]}
|
|
375
|
+
onFocus={[Function]}
|
|
376
|
+
onKeyDown={[Function]}
|
|
377
|
+
onKeyUp={[Function]}
|
|
378
|
+
required={false}
|
|
379
|
+
style={
|
|
380
|
+
Object {
|
|
381
|
+
"border": "0px",
|
|
382
|
+
"clip": "rect(0px, 0px, 0px, 0px)",
|
|
383
|
+
"height": "1px",
|
|
384
|
+
"margin": "-1px",
|
|
385
|
+
"overflow": "hidden",
|
|
386
|
+
"padding": "0px",
|
|
387
|
+
"position": "absolute",
|
|
388
|
+
"whiteSpace": "nowrap",
|
|
389
|
+
"width": "1px",
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
type="radio"
|
|
393
|
+
/>
|
|
394
|
+
<span
|
|
395
|
+
aria-hidden={true}
|
|
396
|
+
className="css-14wybg9"
|
|
397
|
+
data-testid="props"
|
|
398
|
+
onMouseDown={[Function]}
|
|
399
|
+
onMouseEnter={[Function]}
|
|
400
|
+
onMouseLeave={[Function]}
|
|
401
|
+
onMouseUp={[Function]}
|
|
402
|
+
/>
|
|
403
|
+
<span
|
|
404
|
+
className="chakra-radio__label css-1y8kf23"
|
|
405
|
+
onMouseDown={[Function]}
|
|
406
|
+
onTouchStart={[Function]}
|
|
407
|
+
>
|
|
408
|
+
Test Label
|
|
409
|
+
</span>
|
|
410
|
+
</label>
|
|
411
|
+
`;
|