@nypl/design-system-react-components 0.25.8 → 0.25.11
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 +110 -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 +4 -3
- package/dist/components/Fieldset/Fieldset.d.ts +1 -3
- package/dist/components/Form/Form.d.ts +15 -14
- package/dist/components/Form/FormTypes.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 +3 -3
- 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/List/List.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +34 -0
- package/dist/components/Logo/LogoTypes.d.ts +46 -0
- package/dist/components/Modal/Modal.d.ts +0 -4
- package/dist/components/Notification/Notification.d.ts +4 -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 +6 -5
- package/dist/components/SearchBar/SearchBar.d.ts +15 -7
- package/dist/components/Select/Select.d.ts +7 -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 +29 -0
- package/dist/components/Template/Template.d.ts +30 -6
- 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 +6721 -5777
- 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 +6774 -5839
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/resources.scss +0 -2
- package/dist/styles.css +2 -2
- package/dist/theme/components/breadcrumb.d.ts +1 -1
- 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 +56 -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/notification.d.ts +13 -4
- package/dist/theme/components/searchBar.d.ts +9 -11
- 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 +4 -0
- package/dist/theme/components/toggle.d.ts +8 -5
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +40 -37
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +15 -13
- package/src/components/Accordion/Accordion.test.tsx +45 -1
- package/src/components/Accordion/Accordion.tsx +20 -8
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
- 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 +43 -13
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +15 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
- 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 +21 -6
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
- package/src/components/Chakra/Box.stories.mdx +3 -3
- package/src/components/Chakra/Center.stories.mdx +5 -5
- package/src/components/Chakra/Flex.stories.mdx +113 -0
- 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.test.tsx +6 -6
- package/src/components/DatePicker/DatePicker.tsx +17 -11
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
- package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
- package/src/components/Fieldset/Fieldset.tsx +2 -4
- package/src/components/Form/Form.stories.mdx +75 -49
- package/src/components/Form/Form.test.tsx +92 -3
- package/src/components/Form/Form.tsx +28 -23
- package/src/components/Form/FormTypes.tsx +2 -2
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
- 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 +11 -9
- package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
- package/src/components/Icons/Icon.stories.mdx +78 -77
- package/src/components/Icons/Icon.test.tsx +1 -1
- package/src/components/Icons/Icon.tsx +5 -6
- 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 +60 -29
- package/src/components/List/List.test.tsx +1 -1
- package/src/components/List/List.tsx +2 -2
- package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
- package/src/components/Logo/Logo.stories.mdx +222 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +66 -0
- package/src/components/Logo/LogoTypes.tsx +48 -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 +128 -38
- package/src/components/Notification/Notification.test.tsx +49 -1
- package/src/components/Notification/Notification.tsx +25 -12
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
- package/src/components/Pagination/Pagination.stories.mdx +18 -7
- package/src/components/Pagination/Pagination.tsx +3 -3
- 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/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
- package/src/components/RadioGroup/RadioGroup.tsx +97 -94
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
- package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
- package/src/components/SearchBar/SearchBar.stories.mdx +115 -33
- package/src/components/SearchBar/SearchBar.tsx +72 -51
- package/src/components/Select/Select.stories.mdx +48 -14
- package/src/components/Select/Select.test.tsx +89 -0
- package/src/components/Select/Select.tsx +27 -12
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
- 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 +67 -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 +165 -0
- package/src/components/Table/Table.test.tsx +137 -0
- package/src/components/Table/Table.tsx +126 -0
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
- package/src/components/Tabs/Tabs.stories.mdx +20 -14
- package/src/components/Tabs/Tabs.test.tsx +21 -5
- package/src/components/Tabs/Tabs.tsx +35 -20
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
- package/src/components/Template/Template.stories.mdx +132 -48
- package/src/components/Template/Template.test.tsx +128 -6
- package/src/components/Template/Template.tsx +93 -13
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -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/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
- 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 +13 -6
- 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 +4 -4
- 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 +63 -0
- package/src/theme/components/datePicker.ts +1 -1
- package/src/theme/components/global.ts +7 -7
- 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 +3 -5
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +19 -9
- package/src/theme/components/searchBar.ts +11 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +74 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +2 -0
- package/src/theme/components/toggle.ts +10 -6
- 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 +2 -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
|
@@ -6,10 +6,10 @@ export enum HeadingDisplaySizes {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export enum HeadingLevels {
|
|
9
|
-
One =
|
|
10
|
-
Two =
|
|
11
|
-
Three =
|
|
12
|
-
Four =
|
|
13
|
-
Five =
|
|
14
|
-
Six =
|
|
9
|
+
One = "one",
|
|
10
|
+
Two = "two",
|
|
11
|
+
Three = "three",
|
|
12
|
+
Four = "four",
|
|
13
|
+
Five = "five",
|
|
14
|
+
Six = "six",
|
|
15
15
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Heading renders the UI snapshot correctly 1`] = `
|
|
4
|
+
<h1
|
|
5
|
+
className="chakra-heading css-0"
|
|
6
|
+
id="basic"
|
|
7
|
+
>
|
|
8
|
+
Heading text
|
|
9
|
+
</h1>
|
|
10
|
+
`;
|
|
11
|
+
|
|
12
|
+
exports[`Heading renders the UI snapshot correctly 2`] = `
|
|
13
|
+
<h1
|
|
14
|
+
className="chakra-heading css-0"
|
|
15
|
+
id="basicWithChildText"
|
|
16
|
+
>
|
|
17
|
+
Heading text
|
|
18
|
+
</h1>
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`Heading renders the UI snapshot correctly 3`] = `
|
|
22
|
+
<h1
|
|
23
|
+
className="chakra-heading css-0"
|
|
24
|
+
id="customDisplaySize"
|
|
25
|
+
>
|
|
26
|
+
Heading with Secondary displaySize
|
|
27
|
+
</h1>
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
exports[`Heading renders the UI snapshot correctly 4`] = `
|
|
31
|
+
<h6
|
|
32
|
+
className="chakra-heading css-0"
|
|
33
|
+
id="otherLevel"
|
|
34
|
+
>
|
|
35
|
+
Heading level six
|
|
36
|
+
</h6>
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
exports[`Heading renders the UI snapshot correctly 5`] = `
|
|
40
|
+
<h1
|
|
41
|
+
className="chakra-heading css-0"
|
|
42
|
+
id="withLink"
|
|
43
|
+
>
|
|
44
|
+
<a
|
|
45
|
+
className="css-0"
|
|
46
|
+
href="fake-url"
|
|
47
|
+
id="withLink-link"
|
|
48
|
+
rel={null}
|
|
49
|
+
target={null}
|
|
50
|
+
>
|
|
51
|
+
Heading text is a link
|
|
52
|
+
</a>
|
|
53
|
+
</h1>
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
exports[`Heading renders the UI snapshot correctly 6`] = `
|
|
57
|
+
<h1
|
|
58
|
+
className="chakra-heading css-0"
|
|
59
|
+
id="withCustomLink"
|
|
60
|
+
>
|
|
61
|
+
Part of the heading text is
|
|
62
|
+
<a
|
|
63
|
+
className="custom-link"
|
|
64
|
+
href="fake-url"
|
|
65
|
+
>
|
|
66
|
+
<span>
|
|
67
|
+
a link
|
|
68
|
+
</span>
|
|
69
|
+
</a>
|
|
70
|
+
</h1>
|
|
71
|
+
`;
|
|
@@ -1,13 +1,15 @@
|
|
|
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
10
|
import HelperErrorText from "./HelperErrorText";
|
|
11
|
+
import Link from "../Link/Link";
|
|
12
|
+
import Text from "../Text/Text";
|
|
11
13
|
import { getCategory } from "../../utils/componentCategories";
|
|
12
14
|
import DSProvider from "../../theme/provider";
|
|
13
15
|
|
|
@@ -23,10 +25,20 @@ import DSProvider from "../../theme/provider";
|
|
|
23
25
|
jest: ["HelperErrorText.test.tsx"],
|
|
24
26
|
}}
|
|
25
27
|
argTypes={{
|
|
26
|
-
|
|
28
|
+
additionalStyles: { control: false },
|
|
29
|
+
ariaAtomic: {
|
|
30
|
+
control: false,
|
|
31
|
+
table: { defaultValue: { summary: true } },
|
|
32
|
+
},
|
|
33
|
+
ariaLive: {
|
|
34
|
+
table: { defaultValue: { summary: "polite" } },
|
|
35
|
+
},
|
|
27
36
|
children: { table: { disable: true } },
|
|
28
|
-
className: {
|
|
29
|
-
id: {
|
|
37
|
+
className: { control: false },
|
|
38
|
+
id: { control: false },
|
|
39
|
+
isInvalid: {
|
|
40
|
+
table: { defaultValue: { summary: false } },
|
|
41
|
+
},
|
|
30
42
|
}}
|
|
31
43
|
/>
|
|
32
44
|
|
|
@@ -35,41 +47,57 @@ import DSProvider from "../../theme/provider";
|
|
|
35
47
|
| Component Version | DS Version |
|
|
36
48
|
| ----------------- | ---------- |
|
|
37
49
|
| Added | `0.0.10` |
|
|
38
|
-
| Latest | `0.25.
|
|
50
|
+
| Latest | `0.25.11` |
|
|
39
51
|
|
|
40
52
|
<Description of={HelperErrorText} />
|
|
41
53
|
|
|
42
54
|
<Canvas withToolbar>
|
|
43
55
|
<Story
|
|
44
|
-
name="
|
|
56
|
+
name="HelperErrorText with Controls"
|
|
45
57
|
args={{
|
|
58
|
+
additionalStyles: undefined,
|
|
59
|
+
ariaAtomic: undefined,
|
|
46
60
|
ariaLive: "polite",
|
|
61
|
+
className: undefined,
|
|
62
|
+
id: "helperErrorText-id",
|
|
47
63
|
isInvalid: false,
|
|
64
|
+
text: "This is the helper text!",
|
|
48
65
|
}}
|
|
49
66
|
>
|
|
50
67
|
{(args) => (
|
|
51
|
-
<HelperErrorText
|
|
52
|
-
{args
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
</HelperErrorText>
|
|
68
|
+
<HelperErrorText
|
|
69
|
+
{...args}
|
|
70
|
+
text={args.isInvalid ? "This is the error text :(" : args.text}
|
|
71
|
+
/>
|
|
56
72
|
)}
|
|
57
73
|
</Story>
|
|
58
74
|
</Canvas>
|
|
59
75
|
|
|
60
|
-
<ArgsTable story="
|
|
76
|
+
<ArgsTable story="HelperErrorText with Controls" />
|
|
61
77
|
|
|
62
78
|
## With HTML Children
|
|
63
79
|
|
|
64
|
-
The `HelperErrorText` component can
|
|
65
|
-
|
|
80
|
+
The `HelperErrorText` component can render any React component or HTML element
|
|
81
|
+
through the `text` prop.
|
|
66
82
|
|
|
67
83
|
<Canvas>
|
|
68
84
|
<Story name="With HTML Children">
|
|
69
|
-
<HelperErrorText
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
85
|
+
<HelperErrorText
|
|
86
|
+
text={
|
|
87
|
+
<>
|
|
88
|
+
This first example uses an HTML anchor element for{" "}
|
|
89
|
+
<a href="#">a link</a>.
|
|
90
|
+
</>
|
|
91
|
+
}
|
|
92
|
+
/>
|
|
93
|
+
<HelperErrorText
|
|
94
|
+
text={
|
|
95
|
+
<Text>
|
|
96
|
+
This second example uses DS components, such as the{" "}
|
|
97
|
+
<Link href="#">`Link`</Link> component, and the `Text` component.
|
|
98
|
+
</Text>
|
|
99
|
+
}
|
|
100
|
+
/>
|
|
73
101
|
</Story>
|
|
74
102
|
</Canvas>
|
|
75
103
|
|
|
@@ -80,7 +108,7 @@ NYPL "invalid" styling.
|
|
|
80
108
|
|
|
81
109
|
<Canvas>
|
|
82
110
|
<Story name="Invalid State">
|
|
83
|
-
<HelperErrorText isInvalid
|
|
111
|
+
<HelperErrorText isInvalid text="This is the error text :(" />
|
|
84
112
|
</Story>
|
|
85
113
|
</Canvas>
|
|
86
114
|
|
|
@@ -107,7 +135,7 @@ announced immediately.
|
|
|
107
135
|
|
|
108
136
|
<Canvas>
|
|
109
137
|
<Story
|
|
110
|
-
name="With Aria
|
|
138
|
+
name="With Aria Controls"
|
|
111
139
|
args={{
|
|
112
140
|
ariaAtomic: true,
|
|
113
141
|
ariaLive: "polite",
|
|
@@ -115,10 +143,10 @@ announced immediately.
|
|
|
115
143
|
}}
|
|
116
144
|
>
|
|
117
145
|
{(args) => (
|
|
118
|
-
<HelperErrorText
|
|
119
|
-
|
|
120
|
-
aria-atomic and aria-live props.
|
|
121
|
-
|
|
146
|
+
<HelperErrorText
|
|
147
|
+
{...args}
|
|
148
|
+
text="Only invalid text can be read to screen readers with the appropriate aria-atomic and aria-live props."
|
|
149
|
+
/>
|
|
122
150
|
)}
|
|
123
151
|
</Story>
|
|
124
152
|
</Canvas>
|
|
@@ -7,45 +7,51 @@ import HelperErrorText from "./HelperErrorText";
|
|
|
7
7
|
|
|
8
8
|
describe("HelperErrorText Accessibility", () => {
|
|
9
9
|
it("passes axe accessibility test", async () => {
|
|
10
|
-
const { container } = render(<HelperErrorText
|
|
10
|
+
const { container } = render(<HelperErrorText text="Text" />);
|
|
11
11
|
expect(await axe(container)).toHaveNoViolations();
|
|
12
12
|
});
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
describe("HelperErrorText", () => {
|
|
16
16
|
it("renders the text passed", () => {
|
|
17
|
-
render(<HelperErrorText
|
|
17
|
+
render(<HelperErrorText text="Text" />);
|
|
18
18
|
expect(screen.getByText("Text")).toBeInTheDocument();
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
+
it("renders the text passed as an HTML string", () => {
|
|
22
|
+
render(<HelperErrorText text="<b>This text is bold</b>" />);
|
|
23
|
+
expect(screen.getByText("This text is bold")).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("renders the text passed as HTML", () => {
|
|
27
|
+
render(<HelperErrorText text={<b>This text is bold</b>} />);
|
|
28
|
+
expect(screen.getByText("This text is bold")).toBeInTheDocument();
|
|
29
|
+
});
|
|
30
|
+
|
|
21
31
|
it("renders the invalid state", () => {
|
|
22
|
-
const utils = render(<HelperErrorText
|
|
32
|
+
const utils = render(<HelperErrorText text="Text" />);
|
|
23
33
|
|
|
24
34
|
// False by default. Note, this is a custom `data-*` attribute only used
|
|
25
35
|
// for testing the invalid state.
|
|
26
36
|
expect(screen.getByText("Text")).toHaveAttribute("data-isinvalid", "false");
|
|
27
37
|
|
|
28
|
-
utils.rerender(<HelperErrorText isInvalid
|
|
38
|
+
utils.rerender(<HelperErrorText isInvalid text="Text" />);
|
|
29
39
|
expect(screen.getByText("Text")).toHaveAttribute("data-isinvalid", "true");
|
|
30
40
|
});
|
|
31
41
|
|
|
32
42
|
it("has aria-live and aria-atomic attributes when errored", () => {
|
|
33
|
-
render(<HelperErrorText isInvalid
|
|
43
|
+
render(<HelperErrorText isInvalid text="Text" />);
|
|
34
44
|
expect(screen.getByText("Text")).toHaveAttribute("aria-live", "polite");
|
|
35
45
|
expect(screen.getByText("Text")).toHaveAttribute("aria-atomic");
|
|
36
46
|
});
|
|
37
47
|
|
|
38
48
|
it("accepts an aria-atomic value of false", () => {
|
|
39
|
-
const utils = render(
|
|
40
|
-
<HelperErrorText isInvalid>Static Text</HelperErrorText>
|
|
41
|
-
);
|
|
49
|
+
const utils = render(<HelperErrorText isInvalid text="Static Text" />);
|
|
42
50
|
// The default is "true".
|
|
43
51
|
expect(screen.getByText("Static Text")).toHaveAttribute("aria-atomic");
|
|
44
52
|
|
|
45
53
|
utils.rerender(
|
|
46
|
-
<HelperErrorText ariaAtomic={false} isInvalid
|
|
47
|
-
Static Text
|
|
48
|
-
</HelperErrorText>
|
|
54
|
+
<HelperErrorText ariaAtomic={false} isInvalid text="Static Text" />
|
|
49
55
|
);
|
|
50
56
|
// But the prop accepts false in case only part of the helper text
|
|
51
57
|
// should only be read instead of the whole region.
|
|
@@ -57,16 +63,37 @@ describe("HelperErrorText", () => {
|
|
|
57
63
|
|
|
58
64
|
it("Renders the UI snapshot correctly", () => {
|
|
59
65
|
const basic = renderer
|
|
60
|
-
.create(<HelperErrorText id="basic"
|
|
66
|
+
.create(<HelperErrorText id="basic" text="Text" />)
|
|
61
67
|
.toJSON();
|
|
62
68
|
const invalid = renderer
|
|
69
|
+
.create(<HelperErrorText id="invalid" isInvalid text="Text" />)
|
|
70
|
+
.toJSON();
|
|
71
|
+
const withHTMLString = renderer
|
|
63
72
|
.create(
|
|
64
|
-
<HelperErrorText
|
|
65
|
-
|
|
66
|
-
|
|
73
|
+
<HelperErrorText
|
|
74
|
+
id="invalid"
|
|
75
|
+
isInvalid
|
|
76
|
+
text="This helper text <b>contains HTML in the string</b>."
|
|
77
|
+
/>
|
|
67
78
|
)
|
|
68
79
|
.toJSON();
|
|
80
|
+
const withHTMLElement = renderer
|
|
81
|
+
.create(
|
|
82
|
+
<HelperErrorText
|
|
83
|
+
id="invalid"
|
|
84
|
+
isInvalid
|
|
85
|
+
text={
|
|
86
|
+
<>
|
|
87
|
+
This helper text <b>contains HTML</b>.
|
|
88
|
+
</>
|
|
89
|
+
}
|
|
90
|
+
/>
|
|
91
|
+
)
|
|
92
|
+
.toJSON();
|
|
93
|
+
|
|
69
94
|
expect(basic).toMatchSnapshot();
|
|
70
95
|
expect(invalid).toMatchSnapshot();
|
|
96
|
+
expect(withHTMLString).toMatchSnapshot();
|
|
97
|
+
expect(withHTMLElement).toMatchSnapshot();
|
|
71
98
|
});
|
|
72
99
|
});
|
|
@@ -4,6 +4,7 @@ import { Box, useStyleConfig } from "@chakra-ui/react";
|
|
|
4
4
|
import generateUUID from "../../helpers/generateUUID";
|
|
5
5
|
|
|
6
6
|
export type AriaLiveValues = "assertive" | "off" | "polite";
|
|
7
|
+
export type HelperErrorTextType = string | JSX.Element;
|
|
7
8
|
|
|
8
9
|
interface HelperErrorTextProps {
|
|
9
10
|
/** Optionally pass in additional Chakra-based styles. */
|
|
@@ -24,38 +25,37 @@ interface HelperErrorTextProps {
|
|
|
24
25
|
id?: string;
|
|
25
26
|
/** Toggles between helper and invalid styling. */
|
|
26
27
|
isInvalid?: boolean;
|
|
28
|
+
/** The text to display. */
|
|
29
|
+
text: HelperErrorTextType;
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
/**
|
|
30
33
|
* Helper or Error text for forms
|
|
31
34
|
*/
|
|
32
|
-
export default function HelperErrorText(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
id = generateUUID(),
|
|
42
|
-
isInvalid = false,
|
|
43
|
-
} = props;
|
|
35
|
+
export default function HelperErrorText({
|
|
36
|
+
additionalStyles = {},
|
|
37
|
+
ariaAtomic = true,
|
|
38
|
+
ariaLive = "polite",
|
|
39
|
+
className = "",
|
|
40
|
+
id = generateUUID(),
|
|
41
|
+
isInvalid = false,
|
|
42
|
+
text,
|
|
43
|
+
}: HelperErrorTextProps) {
|
|
44
44
|
// Only announce the text in the invalid state.
|
|
45
45
|
const announceAriaLive = isInvalid;
|
|
46
46
|
const styles = useStyleConfig("HelperErrorText", { isInvalid });
|
|
47
47
|
const finalStyles = { ...styles, ...additionalStyles };
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
</Box>
|
|
48
|
+
const props = {
|
|
49
|
+
"aria-atomic": ariaAtomic,
|
|
50
|
+
"aria-live": announceAriaLive ? ariaLive : "off",
|
|
51
|
+
className,
|
|
52
|
+
"data-isinvalid": isInvalid,
|
|
53
|
+
id,
|
|
54
|
+
__css: finalStyles,
|
|
55
|
+
};
|
|
56
|
+
return typeof text === "string" ? (
|
|
57
|
+
<Box {...props} dangerouslySetInnerHTML={{ __html: text }} />
|
|
58
|
+
) : (
|
|
59
|
+
<Box {...props}>{text}</Box>
|
|
60
60
|
);
|
|
61
61
|
}
|
|
@@ -5,14 +5,47 @@ exports[`HelperErrorText Renders the UI snapshot correctly 1`] = `
|
|
|
5
5
|
aria-atomic={true}
|
|
6
6
|
aria-live="off"
|
|
7
7
|
className=" css-0"
|
|
8
|
+
dangerouslySetInnerHTML={
|
|
9
|
+
Object {
|
|
10
|
+
"__html": "Text",
|
|
11
|
+
}
|
|
12
|
+
}
|
|
8
13
|
data-isinvalid={false}
|
|
9
14
|
id="basic"
|
|
10
|
-
|
|
11
|
-
Text
|
|
12
|
-
</div>
|
|
15
|
+
/>
|
|
13
16
|
`;
|
|
14
17
|
|
|
15
18
|
exports[`HelperErrorText Renders the UI snapshot correctly 2`] = `
|
|
19
|
+
<div
|
|
20
|
+
aria-atomic={true}
|
|
21
|
+
aria-live="polite"
|
|
22
|
+
className=" css-0"
|
|
23
|
+
dangerouslySetInnerHTML={
|
|
24
|
+
Object {
|
|
25
|
+
"__html": "Text",
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
data-isinvalid={true}
|
|
29
|
+
id="invalid"
|
|
30
|
+
/>
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
exports[`HelperErrorText Renders the UI snapshot correctly 3`] = `
|
|
34
|
+
<div
|
|
35
|
+
aria-atomic={true}
|
|
36
|
+
aria-live="polite"
|
|
37
|
+
className=" css-0"
|
|
38
|
+
dangerouslySetInnerHTML={
|
|
39
|
+
Object {
|
|
40
|
+
"__html": "This helper text <b>contains HTML in the string</b>.",
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
data-isinvalid={true}
|
|
44
|
+
id="invalid"
|
|
45
|
+
/>
|
|
46
|
+
`;
|
|
47
|
+
|
|
48
|
+
exports[`HelperErrorText Renders the UI snapshot correctly 4`] = `
|
|
16
49
|
<div
|
|
17
50
|
aria-atomic={true}
|
|
18
51
|
aria-live="polite"
|
|
@@ -20,6 +53,10 @@ exports[`HelperErrorText Renders the UI snapshot correctly 2`] = `
|
|
|
20
53
|
data-isinvalid={true}
|
|
21
54
|
id="invalid"
|
|
22
55
|
>
|
|
23
|
-
|
|
56
|
+
This helper text
|
|
57
|
+
<b>
|
|
58
|
+
contains HTML
|
|
59
|
+
</b>
|
|
60
|
+
.
|
|
24
61
|
</div>
|
|
25
62
|
`;
|