@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
|
@@ -28,7 +28,7 @@ import DSProvider from "../../theme/provider";
|
|
|
28
28
|
isRequired: {
|
|
29
29
|
table: { defaultValue: { summary: false } },
|
|
30
30
|
},
|
|
31
|
-
|
|
31
|
+
showRequiredLabel: {
|
|
32
32
|
table: { defaultValue: { summary: false } },
|
|
33
33
|
},
|
|
34
34
|
}}
|
|
@@ -39,10 +39,20 @@ import DSProvider from "../../theme/provider";
|
|
|
39
39
|
| Component Version | DS Version |
|
|
40
40
|
| ----------------- | ---------- |
|
|
41
41
|
| Added | `0.25.3` |
|
|
42
|
-
| Latest | `0.
|
|
42
|
+
| Latest | `0.26.0` |
|
|
43
|
+
|
|
44
|
+
## Table of Contents
|
|
45
|
+
|
|
46
|
+
- [Overview](#overview)
|
|
47
|
+
- [Component Props](#component-props)
|
|
48
|
+
- [Accessibility](#accessibility)
|
|
49
|
+
|
|
50
|
+
## Overview
|
|
43
51
|
|
|
44
52
|
<Description of={Fieldset} />
|
|
45
53
|
|
|
54
|
+
## Component Props
|
|
55
|
+
|
|
46
56
|
<Canvas withToolbar>
|
|
47
57
|
<Story
|
|
48
58
|
name="Fieldset"
|
|
@@ -52,7 +62,7 @@ import DSProvider from "../../theme/provider";
|
|
|
52
62
|
isLegendHidden: false,
|
|
53
63
|
isRequired: false,
|
|
54
64
|
legendText: "This is the legend text",
|
|
55
|
-
|
|
65
|
+
showRequiredLabel: true,
|
|
56
66
|
}}
|
|
57
67
|
>
|
|
58
68
|
{(args) => (
|
|
@@ -64,3 +74,23 @@ import DSProvider from "../../theme/provider";
|
|
|
64
74
|
</Canvas>
|
|
65
75
|
|
|
66
76
|
<ArgsTable story="Fieldset" />
|
|
77
|
+
|
|
78
|
+
## Accessibility
|
|
79
|
+
|
|
80
|
+
This is a simple component but is very important to use when building web forms.
|
|
81
|
+
Syntactically, the `Fieldset` component is used to group form elements. Semantically,
|
|
82
|
+
the form elements that are group should have a similar theme or context. For
|
|
83
|
+
example, when building out a form for a user to create an account, one `Fieldset`
|
|
84
|
+
should be used to group the user's first and last names and another `Fieldset`
|
|
85
|
+
to group the user's address information.
|
|
86
|
+
|
|
87
|
+
The Reservoir DS implements the `Fieldset` component in the following form
|
|
88
|
+
components:
|
|
89
|
+
|
|
90
|
+
- `CheckboxGroup`, `DatePicker`, `RadioGroup`.
|
|
91
|
+
|
|
92
|
+
Resources:
|
|
93
|
+
|
|
94
|
+
- [W3C Grouping form controls with FIELDSET and LEGEND](https://www.w3.org/TR/2008/WD-WCAG20-TECHS-20080430/H82.html)
|
|
95
|
+
- [GOV.UK Using the fieldset and legend elements](https://accessibility.blog.gov.uk/2016/07/22/using-the-fieldset-and-legend-elements/)
|
|
96
|
+
- [MDN fieldset: The Field Set element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset)
|
|
@@ -8,7 +8,7 @@ import Fieldset from "./Fieldset";
|
|
|
8
8
|
describe("Fieldset Accessibility", () => {
|
|
9
9
|
it("passes axe accessibility", async () => {
|
|
10
10
|
const { container } = render(
|
|
11
|
-
<Fieldset legendText="Legend Text">
|
|
11
|
+
<Fieldset id="fieldset" legendText="Legend Text">
|
|
12
12
|
<p>Some other fields</p>
|
|
13
13
|
</Fieldset>
|
|
14
14
|
);
|
|
@@ -17,7 +17,7 @@ describe("Fieldset Accessibility", () => {
|
|
|
17
17
|
|
|
18
18
|
it("passes axe accessibility with the legend hidden", async () => {
|
|
19
19
|
const { container } = render(
|
|
20
|
-
<Fieldset legendText="Legend Text" isLegendHidden>
|
|
20
|
+
<Fieldset id="fieldset" legendText="Legend Text" isLegendHidden>
|
|
21
21
|
<p>Some other fields</p>
|
|
22
22
|
</Fieldset>
|
|
23
23
|
);
|
|
@@ -28,7 +28,7 @@ describe("Fieldset Accessibility", () => {
|
|
|
28
28
|
describe("Fieldset", () => {
|
|
29
29
|
it("renders text in a legend and fieldset along with its children", () => {
|
|
30
30
|
render(
|
|
31
|
-
<Fieldset legendText="Legend Text">
|
|
31
|
+
<Fieldset id="fieldset" legendText="Legend Text">
|
|
32
32
|
<p>Some other fields</p>
|
|
33
33
|
</Fieldset>
|
|
34
34
|
);
|
|
@@ -39,19 +39,9 @@ describe("Fieldset", () => {
|
|
|
39
39
|
expect(screen.getByText("Some other fields")).toBeInTheDocument();
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
it("renders '
|
|
42
|
+
it("renders '(Required)' text in the legend when `isRequired` is true", () => {
|
|
43
43
|
render(
|
|
44
|
-
<Fieldset legendText="Legend Text">
|
|
45
|
-
<p>Some other fields</p>
|
|
46
|
-
</Fieldset>
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("renders 'Required' text in the legend", () => {
|
|
53
|
-
render(
|
|
54
|
-
<Fieldset legendText="Legend Text" isRequired>
|
|
44
|
+
<Fieldset id="fieldset" legendText="Legend Text" isRequired>
|
|
55
45
|
<p>Some other fields</p>
|
|
56
46
|
</Fieldset>
|
|
57
47
|
);
|
|
@@ -59,9 +49,9 @@ describe("Fieldset", () => {
|
|
|
59
49
|
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
60
50
|
});
|
|
61
51
|
|
|
62
|
-
it("can hide the 'Required'
|
|
52
|
+
it("can hide the '(Required)' text in the legend but still show the main text", () => {
|
|
63
53
|
const { rerender } = render(
|
|
64
|
-
<Fieldset legendText="Legend Text" isRequired>
|
|
54
|
+
<Fieldset id="fieldset" legendText="Legend Text" isRequired>
|
|
65
55
|
<p>Some other fields</p>
|
|
66
56
|
</Fieldset>
|
|
67
57
|
);
|
|
@@ -69,49 +59,87 @@ describe("Fieldset", () => {
|
|
|
69
59
|
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
70
60
|
|
|
71
61
|
rerender(
|
|
72
|
-
<Fieldset
|
|
62
|
+
<Fieldset
|
|
63
|
+
id="fieldset"
|
|
64
|
+
isRequired
|
|
65
|
+
legendText="Legend Text"
|
|
66
|
+
showRequiredLabel={false}
|
|
67
|
+
>
|
|
73
68
|
<p>Some other fields</p>
|
|
74
69
|
</Fieldset>
|
|
75
70
|
);
|
|
76
71
|
|
|
77
72
|
expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
|
|
78
|
-
expect(screen.queryByText(/
|
|
73
|
+
expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
|
|
74
|
+
});
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
it("logs a warning when there is no `id` passed", () => {
|
|
77
|
+
const warn = jest.spyOn(console, "warn");
|
|
78
|
+
render(
|
|
79
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
80
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
81
|
+
<Fieldset legendText="Legend Text">
|
|
82
82
|
<p>Some other fields</p>
|
|
83
83
|
</Fieldset>
|
|
84
84
|
);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
expect(warn).toHaveBeenCalledWith(
|
|
86
|
+
"NYPL Reservoir Fieldset: This component's required `id` prop was not passed."
|
|
87
|
+
);
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
it("renders the UI snapshot correctly", () => {
|
|
91
91
|
const basic = renderer
|
|
92
92
|
.create(
|
|
93
|
-
<Fieldset legendText="Legend Text">
|
|
93
|
+
<Fieldset id="fieldset" legendText="Legend Text">
|
|
94
94
|
<p>Some other fields</p>
|
|
95
95
|
</Fieldset>
|
|
96
96
|
)
|
|
97
97
|
.toJSON();
|
|
98
98
|
const required = renderer
|
|
99
99
|
.create(
|
|
100
|
-
<Fieldset legendText="Legend Text" isRequired>
|
|
100
|
+
<Fieldset id="fieldset" legendText="Legend Text" isRequired>
|
|
101
101
|
<p>Some other fields</p>
|
|
102
102
|
</Fieldset>
|
|
103
103
|
)
|
|
104
104
|
.toJSON();
|
|
105
105
|
const hiddenHelperText = renderer
|
|
106
106
|
.create(
|
|
107
|
-
<Fieldset
|
|
107
|
+
<Fieldset
|
|
108
|
+
id="fieldset"
|
|
109
|
+
legendText="Legend Text"
|
|
110
|
+
isRequired
|
|
111
|
+
showRequiredLabel={false}
|
|
112
|
+
>
|
|
108
113
|
<p>Some other fields</p>
|
|
109
114
|
</Fieldset>
|
|
110
115
|
)
|
|
111
116
|
.toJSON();
|
|
112
117
|
const hiddenLegend = renderer
|
|
113
118
|
.create(
|
|
114
|
-
<Fieldset legendText="Legend Text" isLegendHidden>
|
|
119
|
+
<Fieldset id="fieldset" legendText="Legend Text" isLegendHidden>
|
|
120
|
+
<p>Some other fields</p>
|
|
121
|
+
</Fieldset>
|
|
122
|
+
)
|
|
123
|
+
.toJSON();
|
|
124
|
+
const withChakraProps = renderer
|
|
125
|
+
.create(
|
|
126
|
+
<Fieldset
|
|
127
|
+
id="withChakraProps"
|
|
128
|
+
legendText="Legend Text"
|
|
129
|
+
p="20px"
|
|
130
|
+
color="ui.error.primary"
|
|
131
|
+
>
|
|
132
|
+
<p>Some other fields</p>
|
|
133
|
+
</Fieldset>
|
|
134
|
+
)
|
|
135
|
+
.toJSON();
|
|
136
|
+
const withOtherProps = renderer
|
|
137
|
+
.create(
|
|
138
|
+
<Fieldset
|
|
139
|
+
id="withOtherProps"
|
|
140
|
+
legendText="Legend Text"
|
|
141
|
+
data-testid="props"
|
|
142
|
+
>
|
|
115
143
|
<p>Some other fields</p>
|
|
116
144
|
</Fieldset>
|
|
117
145
|
)
|
|
@@ -121,5 +149,7 @@ describe("Fieldset", () => {
|
|
|
121
149
|
expect(required).toMatchSnapshot();
|
|
122
150
|
expect(hiddenHelperText).toMatchSnapshot();
|
|
123
151
|
expect(hiddenLegend).toMatchSnapshot();
|
|
152
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
153
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
124
154
|
});
|
|
125
155
|
});
|
|
@@ -1,50 +1,55 @@
|
|
|
1
|
+
import { Box, chakra, useMultiStyleConfig } from "@chakra-ui/react";
|
|
1
2
|
import React from "react";
|
|
2
|
-
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
3
3
|
|
|
4
4
|
interface FieldsetProps {
|
|
5
5
|
/** Additional class name to add. */
|
|
6
6
|
className?: string;
|
|
7
7
|
/** ID that other components can cross reference for accessibility purposes */
|
|
8
|
-
id
|
|
8
|
+
id: string;
|
|
9
9
|
/** Flag to show or hide the text in the `legend` element. False by default. */
|
|
10
10
|
isLegendHidden?: boolean;
|
|
11
|
-
/** Flag to render "Required"
|
|
12
|
-
* False/"Optional" by default. */
|
|
11
|
+
/** Flag to render "Required" in the `legend`. True by default. */
|
|
13
12
|
isRequired?: boolean;
|
|
14
13
|
/** Text to display in the `legend` element. */
|
|
15
14
|
legendText?: string;
|
|
16
|
-
/**
|
|
15
|
+
/** Whether or not to display the "(Required)" text in the `legend` text.
|
|
17
16
|
* True by default. */
|
|
18
|
-
|
|
17
|
+
showRequiredLabel?: boolean;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
20
|
/**
|
|
22
21
|
* A wrapper component that renders a `fieldset` element along with a `legend`
|
|
23
22
|
* element as its first child. Commonly used to wrap form components.
|
|
24
23
|
*/
|
|
25
|
-
const Fieldset = (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
24
|
+
export const Fieldset = chakra(
|
|
25
|
+
({
|
|
26
|
+
children,
|
|
27
|
+
className,
|
|
28
|
+
id,
|
|
29
|
+
isLegendHidden = false,
|
|
30
|
+
isRequired = false,
|
|
31
|
+
legendText,
|
|
32
|
+
showRequiredLabel = true,
|
|
33
|
+
...rest
|
|
34
|
+
}: React.PropsWithChildren<FieldsetProps>) => {
|
|
35
|
+
const styles = useMultiStyleConfig("Fieldset", { isLegendHidden });
|
|
36
|
+
|
|
37
|
+
if (!id) {
|
|
38
|
+
console.warn(
|
|
39
|
+
"NYPL Reservoir Fieldset: This component's required `id` prop was not passed."
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<Box as="fieldset" id={id} __css={styles} className={className} {...rest}>
|
|
45
|
+
<legend>
|
|
46
|
+
{legendText}
|
|
47
|
+
{showRequiredLabel && isRequired && <span> (Required)</span>}
|
|
48
|
+
</legend>
|
|
49
|
+
{children}
|
|
50
|
+
</Box>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
);
|
|
49
54
|
|
|
50
55
|
export default Fieldset;
|
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Fieldset renders the UI snapshot correctly 1`] = `
|
|
4
4
|
<fieldset
|
|
5
|
-
className="css-
|
|
5
|
+
className="css-1xdhyk6"
|
|
6
|
+
id="fieldset"
|
|
6
7
|
>
|
|
7
8
|
<legend>
|
|
8
9
|
Legend Text
|
|
9
|
-
<div
|
|
10
|
-
className="css-0"
|
|
11
|
-
>
|
|
12
|
-
Optional
|
|
13
|
-
</div>
|
|
14
10
|
</legend>
|
|
15
11
|
<p>
|
|
16
12
|
Some other fields
|
|
@@ -20,15 +16,14 @@ exports[`Fieldset renders the UI snapshot correctly 1`] = `
|
|
|
20
16
|
|
|
21
17
|
exports[`Fieldset renders the UI snapshot correctly 2`] = `
|
|
22
18
|
<fieldset
|
|
23
|
-
className="css-
|
|
19
|
+
className="css-1xdhyk6"
|
|
20
|
+
id="fieldset"
|
|
24
21
|
>
|
|
25
22
|
<legend>
|
|
26
23
|
Legend Text
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
>
|
|
30
|
-
Required
|
|
31
|
-
</div>
|
|
24
|
+
<span>
|
|
25
|
+
(Required)
|
|
26
|
+
</span>
|
|
32
27
|
</legend>
|
|
33
28
|
<p>
|
|
34
29
|
Some other fields
|
|
@@ -38,7 +33,8 @@ exports[`Fieldset renders the UI snapshot correctly 2`] = `
|
|
|
38
33
|
|
|
39
34
|
exports[`Fieldset renders the UI snapshot correctly 3`] = `
|
|
40
35
|
<fieldset
|
|
41
|
-
className="css-
|
|
36
|
+
className="css-1xdhyk6"
|
|
37
|
+
id="fieldset"
|
|
42
38
|
>
|
|
43
39
|
<legend>
|
|
44
40
|
Legend Text
|
|
@@ -51,15 +47,40 @@ exports[`Fieldset renders the UI snapshot correctly 3`] = `
|
|
|
51
47
|
|
|
52
48
|
exports[`Fieldset renders the UI snapshot correctly 4`] = `
|
|
53
49
|
<fieldset
|
|
54
|
-
className="css-
|
|
50
|
+
className="css-1xdhyk6"
|
|
51
|
+
id="fieldset"
|
|
52
|
+
>
|
|
53
|
+
<legend>
|
|
54
|
+
Legend Text
|
|
55
|
+
</legend>
|
|
56
|
+
<p>
|
|
57
|
+
Some other fields
|
|
58
|
+
</p>
|
|
59
|
+
</fieldset>
|
|
60
|
+
`;
|
|
61
|
+
|
|
62
|
+
exports[`Fieldset renders the UI snapshot correctly 5`] = `
|
|
63
|
+
<fieldset
|
|
64
|
+
className="css-kle7zy"
|
|
65
|
+
id="withChakraProps"
|
|
66
|
+
>
|
|
67
|
+
<legend>
|
|
68
|
+
Legend Text
|
|
69
|
+
</legend>
|
|
70
|
+
<p>
|
|
71
|
+
Some other fields
|
|
72
|
+
</p>
|
|
73
|
+
</fieldset>
|
|
74
|
+
`;
|
|
75
|
+
|
|
76
|
+
exports[`Fieldset renders the UI snapshot correctly 6`] = `
|
|
77
|
+
<fieldset
|
|
78
|
+
className="css-1xdhyk6"
|
|
79
|
+
data-testid="props"
|
|
80
|
+
id="withOtherProps"
|
|
55
81
|
>
|
|
56
82
|
<legend>
|
|
57
83
|
Legend Text
|
|
58
|
-
<div
|
|
59
|
-
className="css-0"
|
|
60
|
-
>
|
|
61
|
-
Optional
|
|
62
|
-
</div>
|
|
63
84
|
</legend>
|
|
64
85
|
<p>
|
|
65
86
|
Some other fields
|