@nypl/design-system-react-components 0.23.4 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -1
- package/README.md +46 -11
- package/dist/components/Accordion/Accordion.d.ts +14 -14
- package/dist/components/Autosuggest/Autosuggest.stories.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -14
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
- package/dist/components/Button/Button.d.ts +6 -13
- package/dist/components/Button/ButtonTypes.d.ts +5 -3
- package/dist/components/Card/Card.d.ts +59 -10
- package/dist/components/Card/CardTypes.d.ts +19 -0
- package/dist/components/CardEdition/CardEdition.d.ts +21 -0
- package/dist/components/{StyleGuide/Colors.stories.d.ts → CardEdition/CardEdition.stories.d.ts} +5 -2
- package/dist/components/Checkbox/Checkbox.d.ts +21 -16
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +43 -0
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
- package/dist/components/DatePicker/DatePicker.d.ts +79 -0
- package/dist/components/DatePicker/DatePickerTypes.d.ts +5 -0
- package/dist/components/Form/Form.d.ts +16 -8
- package/dist/components/Form/FormTypes.d.ts +2 -0
- package/dist/components/Grid/GridTypes.d.ts +9 -0
- package/dist/components/Grid/SimpleGrid.d.ts +14 -0
- package/dist/components/Heading/Heading.d.ts +9 -11
- package/dist/components/Heading/{HeadingDisplaySizes.d.ts → HeadingTypes.d.ts} +8 -0
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +2 -1
- package/dist/components/Hero/Hero.d.ts +19 -14
- package/dist/components/Hero/HeroTypes.d.ts +10 -5
- package/dist/components/Icons/Icon.d.ts +13 -16
- package/dist/components/Icons/IconSvgs.d.ts +4 -0
- package/dist/components/Icons/IconTypes.d.ts +78 -60
- package/dist/components/Image/Image.stories.d.ts +2 -1
- package/dist/components/Label/Label.d.ts +10 -26
- package/dist/components/Link/Link.d.ts +8 -12
- package/dist/components/List/List.stories.d.ts +1 -0
- package/dist/components/Radio/Radio.d.ts +30 -24
- package/dist/components/RadioGroup/RadioGroup.d.ts +40 -0
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +4 -0
- package/dist/components/SearchBar/SearchBar.d.ts +45 -27
- package/dist/components/Select/Select.d.ts +34 -35
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +1 -1
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
- package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
- package/dist/components/Tabs/Tabs.d.ts +25 -0
- package/dist/components/Template/Template.d.ts +91 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/Text/TextTypes.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +37 -30
- package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
- package/dist/design-system-react-components.cjs.development.js +4102 -917
- 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 +4023 -920
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +23 -5
- package/dist/resources.scss +133 -24
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +25 -0
- package/dist/theme/components/breadcrumb.d.ts +90 -0
- package/dist/theme/components/button.d.ts +109 -0
- package/dist/theme/components/checkbox.d.ts +91 -0
- package/dist/theme/components/customCheckboxGroup.d.ts +18 -0
- package/dist/theme/components/customRadioGroup.d.ts +18 -0
- package/dist/theme/components/global.d.ts +55 -0
- package/dist/theme/components/globalMixins.d.ts +15 -0
- package/dist/theme/components/heading.d.ts +110 -0
- package/dist/theme/components/hero.d.ts +492 -0
- package/dist/theme/components/icon.d.ts +13 -0
- package/dist/theme/components/label.d.ts +16 -0
- package/dist/theme/components/link.d.ts +45 -0
- package/dist/theme/components/radio.d.ts +95 -0
- package/dist/theme/components/searchBar.d.ts +20 -0
- package/dist/theme/components/select.d.ts +58 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/tabs.d.ts +85 -0
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +20 -0
- package/dist/theme/components/textInput.d.ts +105 -0
- package/dist/theme/foundations/breakpoints.d.ts +23 -0
- package/dist/theme/foundations/colors.d.ts +3 -0
- package/dist/theme/foundations/global.d.ts +23 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +77 -0
- package/dist/theme/foundations/typography.d.ts +8 -0
- package/dist/theme/index.d.ts +20 -0
- package/dist/theme/provider.d.ts +5 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/utils/utils.d.ts +6 -0
- package/package.json +9 -2
- package/src/components/Accordion/Accordion.stories.mdx +233 -33
- package/src/components/Accordion/Accordion.test.tsx +135 -19
- package/src/components/Accordion/Accordion.tsx +81 -56
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -1
- package/src/components/Autosuggest/_Autosuggest.scss +2 -2
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +57 -56
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +31 -25
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +71 -73
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +100 -0
- package/src/components/Button/Button.stories.mdx +125 -138
- package/src/components/Button/Button.test.tsx +65 -11
- package/src/components/Button/Button.tsx +72 -68
- package/src/components/Button/ButtonTypes.tsx +4 -2
- package/src/components/Button/_Button.scss +7 -92
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +58 -3
- package/src/components/Card/Card.stories.mdx +694 -0
- package/src/components/Card/Card.test.tsx +97 -102
- package/src/components/Card/Card.tsx +182 -31
- package/src/components/Card/CardTypes.tsx +21 -0
- package/src/components/Card/_Card.scss +234 -49
- package/src/components/{Card/Card.stories.tsx → CardEdition/CardEdition.stories.tsx} +32 -22
- package/src/components/CardEdition/CardEdition.test.tsx +395 -0
- package/src/components/CardEdition/CardEdition.tsx +60 -0
- package/src/components/CardEdition/_CardEdition.scss +138 -0
- package/src/components/Chakra/Box.stories.mdx +57 -0
- package/src/components/Chakra/Center.stories.mdx +99 -0
- package/src/components/Chakra/Grid.stories.mdx +79 -0
- package/src/components/Chakra/Stack.stories.mdx +93 -0
- package/src/components/Checkbox/Checkbox.stories.mdx +57 -35
- package/src/components/Checkbox/Checkbox.test.tsx +117 -147
- package/src/components/Checkbox/Checkbox.tsx +76 -50
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +325 -0
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +249 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +345 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +148 -0
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1360 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +284 -0
- package/src/components/DatePicker/DatePicker.test.tsx +657 -0
- package/src/components/DatePicker/DatePicker.tsx +396 -0
- package/src/components/DatePicker/DatePickerTypes.tsx +5 -0
- package/src/components/DatePicker/_DatePicker.scss +76 -0
- package/src/components/Form/Form.stories.mdx +130 -27
- package/src/components/Form/Form.test.tsx +78 -36
- package/src/components/Form/Form.tsx +53 -19
- package/src/components/Form/FormTypes.tsx +3 -0
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +38 -0
- package/src/components/Grid/GridTypes.tsx +9 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +275 -0
- package/src/components/Grid/SimpleGrid.test.tsx +66 -0
- package/src/components/Grid/SimpleGrid.tsx +37 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
- package/src/components/Heading/Heading.stories.mdx +63 -33
- package/src/components/Heading/Heading.test.tsx +24 -16
- package/src/components/Heading/Heading.tsx +54 -38
- package/src/components/Heading/{HeadingDisplaySizes.tsx → HeadingTypes.tsx} +9 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +2 -1
- package/src/components/HelperErrorText/_HelperErrorText.scss +1 -1
- package/src/components/Hero/Hero.stories.mdx +195 -85
- package/src/components/Hero/Hero.test.tsx +544 -113
- package/src/components/Hero/Hero.tsx +80 -93
- package/src/components/Hero/HeroTypes.tsx +17 -5
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -1
- package/src/components/HorizontalRule/_HorizontalRule.scss +1 -1
- package/src/components/Icons/Icon.stories.mdx +89 -74
- package/src/components/Icons/Icon.test.tsx +30 -22
- package/src/components/Icons/Icon.tsx +63 -61
- package/src/components/Icons/IconSvgs.tsx +8 -0
- package/src/components/Icons/IconTypes.tsx +80 -60
- package/src/components/Image/Image.stories.tsx +2 -1
- package/src/components/Input/_Input.scss +2 -2
- package/src/components/Label/Label.stories.mdx +77 -0
- package/src/components/Label/Label.test.tsx +43 -12
- package/src/components/Label/Label.tsx +28 -45
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
- package/src/components/Link/Link.stories.mdx +47 -41
- package/src/components/Link/Link.test.tsx +33 -44
- package/src/components/Link/Link.tsx +114 -100
- package/src/components/List/List.stories.mdx +7 -3
- package/src/components/List/List.stories.tsx +14 -9
- package/src/components/List/List.test.tsx +12 -8
- package/src/components/List/List.tsx +9 -7
- package/src/components/List/_List.scss +3 -3
- package/src/components/Modal/Modal.stories.mdx +7 -3
- package/src/components/Modal/_Modal.scss +1 -1
- package/src/components/Notification/Notification.stories.mdx +99 -65
- package/src/components/Notification/Notification.test.tsx +3 -16
- package/src/components/Notification/Notification.tsx +12 -12
- package/src/components/Notification/_Notification.scss +5 -4
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +1 -1
- package/src/components/Pagination/Pagination.stories.mdx +7 -1
- package/src/components/Pagination/Pagination.test.tsx +16 -10
- package/src/components/Radio/Radio.stories.mdx +57 -46
- package/src/components/Radio/Radio.test.tsx +92 -138
- package/src/components/Radio/Radio.tsx +70 -69
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +250 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +247 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +327 -0
- package/src/components/RadioGroup/RadioGroup.tsx +154 -0
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +4 -0
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1101 -0
- package/src/components/SearchBar/SearchBar.Test.tsx +151 -16
- package/src/components/SearchBar/SearchBar.stories.mdx +196 -224
- package/src/components/SearchBar/SearchBar.tsx +151 -46
- package/src/components/Select/Select.stories.mdx +193 -168
- package/src/components/Select/Select.test.tsx +129 -324
- package/src/components/Select/Select.tsx +120 -160
- package/src/components/Select/SelectTypes.tsx +4 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +18 -29
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +7 -7
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +4 -2
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +3 -3
- package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
- package/src/components/StatusBadge/StatusBadge.tsx +24 -25
- package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +112 -90
- package/src/components/StyleGuide/Buttons.stories.mdx +98 -100
- package/src/components/StyleGuide/Colors.stories.mdx +336 -0
- package/src/components/StyleGuide/Forms.stories.mdx +85 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +86 -93
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -1
- package/src/components/StyleGuide/Typography.stories.mdx +164 -166
- package/src/components/StyleGuide/UIDocCard.tsx +4 -4
- package/src/components/Tabs/Tabs.stories.mdx +221 -0
- package/src/components/Tabs/Tabs.test.tsx +264 -0
- package/src/components/Tabs/Tabs.tsx +220 -0
- package/src/components/Template/Template.stories.mdx +574 -0
- package/src/components/Template/Template.test.tsx +124 -0
- package/src/components/Template/Template.tsx +226 -0
- package/src/components/Text/Text.stories.mdx +70 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +55 -0
- package/src/components/Text/TextTypes.tsx +6 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
- package/src/components/TextInput/TextInput.stories.mdx +90 -90
- package/src/components/TextInput/TextInput.test.tsx +103 -83
- package/src/components/TextInput/TextInput.tsx +108 -91
- package/src/components/TextInput/TextInputTypes.tsx +6 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
- package/src/components/VideoPlayer/_VideoPlayer.scss +1 -1
- package/src/docs/Chakra.stories.mdx +341 -0
- package/src/docs/Intro.stories.mdx +31 -24
- package/src/index.ts +70 -5
- package/src/styles/01-colors/_colors-brand.scss +6 -4
- package/src/styles/01-colors/_colors-utility.scss +14 -15
- package/src/styles/03-space/_space-inline.scss +47 -7
- package/src/styles/03-space/_space-inset.scss +33 -5
- package/src/styles/03-space/_space-stack.scss +48 -8
- package/src/styles/base/_02-breakpoints.scss +5 -4
- package/src/styles/base/_04-base.scss +2 -1
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/styles/base/_typography.scss +1 -29
- package/src/styles.scss +22 -25
- package/src/theme/components/accordion.ts +30 -0
- package/src/theme/components/breadcrumb.ts +77 -0
- package/src/theme/components/button.ts +125 -0
- package/src/theme/components/checkbox.ts +107 -0
- package/src/theme/components/customCheckboxGroup.ts +12 -0
- package/src/theme/components/customRadioGroup.ts +12 -0
- package/src/theme/components/global.ts +71 -0
- package/src/theme/components/globalMixins.ts +16 -0
- package/src/theme/components/heading.ts +72 -0
- package/src/theme/components/hero.ts +239 -0
- package/src/theme/components/icon.ts +79 -0
- package/src/theme/components/label.ts +17 -0
- package/src/theme/components/link.ts +47 -0
- package/src/theme/components/radio.ts +106 -0
- package/src/theme/components/searchBar.ts +21 -0
- package/src/theme/components/select.ts +50 -0
- package/src/theme/components/statusBadge.ts +27 -0
- package/src/theme/components/tabs.ts +79 -0
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +31 -0
- package/src/theme/components/textInput.ts +61 -0
- package/src/theme/foundations/breakpoints.ts +24 -0
- package/src/theme/foundations/colors.ts +208 -0
- package/src/theme/foundations/global.ts +26 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +85 -0
- package/src/theme/foundations/typography.ts +35 -0
- package/src/theme/index.ts +88 -0
- package/src/theme/provider.tsx +9 -0
- package/src/theme/types.ts +1 -0
- package/src/utils/componentCategories.ts +56 -21
- package/src/utils/utils.ts +13 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -5
- package/dist/components/Card/Card.stories.d.ts +0 -27
- package/dist/components/Label/Label.stories.d.ts +0 -12
- package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
- package/dist/components/Template/Template.stories.d.ts +0 -29
- package/src/components/Accordion/Accordion.stories.tsx +0 -65
- package/src/components/Accordion/_Accordion.scss +0 -81
- package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
- package/src/components/Checkbox/_Checkbox.scss +0 -97
- package/src/components/Form/_Form.scss +0 -28
- package/src/components/Heading/_Heading.scss +0 -163
- package/src/components/Hero/_Hero.scss +0 -256
- package/src/components/Icons/_Icons.scss +0 -116
- package/src/components/Label/Label.stories.tsx +0 -30
- package/src/components/Label/_Label.scss +0 -22
- package/src/components/Link/_Link.scss +0 -73
- package/src/components/Radio/_Radio.scss +0 -84
- package/src/components/SearchBar/_SearchBar.scss +0 -16
- package/src/components/Select/_Select.scss +0 -82
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -33
- package/src/components/StatusBadge/_StatusBadge.scss +0 -23
- package/src/components/StyleGuide/Colors.stories.tsx +0 -288
- package/src/components/Template/Template.stories.tsx +0 -85
- package/src/components/Template/_Template.scss +0 -63
- package/src/components/TextInput/_TextInput.scss +0 -59
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Meta,
|
|
3
3
|
Story,
|
|
4
|
-
Canvas,
|
|
5
4
|
ArgsTable,
|
|
6
|
-
|
|
5
|
+
Canvas,
|
|
7
6
|
Description,
|
|
8
7
|
} from "@storybook/addon-docs/blocks";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
9
|
+
import { VStack } from "@chakra-ui/react";
|
|
10
10
|
|
|
11
11
|
import TextInput from "./TextInput";
|
|
12
12
|
import { TextInputTypes } from "./TextInputTypes";
|
|
13
|
-
import { action } from "@storybook/addon-actions";
|
|
14
13
|
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
+
import DSProvider from "../../theme/provider";
|
|
15
15
|
|
|
16
16
|
<Meta
|
|
17
17
|
title={getCategory("TextInput")}
|
|
@@ -27,6 +27,9 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
27
27
|
}}
|
|
28
28
|
argTypes={{
|
|
29
29
|
attributes: { table: { disable: true } },
|
|
30
|
+
id: { table: { disable: true } },
|
|
31
|
+
onChange: { table: { disable: true } },
|
|
32
|
+
value: { table: { disable: true } },
|
|
30
33
|
}}
|
|
31
34
|
/>
|
|
32
35
|
|
|
@@ -35,133 +38,130 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
35
38
|
| Component Version | DS Version |
|
|
36
39
|
| ----------------- | ---------- |
|
|
37
40
|
| Added | `0.22.0` |
|
|
38
|
-
| Latest | `0.
|
|
41
|
+
| Latest | `0.25.1` |
|
|
39
42
|
|
|
40
43
|
<Description of={TextInput} />
|
|
41
44
|
|
|
42
|
-
This component renders a text input form element. See below for configuration
|
|
45
|
+
This component renders a text input form element. See below for configuration
|
|
46
|
+
information. For optimal accessibility, the `labelText` property is a required
|
|
47
|
+
prop, regardless of the label visibility. Additionally, while the `id` prop is
|
|
48
|
+
optional, a unique `id` attribute is necessary for accessibility. If the prop
|
|
49
|
+
is left blank, a value will be generated for you.
|
|
43
50
|
|
|
44
|
-
<
|
|
51
|
+
<Canvas withToolbar>
|
|
45
52
|
<Story
|
|
46
53
|
name="TextInput"
|
|
47
54
|
args={{
|
|
55
|
+
helperText: "Choose wisely.",
|
|
48
56
|
id: "myTextInput",
|
|
49
|
-
|
|
57
|
+
invalidText: "This is error text :(",
|
|
58
|
+
isDisabled: false,
|
|
59
|
+
isInvalid: false,
|
|
60
|
+
isRequired: true,
|
|
50
61
|
labelText: "What is your favorite color?",
|
|
51
|
-
showLabel: true,
|
|
52
62
|
placeholder: "e.g. blue, green, etc.",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
required: true,
|
|
57
|
-
disabled: false,
|
|
58
|
-
attributes: {
|
|
59
|
-
onFocus: action("focus"),
|
|
60
|
-
onBlur: action("blur"),
|
|
61
|
-
onChange: action("onChange"),
|
|
62
|
-
maxLength: 10,
|
|
63
|
-
tabIndex: 0,
|
|
64
|
-
autoFocus: true,
|
|
65
|
-
pattern: "[a-z0-9]",
|
|
66
|
-
},
|
|
63
|
+
showLabel: true,
|
|
64
|
+
showOptReqLabel: true,
|
|
65
|
+
type: TextInputTypes.text,
|
|
67
66
|
}}
|
|
68
67
|
>
|
|
69
68
|
{(args) => <TextInput {...args} />}
|
|
70
69
|
</Story>
|
|
71
|
-
</
|
|
70
|
+
</Canvas>
|
|
72
71
|
|
|
73
72
|
<ArgsTable story="TextInput" />
|
|
74
73
|
|
|
75
74
|
## Labelling Variations
|
|
76
75
|
|
|
77
|
-
A TextInput can be rendered with or without visible labels.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
76
|
+
A TextInput can be rendered with or without visible labels. When `showLabel` is
|
|
77
|
+
set to `false`, an `aria-label` attribute is added to the input/textarea element
|
|
78
|
+
to maintain accessibility. If the component needs to be required, the
|
|
79
|
+
`showOptReqLabel` prop can be used to show or hide the "Required"/"Optional"
|
|
80
|
+
text within the `label` element.
|
|
81
|
+
|
|
82
|
+
<Canvas withToolbar>
|
|
83
|
+
<Story name="Labelling Variations">
|
|
84
|
+
<VStack align="stretch" spacing={12}>
|
|
85
|
+
<TextInput
|
|
86
|
+
labelText="What is your favorite color?"
|
|
87
|
+
placeholder="i.e. blue, green, etc."
|
|
88
|
+
helperText="Choose wisely!"
|
|
89
|
+
/>
|
|
90
|
+
<TextInput
|
|
91
|
+
labelText="What is your favorite color?"
|
|
92
|
+
placeholder="i.e. blue, green, etc."
|
|
93
|
+
showLabel={false}
|
|
94
|
+
/>
|
|
95
|
+
<TextInput
|
|
96
|
+
labelText="What is your favorite color?"
|
|
97
|
+
placeholder="i.e. blue, green, etc."
|
|
98
|
+
isRequired
|
|
99
|
+
/>
|
|
100
|
+
<TextInput
|
|
101
|
+
labelText="What is your favorite color?"
|
|
102
|
+
placeholder="i.e. blue, green, etc."
|
|
103
|
+
showOptReqLabel={false}
|
|
104
|
+
isRequired
|
|
105
|
+
/>
|
|
106
|
+
<TextInput
|
|
107
|
+
labelText="What is your favorite color?"
|
|
108
|
+
showLabel={false}
|
|
109
|
+
placeholder="i.e. blue, green, etc."
|
|
110
|
+
helperText="Choose wisely!"
|
|
111
|
+
/>
|
|
112
|
+
</VStack>
|
|
88
113
|
</Story>
|
|
89
|
-
</Preview>
|
|
90
|
-
|
|
91
|
-
<Canvas>
|
|
92
|
-
<TextInput labelText="What is your favorite color?" showLabel={true} />
|
|
93
114
|
</Canvas>
|
|
94
115
|
|
|
95
|
-
|
|
96
|
-
<TextInput
|
|
97
|
-
labelText="What is your favorite color?"
|
|
98
|
-
showLabel={false}
|
|
99
|
-
placeholder="i.e. blue, green, etc."
|
|
100
|
-
/>
|
|
101
|
-
</Canvas>
|
|
116
|
+
### Errored
|
|
102
117
|
|
|
103
118
|
<Canvas>
|
|
104
|
-
<
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
119
|
+
<DSProvider>
|
|
120
|
+
<TextInput
|
|
121
|
+
labelText="What is your favorite color?"
|
|
122
|
+
placeholder="i.e. blue, green, etc."
|
|
123
|
+
helperText="Choose wisely!"
|
|
124
|
+
invalidText="This is error text :("
|
|
125
|
+
isInvalid
|
|
126
|
+
/>
|
|
127
|
+
</DSProvider>
|
|
109
128
|
</Canvas>
|
|
110
129
|
|
|
111
|
-
|
|
112
|
-
<TextInput
|
|
113
|
-
labelText="What is your favorite color?"
|
|
114
|
-
showLabel={false}
|
|
115
|
-
placeholder="i.e. blue, green, etc."
|
|
116
|
-
helperText="Choose wisely!"
|
|
117
|
-
/>
|
|
118
|
-
</Canvas>
|
|
130
|
+
### Disabled
|
|
119
131
|
|
|
120
132
|
<Canvas>
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
<Canvas>
|
|
130
|
-
<TextInput
|
|
131
|
-
labelText="What is your favorite color?"
|
|
132
|
-
showLabel={false}
|
|
133
|
-
placeholder="i.e. blue, green, etc."
|
|
134
|
-
errorText="Waaaaaa!"
|
|
135
|
-
errored={true}
|
|
136
|
-
/>
|
|
137
|
-
</Canvas>
|
|
138
|
-
|
|
139
|
-
<Canvas>
|
|
140
|
-
<TextInput
|
|
141
|
-
labelText="What is your favorite color?"
|
|
142
|
-
showLabel={true}
|
|
143
|
-
placeholder="i.e. blue, green, etc."
|
|
144
|
-
errorText="Waaaaaa!"
|
|
145
|
-
errored={true}
|
|
146
|
-
/>
|
|
133
|
+
<DSProvider>
|
|
134
|
+
<TextInput
|
|
135
|
+
labelText="What is your favorite color?"
|
|
136
|
+
placeholder="i.e. blue, green, etc."
|
|
137
|
+
helperText="Choose wisely!"
|
|
138
|
+
isDisabled
|
|
139
|
+
/>
|
|
140
|
+
</DSProvider>
|
|
147
141
|
</Canvas>
|
|
148
142
|
|
|
149
143
|
## Textarea
|
|
150
144
|
|
|
151
145
|
The TextInput component includes a multiline `textarea` form field. To render a
|
|
152
|
-
`textarea` element, pass `TextInputTypes.textarea` for the `type` prop.
|
|
146
|
+
`textarea` element, pass `TextInputTypes.textarea` for the `type` prop. All the
|
|
147
|
+
variations described above are available for the `textarea` option.
|
|
153
148
|
|
|
154
|
-
<
|
|
149
|
+
<Canvas withToolbar>
|
|
155
150
|
<Story
|
|
156
151
|
name="Textarea"
|
|
157
152
|
args={{
|
|
158
|
-
|
|
153
|
+
helperText: "Let it all out.",
|
|
154
|
+
invalidText: "This is error text :(",
|
|
155
|
+
isDisabled: false,
|
|
156
|
+
isInvalid: false,
|
|
157
|
+
isRequired: true,
|
|
159
158
|
labelText: "In less than 500 words, describe your favorite color?",
|
|
160
|
-
showLabel: true,
|
|
161
159
|
placeholder: "Essay question...",
|
|
162
|
-
|
|
160
|
+
showLabel: true,
|
|
161
|
+
showOptReqLabel: true,
|
|
162
|
+
type: TextInputTypes.textarea,
|
|
163
163
|
}}
|
|
164
164
|
>
|
|
165
165
|
{(args) => <TextInput {...args} />}
|
|
166
166
|
</Story>
|
|
167
|
-
</
|
|
167
|
+
</Canvas>
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen, fireEvent } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
4
|
import userEvent from "@testing-library/user-event";
|
|
5
5
|
|
|
6
|
-
import HelperErrorText from "../HelperErrorText/HelperErrorText";
|
|
7
6
|
import TextInput from "./TextInput";
|
|
8
7
|
import { TextInputTypes } from "./TextInputTypes";
|
|
9
8
|
import * as generateUUID from "../../helpers/generateUUID";
|
|
10
9
|
|
|
11
10
|
describe("TextInput Accessibility", () => {
|
|
12
|
-
it("passes axe accessibility test", async () => {
|
|
11
|
+
it("passes axe accessibility test for the input element", async () => {
|
|
13
12
|
const { container } = render(
|
|
14
13
|
<TextInput
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
required={true}
|
|
14
|
+
labelText="Custom input label"
|
|
15
|
+
isRequired
|
|
18
16
|
placeholder="Input Placeholder"
|
|
19
17
|
type={TextInputTypes.text}
|
|
20
|
-
|
|
18
|
+
onChange={jest.fn()}
|
|
19
|
+
/>
|
|
20
|
+
);
|
|
21
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("passes axe accessibility test for the textarea element", async () => {
|
|
25
|
+
const { container } = render(
|
|
26
|
+
<TextInput
|
|
27
|
+
labelText="Custom textarea label"
|
|
28
|
+
isRequired
|
|
29
|
+
placeholder="Input Placeholder"
|
|
30
|
+
type={TextInputTypes.textarea}
|
|
21
31
|
onChange={jest.fn()}
|
|
22
32
|
/>
|
|
23
33
|
);
|
|
@@ -26,17 +36,18 @@ describe("TextInput Accessibility", () => {
|
|
|
26
36
|
});
|
|
27
37
|
|
|
28
38
|
describe("TextInput", () => {
|
|
39
|
+
let utils;
|
|
29
40
|
let changeHandler;
|
|
30
41
|
let focusHandler;
|
|
31
42
|
|
|
32
43
|
beforeEach(() => {
|
|
33
44
|
focusHandler = jest.fn();
|
|
34
45
|
changeHandler = jest.fn();
|
|
35
|
-
render(
|
|
46
|
+
utils = render(
|
|
36
47
|
<TextInput
|
|
37
48
|
id="myTextInput"
|
|
38
49
|
labelText="Custom Input Label"
|
|
39
|
-
|
|
50
|
+
isRequired
|
|
40
51
|
placeholder="Input Placeholder"
|
|
41
52
|
type={TextInputTypes.text}
|
|
42
53
|
attributes={{ onFocus: focusHandler }}
|
|
@@ -45,40 +56,80 @@ describe("TextInput", () => {
|
|
|
45
56
|
);
|
|
46
57
|
});
|
|
47
58
|
|
|
48
|
-
it("
|
|
59
|
+
it("renders an input element", () => {
|
|
49
60
|
expect(screen.getByLabelText(/Custom Input Label/i)).toBeInTheDocument();
|
|
50
61
|
});
|
|
51
62
|
|
|
52
|
-
it("
|
|
63
|
+
it("renders label with label text", () => {
|
|
64
|
+
expect(screen.getByText("Custom Input Label")).toBeInTheDocument();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("renders 'Required' along with the label text", () => {
|
|
68
|
+
expect(screen.getByText("Custom Input Label")).toBeInTheDocument();
|
|
69
|
+
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("renders 'Optional' along with the label text", () => {
|
|
73
|
+
utils.rerender(
|
|
74
|
+
<TextInput
|
|
75
|
+
id="myTextInput"
|
|
76
|
+
labelText="Custom Input Label"
|
|
77
|
+
isRequired={false}
|
|
78
|
+
placeholder="Input Placeholder"
|
|
79
|
+
type={TextInputTypes.text}
|
|
80
|
+
attributes={{ onFocus: focusHandler }}
|
|
81
|
+
onChange={changeHandler}
|
|
82
|
+
/>
|
|
83
|
+
);
|
|
84
|
+
|
|
53
85
|
expect(screen.getByText("Custom Input Label")).toBeInTheDocument();
|
|
86
|
+
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
54
87
|
});
|
|
55
88
|
|
|
56
|
-
it("
|
|
89
|
+
it("does not render 'Required' along with the label text", () => {
|
|
90
|
+
utils.rerender(
|
|
91
|
+
<TextInput
|
|
92
|
+
id="myTextInput"
|
|
93
|
+
labelText="Custom Input Label"
|
|
94
|
+
isRequired
|
|
95
|
+
showOptReqLabel={false}
|
|
96
|
+
placeholder="Input Placeholder"
|
|
97
|
+
type={TextInputTypes.text}
|
|
98
|
+
attributes={{ onFocus: focusHandler }}
|
|
99
|
+
onChange={changeHandler}
|
|
100
|
+
/>
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
expect(screen.getByText("Custom Input Label")).toBeInTheDocument();
|
|
104
|
+
expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("renders label's `for` attribute pointing at ID from input", () => {
|
|
57
108
|
expect(screen.getByText(/Custom Input Label/i)).toHaveAttribute(
|
|
58
109
|
"for",
|
|
59
110
|
"myTextInput"
|
|
60
111
|
);
|
|
61
112
|
});
|
|
62
113
|
|
|
63
|
-
it("
|
|
114
|
+
it("renders placeholder text", () => {
|
|
64
115
|
expect(
|
|
65
116
|
screen.getByPlaceholderText("Input Placeholder")
|
|
66
117
|
).toBeInTheDocument();
|
|
67
118
|
});
|
|
68
119
|
|
|
69
|
-
it("
|
|
120
|
+
it("adds aria-required prop if input is required", () => {
|
|
70
121
|
expect(screen.getByLabelText(/Custom Input Label/i)).toHaveAttribute(
|
|
71
122
|
"aria-required"
|
|
72
123
|
);
|
|
73
124
|
});
|
|
74
125
|
|
|
75
|
-
it("
|
|
126
|
+
it("allows user to pass in additional attributes", () => {
|
|
76
127
|
expect(focusHandler).toHaveBeenCalledTimes(0);
|
|
77
128
|
fireEvent.focus(screen.getByLabelText(/Custom Input Label/i));
|
|
78
129
|
expect(focusHandler).toHaveBeenCalledTimes(1);
|
|
79
130
|
});
|
|
80
131
|
|
|
81
|
-
it("
|
|
132
|
+
it("changing the value calls the onChange handler", () => {
|
|
82
133
|
expect(changeHandler).toHaveBeenCalledTimes(0);
|
|
83
134
|
userEvent.type(screen.getByLabelText(/Custom Input Label/i), "Hello");
|
|
84
135
|
// Called 5 times because "Hello" has length of 5.
|
|
@@ -96,43 +147,36 @@ describe("Renders TextInput with auto-generated ID, hidden label and visible hel
|
|
|
96
147
|
labelText="Custom Input Label"
|
|
97
148
|
showLabel={false}
|
|
98
149
|
helperText="Custom Helper Text"
|
|
99
|
-
|
|
150
|
+
isRequired
|
|
100
151
|
placeholder="Input Placeholder"
|
|
101
152
|
type={TextInputTypes.text}
|
|
102
153
|
/>
|
|
103
154
|
);
|
|
104
155
|
});
|
|
105
156
|
|
|
106
|
-
it("
|
|
157
|
+
it("renders Input component", () => {
|
|
107
158
|
expect(screen.getByLabelText(/Custom Input Label/i)).toBeInTheDocument();
|
|
108
159
|
});
|
|
109
160
|
|
|
110
|
-
it("
|
|
161
|
+
it("calls a UUID generation method if no ID is passed as a prop", () => {
|
|
111
162
|
// Called twice for the `TextInput` and the SVG icon components.
|
|
112
163
|
expect(generateUUIDSpy).toHaveBeenCalledTimes(2);
|
|
113
164
|
});
|
|
114
165
|
|
|
115
|
-
it("
|
|
166
|
+
it("does not renders Label component", () => {
|
|
116
167
|
expect(screen.queryByText(/Custom Input Label/i)).not.toBeInTheDocument();
|
|
117
168
|
});
|
|
118
169
|
|
|
119
|
-
it("
|
|
170
|
+
it("renders custom aria-label", () => {
|
|
120
171
|
expect(screen.getByLabelText(/Custom Input Label/i)).toHaveAttribute(
|
|
121
172
|
"aria-label",
|
|
122
|
-
"Custom Input Label"
|
|
173
|
+
"Custom Input Label - Custom Helper Text"
|
|
123
174
|
);
|
|
124
175
|
});
|
|
125
176
|
|
|
126
|
-
it("
|
|
177
|
+
it("renders HelperErrorText component", () => {
|
|
127
178
|
expect(screen.getByText("Custom Helper Text")).toBeInTheDocument();
|
|
128
179
|
});
|
|
129
|
-
|
|
130
|
-
it("Renders aria-describedby with helper text", () => {
|
|
131
|
-
expect(screen.getByLabelText(/Custom Input Label/i)).toHaveAttribute(
|
|
132
|
-
"aria-describedby",
|
|
133
|
-
"Custom Helper Text"
|
|
134
|
-
);
|
|
135
|
-
});
|
|
136
180
|
});
|
|
137
181
|
|
|
138
182
|
describe("TextInput shows error state", () => {
|
|
@@ -142,73 +186,34 @@ describe("TextInput shows error state", () => {
|
|
|
142
186
|
id="myTextInputError"
|
|
143
187
|
labelText="Custom Input Label"
|
|
144
188
|
helperText="Custom Helper Text"
|
|
145
|
-
|
|
189
|
+
invalidText="Custom Error Text"
|
|
146
190
|
placeholder="Input Placeholder"
|
|
147
|
-
|
|
191
|
+
isInvalid={true}
|
|
148
192
|
type={TextInputTypes.text}
|
|
149
193
|
/>
|
|
150
194
|
);
|
|
151
195
|
});
|
|
152
196
|
|
|
153
|
-
it("
|
|
197
|
+
it("renders Input component", () => {
|
|
154
198
|
expect(screen.getByLabelText(/Custom Input Label/i)).toBeInTheDocument();
|
|
155
199
|
});
|
|
156
200
|
|
|
157
|
-
it("
|
|
201
|
+
it("renders Label component", () => {
|
|
158
202
|
expect(screen.getByText(/Custom Input Label/i)).toBeInTheDocument();
|
|
159
203
|
});
|
|
160
204
|
|
|
161
|
-
it("
|
|
205
|
+
it("renders HelperErrorText component", () => {
|
|
162
206
|
expect(screen.queryByText("Custom Helper Text")).not.toBeInTheDocument();
|
|
163
207
|
expect(screen.getByText("Custom Error Text")).toBeInTheDocument();
|
|
164
208
|
});
|
|
165
209
|
|
|
166
|
-
it("
|
|
210
|
+
it("input shows error state", () => {
|
|
167
211
|
expect(screen.getByLabelText(/Custom Input Label/i)).toHaveAttribute(
|
|
168
|
-
"
|
|
169
|
-
"inputfield inputfield--error "
|
|
212
|
+
"aria-invalid"
|
|
170
213
|
);
|
|
171
214
|
});
|
|
172
215
|
});
|
|
173
216
|
|
|
174
|
-
describe("TextInput Group", () => {
|
|
175
|
-
beforeEach(() => {
|
|
176
|
-
render(
|
|
177
|
-
<fieldset>
|
|
178
|
-
<legend>Input Group Label Legend</legend>
|
|
179
|
-
|
|
180
|
-
<TextInput
|
|
181
|
-
id="input1"
|
|
182
|
-
required={true}
|
|
183
|
-
type={TextInputTypes.text}
|
|
184
|
-
labelText="For"
|
|
185
|
-
helperText="Input 1 Helper Text"
|
|
186
|
-
/>
|
|
187
|
-
|
|
188
|
-
<TextInput
|
|
189
|
-
id="input2"
|
|
190
|
-
required={true}
|
|
191
|
-
type={TextInputTypes.text}
|
|
192
|
-
labelText="To"
|
|
193
|
-
helperText="Input 2 Helper Text"
|
|
194
|
-
/>
|
|
195
|
-
|
|
196
|
-
<HelperErrorText isError={true} id={"sharedHelperText"}>
|
|
197
|
-
Additional Error Text
|
|
198
|
-
</HelperErrorText>
|
|
199
|
-
</fieldset>
|
|
200
|
-
);
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
it("Renders legend", () => {
|
|
204
|
-
expect(screen.getByText("Input Group Label Legend")).toBeInTheDocument();
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it("Renders two inputs", () => {
|
|
208
|
-
expect(screen.getAllByRole("textbox")).toHaveLength(2);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
|
|
212
217
|
describe("Renders HTML attributes passed through the `attributes` prop", () => {
|
|
213
218
|
const onChangeSpy = jest.fn();
|
|
214
219
|
const onBlurSpy = jest.fn();
|
|
@@ -229,27 +234,27 @@ describe("Renders HTML attributes passed through the `attributes` prop", () => {
|
|
|
229
234
|
);
|
|
230
235
|
});
|
|
231
236
|
|
|
232
|
-
it("
|
|
237
|
+
it("has a maxlength for the input element", () => {
|
|
233
238
|
expect(screen.getByLabelText(/Input Label/i)).toHaveAttribute(
|
|
234
239
|
"maxLength",
|
|
235
240
|
"10"
|
|
236
241
|
);
|
|
237
242
|
});
|
|
238
243
|
|
|
239
|
-
it("
|
|
244
|
+
it("has a tabIndex", () => {
|
|
240
245
|
expect(screen.getByLabelText(/Input Label/i)).toHaveAttribute(
|
|
241
246
|
"tabIndex",
|
|
242
247
|
"0"
|
|
243
248
|
);
|
|
244
249
|
});
|
|
245
250
|
|
|
246
|
-
it("
|
|
251
|
+
it("calls the onChange function", () => {
|
|
247
252
|
expect(onChangeSpy).toHaveBeenCalledTimes(0);
|
|
248
253
|
userEvent.type(screen.getByLabelText(/Input Label/i), "Hello");
|
|
249
254
|
expect(onChangeSpy).toHaveBeenCalledTimes(5);
|
|
250
255
|
});
|
|
251
256
|
|
|
252
|
-
it("
|
|
257
|
+
it("calls the onBlur function", () => {
|
|
253
258
|
expect(onBlurSpy).toHaveBeenCalledTimes(0);
|
|
254
259
|
fireEvent.blur(screen.getByLabelText(/Input Label/i));
|
|
255
260
|
expect(onBlurSpy).toHaveBeenCalledTimes(1);
|
|
@@ -288,7 +293,7 @@ describe("Renders HTML attributes passed through the `attributes` prop", () => {
|
|
|
288
293
|
// });
|
|
289
294
|
|
|
290
295
|
describe("Hidden input", () => {
|
|
291
|
-
it("
|
|
296
|
+
it("renders a hidden type input", () => {
|
|
292
297
|
const utils = render(
|
|
293
298
|
<TextInput
|
|
294
299
|
id="inputID-hidden"
|
|
@@ -306,6 +311,21 @@ describe("Hidden input", () => {
|
|
|
306
311
|
"hidden"
|
|
307
312
|
);
|
|
308
313
|
});
|
|
314
|
+
|
|
315
|
+
it("does not show the helper text", () => {
|
|
316
|
+
render(
|
|
317
|
+
<TextInput
|
|
318
|
+
id="inputID-hidden"
|
|
319
|
+
labelText="Hidden Input Label"
|
|
320
|
+
helperText="Helper Text"
|
|
321
|
+
type={TextInputTypes.hidden}
|
|
322
|
+
value="hidden"
|
|
323
|
+
/>
|
|
324
|
+
);
|
|
325
|
+
|
|
326
|
+
expect(screen.queryByText("Hidden Input Label")).not.toBeInTheDocument();
|
|
327
|
+
expect(screen.queryByText("Helper Text")).not.toBeInTheDocument();
|
|
328
|
+
});
|
|
309
329
|
});
|
|
310
330
|
|
|
311
331
|
describe("Textarea element type", () => {
|
|
@@ -320,11 +340,11 @@ describe("Textarea element type", () => {
|
|
|
320
340
|
);
|
|
321
341
|
});
|
|
322
342
|
|
|
323
|
-
it("
|
|
343
|
+
it("renders a textarea element", () => {
|
|
324
344
|
expect(screen.getByRole("textbox")).toBeInTheDocument();
|
|
325
345
|
});
|
|
326
346
|
|
|
327
|
-
it("
|
|
347
|
+
it("renders label with label text", () => {
|
|
328
348
|
expect(screen.getByLabelText(/Custom textarea Label/i)).toBeInTheDocument();
|
|
329
349
|
});
|
|
330
350
|
});
|