@nypl/design-system-react-components 0.25.11 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +151 -0
- package/README.md +14 -26
- package/dist/components/Accordion/Accordion.d.ts +6 -4
- package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +2 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +22 -29
- package/dist/components/Checkbox/Checkbox.d.ts +3 -3
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -6
- package/dist/components/Fieldset/Fieldset.d.ts +5 -6
- package/dist/components/Form/Form.d.ts +6 -6
- package/dist/components/Grid/GridTypes.d.ts +7 -7
- package/dist/components/Grid/SimpleGrid.d.ts +1 -1
- package/dist/components/Heading/Heading.d.ts +5 -5
- package/dist/components/Heading/HeadingTypes.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +9 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Icons/IconTypes.d.ts +10 -7
- package/dist/components/Image/Image.d.ts +27 -9
- package/dist/components/Image/ImageTypes.d.ts +4 -4
- package/dist/components/Label/Label.d.ts +7 -4
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +11 -11
- package/dist/components/List/ListTypes.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +2 -1
- package/dist/components/Logo/LogoSvgs.d.ts +8 -0
- package/dist/components/Logo/LogoTypes.d.ts +10 -2
- package/dist/components/Notification/Notification.d.ts +7 -7
- package/dist/components/Pagination/Pagination.d.ts +8 -4
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +5 -7
- package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
- package/dist/components/SearchBar/SearchBar.d.ts +5 -5
- package/dist/components/Select/Select.d.ts +12 -8
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
- package/dist/components/Slider/Slider.d.ts +6 -4
- package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +10 -23
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +7 -6
- package/dist/components/Template/Template.d.ts +18 -9
- package/dist/components/Text/Text.d.ts +4 -4
- package/dist/components/Text/TextTypes.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +7 -7
- package/dist/components/Toggle/Toggle.d.ts +8 -10
- package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +2802 -1686
- 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 +2811 -1699
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/helpers/enums.d.ts +4 -0
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +11 -9
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +7 -12
- package/dist/theme/components/breadcrumb.d.ts +6 -0
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +44 -24
- package/dist/theme/components/checkbox.d.ts +6 -6
- package/dist/theme/components/checkboxGroup.d.ts +4 -2
- package/dist/theme/components/componentWrapper.d.ts +2 -2
- package/dist/theme/components/customTable.d.ts +84 -1
- package/dist/theme/components/fieldset.d.ts +6 -14
- package/dist/theme/components/global.d.ts +37 -29
- package/dist/theme/components/globalMixins.d.ts +8 -8
- package/dist/theme/components/heading.d.ts +53 -0
- package/dist/theme/components/helperErrorText.d.ts +1 -0
- package/dist/theme/components/hero.d.ts +21 -15
- package/dist/theme/components/image.d.ts +1 -1
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +105 -9
- package/dist/theme/components/notification.d.ts +7 -4
- package/dist/theme/components/pagination.d.ts +2 -5
- package/dist/theme/components/radio.d.ts +10 -6
- package/dist/theme/components/radioGroup.d.ts +4 -2
- package/dist/theme/components/select.d.ts +38 -13
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +14 -7
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +22 -14
- package/dist/theme/components/toggle.d.ts +25 -6
- package/dist/theme/foundations/global.d.ts +33 -3
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +5 -6
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
- package/src/components/Accordion/Accordion.stories.mdx +150 -66
- package/src/components/Accordion/Accordion.test.tsx +65 -17
- package/src/components/Accordion/Accordion.tsx +61 -27
- package/src/components/Accordion/AccordionTypes.tsx +5 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +53 -18
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +66 -35
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +2 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +308 -10
- package/src/components/Button/Button.stories.mdx +87 -23
- package/src/components/Button/Button.test.tsx +25 -0
- package/src/components/Button/Button.tsx +18 -7
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
- package/src/components/Card/Card.stories.mdx +493 -329
- package/src/components/Card/Card.test.tsx +138 -18
- package/src/components/Card/Card.tsx +151 -85
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +220 -100
- package/src/components/Chakra/Center.stories.mdx +2 -2
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
- package/src/components/Checkbox/Checkbox.test.tsx +89 -10
- package/src/components/Checkbox/Checkbox.tsx +27 -16
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
- package/src/components/DatePicker/DatePicker.test.tsx +94 -15
- package/src/components/DatePicker/DatePicker.tsx +67 -58
- package/src/components/DatePicker/_DatePicker.scss +71 -13
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
- package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
- package/src/components/Fieldset/Fieldset.test.tsx +58 -28
- package/src/components/Fieldset/Fieldset.tsx +35 -30
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
- package/src/components/Form/Form.stories.mdx +118 -47
- package/src/components/Form/Form.test.tsx +59 -16
- package/src/components/Form/Form.tsx +89 -65
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
- package/src/components/Grid/GridTypes.tsx +7 -7
- package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
- package/src/components/Grid/SimpleGrid.test.tsx +24 -9
- package/src/components/Grid/SimpleGrid.tsx +29 -20
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
- package/src/components/Heading/Heading.stories.mdx +56 -25
- package/src/components/Heading/Heading.test.tsx +17 -7
- package/src/components/Heading/Heading.tsx +60 -58
- package/src/components/Heading/HeadingTypes.tsx +1 -1
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
- package/src/components/Hero/Hero.stories.mdx +143 -113
- package/src/components/Hero/Hero.test.tsx +146 -58
- package/src/components/Hero/Hero.tsx +144 -112
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +80 -23
- package/src/components/Icons/Icon.test.tsx +51 -2
- package/src/components/Icons/Icon.tsx +93 -71
- package/src/components/Icons/IconTypes.tsx +9 -6
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +160 -71
- package/src/components/Image/Image.test.tsx +40 -48
- package/src/components/Image/Image.tsx +80 -48
- package/src/components/Image/ImageTypes.ts +4 -4
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
- package/src/components/Label/Label.stories.mdx +42 -20
- package/src/components/Label/Label.test.tsx +42 -17
- package/src/components/Label/Label.tsx +22 -13
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
- package/src/components/Link/Link.stories.mdx +25 -1
- package/src/components/Link/Link.test.tsx +21 -0
- package/src/components/Link/Link.tsx +16 -9
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
- package/src/components/List/List.stories.mdx +75 -40
- package/src/components/List/List.test.tsx +73 -22
- package/src/components/List/List.tsx +44 -28
- package/src/components/List/ListTypes.tsx +1 -1
- package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
- package/src/components/Logo/Logo.stories.mdx +40 -16
- package/src/components/Logo/Logo.test.tsx +29 -2
- package/src/components/Logo/Logo.tsx +28 -11
- package/src/components/Logo/LogoSvgs.tsx +16 -0
- package/src/components/Logo/LogoTypes.tsx +9 -1
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
- package/src/components/Modal/Modal.stories.mdx +13 -0
- package/src/components/Notification/Notification.stories.mdx +34 -5
- package/src/components/Notification/Notification.test.tsx +43 -9
- package/src/components/Notification/Notification.tsx +59 -55
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +256 -32
- package/src/components/Pagination/Pagination.stories.mdx +76 -13
- package/src/components/Pagination/Pagination.test.tsx +116 -5
- package/src/components/Pagination/Pagination.tsx +54 -29
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +247 -30
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +75 -11
- package/src/components/Radio/Radio.test.tsx +83 -9
- package/src/components/Radio/Radio.tsx +70 -61
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +168 -10
- package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
- package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
- package/src/components/RadioGroup/RadioGroup.tsx +110 -101
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
- package/src/components/SearchBar/SearchBar.stories.mdx +104 -39
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +66 -6
- package/src/components/SearchBar/SearchBar.tsx +23 -13
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +151 -62
- package/src/components/Select/Select.test.tsx +56 -44
- package/src/components/Select/Select.tsx +125 -104
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +123 -41
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +34 -24
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
- package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
- package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
- package/src/components/StatusBadge/StatusBadge.tsx +25 -20
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
- package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
- package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
- package/src/components/StructuredContent/StructuredContent.tsx +98 -103
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +9 -9
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +4 -4
- package/src/components/StyleGuide/Colors.stories.mdx +34 -20
- package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
- package/src/components/StyleGuide/Forms.stories.mdx +27 -12
- package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
- package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
- package/src/components/StyleGuide/Typography.stories.mdx +47 -33
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +16 -1
- package/src/components/Table/Table.tsx +10 -8
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +59 -10
- package/src/components/Tabs/Tabs.test.tsx +29 -11
- package/src/components/Tabs/Tabs.tsx +28 -21
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +73 -32
- package/src/components/Template/Template.test.tsx +68 -5
- package/src/components/Template/Template.tsx +86 -72
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
- package/src/components/Text/Text.stories.mdx +32 -15
- package/src/components/Text/Text.test.tsx +14 -11
- package/src/components/Text/Text.tsx +13 -16
- package/src/components/Text/TextTypes.tsx +1 -1
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +73 -27
- package/src/components/TextInput/TextInput.test.tsx +65 -50
- package/src/components/TextInput/TextInput.tsx +123 -115
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +74 -26
- package/src/components/Toggle/Toggle.test.tsx +41 -10
- package/src/components/Toggle/Toggle.tsx +31 -27
- package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +195 -8
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
- package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +51 -10
- package/src/docs/Welcome.stories.mdx +168 -0
- package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
- package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +31 -7
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +11 -15
- package/src/styles/base/_place-holder.scss +3 -1
- package/src/styles.scss +0 -2
- package/src/theme/components/accordion.ts +7 -12
- package/src/theme/components/breadcrumb.ts +7 -0
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +56 -36
- package/src/theme/components/checkbox.ts +12 -14
- package/src/theme/components/checkboxGroup.ts +4 -2
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +3 -2
- package/src/theme/components/global.ts +42 -33
- package/src/theme/components/globalMixins.ts +8 -8
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +14 -16
- package/src/theme/components/icon.ts +5 -2
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +76 -65
- package/src/theme/components/notification.ts +10 -7
- package/src/theme/components/pagination.ts +2 -5
- package/src/theme/components/progressIndicator.ts +3 -3
- package/src/theme/components/radio.ts +11 -14
- package/src/theme/components/radioGroup.ts +4 -2
- package/src/theme/components/select.ts +37 -18
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +19 -15
- package/src/theme/components/statusBadge.ts +2 -2
- package/src/theme/components/structuredContent.ts +66 -1
- package/src/theme/components/tabs.ts +2 -2
- package/src/theme/components/template.ts +9 -9
- package/src/theme/components/textInput.ts +13 -12
- package/src/theme/components/toggle.ts +76 -42
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +20 -13
- package/src/theme/foundations/global.ts +17 -5
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +3 -3
- package/src/utils/componentCategories.ts +28 -21
- package/src/utils/utils.ts +28 -0
- package/dist/components/Card/CardTypes.d.ts +0 -4
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
- package/dist/components/Pagination/Pagination.stories.d.ts +0 -13
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
- package/src/components/Pagination/Pagination.stories.tsx +0 -54
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
- package/src/docs/Intro.stories.mdx +0 -53
- package/src/helpers/generateUUID.tsx +0 -5
- package/src/styles/base/_03-base.scss +0 -25
- package/src/styles/base/_04-focus.scss +0 -22
|
@@ -41,18 +41,18 @@ export const enumValues = getStorybookEnumValues(
|
|
|
41
41
|
ref: { table: { disable: true } },
|
|
42
42
|
showHelperInvalidText: { table: { defaultValue: { summary: true } } },
|
|
43
43
|
showLabel: { table: { defaultValue: { summary: true } } },
|
|
44
|
-
|
|
44
|
+
showRequiredLabel: { table: { defaultValue: { summary: true } } },
|
|
45
45
|
step: { table: { defaultValue: { summary: 1 } } },
|
|
46
|
+
textInputType: {
|
|
47
|
+
control: false,
|
|
48
|
+
table: { defaultValue: { summary: "TextInputVariants.Default" } },
|
|
49
|
+
},
|
|
46
50
|
type: {
|
|
47
51
|
control: { type: "select" },
|
|
48
52
|
table: { defaultValue: { summary: "TextInputTypes.text" } },
|
|
49
53
|
options: enumValues.options,
|
|
50
54
|
},
|
|
51
55
|
value: { control: false },
|
|
52
|
-
variantType: {
|
|
53
|
-
control: false,
|
|
54
|
-
table: { defaultValue: { summary: "TextInputVariants.Default" } },
|
|
55
|
-
},
|
|
56
56
|
}}
|
|
57
57
|
/>
|
|
58
58
|
|
|
@@ -61,7 +61,18 @@ export const enumValues = getStorybookEnumValues(
|
|
|
61
61
|
| Component Version | DS Version |
|
|
62
62
|
| ----------------- | ---------- |
|
|
63
63
|
| Added | `0.22.0` |
|
|
64
|
-
| Latest | `0.
|
|
64
|
+
| Latest | `0.26.0` |
|
|
65
|
+
|
|
66
|
+
## Table of Contents
|
|
67
|
+
|
|
68
|
+
- [Overview](#overview)
|
|
69
|
+
- [Component Props](#component-props)
|
|
70
|
+
- [Accessibility](#accessibility)
|
|
71
|
+
- [Labelling Variations](#labelling-variations)
|
|
72
|
+
- [HTML in Helper Text](#html-in-helper-text)
|
|
73
|
+
- [Textarea](#textarea)
|
|
74
|
+
|
|
75
|
+
## Overview
|
|
65
76
|
|
|
66
77
|
<Description of={TextInput} />
|
|
67
78
|
|
|
@@ -71,6 +82,8 @@ prop, regardless of the label visibility. Additionally, while the `id` prop is
|
|
|
71
82
|
optional, a unique `id` attribute is necessary for accessibility. If the prop
|
|
72
83
|
is left blank, a value will be generated for you.
|
|
73
84
|
|
|
85
|
+
## Component Props
|
|
86
|
+
|
|
74
87
|
<Canvas withToolbar>
|
|
75
88
|
<Story
|
|
76
89
|
name="TextInput with Controls"
|
|
@@ -91,11 +104,11 @@ is left blank, a value will be generated for you.
|
|
|
91
104
|
placeholder: "e.g. blue, green, etc.",
|
|
92
105
|
showHelperInvalidText: true,
|
|
93
106
|
showLabel: true,
|
|
94
|
-
|
|
107
|
+
showRequiredLabel: true,
|
|
95
108
|
step: 1,
|
|
96
109
|
type: "TextInputTypes.text",
|
|
97
110
|
value: undefined,
|
|
98
|
-
|
|
111
|
+
textInputType: TextInputVariants.Default,
|
|
99
112
|
}}
|
|
100
113
|
>
|
|
101
114
|
{(args) => <TextInput {...args} type={enumValues.getValue(args.type)} />}
|
|
@@ -104,43 +117,71 @@ is left blank, a value will be generated for you.
|
|
|
104
117
|
|
|
105
118
|
<ArgsTable story="TextInput with Controls" />
|
|
106
119
|
|
|
120
|
+
## Accessibility
|
|
121
|
+
|
|
122
|
+
The `TextInput` component renders an HTML `<input>` element which is accessible
|
|
123
|
+
via keyboard and screen reader. The `aria-required` and `required` attributes are
|
|
124
|
+
set with the `isRequired` prop. The `aria-disabled` and `disabled` attributes are
|
|
125
|
+
set with the `isDisabled` prop. The `aria-invalid` is set with the `isInvalid`
|
|
126
|
+
prop.
|
|
127
|
+
|
|
128
|
+
Internally, a `Label` is associated with the `<input>` element. When `showLabel`
|
|
129
|
+
is set to false, the `<input>` element's `aria-label` attribute is set to the
|
|
130
|
+
required `labelText` value.
|
|
131
|
+
|
|
132
|
+
When the `type` prop is set to `TextInputTypes.textarea`, the `<textarea>` element
|
|
133
|
+
is rendered instead of the `<input>` element. This element follows all the same
|
|
134
|
+
accessibility rules described above.
|
|
135
|
+
|
|
136
|
+
Resources:
|
|
137
|
+
|
|
138
|
+
- [MDN input: The Input (Form Input) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
|
|
139
|
+
- [MDN textarea: The Textarea element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea)
|
|
140
|
+
- [Chakra UI Input](https://chakra-ui.com/docs/components/form/input)
|
|
141
|
+
- [Chakra UI Textarea](https://chakra-ui.com/docs/components/form/textarea)
|
|
142
|
+
|
|
107
143
|
## Labelling Variations
|
|
108
144
|
|
|
109
145
|
A TextInput can be rendered with or without visible labels. When `showLabel` is
|
|
110
146
|
set to `false`, an `aria-label` attribute is added to the input/textarea element
|
|
111
147
|
to maintain accessibility. If the component needs to be required, the
|
|
112
|
-
`
|
|
113
|
-
|
|
148
|
+
`showRequiredLabel` prop can be used to show or hide the "(Required)" text
|
|
149
|
+
within the `label` element.
|
|
114
150
|
|
|
115
151
|
<Canvas withToolbar>
|
|
116
152
|
<Story name="Labelling Variations">
|
|
117
153
|
<VStack align="stretch" spacing={12}>
|
|
118
154
|
<TextInput
|
|
155
|
+
helperText="Choose wisely!"
|
|
156
|
+
id="textInput-1"
|
|
119
157
|
labelText="What is your favorite color?"
|
|
120
158
|
placeholder="i.e. blue, green, etc."
|
|
121
|
-
helperText="Choose wisely!"
|
|
122
159
|
/>
|
|
123
160
|
<TextInput
|
|
161
|
+
id="textInput-2"
|
|
124
162
|
labelText="What is your favorite color?"
|
|
125
163
|
placeholder="i.e. blue, green, etc."
|
|
126
164
|
showLabel={false}
|
|
127
165
|
/>
|
|
128
166
|
<TextInput
|
|
167
|
+
id="textInput-3"
|
|
168
|
+
isRequired
|
|
129
169
|
labelText="What is your favorite color?"
|
|
130
170
|
placeholder="i.e. blue, green, etc."
|
|
131
|
-
isRequired
|
|
132
171
|
/>
|
|
133
172
|
<TextInput
|
|
173
|
+
id="textInput-4"
|
|
174
|
+
isRequired
|
|
134
175
|
labelText="What is your favorite color?"
|
|
135
176
|
placeholder="i.e. blue, green, etc."
|
|
136
|
-
|
|
137
|
-
isRequired
|
|
177
|
+
showRequiredLabel={false}
|
|
138
178
|
/>
|
|
139
179
|
<TextInput
|
|
180
|
+
helperText="Choose wisely!"
|
|
181
|
+
id="textInput-5"
|
|
140
182
|
labelText="What is your favorite color?"
|
|
141
|
-
showLabel={false}
|
|
142
183
|
placeholder="i.e. blue, green, etc."
|
|
143
|
-
|
|
184
|
+
showLabel={false}
|
|
144
185
|
/>
|
|
145
186
|
</VStack>
|
|
146
187
|
</Story>
|
|
@@ -151,11 +192,12 @@ text within the `label` element.
|
|
|
151
192
|
<Canvas>
|
|
152
193
|
<DSProvider>
|
|
153
194
|
<TextInput
|
|
154
|
-
labelText="What is your favorite color?"
|
|
155
|
-
placeholder="i.e. blue, green, etc."
|
|
156
195
|
helperText="Choose wisely!"
|
|
196
|
+
id="errored"
|
|
157
197
|
invalidText="This is error text :("
|
|
158
198
|
isInvalid
|
|
199
|
+
labelText="What is your favorite color?"
|
|
200
|
+
placeholder="i.e. blue, green, etc."
|
|
159
201
|
/>
|
|
160
202
|
</DSProvider>
|
|
161
203
|
</Canvas>
|
|
@@ -165,10 +207,11 @@ text within the `label` element.
|
|
|
165
207
|
<Canvas>
|
|
166
208
|
<DSProvider>
|
|
167
209
|
<TextInput
|
|
168
|
-
labelText="What is your favorite color?"
|
|
169
|
-
placeholder="i.e. blue, green, etc."
|
|
170
210
|
helperText="Choose wisely!"
|
|
211
|
+
id="disabled"
|
|
171
212
|
isDisabled
|
|
213
|
+
labelText="What is your favorite color?"
|
|
214
|
+
placeholder="i.e. blue, green, etc."
|
|
172
215
|
/>
|
|
173
216
|
</DSProvider>
|
|
174
217
|
</Canvas>
|
|
@@ -186,19 +229,21 @@ helperText={<>Choose <b>wisely!</b></>}
|
|
|
186
229
|
<Canvas>
|
|
187
230
|
<DSProvider>
|
|
188
231
|
<TextInput
|
|
232
|
+
helperText="Choose <b>wisely!</b>"
|
|
233
|
+
id="string"
|
|
189
234
|
labelText="What is your favorite color?"
|
|
190
235
|
placeholder="i.e. blue, green, etc."
|
|
191
|
-
helperText="Choose <b>wisely!</b>"
|
|
192
236
|
/>
|
|
193
237
|
<br />
|
|
194
238
|
<TextInput
|
|
195
|
-
labelText="What is your favorite color?"
|
|
196
|
-
placeholder="i.e. blue, green, etc."
|
|
197
239
|
helperText={
|
|
198
240
|
<>
|
|
199
241
|
Choose <b>wisely!</b>
|
|
200
242
|
</>
|
|
201
243
|
}
|
|
244
|
+
id="jsx"
|
|
245
|
+
labelText="What is your favorite color?"
|
|
246
|
+
placeholder="i.e. blue, green, etc."
|
|
202
247
|
/>
|
|
203
248
|
</DSProvider>
|
|
204
249
|
</Canvas>
|
|
@@ -206,14 +251,15 @@ helperText={<>Choose <b>wisely!</b></>}
|
|
|
206
251
|
## Textarea
|
|
207
252
|
|
|
208
253
|
The TextInput component includes a multiline `textarea` form field. To render a
|
|
209
|
-
`textarea` element, pass `TextInputTypes.textarea` for the `type` prop.
|
|
210
|
-
variations described above are available for the `textarea` option.
|
|
254
|
+
`textarea` element, pass `TextInputTypes.textarea` for the `type` prop.
|
|
255
|
+
All the variations described above are available for the `textarea` option.
|
|
211
256
|
|
|
212
257
|
<Canvas withToolbar>
|
|
213
258
|
<Story
|
|
214
259
|
name="Textarea"
|
|
215
260
|
args={{
|
|
216
261
|
helperText: "Let it all out.",
|
|
262
|
+
id: "textarea",
|
|
217
263
|
invalidText: "This is error text :(",
|
|
218
264
|
isDisabled: false,
|
|
219
265
|
isInvalid: false,
|
|
@@ -221,12 +267,12 @@ variations described above are available for the `textarea` option.
|
|
|
221
267
|
labelText: "In less than 500 words, describe your favorite color?",
|
|
222
268
|
placeholder: "Essay question...",
|
|
223
269
|
showLabel: true,
|
|
224
|
-
|
|
270
|
+
showRequiredLabel: true,
|
|
225
271
|
type: TextInputTypes.textarea,
|
|
226
272
|
}}
|
|
227
273
|
argTypes={{
|
|
228
274
|
type: { control: false },
|
|
229
|
-
|
|
275
|
+
textInputType: { control: false },
|
|
230
276
|
}}
|
|
231
277
|
>
|
|
232
278
|
{(args) => <TextInput {...args} />}
|
|
@@ -6,17 +6,17 @@ import userEvent from "@testing-library/user-event";
|
|
|
6
6
|
|
|
7
7
|
import TextInput from "./TextInput";
|
|
8
8
|
import { TextInputTypes } from "./TextInputTypes";
|
|
9
|
-
import * as generateUUID from "../../helpers/generateUUID";
|
|
10
9
|
|
|
11
10
|
describe("TextInput Accessibility", () => {
|
|
12
11
|
it("passes axe accessibility test for the input element", async () => {
|
|
13
12
|
const { container } = render(
|
|
14
13
|
<TextInput
|
|
15
|
-
|
|
14
|
+
id="textInput"
|
|
16
15
|
isRequired
|
|
16
|
+
labelText="Custom input label"
|
|
17
|
+
onChange={jest.fn()}
|
|
17
18
|
placeholder="Input Placeholder"
|
|
18
19
|
type={TextInputTypes.text}
|
|
19
|
-
onChange={jest.fn()}
|
|
20
20
|
/>
|
|
21
21
|
);
|
|
22
22
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -25,11 +25,12 @@ describe("TextInput Accessibility", () => {
|
|
|
25
25
|
it("passes axe accessibility test for the textarea element", async () => {
|
|
26
26
|
const { container } = render(
|
|
27
27
|
<TextInput
|
|
28
|
-
|
|
28
|
+
id="textInput"
|
|
29
29
|
isRequired
|
|
30
|
+
labelText="Custom textarea label"
|
|
31
|
+
onChange={jest.fn()}
|
|
30
32
|
placeholder="Input Placeholder"
|
|
31
33
|
type={TextInputTypes.textarea}
|
|
32
|
-
onChange={jest.fn()}
|
|
33
34
|
/>
|
|
34
35
|
);
|
|
35
36
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -46,13 +47,13 @@ describe("TextInput", () => {
|
|
|
46
47
|
changeHandler = jest.fn();
|
|
47
48
|
utils = render(
|
|
48
49
|
<TextInput
|
|
50
|
+
attributes={{ onFocus: focusHandler }}
|
|
49
51
|
id="myTextInput"
|
|
50
|
-
labelText="Custom Input Label"
|
|
51
52
|
isRequired
|
|
53
|
+
labelText="Custom Input Label"
|
|
54
|
+
onChange={changeHandler}
|
|
52
55
|
placeholder="Input Placeholder"
|
|
53
56
|
type={TextInputTypes.text}
|
|
54
|
-
attributes={{ onFocus: focusHandler }}
|
|
55
|
-
onChange={changeHandler}
|
|
56
57
|
/>
|
|
57
58
|
);
|
|
58
59
|
});
|
|
@@ -70,34 +71,17 @@ describe("TextInput", () => {
|
|
|
70
71
|
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
71
72
|
});
|
|
72
73
|
|
|
73
|
-
it("
|
|
74
|
+
it("does not render '(Required)' along with the label text", () => {
|
|
74
75
|
utils.rerender(
|
|
75
76
|
<TextInput
|
|
76
|
-
id="myTextInput"
|
|
77
|
-
labelText="Custom Input Label"
|
|
78
|
-
isRequired={false}
|
|
79
|
-
placeholder="Input Placeholder"
|
|
80
|
-
type={TextInputTypes.text}
|
|
81
77
|
attributes={{ onFocus: focusHandler }}
|
|
82
|
-
onChange={changeHandler}
|
|
83
|
-
/>
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
expect(screen.getByText("Custom Input Label")).toBeInTheDocument();
|
|
87
|
-
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it("does not render 'Required' along with the label text", () => {
|
|
91
|
-
utils.rerender(
|
|
92
|
-
<TextInput
|
|
93
78
|
id="myTextInput"
|
|
94
|
-
labelText="Custom Input Label"
|
|
95
79
|
isRequired
|
|
96
|
-
|
|
80
|
+
labelText="Custom Input Label"
|
|
81
|
+
onChange={changeHandler}
|
|
97
82
|
placeholder="Input Placeholder"
|
|
83
|
+
showRequiredLabel={false}
|
|
98
84
|
type={TextInputTypes.text}
|
|
99
|
-
attributes={{ onFocus: focusHandler }}
|
|
100
|
-
onChange={changeHandler}
|
|
101
85
|
/>
|
|
102
86
|
);
|
|
103
87
|
|
|
@@ -136,20 +120,30 @@ describe("TextInput", () => {
|
|
|
136
120
|
// Called 5 times because "Hello" has length of 5.
|
|
137
121
|
expect(changeHandler).toHaveBeenCalledTimes(5);
|
|
138
122
|
});
|
|
123
|
+
|
|
124
|
+
it("logs a warning when there is no `id` passed", () => {
|
|
125
|
+
const warn = jest.spyOn(console, "warn");
|
|
126
|
+
render(
|
|
127
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
128
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
129
|
+
<TextInput labelText="Custom Input Label" />
|
|
130
|
+
);
|
|
131
|
+
expect(warn).toHaveBeenCalledWith(
|
|
132
|
+
"NYPL Reservoir TextInput: This component's required `id` prop was not passed."
|
|
133
|
+
);
|
|
134
|
+
});
|
|
139
135
|
});
|
|
140
136
|
|
|
141
137
|
describe("Renders TextInput with auto-generated ID, hidden label and visible helper text", () => {
|
|
142
|
-
let generateUUIDSpy;
|
|
143
|
-
|
|
144
138
|
beforeEach(() => {
|
|
145
|
-
generateUUIDSpy = jest.spyOn(generateUUID, "default");
|
|
146
139
|
render(
|
|
147
140
|
<TextInput
|
|
148
|
-
labelText="Custom Input Label"
|
|
149
|
-
showLabel={false}
|
|
150
141
|
helperText="Custom Helper Text"
|
|
142
|
+
id="textInput"
|
|
151
143
|
isRequired
|
|
144
|
+
labelText="Custom Input Label"
|
|
152
145
|
placeholder="Input Placeholder"
|
|
146
|
+
showLabel={false}
|
|
153
147
|
type={TextInputTypes.text}
|
|
154
148
|
/>
|
|
155
149
|
);
|
|
@@ -159,11 +153,6 @@ describe("Renders TextInput with auto-generated ID, hidden label and visible hel
|
|
|
159
153
|
expect(screen.getByLabelText(/Custom Input Label/i)).toBeInTheDocument();
|
|
160
154
|
});
|
|
161
155
|
|
|
162
|
-
it("calls a UUID generation method if no ID is passed as a prop", () => {
|
|
163
|
-
// Called twice for the `TextInput` and the SVG icon components.
|
|
164
|
-
expect(generateUUIDSpy).toHaveBeenCalledTimes(2);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
156
|
it("does not renders Label component", () => {
|
|
168
157
|
expect(screen.queryByText(/Custom Input Label/i)).not.toBeInTheDocument();
|
|
169
158
|
});
|
|
@@ -185,12 +174,12 @@ describe("TextInput shows error state", () => {
|
|
|
185
174
|
beforeEach(() => {
|
|
186
175
|
const utils = render(
|
|
187
176
|
<TextInput
|
|
188
|
-
id="myTextInputError"
|
|
189
|
-
labelText="Custom Input Label"
|
|
190
177
|
helperText="Custom Helper Text"
|
|
178
|
+
id="myTextInputError"
|
|
191
179
|
invalidText="Custom Error Text"
|
|
192
|
-
placeholder="Input Placeholder"
|
|
193
180
|
isInvalid
|
|
181
|
+
labelText="Custom Input Label"
|
|
182
|
+
placeholder="Input Placeholder"
|
|
194
183
|
type={TextInputTypes.text}
|
|
195
184
|
/>
|
|
196
185
|
);
|
|
@@ -214,14 +203,14 @@ describe("TextInput shows error state", () => {
|
|
|
214
203
|
it("does not render the invalid text when 'showHelperInvalidText' is set to false", () => {
|
|
215
204
|
rerender(
|
|
216
205
|
<TextInput
|
|
217
|
-
id="myTextInputError"
|
|
218
|
-
labelText="Custom Input Label"
|
|
219
206
|
helperText="Custom Helper Text"
|
|
207
|
+
id="myTextInputError"
|
|
220
208
|
invalidText="Custom Error Text"
|
|
209
|
+
isInvalid
|
|
210
|
+
labelText="Custom Input Label"
|
|
221
211
|
placeholder="Input Placeholder"
|
|
222
212
|
showHelperInvalidText={false}
|
|
223
213
|
type={TextInputTypes.text}
|
|
224
|
-
isInvalid
|
|
225
214
|
/>
|
|
226
215
|
);
|
|
227
216
|
expect(screen.queryByText("Custom Helper Text")).not.toBeInTheDocument();
|
|
@@ -241,16 +230,16 @@ describe("Renders HTML attributes passed through the `attributes` prop", () => {
|
|
|
241
230
|
beforeEach(() => {
|
|
242
231
|
render(
|
|
243
232
|
<TextInput
|
|
244
|
-
id="inputID-attributes"
|
|
245
|
-
labelText="Input Label"
|
|
246
|
-
placeholder="Input Placeholder"
|
|
247
|
-
type={TextInputTypes.text}
|
|
248
233
|
attributes={{
|
|
249
234
|
onChange: onChangeSpy,
|
|
250
235
|
onBlur: onBlurSpy,
|
|
251
236
|
maxLength: 10,
|
|
252
237
|
tabIndex: 0,
|
|
253
238
|
}}
|
|
239
|
+
id="inputID-attributes"
|
|
240
|
+
labelText="Input Label"
|
|
241
|
+
placeholder="Input Placeholder"
|
|
242
|
+
type={TextInputTypes.text}
|
|
254
243
|
/>
|
|
255
244
|
);
|
|
256
245
|
});
|
|
@@ -336,9 +325,9 @@ describe("Hidden input", () => {
|
|
|
336
325
|
it("does not show the helper text", () => {
|
|
337
326
|
render(
|
|
338
327
|
<TextInput
|
|
328
|
+
helperText="Helper Text"
|
|
339
329
|
id="inputID-hidden"
|
|
340
330
|
labelText="Hidden Input Label"
|
|
341
|
-
helperText="Helper Text"
|
|
342
331
|
type={TextInputTypes.hidden}
|
|
343
332
|
value="hidden"
|
|
344
333
|
/>
|
|
@@ -441,6 +430,29 @@ describe("UI Snapshots", () => {
|
|
|
441
430
|
/>
|
|
442
431
|
)
|
|
443
432
|
.toJSON();
|
|
433
|
+
const withChakraProps = renderer
|
|
434
|
+
.create(
|
|
435
|
+
<TextInput
|
|
436
|
+
id="chakra"
|
|
437
|
+
labelText="Custom Input Label"
|
|
438
|
+
placeholder="Input Placeholder"
|
|
439
|
+
type={TextInputTypes.text}
|
|
440
|
+
p="20px"
|
|
441
|
+
color="ui.error.primary"
|
|
442
|
+
/>
|
|
443
|
+
)
|
|
444
|
+
.toJSON();
|
|
445
|
+
const withOtherProps = renderer
|
|
446
|
+
.create(
|
|
447
|
+
<TextInput
|
|
448
|
+
id="props"
|
|
449
|
+
labelText="Custom Input Label"
|
|
450
|
+
placeholder="Input Placeholder"
|
|
451
|
+
type={TextInputTypes.text}
|
|
452
|
+
data-testid="props"
|
|
453
|
+
/>
|
|
454
|
+
)
|
|
455
|
+
.toJSON();
|
|
444
456
|
|
|
445
457
|
expect(required).toMatchSnapshot();
|
|
446
458
|
expect(optional).toMatchSnapshot();
|
|
@@ -448,7 +460,10 @@ describe("UI Snapshots", () => {
|
|
|
448
460
|
expect(withHelperText).toMatchSnapshot();
|
|
449
461
|
expect(errorState).toMatchSnapshot();
|
|
450
462
|
expect(disabledState).toMatchSnapshot();
|
|
463
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
464
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
451
465
|
});
|
|
466
|
+
|
|
452
467
|
it("renders the textarea UI snapshot correctly", () => {
|
|
453
468
|
const basicTextarea = renderer
|
|
454
469
|
.create(
|