@nypl/design-system-react-components 0.25.8 → 0.25.9
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 +45 -1
- package/README.md +1 -1
- package/dist/components/Button/Button.d.ts +6 -6
- package/dist/components/Button/ButtonTypes.d.ts +0 -1
- package/dist/components/Card/Card.d.ts +6 -4
- package/dist/components/Checkbox/Checkbox.d.ts +3 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
- package/dist/components/DatePicker/DatePicker.d.ts +3 -2
- package/dist/components/Form/Form.d.ts +2 -2
- package/dist/components/Heading/Heading.d.ts +7 -3
- package/dist/components/Heading/HeadingTypes.d.ts +6 -6
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
- package/dist/components/Icons/Icon.d.ts +4 -4
- package/dist/components/Icons/IconSvgs.d.ts +0 -21
- package/dist/components/Icons/IconTypes.d.ts +0 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +18 -0
- package/dist/components/Logo/LogoTypes.d.ts +30 -0
- package/dist/components/Modal/Modal.d.ts +0 -4
- package/dist/components/Notification/Notification.d.ts +2 -2
- package/dist/components/Placeholder/Placeholder.d.ts +3 -5
- package/dist/components/Radio/Radio.d.ts +6 -5
- package/dist/components/RadioGroup/RadioGroup.d.ts +3 -2
- package/dist/components/SearchBar/SearchBar.d.ts +10 -2
- package/dist/components/Select/Select.d.ts +3 -2
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
- package/dist/components/Slider/Slider.d.ts +3 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
- package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
- package/dist/components/Table/Table.d.ts +23 -0
- package/dist/components/Template/Template.d.ts +8 -3
- package/dist/components/Text/Text.d.ts +2 -2
- package/dist/components/TextInput/TextInput.d.ts +4 -3
- package/dist/components/Toggle/Toggle.d.ts +3 -2
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
- package/dist/design-system-react-components.cjs.development.js +5630 -5692
- 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 +4304 -4362
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/styles.css +2 -2
- package/dist/theme/components/button.d.ts +0 -12
- package/dist/theme/components/card.d.ts +14 -2
- package/dist/theme/components/customTable.d.ts +47 -0
- package/dist/theme/components/fieldset.d.ts +2 -2
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/heading.d.ts +4 -0
- package/dist/theme/components/label.d.ts +1 -1
- package/dist/theme/components/link.d.ts +14 -1
- package/dist/theme/components/list.d.ts +0 -2
- package/dist/theme/components/logo.d.ts +4 -0
- package/dist/theme/components/searchBar.d.ts +7 -13
- package/dist/theme/components/select.d.ts +1 -0
- package/dist/theme/components/structuredContent.d.ts +33 -0
- package/dist/theme/components/template.d.ts +10 -10
- package/dist/theme/components/textInput.d.ts +2 -0
- package/dist/theme/components/toggle.d.ts +8 -5
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +1 -2
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +14 -12
- package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
- package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
- package/src/components/Autosuggest/_Autosuggest.scss +2 -6
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +30 -11
- package/src/components/Button/Button.stories.mdx +93 -48
- package/src/components/Button/Button.test.tsx +0 -12
- package/src/components/Button/Button.tsx +7 -7
- package/src/components/Button/ButtonTypes.tsx +0 -1
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
- package/src/components/Card/Card.stories.mdx +186 -71
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +17 -5
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +8 -2
- package/src/components/Chakra/Box.stories.mdx +3 -3
- package/src/components/Chakra/Center.stories.mdx +5 -5
- package/src/components/Chakra/Grid.stories.mdx +3 -3
- package/src/components/Chakra/Stack.stories.mdx +2 -2
- package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
- package/src/components/Checkbox/Checkbox.tsx +13 -8
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
- package/src/components/DatePicker/DatePicker.tsx +10 -6
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +36 -18
- package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
- package/src/components/Form/Form.stories.mdx +49 -41
- package/src/components/Form/Form.tsx +5 -4
- package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
- package/src/components/Heading/Heading.stories.mdx +59 -23
- package/src/components/Heading/Heading.test.tsx +82 -18
- package/src/components/Heading/Heading.tsx +31 -31
- package/src/components/Heading/HeadingTypes.tsx +6 -6
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
- package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
- package/src/components/Hero/Hero.stories.mdx +72 -53
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
- package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
- package/src/components/Icons/Icon.stories.mdx +77 -76
- package/src/components/Icons/Icon.tsx +4 -5
- package/src/components/Icons/IconSvgs.tsx +0 -42
- package/src/components/Icons/IconTypes.tsx +0 -24
- package/src/components/Image/Image.stories.mdx +66 -18
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Label/Label.stories.mdx +20 -19
- package/src/components/Link/Link.stories.mdx +102 -51
- package/src/components/Link/Link.test.tsx +38 -8
- package/src/components/Link/Link.tsx +19 -12
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
- package/src/components/List/List.stories.mdx +36 -24
- package/src/components/Logo/Logo.stories.mdx +220 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +34 -0
- package/src/components/Logo/LogoTypes.tsx +32 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
- package/src/components/Modal/Modal.stories.mdx +20 -5
- package/src/components/Modal/Modal.tsx +2 -8
- package/src/components/Notification/Notification.stories.mdx +61 -38
- package/src/components/Notification/Notification.tsx +9 -4
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
- package/src/components/Pagination/Pagination.stories.mdx +17 -6
- package/src/components/Pagination/Pagination.tsx +1 -1
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
- package/src/components/Radio/Radio.stories.mdx +39 -19
- package/src/components/Radio/Radio.tsx +13 -9
- package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.tsx +15 -11
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
- package/src/components/SearchBar/SearchBar.Test.tsx +58 -10
- package/src/components/SearchBar/SearchBar.stories.mdx +109 -30
- package/src/components/SearchBar/SearchBar.tsx +53 -32
- package/src/components/Select/Select.stories.mdx +48 -14
- package/src/components/Select/Select.tsx +16 -10
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
- package/src/components/Slider/Slider.stories.mdx +72 -22
- package/src/components/Slider/Slider.tsx +15 -10
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
- package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
- package/src/components/StatusBadge/StatusBadge.tsx +2 -1
- package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
- package/src/components/StructuredContent/StructuredContent.tsx +153 -0
- package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
- package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
- package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
- package/src/components/StyleGuide/ColorCard.tsx +1 -2
- package/src/components/StyleGuide/Colors.stories.mdx +3 -11
- package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
- package/src/components/StyleGuide/Forms.stories.mdx +2 -10
- package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
- package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
- package/src/components/StyleGuide/Typography.stories.mdx +64 -76
- package/src/components/Table/Table.stories.mdx +66 -0
- package/src/components/Table/Table.test.tsx +60 -0
- package/src/components/Table/Table.tsx +116 -0
- package/src/components/Tabs/Tabs.stories.mdx +19 -13
- package/src/components/Tabs/Tabs.test.tsx +1 -1
- package/src/components/Template/Template.stories.mdx +56 -47
- package/src/components/Template/Template.test.tsx +65 -5
- package/src/components/Template/Template.tsx +35 -5
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
- package/src/components/Text/Text.stories.mdx +33 -11
- package/src/components/Text/Text.tsx +2 -2
- package/src/components/TextInput/TextInput.stories.mdx +84 -17
- package/src/components/TextInput/TextInput.test.tsx +96 -0
- package/src/components/TextInput/TextInput.tsx +12 -8
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
- package/src/components/Toggle/Toggle.stories.mdx +33 -9
- package/src/components/Toggle/Toggle.tsx +14 -9
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
- package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +5 -4
- package/src/styles/base/_03-base.scss +1 -1
- package/src/styles/base/_place-holder.scss +7 -7
- package/src/styles.scss +1 -5
- package/src/theme/components/breadcrumb.ts +3 -3
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +5 -2
- package/src/theme/components/checkbox.ts +1 -1
- package/src/theme/components/customTable.ts +50 -0
- package/src/theme/components/datePicker.ts +1 -1
- package/src/theme/components/global.ts +6 -6
- package/src/theme/components/heading.ts +13 -11
- package/src/theme/components/helperErrorText.ts +1 -1
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/link.ts +17 -5
- package/src/theme/components/list.ts +1 -3
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +1 -1
- package/src/theme/components/searchBar.ts +7 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +54 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +1 -0
- package/src/theme/components/toggle.ts +9 -5
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +6 -0
- package/src/utils/componentCategories.ts +1 -1
- package/src/utils/utils.ts +17 -0
- package/dist/__tests__/utils/bem.test.d.ts +0 -1
- package/dist/components/CardEdition/CardEdition.d.ts +0 -21
- package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
- package/dist/components/Input/Input.d.ts +0 -36
- package/dist/components/Input/Input.stories.d.ts +0 -29
- package/dist/components/Input/InputTypes.d.ts +0 -6
- package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
- package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
- package/dist/helpers/getCSSVariable.d.ts +0 -1
- package/dist/interfaces.d.ts +0 -3
- package/dist/utils/bem.d.ts +0 -1
- package/src/__tests__/utils/bem.test.ts +0 -37
- package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
- package/src/components/CardEdition/CardEdition.test.tsx +0 -395
- package/src/components/CardEdition/CardEdition.tsx +0 -60
- package/src/components/CardEdition/_CardEdition.scss +0 -137
- package/src/components/Input/Input.stories.tsx +0 -133
- package/src/components/Input/Input.test.tsx +0 -266
- package/src/components/Input/Input.tsx +0 -81
- package/src/components/Input/InputTypes.tsx +0 -8
- package/src/components/Input/_Input.scss +0 -78
- package/src/components/StyleGuide/UIDocCard.tsx +0 -36
- package/src/helpers/CSSVariablesHelper.tsx +0 -34
- package/src/helpers/getCSSVariable.tsx +0 -5
- package/src/interfaces.ts +0 -3
- package/src/utils/bem.ts +0 -44
|
@@ -3,14 +3,16 @@ import { render, screen } from "@testing-library/react";
|
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
4
|
import renderer from "react-test-renderer";
|
|
5
5
|
|
|
6
|
-
import Card, { CardHeading, CardContent, CardActions } from "./Card";
|
|
7
|
-
import Link from "../Link/Link";
|
|
8
|
-
import { LinkTypes } from "../Link/LinkTypes";
|
|
9
6
|
import Button from "../Button/Button";
|
|
10
7
|
import { ButtonTypes } from "../Button/ButtonTypes";
|
|
8
|
+
import Card, { CardHeading, CardContent, CardActions } from "./Card";
|
|
11
9
|
import { HeadingLevels } from "../Heading/HeadingTypes";
|
|
12
10
|
import Icon from "../Icons/Icon";
|
|
13
11
|
import { IconRotationTypes, IconNames, IconAlign } from "../Icons/IconTypes";
|
|
12
|
+
import Image from "../Image/Image";
|
|
13
|
+
import Link from "../Link/Link";
|
|
14
|
+
import { LinkTypes } from "../Link/LinkTypes";
|
|
15
|
+
import { ImageRatios } from "../Image/ImageTypes";
|
|
14
16
|
|
|
15
17
|
describe("Card Accessibility", () => {
|
|
16
18
|
it("passes axe accessibility test", async () => {
|
|
@@ -92,12 +94,12 @@ describe("Card", () => {
|
|
|
92
94
|
);
|
|
93
95
|
const cardWithExtendedStyles = (
|
|
94
96
|
<Card
|
|
95
|
-
id="cardWithExtendedStyles"
|
|
96
97
|
className="edition-card"
|
|
97
|
-
|
|
98
|
+
id="cardWithExtendedStyles"
|
|
98
99
|
imageAlt="Alt text"
|
|
100
|
+
imageSrc="https://placeimg.com/300/400/arch"
|
|
99
101
|
>
|
|
100
|
-
<CardHeading level={HeadingLevels.Two}
|
|
102
|
+
<CardHeading id="editioncardheading1" level={HeadingLevels.Two}>
|
|
101
103
|
The Card Heading
|
|
102
104
|
</CardHeading>
|
|
103
105
|
<CardContent>
|
|
@@ -114,10 +116,10 @@ describe("Card", () => {
|
|
|
114
116
|
</Link>
|
|
115
117
|
<Link id="link-icon" href="#url" type={LinkTypes.Action}>
|
|
116
118
|
<Icon
|
|
117
|
-
id="icon-cardWithExtendedStyles"
|
|
118
|
-
name={IconNames.Download}
|
|
119
119
|
align={IconAlign.Left}
|
|
120
120
|
iconRotation={IconRotationTypes.Rotate0}
|
|
121
|
+
id="icon-cardWithExtendedStyles"
|
|
122
|
+
name={IconNames.Download}
|
|
121
123
|
/>
|
|
122
124
|
Download
|
|
123
125
|
</Link>
|
|
@@ -126,12 +128,12 @@ describe("Card", () => {
|
|
|
126
128
|
);
|
|
127
129
|
const cardWithNoCTAs = (
|
|
128
130
|
<Card
|
|
129
|
-
id="cardWithNoCTAs"
|
|
130
131
|
className="edition-card"
|
|
131
|
-
|
|
132
|
+
id="cardWithNoCTAs"
|
|
132
133
|
imageAlt="Alt text"
|
|
134
|
+
imageSrc="https://placeimg.com/300/400/arch"
|
|
133
135
|
>
|
|
134
|
-
<CardHeading level={HeadingLevels.Two}
|
|
136
|
+
<CardHeading id="editioncardheading1" level={HeadingLevels.Two}>
|
|
135
137
|
The Card Heading
|
|
136
138
|
</CardHeading>
|
|
137
139
|
<CardContent>
|
|
@@ -143,14 +145,14 @@ describe("Card", () => {
|
|
|
143
145
|
);
|
|
144
146
|
const cardWithNoContent = (
|
|
145
147
|
<Card
|
|
146
|
-
id="cardWithNoContent"
|
|
147
148
|
className="edition-card"
|
|
148
|
-
|
|
149
|
+
id="cardWithNoContent"
|
|
149
150
|
imageAlt="Alt text"
|
|
151
|
+
imageSrc="https://placeimg.com/300/400/arch"
|
|
150
152
|
>
|
|
151
153
|
<CardHeading
|
|
152
|
-
level={HeadingLevels.Two}
|
|
153
154
|
id="editioncardheading1"
|
|
155
|
+
level={HeadingLevels.Two}
|
|
154
156
|
url="#edition-link"
|
|
155
157
|
>
|
|
156
158
|
The Card Heading
|
|
@@ -161,10 +163,10 @@ describe("Card", () => {
|
|
|
161
163
|
</Link>
|
|
162
164
|
<Link id="link-icon" href="#url" type={LinkTypes.Action}>
|
|
163
165
|
<Icon
|
|
164
|
-
id="icon-cardWithNoContent"
|
|
165
|
-
name={IconNames.Download}
|
|
166
166
|
align={IconAlign.Left}
|
|
167
167
|
iconRotation={IconRotationTypes.Rotate0}
|
|
168
|
+
id="icon-cardWithNoContent"
|
|
169
|
+
name={IconNames.Download}
|
|
168
170
|
/>
|
|
169
171
|
Download
|
|
170
172
|
</Link>
|
|
@@ -174,8 +176,8 @@ describe("Card", () => {
|
|
|
174
176
|
const cardWithNoImage = (
|
|
175
177
|
<Card id="cardWithNoImage" className="edition-card">
|
|
176
178
|
<CardHeading
|
|
177
|
-
level={HeadingLevels.Two}
|
|
178
179
|
id="editioncardheading1"
|
|
180
|
+
level={HeadingLevels.Two}
|
|
179
181
|
url="#edition-link"
|
|
180
182
|
>
|
|
181
183
|
The Card Heading
|
|
@@ -187,10 +189,10 @@ describe("Card", () => {
|
|
|
187
189
|
</Link>
|
|
188
190
|
<Link id="link-icon" href="#url" type={LinkTypes.Action}>
|
|
189
191
|
<Icon
|
|
190
|
-
id="icon-cardWithNoImage"
|
|
191
|
-
name={IconNames.Download}
|
|
192
192
|
align={IconAlign.Left}
|
|
193
193
|
iconRotation={IconRotationTypes.Rotate0}
|
|
194
|
+
id="icon-cardWithNoImage"
|
|
195
|
+
name={IconNames.Download}
|
|
194
196
|
/>
|
|
195
197
|
Download
|
|
196
198
|
</Link>
|
|
@@ -200,8 +202,8 @@ describe("Card", () => {
|
|
|
200
202
|
const cardFullClick = () => (
|
|
201
203
|
<Card
|
|
202
204
|
id="fullclick"
|
|
203
|
-
imageSrc="https://placeimg.com/400/200/arch"
|
|
204
205
|
imageAlt="Alt text"
|
|
206
|
+
imageSrc="https://placeimg.com/400/200/arch"
|
|
205
207
|
mainActionLink="http://nypl.org"
|
|
206
208
|
>
|
|
207
209
|
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
@@ -210,9 +212,9 @@ describe("Card", () => {
|
|
|
210
212
|
<CardContent>middle column content</CardContent>
|
|
211
213
|
<CardActions>
|
|
212
214
|
<Button
|
|
213
|
-
onClick={() => {}}
|
|
214
|
-
id="button1"
|
|
215
215
|
buttonType={ButtonTypes.Primary}
|
|
216
|
+
id="button1"
|
|
217
|
+
onClick={() => {}}
|
|
216
218
|
type="submit"
|
|
217
219
|
>
|
|
218
220
|
Example CTA
|
|
@@ -220,6 +222,18 @@ describe("Card", () => {
|
|
|
220
222
|
</CardActions>
|
|
221
223
|
</Card>
|
|
222
224
|
);
|
|
225
|
+
const cardImageComponentAndRatio = () => (
|
|
226
|
+
<Card
|
|
227
|
+
id="fullclick"
|
|
228
|
+
imageComponent={<Image alt="" src="https://placeimg.com/400/200/arch" />}
|
|
229
|
+
imageAspectRatio={ImageRatios.ThreeByTwo}
|
|
230
|
+
>
|
|
231
|
+
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
232
|
+
The Card Heading
|
|
233
|
+
</CardHeading>
|
|
234
|
+
<CardContent>middle column content</CardContent>
|
|
235
|
+
</Card>
|
|
236
|
+
);
|
|
223
237
|
let container;
|
|
224
238
|
|
|
225
239
|
it("renders a Card with a header, image, content, and CTAs", () => {
|
|
@@ -289,6 +303,14 @@ describe("Card", () => {
|
|
|
289
303
|
);
|
|
290
304
|
});
|
|
291
305
|
|
|
306
|
+
it("Logs a warning when both `imageComponent` and `imageAspectRatio` are passed", () => {
|
|
307
|
+
const warn = jest.spyOn(console, "warn");
|
|
308
|
+
render(cardImageComponentAndRatio());
|
|
309
|
+
expect(warn).toHaveBeenCalledWith(
|
|
310
|
+
"Both `imageComponent` and `imageAspectRatio` are set but `imageAspectRatio` will be ignored in favor of the aspect ratio on `imageComponent`."
|
|
311
|
+
);
|
|
312
|
+
});
|
|
313
|
+
|
|
292
314
|
it("Renders the UI snapshot correctly", () => {
|
|
293
315
|
const regular = renderer.create(regularCard).toJSON();
|
|
294
316
|
const withExtendedStyles = renderer.create(cardWithExtendedStyles).toJSON();
|
|
@@ -296,6 +318,7 @@ describe("Card", () => {
|
|
|
296
318
|
const withNoContent = renderer.create(cardWithNoContent).toJSON();
|
|
297
319
|
const withNoImage = renderer.create(cardWithNoImage).toJSON();
|
|
298
320
|
const withFullClick = renderer.create(cardFullClick()).toJSON();
|
|
321
|
+
|
|
299
322
|
expect(regular).toMatchSnapshot();
|
|
300
323
|
expect(withExtendedStyles).toMatchSnapshot();
|
|
301
324
|
expect(withNoCTAs).toMatchSnapshot();
|
|
@@ -16,7 +16,8 @@ import generateUUID from "../../helpers/generateUUID";
|
|
|
16
16
|
interface CardBaseProps {
|
|
17
17
|
/** Optional value to control the alignment of the text and elements. */
|
|
18
18
|
center?: boolean;
|
|
19
|
-
/** Optional value to render the layout in a row or column
|
|
19
|
+
/** Optional value to render the layout in a row or column.
|
|
20
|
+
* Default is `CardLayouts.Column`. */
|
|
20
21
|
layout?: CardLayouts;
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -54,14 +55,15 @@ export interface CardProps extends CardBaseProps, CardLinkBoxProps {
|
|
|
54
55
|
/** Text description of the image; to follow best practices for accessibility,
|
|
55
56
|
* this prop should not be left blank if `imageSrc` is passed. */
|
|
56
57
|
imageAlt?: string;
|
|
57
|
-
/** Optional value to control the aspect ratio of the `
|
|
58
|
-
* value is `
|
|
58
|
+
/** Optional value to control the aspect ratio of the `CardImage`; default
|
|
59
|
+
* value is `ImageRatios.Square`. */
|
|
59
60
|
imageAspectRatio?: ImageRatios;
|
|
60
61
|
/** Optional boolean value to control the position of the `CardImage`. */
|
|
61
62
|
imageAtEnd?: boolean;
|
|
62
63
|
/** Custom image component used in place of DS `Image` component. */
|
|
63
64
|
imageComponent?: JSX.Element;
|
|
64
|
-
/** Optional value to control the size of the `CardImage`.
|
|
65
|
+
/** Optional value to control the size of the `CardImage`. Default value is
|
|
66
|
+
* `ImageSizes.Default`. */
|
|
65
67
|
imageSize?: ImageSizes;
|
|
66
68
|
/** The path to the image displayed within the `Card` component. */
|
|
67
69
|
imageSrc?: string;
|
|
@@ -179,10 +181,19 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
|
|
|
179
181
|
mainActionLink,
|
|
180
182
|
} = props;
|
|
181
183
|
const hasImage = imageSrc || imageComponent;
|
|
184
|
+
const finalImageAspectRatio = imageComponent
|
|
185
|
+
? ImageRatios.Original
|
|
186
|
+
: imageAspectRatio;
|
|
182
187
|
const customColors = {};
|
|
183
188
|
const cardContents = [];
|
|
184
189
|
let cardHeadingCount = 0;
|
|
185
190
|
|
|
191
|
+
if (imageComponent && imageAspectRatio !== ImageRatios.Square) {
|
|
192
|
+
console.warn(
|
|
193
|
+
"Both `imageComponent` and `imageAspectRatio` are set but `imageAspectRatio` will be ignored in favor of the aspect ratio on `imageComponent`."
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
|
|
186
197
|
backgroundColor && (customColors["backgroundColor"] = backgroundColor);
|
|
187
198
|
foregroundColor && (customColors["color"] = foregroundColor);
|
|
188
199
|
|
|
@@ -192,6 +203,7 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
|
|
|
192
203
|
hasImage,
|
|
193
204
|
imageAtEnd,
|
|
194
205
|
layout,
|
|
206
|
+
mainActionLink,
|
|
195
207
|
});
|
|
196
208
|
|
|
197
209
|
React.Children.map(children, (child: React.ReactElement, key) => {
|
|
@@ -246,7 +258,7 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
|
|
|
246
258
|
component={imageComponent}
|
|
247
259
|
alt={imageAlt}
|
|
248
260
|
imageSize={imageSize}
|
|
249
|
-
imageAspectRatio={
|
|
261
|
+
imageAspectRatio={finalImageAspectRatio}
|
|
250
262
|
imageAtEnd={imageAtEnd}
|
|
251
263
|
layout={layout}
|
|
252
264
|
/>
|
|
@@ -233,8 +233,11 @@ exports[`Card Renders the UI snapshot correctly 4`] = `
|
|
|
233
233
|
id="editioncardheading1"
|
|
234
234
|
>
|
|
235
235
|
<a
|
|
236
|
-
className="
|
|
236
|
+
className="css-0"
|
|
237
237
|
href="#edition-link"
|
|
238
|
+
id="editioncardheading1-link"
|
|
239
|
+
rel={null}
|
|
240
|
+
target={null}
|
|
238
241
|
>
|
|
239
242
|
The Card Heading
|
|
240
243
|
</a>
|
|
@@ -310,8 +313,11 @@ exports[`Card Renders the UI snapshot correctly 5`] = `
|
|
|
310
313
|
id="editioncardheading1"
|
|
311
314
|
>
|
|
312
315
|
<a
|
|
313
|
-
className="
|
|
316
|
+
className="css-0"
|
|
314
317
|
href="#edition-link"
|
|
318
|
+
id="editioncardheading1-link"
|
|
319
|
+
rel={null}
|
|
320
|
+
target={null}
|
|
315
321
|
>
|
|
316
322
|
The Card Heading
|
|
317
323
|
</a>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
|
|
2
1
|
import { Box } from "@chakra-ui/react";
|
|
2
|
+
import { Canvas, Meta, Story } from "@storybook/addon-docs";
|
|
3
3
|
|
|
4
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
5
4
|
import VideoPlayer from "../VideoPlayer/VideoPlayer";
|
|
6
5
|
import {
|
|
7
|
-
VideoPlayerTypes,
|
|
8
6
|
VideoPlayerAspectRatios,
|
|
7
|
+
VideoPlayerTypes,
|
|
9
8
|
} from "../VideoPlayer/VideoPlayerTypes";
|
|
9
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
10
10
|
import DSProvider from "../../theme/provider";
|
|
11
11
|
|
|
12
12
|
<Meta title={getCategory("Box")} component={Box} />
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Box, Center, Circle, HStack, Square } from "@chakra-ui/react";
|
|
2
|
+
import { Canvas, Meta, Story } from "@storybook/addon-docs";
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import Icon from "../Icons/Icon";
|
|
5
|
+
import { IconColors, IconNames, IconSizes } from "../Icons/IconTypes";
|
|
5
6
|
import Image from "../Image/Image";
|
|
6
7
|
import { ImageSizes } from "../Image/ImageTypes";
|
|
7
|
-
import
|
|
8
|
-
import { IconNames, IconColors, IconSizes } from "../Icons/IconTypes";
|
|
8
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
9
9
|
import DSProvider from "../../theme/provider";
|
|
10
10
|
|
|
11
11
|
<Meta title={getCategory("Center, Circle, Square")} component={Center} />
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { Box, Grid, GridItem } from "@chakra-ui/react";
|
|
2
|
+
import { Canvas, Meta, Story } from "@storybook/addon-docs";
|
|
3
|
+
|
|
4
4
|
import { getCategory } from "../../utils/componentCategories";
|
|
5
5
|
import DSProvider from "../../theme/provider";
|
|
6
6
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Meta, Story, Canvas } from "@storybook/addon-docs";
|
|
2
2
|
import { Box, Stack, HStack, VStack, Circle } from "@chakra-ui/react";
|
|
3
3
|
|
|
4
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
5
|
-
import DSProvider from "../../theme/provider";
|
|
6
4
|
import Icon from "../Icons/Icon";
|
|
7
5
|
import { IconNames, IconSizes } from "../Icons/IconTypes";
|
|
6
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
7
|
+
import DSProvider from "../../theme/provider";
|
|
8
8
|
|
|
9
9
|
<Meta title={getCategory("Stack, HStack, VStack")} component={Stack} />
|
|
10
10
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
import { HStack } from "@chakra-ui/react";
|
|
1
2
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
3
|
ArgsTable,
|
|
4
|
+
Canvas,
|
|
6
5
|
Description,
|
|
7
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
8
9
|
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
import { HStack } from "@chakra-ui/react";
|
|
10
10
|
|
|
11
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
12
|
-
import DSProvider from "../../theme/provider";
|
|
13
11
|
import Checkbox from "./Checkbox";
|
|
14
12
|
import { onChangeDefault } from "./Checkbox";
|
|
13
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
+
import DSProvider from "../../theme/provider";
|
|
15
15
|
|
|
16
16
|
<Meta
|
|
17
17
|
title={getCategory("Checkbox")}
|
|
@@ -20,16 +20,35 @@ import { onChangeDefault } from "./Checkbox";
|
|
|
20
20
|
parameters={{
|
|
21
21
|
design: {
|
|
22
22
|
type: "figma",
|
|
23
|
-
url:
|
|
24
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11895%3A658",
|
|
23
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11895%3A658",
|
|
25
24
|
},
|
|
26
25
|
jest: ["Checkbox.test.tsx"],
|
|
27
26
|
}}
|
|
28
27
|
argTypes={{
|
|
29
|
-
className: {
|
|
30
|
-
id: {
|
|
31
|
-
isChecked: {
|
|
32
|
-
|
|
28
|
+
className: { control: false },
|
|
29
|
+
id: { control: false },
|
|
30
|
+
isChecked: { control: false },
|
|
31
|
+
isDisabled: {
|
|
32
|
+
table: { defaultValue: { summary: false } },
|
|
33
|
+
},
|
|
34
|
+
isIndeterminate: {
|
|
35
|
+
table: { defaultValue: { summary: false } },
|
|
36
|
+
},
|
|
37
|
+
isInvalid: {
|
|
38
|
+
table: { defaultValue: { summary: false } },
|
|
39
|
+
},
|
|
40
|
+
isRequired: {
|
|
41
|
+
table: { defaultValue: { summary: false } },
|
|
42
|
+
},
|
|
43
|
+
key: { table: { disable: true } },
|
|
44
|
+
onChange: { control: false },
|
|
45
|
+
ref: { table: { disable: true } },
|
|
46
|
+
showHelperInvalidText: {
|
|
47
|
+
table: { defaultValue: { summary: false } },
|
|
48
|
+
},
|
|
49
|
+
showLabel: {
|
|
50
|
+
table: { defaultValue: { summary: false } },
|
|
51
|
+
},
|
|
33
52
|
}}
|
|
34
53
|
/>
|
|
35
54
|
|
|
@@ -38,7 +57,7 @@ import { onChangeDefault } from "./Checkbox";
|
|
|
38
57
|
| Component Version | DS Version |
|
|
39
58
|
| ----------------- | ---------- |
|
|
40
59
|
| Added | `0.1.0` |
|
|
41
|
-
| Latest | `0.25.
|
|
60
|
+
| Latest | `0.25.9` |
|
|
42
61
|
|
|
43
62
|
<Description of={Checkbox} />
|
|
44
63
|
|
|
@@ -49,15 +68,18 @@ cause an accessibility violation if none is present.
|
|
|
49
68
|
<Story
|
|
50
69
|
name="Checkbox"
|
|
51
70
|
args={{
|
|
71
|
+
className: undefined,
|
|
52
72
|
helperText: "This is the helper text!",
|
|
53
|
-
id: "
|
|
73
|
+
id: "checkbox_id",
|
|
54
74
|
invalidText: "This is the error text :(",
|
|
75
|
+
isChecked: undefined,
|
|
55
76
|
isDisabled: false,
|
|
56
77
|
isIndeterminate: false,
|
|
57
78
|
isInvalid: false,
|
|
58
79
|
isRequired: false,
|
|
59
80
|
labelText: "Test Label",
|
|
60
81
|
name: "test_name",
|
|
82
|
+
onChange: undefined,
|
|
61
83
|
showHelperInvalidText: true,
|
|
62
84
|
showLabel: true,
|
|
63
85
|
value: "1",
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import {
|
|
3
2
|
Box,
|
|
4
3
|
Checkbox as ChakraCheckbox,
|
|
5
4
|
Icon,
|
|
6
5
|
useMultiStyleConfig,
|
|
7
6
|
} from "@chakra-ui/react";
|
|
8
|
-
import
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
|
|
9
|
+
import HelperErrorText, {
|
|
10
|
+
HelperErrorTextType,
|
|
11
|
+
} from "../HelperErrorText/HelperErrorText";
|
|
9
12
|
import generateUUID from "../../helpers/generateUUID";
|
|
10
13
|
|
|
11
14
|
export interface CheckboxProps {
|
|
12
15
|
/** className you can add in addition to 'input' */
|
|
13
16
|
className?: string;
|
|
14
17
|
/** Optional string to populate the HelperErrorText for standard state */
|
|
15
|
-
helperText?:
|
|
18
|
+
helperText?: HelperErrorTextType;
|
|
16
19
|
/** ID that other components can cross reference for accessibility purposes */
|
|
17
20
|
id?: string;
|
|
18
21
|
/** Optional string to populate the HelperErrorText for the error state
|
|
19
22
|
* when `isInvalid` is true. */
|
|
20
|
-
invalidText?:
|
|
23
|
+
invalidText?: HelperErrorTextType;
|
|
21
24
|
/** When using the Checkbox as a "controlled" form element, you can specify
|
|
22
25
|
* the Checkbox's checked state using this prop.
|
|
23
26
|
* Learn more about controlled and uncontrolled form fields:
|
|
@@ -89,7 +92,7 @@ const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
|
|
|
89
92
|
value,
|
|
90
93
|
} = props;
|
|
91
94
|
const styles = useMultiStyleConfig("Checkbox", {});
|
|
92
|
-
const footnote = isInvalid ? invalidText : helperText;
|
|
95
|
+
const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
|
|
93
96
|
const ariaAttributes = {};
|
|
94
97
|
const onChange = props.onChange || onChangeDefault;
|
|
95
98
|
// Use Chakra's default indeterminate icon.
|
|
@@ -130,9 +133,11 @@ const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
|
|
|
130
133
|
</ChakraCheckbox>
|
|
131
134
|
{footnote && showHelperInvalidText && (
|
|
132
135
|
<Box __css={styles.helper}>
|
|
133
|
-
<HelperErrorText
|
|
134
|
-
{
|
|
135
|
-
|
|
136
|
+
<HelperErrorText
|
|
137
|
+
id={`${id}-helperText`}
|
|
138
|
+
isInvalid={isInvalid}
|
|
139
|
+
text={footnote}
|
|
140
|
+
/>
|
|
136
141
|
</Box>
|
|
137
142
|
)}
|
|
138
143
|
</>
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
2
|
ArgsTable,
|
|
3
|
+
Canvas,
|
|
6
4
|
Description,
|
|
7
|
-
|
|
5
|
+
Meta,
|
|
6
|
+
Story,
|
|
7
|
+
} from "@storybook/addon-docs";
|
|
8
8
|
import { withDesign } from "storybook-addon-designs";
|
|
9
9
|
|
|
10
|
-
import
|
|
11
|
-
import DSProvider from "../../theme/provider";
|
|
10
|
+
import Checkbox from "../Checkbox/Checkbox";
|
|
12
11
|
import CheckboxGroup from "./CheckboxGroup";
|
|
13
12
|
import { CheckboxGroupLayoutTypes } from "./CheckboxGroupLayoutTypes";
|
|
14
|
-
import
|
|
13
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
+
import DSProvider from "../../theme/provider";
|
|
15
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
16
|
+
|
|
17
|
+
export const enumValues = getStorybookEnumValues(
|
|
18
|
+
CheckboxGroupLayoutTypes,
|
|
19
|
+
"CheckboxGroupLayoutTypes"
|
|
20
|
+
);
|
|
15
21
|
|
|
16
22
|
<Meta
|
|
17
23
|
title={getCategory("CheckboxGroup")}
|
|
@@ -20,17 +26,41 @@ import Checkbox from "../Checkbox/Checkbox";
|
|
|
20
26
|
parameters={{
|
|
21
27
|
design: {
|
|
22
28
|
type: "figma",
|
|
23
|
-
url:
|
|
24
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11895%3A658",
|
|
29
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11895%3A658",
|
|
25
30
|
},
|
|
26
31
|
jest: ["CheckboxGroup.test.tsx"],
|
|
27
32
|
}}
|
|
28
33
|
argTypes={{
|
|
29
34
|
children: { table: { disable: true } },
|
|
30
|
-
defaultValue: {
|
|
31
|
-
id: {
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
defaultValue: { control: false },
|
|
36
|
+
id: { control: false },
|
|
37
|
+
isDisabled: {
|
|
38
|
+
table: { defaultValue: { summary: false } },
|
|
39
|
+
},
|
|
40
|
+
isInvalid: {
|
|
41
|
+
table: { defaultValue: { summary: false } },
|
|
42
|
+
},
|
|
43
|
+
isRequired: {
|
|
44
|
+
table: { defaultValue: { summary: false } },
|
|
45
|
+
},
|
|
46
|
+
key: { table: { disable: true } },
|
|
47
|
+
layout: {
|
|
48
|
+
control: { type: "select" },
|
|
49
|
+
table: { defaultValue: { summary: "CheckboxGroupLayoutTypes.Column" } },
|
|
50
|
+
options: enumValues.options,
|
|
51
|
+
},
|
|
52
|
+
name: { control: false },
|
|
53
|
+
onChange: { control: false },
|
|
54
|
+
optReqFlag: {
|
|
55
|
+
table: { defaultValue: { summary: true } },
|
|
56
|
+
},
|
|
57
|
+
ref: { table: { disable: true } },
|
|
58
|
+
showHelperInvalidText: {
|
|
59
|
+
table: { defaultValue: { summary: true } },
|
|
60
|
+
},
|
|
61
|
+
showLabel: {
|
|
62
|
+
table: { defaultValue: { summary: true } },
|
|
63
|
+
},
|
|
34
64
|
}}
|
|
35
65
|
/>
|
|
36
66
|
|
|
@@ -39,7 +69,7 @@ import Checkbox from "../Checkbox/Checkbox";
|
|
|
39
69
|
| Component Version | DS Version |
|
|
40
70
|
| ----------------- | ---------- |
|
|
41
71
|
| Added | `0.25.1` |
|
|
42
|
-
| Latest | `0.25.
|
|
72
|
+
| Latest | `0.25.9` |
|
|
43
73
|
|
|
44
74
|
<Description of={CheckboxGroup} />
|
|
45
75
|
|
|
@@ -49,20 +79,22 @@ import Checkbox from "../Checkbox/Checkbox";
|
|
|
49
79
|
args={{
|
|
50
80
|
defaultValue: ["4"],
|
|
51
81
|
helperText: "This is the helper text for the full group.",
|
|
82
|
+
id: "checkboxGroup-id",
|
|
52
83
|
invalidText: "This is the error text :(",
|
|
53
84
|
isDisabled: false,
|
|
54
85
|
isInvalid: false,
|
|
55
86
|
isRequired: false,
|
|
56
87
|
labelText: "Standard Checkbox Group",
|
|
57
|
-
layout: CheckboxGroupLayoutTypes.Column,
|
|
88
|
+
layout: "CheckboxGroupLayoutTypes.Column",
|
|
58
89
|
name: "checkbox-story",
|
|
90
|
+
onChange: undefined,
|
|
59
91
|
optReqFlag: true,
|
|
60
92
|
showHelperInvalidText: true,
|
|
61
93
|
showLabel: true,
|
|
62
94
|
}}
|
|
63
95
|
>
|
|
64
96
|
{(args) => (
|
|
65
|
-
<CheckboxGroup {...args}>
|
|
97
|
+
<CheckboxGroup {...args} layout={enumValues.getValue(args.layout)}>
|
|
66
98
|
<Checkbox value="2" labelText="Checkbox 2" />
|
|
67
99
|
<Checkbox value="3" labelText="Checkbox 3" />
|
|
68
100
|
<Checkbox value="4" labelText="Checkbox 4" />
|
|
@@ -6,12 +6,14 @@ import {
|
|
|
6
6
|
useMultiStyleConfig,
|
|
7
7
|
} from "@chakra-ui/react";
|
|
8
8
|
|
|
9
|
-
import HelperErrorText from "../HelperErrorText/HelperErrorText";
|
|
10
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
11
|
-
import { spacing } from "../../theme/foundations/spacing";
|
|
12
|
-
import { CheckboxGroupLayoutTypes } from "./CheckboxGroupLayoutTypes";
|
|
13
9
|
import Checkbox from "../Checkbox/Checkbox";
|
|
10
|
+
import { CheckboxGroupLayoutTypes } from "./CheckboxGroupLayoutTypes";
|
|
14
11
|
import Fieldset from "../Fieldset/Fieldset";
|
|
12
|
+
import HelperErrorText, {
|
|
13
|
+
HelperErrorTextType,
|
|
14
|
+
} from "../HelperErrorText/HelperErrorText";
|
|
15
|
+
import { spacing } from "../../theme/foundations/spacing";
|
|
16
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
15
17
|
|
|
16
18
|
export interface CheckboxGroupProps {
|
|
17
19
|
/** Any child node passed to the component. */
|
|
@@ -19,11 +21,11 @@ export interface CheckboxGroupProps {
|
|
|
19
21
|
/** Populates the initial value of the input */
|
|
20
22
|
defaultValue?: string[];
|
|
21
23
|
/** Optional string to populate the HelperErrorText for standard state */
|
|
22
|
-
helperText?:
|
|
24
|
+
helperText?: HelperErrorTextType;
|
|
23
25
|
/** ID that other components can cross reference for accessibility purposes */
|
|
24
26
|
id?: string;
|
|
25
27
|
/** Optional string to populate the HelperErrorText for error state */
|
|
26
|
-
invalidText?:
|
|
28
|
+
invalidText?: HelperErrorTextType;
|
|
27
29
|
/** Adds the 'disabled' prop to the input when true. */
|
|
28
30
|
isDisabled?: boolean;
|
|
29
31
|
/** A`dds the 'aria-invalid' attribute to the input and
|
|
@@ -76,7 +78,7 @@ const CheckboxGroup = React.forwardRef<HTMLInputElement, CheckboxGroupProps>(
|
|
|
76
78
|
showHelperInvalidText = true,
|
|
77
79
|
showLabel = true,
|
|
78
80
|
} = props;
|
|
79
|
-
const footnote = isInvalid ? invalidText : helperText;
|
|
81
|
+
const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
|
|
80
82
|
const spacingProp =
|
|
81
83
|
layout === CheckboxGroupLayoutTypes.Column ? spacing.s : spacing.l;
|
|
82
84
|
const newChildren = [];
|
|
@@ -139,9 +141,11 @@ const CheckboxGroup = React.forwardRef<HTMLInputElement, CheckboxGroupProps>(
|
|
|
139
141
|
</ChakraCheckboxGroup>
|
|
140
142
|
{footnote && showHelperInvalidText && (
|
|
141
143
|
<Box __css={styles.helper}>
|
|
142
|
-
<HelperErrorText
|
|
143
|
-
{
|
|
144
|
-
|
|
144
|
+
<HelperErrorText
|
|
145
|
+
id={`${id}-helperErrorText`}
|
|
146
|
+
isInvalid={isInvalid}
|
|
147
|
+
text={footnote}
|
|
148
|
+
/>
|
|
145
149
|
</Box>
|
|
146
150
|
)}
|
|
147
151
|
</Fieldset>
|
|
@@ -584,11 +584,14 @@ exports[`Checkbox renders the UI snapshot correctly 4`] = `
|
|
|
584
584
|
aria-atomic={true}
|
|
585
585
|
aria-live="off"
|
|
586
586
|
className=" css-0"
|
|
587
|
+
dangerouslySetInnerHTML={
|
|
588
|
+
Object {
|
|
589
|
+
"__html": "helper text",
|
|
590
|
+
}
|
|
591
|
+
}
|
|
587
592
|
data-isinvalid={false}
|
|
588
593
|
id="helperText-helperErrorText"
|
|
589
|
-
|
|
590
|
-
helper text
|
|
591
|
-
</div>
|
|
594
|
+
/>
|
|
592
595
|
</div>
|
|
593
596
|
</fieldset>
|
|
594
597
|
`;
|