@nypl/design-system-react-components 0.25.7 → 0.25.10
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 +119 -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 +1 -21
- package/dist/components/Icons/IconTypes.d.ts +1 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/Image/ImageTypes.d.ts +3 -1
- package/dist/components/Link/LinkTypes.d.ts +1 -0
- 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 +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 +5 -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 +48 -0
- package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
- package/dist/design-system-react-components.cjs.development.js +4698 -4405
- 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 +5862 -5573
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +13 -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 +8 -4
- 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 +71 -0
- package/dist/theme/foundations/spacing.d.ts +2 -0
- 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 +16 -15
- 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 +25 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +103 -4
- 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 -8
- 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 +246 -64
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +30 -14
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
- 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 +14 -17
- 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 +14 -12
- package/src/components/DatePicker/DatePicker.tsx +13 -10
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
- 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 +77 -75
- package/src/components/Icons/Icon.tsx +4 -5
- package/src/components/Icons/IconSvgs.tsx +2 -42
- package/src/components/Icons/IconTypes.tsx +1 -24
- package/src/components/Image/Image.stories.mdx +214 -104
- package/src/components/Image/Image.test.tsx +10 -0
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Image/ImageTypes.ts +2 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- package/src/components/Label/Label.stories.mdx +21 -20
- package/src/components/Link/Link.stories.mdx +103 -53
- package/src/components/Link/Link.test.tsx +108 -7
- package/src/components/Link/Link.tsx +58 -19
- package/src/components/Link/LinkTypes.tsx +1 -0
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
- package/src/components/List/List.stories.mdx +37 -25
- package/src/components/List/List.tsx +1 -1
- 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 +96 -40
- package/src/components/Notification/Notification.test.tsx +62 -16
- package/src/components/Notification/Notification.tsx +26 -9
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
- package/src/components/Pagination/Pagination.stories.mdx +19 -9
- package/src/components/Pagination/Pagination.tsx +3 -3
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
- 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 +116 -34
- package/src/components/SearchBar/SearchBar.tsx +70 -50
- package/src/components/Select/Select.stories.mdx +177 -66
- package/src/components/Select/Select.test.tsx +91 -2
- package/src/components/Select/Select.tsx +29 -13
- 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 +74 -23
- package/src/components/Slider/Slider.test.tsx +35 -0
- package/src/components/Slider/Slider.tsx +22 -11
- 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 +33 -18
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
- package/src/components/Template/Template.stories.mdx +132 -49
- 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 +200 -0
- package/src/components/Toggle/Toggle.test.tsx +140 -0
- package/src/components/Toggle/Toggle.tsx +123 -0
- package/src/components/Toggle/ToggleSizes.tsx +4 -0
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +19 -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 +5 -5
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +9 -7
- 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/icon.ts +2 -2
- package/src/theme/components/image.ts +9 -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 +9 -7
- 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 +69 -0
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/spacing.ts +3 -0
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +8 -0
- package/src/utils/componentCategories.ts +5 -2
- 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
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
2
|
ArgsTable,
|
|
6
|
-
|
|
3
|
+
Canvas,
|
|
7
4
|
Description,
|
|
8
|
-
|
|
5
|
+
Meta,
|
|
6
|
+
Story,
|
|
7
|
+
} from "@storybook/addon-docs";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
10
9
|
|
|
11
10
|
import Heading from "./Heading";
|
|
12
11
|
import { HeadingDisplaySizes, HeadingLevels } from "./HeadingTypes";
|
|
13
12
|
import { getCategory } from "../../utils/componentCategories";
|
|
13
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
14
|
+
|
|
15
|
+
export const sizesEnumValues = getStorybookEnumValues(
|
|
16
|
+
HeadingDisplaySizes,
|
|
17
|
+
"HeadingDisplaySizes"
|
|
18
|
+
);
|
|
19
|
+
export const levelsEnumValues = getStorybookEnumValues(
|
|
20
|
+
HeadingLevels,
|
|
21
|
+
"HeadingLevels"
|
|
22
|
+
);
|
|
14
23
|
|
|
15
24
|
<Meta
|
|
16
25
|
title={getCategory("Heading")}
|
|
@@ -19,15 +28,23 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
19
28
|
parameters={{
|
|
20
29
|
design: {
|
|
21
30
|
type: "figma",
|
|
22
|
-
url:
|
|
23
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
|
|
31
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
|
|
24
32
|
},
|
|
25
33
|
jest: ["Heading.test.tsx"],
|
|
26
34
|
}}
|
|
27
35
|
argTypes={{
|
|
28
|
-
additionalStyles: {
|
|
29
|
-
className: {
|
|
30
|
-
|
|
36
|
+
additionalStyles: { control: false },
|
|
37
|
+
className: { control: false },
|
|
38
|
+
displaySize: {
|
|
39
|
+
control: { type: "select" },
|
|
40
|
+
options: sizesEnumValues.options,
|
|
41
|
+
},
|
|
42
|
+
id: { control: false },
|
|
43
|
+
level: {
|
|
44
|
+
control: { type: "select" },
|
|
45
|
+
options: levelsEnumValues.options,
|
|
46
|
+
table: { defaultValue: { summary: "HeadingLevels.Two" } },
|
|
47
|
+
},
|
|
31
48
|
}}
|
|
32
49
|
/>
|
|
33
50
|
|
|
@@ -36,25 +53,41 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
36
53
|
| Component Version | DS Version |
|
|
37
54
|
| ----------------- | ---------- |
|
|
38
55
|
| Added | `0.0.4` |
|
|
39
|
-
| Latest | `0.25.
|
|
56
|
+
| Latest | `0.25.9` |
|
|
40
57
|
|
|
41
58
|
<Description of={Heading} />
|
|
42
59
|
|
|
43
|
-
A `Heading` component will render a standard HTML `<h>` tag (1-6). The heading's
|
|
60
|
+
A `Heading` component will render a standard HTML `<h>` tag (1-6). The heading's
|
|
61
|
+
text can be passed in through a `text` prop or as a child. Default styles for
|
|
62
|
+
semantic elements can be overwritten using the `displaySize` prop.
|
|
44
63
|
|
|
45
64
|
<Canvas withToolbar>
|
|
46
65
|
<Story
|
|
47
|
-
name="Heading
|
|
66
|
+
name="Heading with Controls"
|
|
48
67
|
args={{
|
|
49
|
-
|
|
68
|
+
additionalStyles: undefined,
|
|
69
|
+
className: undefined,
|
|
70
|
+
displaySize: undefined,
|
|
71
|
+
id: "heading-id",
|
|
72
|
+
level: "HeadingLevels.Two",
|
|
50
73
|
text: "Default Heading",
|
|
74
|
+
url: undefined,
|
|
75
|
+
urlClass: undefined,
|
|
51
76
|
}}
|
|
52
77
|
>
|
|
53
|
-
{(args) =>
|
|
78
|
+
{(args) => (
|
|
79
|
+
<Heading
|
|
80
|
+
{...args}
|
|
81
|
+
displaySize={
|
|
82
|
+
args.displaySize && sizesEnumValues.getValue(args.displaySize)
|
|
83
|
+
}
|
|
84
|
+
level={levelsEnumValues.getValue(args.level)}
|
|
85
|
+
/>
|
|
86
|
+
)}
|
|
54
87
|
</Story>
|
|
55
88
|
</Canvas>
|
|
56
89
|
|
|
57
|
-
<ArgsTable story="Heading
|
|
90
|
+
<ArgsTable story="Heading with Controls" />
|
|
58
91
|
|
|
59
92
|
## Default Heading Styles
|
|
60
93
|
|
|
@@ -64,32 +97,32 @@ A `Heading` component will render a standard HTML `<h>` tag (1-6). The heading's
|
|
|
64
97
|
<Heading
|
|
65
98
|
id="heading-one"
|
|
66
99
|
level={HeadingLevels.One}
|
|
67
|
-
text="<h1> Heading 1"
|
|
100
|
+
text="<h1> Heading 1 - HeadingLevels.One"
|
|
68
101
|
/>
|
|
69
102
|
<Heading
|
|
70
103
|
id="heading-two"
|
|
71
104
|
level={HeadingLevels.Two}
|
|
72
|
-
text="<h2> Heading 2"
|
|
105
|
+
text="<h2> Heading 2 - HeadingLevels.Two"
|
|
73
106
|
/>
|
|
74
107
|
<Heading
|
|
75
108
|
id="heading-three"
|
|
76
109
|
level={HeadingLevels.Three}
|
|
77
|
-
text="<h3> Heading 3"
|
|
110
|
+
text="<h3> Heading 3 - HeadingLevels.Three"
|
|
78
111
|
/>
|
|
79
112
|
<Heading
|
|
80
113
|
id="heading-four"
|
|
81
114
|
level={HeadingLevels.Four}
|
|
82
|
-
text="<h4> Heading 4"
|
|
115
|
+
text="<h4> Heading 4 - HeadingLevels.Four"
|
|
83
116
|
/>
|
|
84
117
|
<Heading
|
|
85
118
|
id="heading-five"
|
|
86
119
|
level={HeadingLevels.Five}
|
|
87
|
-
text="<h5> Heading 5"
|
|
120
|
+
text="<h5> Heading 5 - HeadingLevels.Five"
|
|
88
121
|
/>
|
|
89
122
|
<Heading
|
|
90
123
|
id="heading-six"
|
|
91
124
|
level={HeadingLevels.Six}
|
|
92
|
-
text="<h6> Heading 6"
|
|
125
|
+
text="<h6> Heading 6 - HeadingLevels.Six"
|
|
93
126
|
/>
|
|
94
127
|
</div>
|
|
95
128
|
</Story>
|
|
@@ -97,6 +130,9 @@ A `Heading` component will render a standard HTML `<h>` tag (1-6). The heading's
|
|
|
97
130
|
|
|
98
131
|
## DisplaySize Styles
|
|
99
132
|
|
|
133
|
+
Note: The `level` prop for the `Heading`s in the next example are all set to
|
|
134
|
+
`level={HeadingLevels.One}`.
|
|
135
|
+
|
|
100
136
|
<Canvas>
|
|
101
137
|
<Story name="DisplaySize Styles">
|
|
102
138
|
<div>
|
|
@@ -155,7 +191,7 @@ When the `url` prop is passed to `Heading`, a child `<a>` element is created and
|
|
|
155
191
|
/>
|
|
156
192
|
<Heading id="heading-with-link-child" level={HeadingLevels.Two}>
|
|
157
193
|
<>
|
|
158
|
-
Heading with a Word <a href="hello">Link</a>
|
|
194
|
+
Heading with a Word <a href="#hello">Link</a>
|
|
159
195
|
</>
|
|
160
196
|
</Heading>
|
|
161
197
|
</Story>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { render, screen } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
4
5
|
|
|
5
6
|
import Heading from "./Heading";
|
|
6
7
|
import { HeadingDisplaySizes, HeadingLevels } from "./HeadingTypes";
|
|
@@ -15,12 +16,13 @@ describe("Heading Accessibility", () => {
|
|
|
15
16
|
});
|
|
16
17
|
|
|
17
18
|
describe("Heading", () => {
|
|
18
|
-
it("
|
|
19
|
+
it("renders and HTML heading element with the correct level", () => {
|
|
19
20
|
render(<Heading id="h1" level={HeadingLevels.One} text="Heading 1" />);
|
|
20
21
|
expect(screen.getByRole("heading", { level: 1 })).toBeInTheDocument();
|
|
21
22
|
expect(screen.getByText("Heading 1")).toBeInTheDocument();
|
|
22
23
|
});
|
|
23
|
-
|
|
24
|
+
|
|
25
|
+
it("can pass heading content as child", () => {
|
|
24
26
|
render(
|
|
25
27
|
<Heading id="h1" level={HeadingLevels.Two}>
|
|
26
28
|
Heading 2
|
|
@@ -30,13 +32,18 @@ describe("Heading", () => {
|
|
|
30
32
|
expect(screen.getByText("Heading 2")).toBeInTheDocument();
|
|
31
33
|
});
|
|
32
34
|
|
|
35
|
+
it("renders the default level two if no `level` prop is passed", () => {
|
|
36
|
+
render(<Heading id="h2">Heading 2</Heading>);
|
|
37
|
+
expect(screen.getByRole("heading", { level: 2 })).toBeInTheDocument();
|
|
38
|
+
});
|
|
39
|
+
|
|
33
40
|
// TODO: check that header children are links
|
|
34
41
|
// it("Throws error when invalid heading is passed as child", () => {
|
|
35
42
|
// expect(() => render(<Heading id="h1" level={HeadingLevels.Three}><span>oh no</span></Heading>))
|
|
36
43
|
// .to.throw("Headings can only be plain text or bold");
|
|
37
44
|
// });
|
|
38
45
|
|
|
39
|
-
it("
|
|
46
|
+
it("can pass a span element as a child", () => {
|
|
40
47
|
render(
|
|
41
48
|
<Heading id="h1" level={HeadingLevels.One}>
|
|
42
49
|
<span>
|
|
@@ -47,7 +54,7 @@ describe("Heading", () => {
|
|
|
47
54
|
expect(screen.getByText(/Text/i)).toBeInTheDocument();
|
|
48
55
|
});
|
|
49
56
|
|
|
50
|
-
it("
|
|
57
|
+
it("prioritizes the child when both child and the text prop are passed", () => {
|
|
51
58
|
render(
|
|
52
59
|
<Heading id="h1" level={HeadingLevels.One} text="prop text">
|
|
53
60
|
child text
|
|
@@ -56,20 +63,20 @@ describe("Heading", () => {
|
|
|
56
63
|
expect(screen.getByText("child text")).toBeInTheDocument();
|
|
57
64
|
});
|
|
58
65
|
|
|
59
|
-
it("
|
|
66
|
+
it("renders an anchor element when the `url` prop is passed", () => {
|
|
60
67
|
render(
|
|
61
68
|
<Heading
|
|
62
69
|
id="h1"
|
|
63
70
|
level={HeadingLevels.One}
|
|
64
|
-
url="fake-url"
|
|
65
71
|
text="Heading 1"
|
|
72
|
+
url="fake-url"
|
|
66
73
|
/>
|
|
67
74
|
);
|
|
68
75
|
|
|
69
76
|
expect(screen.getByRole("link")).toBeInTheDocument();
|
|
70
77
|
});
|
|
71
78
|
|
|
72
|
-
it("
|
|
79
|
+
it("adds the `urlClass` prop to the anchor element as its class name", () => {
|
|
73
80
|
render(
|
|
74
81
|
<Heading
|
|
75
82
|
id="h1"
|
|
@@ -84,19 +91,13 @@ describe("Heading", () => {
|
|
|
84
91
|
);
|
|
85
92
|
});
|
|
86
93
|
|
|
87
|
-
it("
|
|
88
|
-
expect(() =>
|
|
89
|
-
|
|
90
|
-
).toThrow("Heading only supports levels 1-6");
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it("Throws error when neither child nor text is passed", () => {
|
|
94
|
-
expect(() => render(<Heading id="h1" level={9} />)).toThrow(
|
|
95
|
-
"Heading only supports levels 1-6"
|
|
94
|
+
it("throws error when neither child nor text is passed", () => {
|
|
95
|
+
expect(() => render(<Heading id="h1" level={HeadingLevels.One} />)).toThrow(
|
|
96
|
+
"Heading has no children, please pass prop: text"
|
|
96
97
|
);
|
|
97
98
|
});
|
|
98
99
|
|
|
99
|
-
it("
|
|
100
|
+
it("throws error when heading with many children is passed", () => {
|
|
100
101
|
expect(() =>
|
|
101
102
|
render(
|
|
102
103
|
<Heading id="h1" level={HeadingLevels.Four}>
|
|
@@ -107,7 +108,7 @@ describe("Heading", () => {
|
|
|
107
108
|
).toThrow("Please only pass one child into Heading, got span, span");
|
|
108
109
|
});
|
|
109
110
|
|
|
110
|
-
it("
|
|
111
|
+
it("uses custom display size", () => {
|
|
111
112
|
render(
|
|
112
113
|
<Heading
|
|
113
114
|
id="h1"
|
|
@@ -120,4 +121,67 @@ describe("Heading", () => {
|
|
|
120
121
|
"font-size": "2em",
|
|
121
122
|
});
|
|
122
123
|
});
|
|
124
|
+
|
|
125
|
+
it("renders the UI snapshot correctly", () => {
|
|
126
|
+
const basic = renderer
|
|
127
|
+
.create(
|
|
128
|
+
<Heading id="basic" level={HeadingLevels.One} text="Heading text" />
|
|
129
|
+
)
|
|
130
|
+
.toJSON();
|
|
131
|
+
const basicWithChildText = renderer
|
|
132
|
+
.create(
|
|
133
|
+
<Heading id="basicWithChildText" level={HeadingLevels.One}>
|
|
134
|
+
Heading text
|
|
135
|
+
</Heading>
|
|
136
|
+
)
|
|
137
|
+
.toJSON();
|
|
138
|
+
const customDisplaySize = renderer
|
|
139
|
+
.create(
|
|
140
|
+
<Heading
|
|
141
|
+
id="customDisplaySize"
|
|
142
|
+
level={HeadingLevels.One}
|
|
143
|
+
text="Heading with Secondary displaySize"
|
|
144
|
+
displaySize={HeadingDisplaySizes.Secondary}
|
|
145
|
+
/>
|
|
146
|
+
)
|
|
147
|
+
.toJSON();
|
|
148
|
+
const otherLevel = renderer
|
|
149
|
+
.create(
|
|
150
|
+
<Heading
|
|
151
|
+
id="otherLevel"
|
|
152
|
+
level={HeadingLevels.Six}
|
|
153
|
+
text="Heading level six"
|
|
154
|
+
/>
|
|
155
|
+
)
|
|
156
|
+
.toJSON();
|
|
157
|
+
const withLink = renderer
|
|
158
|
+
.create(
|
|
159
|
+
<Heading
|
|
160
|
+
id="withLink"
|
|
161
|
+
level={HeadingLevels.One}
|
|
162
|
+
text="Heading text is a link"
|
|
163
|
+
url="fake-url"
|
|
164
|
+
/>
|
|
165
|
+
)
|
|
166
|
+
.toJSON();
|
|
167
|
+
const withCustomLink = renderer
|
|
168
|
+
.create(
|
|
169
|
+
<Heading id="withCustomLink" level={HeadingLevels.One}>
|
|
170
|
+
<>
|
|
171
|
+
Part of the heading text is
|
|
172
|
+
<a href="fake-url" className="custom-link">
|
|
173
|
+
<span>a link</span>
|
|
174
|
+
</a>
|
|
175
|
+
</>
|
|
176
|
+
</Heading>
|
|
177
|
+
)
|
|
178
|
+
.toJSON();
|
|
179
|
+
|
|
180
|
+
expect(basic).toMatchSnapshot();
|
|
181
|
+
expect(basicWithChildText).toMatchSnapshot();
|
|
182
|
+
expect(customDisplaySize).toMatchSnapshot();
|
|
183
|
+
expect(otherLevel).toMatchSnapshot();
|
|
184
|
+
expect(withLink).toMatchSnapshot();
|
|
185
|
+
expect(withCustomLink).toMatchSnapshot();
|
|
186
|
+
});
|
|
123
187
|
});
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
|
|
1
|
+
import { Heading as ChakraHeading, useStyleConfig } from "@chakra-ui/react";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import {
|
|
4
|
-
Box,
|
|
5
|
-
Heading as ChakraHeading,
|
|
6
|
-
Link as ChakraLink,
|
|
7
|
-
useStyleConfig,
|
|
8
|
-
} from "@chakra-ui/react";
|
|
9
3
|
|
|
10
4
|
import { HeadingDisplaySizes, HeadingLevels } from "./HeadingTypes";
|
|
5
|
+
import Link from "../Link/Link";
|
|
6
|
+
import { getVariant } from "../../utils/utils";
|
|
7
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
11
8
|
|
|
12
9
|
export interface HeadingProps {
|
|
13
10
|
/** Optionally pass in additional Chakra-based styles. */
|
|
14
11
|
additionalStyles?: { [key: string]: any };
|
|
15
12
|
/** Optional className that appears in addition to `heading` */
|
|
16
13
|
className?: string;
|
|
17
|
-
/** Optional size used to override the default styles of the semantic
|
|
14
|
+
/** Optional size used to override the default styles of the semantic HTM
|
|
15
|
+
* `<h>` elements */
|
|
18
16
|
displaySize?: HeadingDisplaySizes;
|
|
19
17
|
/** Optional ID that other components can cross reference for accessibility purposes */
|
|
20
18
|
id?: string;
|
|
21
|
-
/** Optional number 1-6 used to create the `<h*>` tag; if prop is not passed,
|
|
19
|
+
/** Optional number 1-6 used to create the `<h*>` tag; if prop is not passed,
|
|
20
|
+
* `Heading` will default to `<h2>` */
|
|
22
21
|
level?: HeadingLevels;
|
|
23
22
|
/** Inner text of the `<h*>` element */
|
|
24
23
|
text?: string;
|
|
25
|
-
/** Optional URL that header points to; when `url` prop is passed to
|
|
24
|
+
/** Optional URL that header points to; when `url` prop is passed to
|
|
25
|
+
* `Heading`, a child `<a>` element is created and the heading text becomes
|
|
26
|
+
* an active link */
|
|
26
27
|
url?: string;
|
|
27
28
|
/** Optional className for the URL when the `url` prop is passed */
|
|
28
29
|
urlClass?: string;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
/** Map the word heading level to the number heading level. The default is 2. */
|
|
33
|
+
const getMappedLevel = (level = HeadingLevels.Two) => {
|
|
34
|
+
const levelMap = {
|
|
35
|
+
one: 1,
|
|
36
|
+
two: 2,
|
|
37
|
+
three: 3,
|
|
38
|
+
four: 4,
|
|
39
|
+
five: 5,
|
|
40
|
+
six: 6,
|
|
41
|
+
};
|
|
42
|
+
return levelMap[level] || 2;
|
|
43
|
+
};
|
|
43
44
|
|
|
44
45
|
function Heading(props: React.PropsWithChildren<HeadingProps>) {
|
|
45
46
|
const {
|
|
46
47
|
additionalStyles = {},
|
|
47
48
|
className,
|
|
48
49
|
displaySize,
|
|
49
|
-
id,
|
|
50
|
+
id = generateUUID(),
|
|
50
51
|
level = HeadingLevels.Two,
|
|
51
52
|
text,
|
|
52
53
|
url,
|
|
53
54
|
urlClass,
|
|
54
55
|
} = props;
|
|
55
|
-
const
|
|
56
|
+
const finalLevel = getMappedLevel(level);
|
|
57
|
+
const variant = displaySize
|
|
58
|
+
? getVariant(displaySize, HeadingDisplaySizes)
|
|
59
|
+
: `h${finalLevel}`;
|
|
56
60
|
const styles = useStyleConfig("Heading", { variant });
|
|
57
61
|
// Combine native base styles with any additional styles.
|
|
58
62
|
// This is used in the `Hero` and `Notification` components.
|
|
59
63
|
const finalStyles = { ...styles, ...additionalStyles };
|
|
60
|
-
const asHeading: any = `h${
|
|
61
|
-
|
|
62
|
-
if (level < 1 || level > 6) {
|
|
63
|
-
throw new Error("Heading only supports levels 1-6");
|
|
64
|
-
}
|
|
64
|
+
const asHeading: any = `h${finalLevel}`;
|
|
65
65
|
|
|
66
66
|
if (!props.children && !text) {
|
|
67
67
|
throw new Error("Heading has no children, please pass prop: text");
|
|
@@ -80,9 +80,9 @@ function Heading(props: React.PropsWithChildren<HeadingProps>) {
|
|
|
80
80
|
|
|
81
81
|
const contentToRender = props.children ? props.children : text;
|
|
82
82
|
const content = url ? (
|
|
83
|
-
<
|
|
83
|
+
<Link className={urlClass} href={url} id={`${id}-link`}>
|
|
84
84
|
{contentToRender}
|
|
85
|
-
</
|
|
85
|
+
</Link>
|
|
86
86
|
) : (
|
|
87
87
|
contentToRender
|
|
88
88
|
);
|
|
@@ -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.9` |
|
|
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>
|