@nypl/design-system-react-components 0.25.0 → 0.25.4
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 +142 -1
- package/README.md +98 -50
- package/dist/components/Accordion/Accordion.d.ts +14 -14
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
- package/dist/components/Button/Button.d.ts +13 -8
- package/dist/components/Button/ButtonTypes.d.ts +3 -1
- package/dist/components/Card/Card.d.ts +36 -52
- package/dist/components/Card/CardTypes.d.ts +2 -17
- package/dist/components/Checkbox/Checkbox.d.ts +17 -13
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
- package/dist/components/DatePicker/DatePicker.d.ts +37 -35
- package/dist/components/Fieldset/Fieldset.d.ts +25 -0
- package/dist/components/Form/Form.d.ts +13 -8
- package/dist/components/Form/FormTypes.d.ts +2 -8
- 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 +4 -4
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
- package/dist/components/Hero/Hero.d.ts +19 -14
- package/dist/components/Hero/HeroTypes.d.ts +10 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
- package/dist/components/Icons/Icon.d.ts +19 -14
- package/dist/components/Icons/IconSvgs.d.ts +11 -0
- package/dist/components/Icons/IconTypes.d.ts +89 -64
- package/dist/components/Image/Image.d.ts +19 -9
- package/dist/components/Image/ImageTypes.d.ts +20 -0
- package/dist/components/Label/Label.d.ts +5 -17
- package/dist/components/Link/Link.d.ts +12 -12
- package/dist/components/List/List.d.ts +19 -14
- package/dist/components/Notification/Notification.d.ts +37 -16
- package/dist/components/Pagination/Pagination.d.ts +16 -13
- package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
- package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
- package/dist/components/Radio/Radio.d.ts +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
- 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 +18 -14
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
- package/dist/components/Slider/Slider.d.ts +57 -0
- package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
- package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
- package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- 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 +44 -31
- package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
- package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
- package/dist/design-system-react-components.cjs.development.js +6473 -2630
- 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 +6463 -2631
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
- package/dist/hooks/useCarouselStyles.d.ts +16 -0
- package/dist/hooks/useNYPLTheme.d.ts +54 -0
- package/dist/hooks/useWindowSize.d.ts +10 -0
- package/dist/index.d.ts +19 -7
- package/dist/resources.scss +180 -170
- 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 +39 -15
- package/dist/theme/components/card.d.ts +168 -0
- package/dist/theme/components/checkbox.d.ts +12 -8
- package/dist/theme/components/checkboxGroup.d.ts +12 -0
- package/dist/theme/components/componentWrapper.d.ts +11 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +27 -0
- package/dist/theme/components/global.d.ts +65 -0
- package/dist/theme/components/globalMixins.d.ts +23 -0
- package/dist/theme/components/heading.d.ts +55 -20
- package/dist/theme/components/helperErrorText.d.ts +10 -0
- package/dist/theme/components/hero.d.ts +493 -0
- package/dist/theme/components/horizontalRule.d.ts +14 -0
- package/dist/theme/components/icon.d.ts +13 -0
- package/dist/theme/components/image.d.ts +31 -0
- package/dist/theme/components/label.d.ts +18 -0
- package/dist/theme/components/link.d.ts +49 -0
- package/dist/theme/components/list.d.ts +89 -0
- package/dist/theme/components/notification.d.ts +75 -0
- package/dist/theme/components/pagination.d.ts +19 -0
- package/dist/theme/components/progressIndicator.d.ts +50 -0
- package/dist/theme/components/radio.d.ts +8 -7
- package/dist/theme/components/radioGroup.d.ts +12 -0
- package/dist/theme/components/searchBar.d.ts +20 -0
- package/dist/theme/components/select.d.ts +67 -0
- package/dist/theme/components/skeletonLoader.d.ts +98 -0
- package/dist/theme/components/slider.d.ts +51 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/tabs.d.ts +63 -12
- 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 +112 -0
- package/dist/theme/components/videoPlayer.d.ts +40 -0
- package/dist/theme/foundations/breakpoints.d.ts +8 -8
- package/dist/theme/foundations/global.d.ts +8 -0
- package/dist/theme/foundations/radii.d.ts +5 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +16 -16
- package/dist/utils/utils.d.ts +6 -0
- package/package.json +72 -82
- package/src/__tests__/setup.ts +2 -2
- package/src/components/Accordion/Accordion.stories.mdx +223 -34
- 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 -4
- package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
- package/src/components/Autosuggest/_Autosuggest.scss +5 -5
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
- package/src/components/Button/Button.stories.mdx +45 -36
- package/src/components/Button/Button.test.tsx +37 -11
- package/src/components/Button/Button.tsx +22 -34
- package/src/components/Button/ButtonTypes.tsx +2 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
- package/src/components/Card/Card.stories.mdx +314 -273
- package/src/components/Card/Card.test.tsx +157 -91
- package/src/components/Card/Card.tsx +195 -145
- package/src/components/Card/CardTypes.tsx +2 -19
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
- package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
- package/src/components/CardEdition/CardEdition.test.tsx +23 -31
- package/src/components/CardEdition/_CardEdition.scss +22 -23
- package/src/components/Chakra/Box.stories.mdx +15 -16
- package/src/components/Chakra/Center.stories.mdx +56 -24
- package/src/components/Chakra/Grid.stories.mdx +92 -0
- package/src/components/Chakra/Stack.stories.mdx +38 -21
- package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
- package/src/components/Checkbox/Checkbox.test.tsx +47 -2
- package/src/components/Checkbox/Checkbox.tsx +44 -41
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
- package/src/components/DatePicker/DatePicker.test.tsx +264 -64
- package/src/components/DatePicker/DatePicker.tsx +165 -134
- package/src/components/DatePicker/_DatePicker.scss +33 -66
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
- package/src/components/Fieldset/Fieldset.test.tsx +125 -0
- package/src/components/Fieldset/Fieldset.tsx +52 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
- package/src/components/Form/Form.stories.mdx +70 -27
- package/src/components/Form/Form.test.tsx +58 -45
- package/src/components/Form/Form.tsx +50 -21
- package/src/components/Form/FormTypes.tsx +3 -8
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
- package/src/components/Grid/GridTypes.tsx +9 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +268 -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 +3 -3
- package/src/components/Heading/Heading.tsx +12 -6
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
- package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
- package/src/components/Hero/Hero.stories.mdx +198 -121
- package/src/components/Hero/Hero.test.tsx +537 -107
- package/src/components/Hero/Hero.tsx +79 -92
- package/src/components/Hero/HeroTypes.tsx +18 -5
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
- package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
- package/src/components/Icons/Icon.stories.mdx +94 -77
- package/src/components/Icons/Icon.test.tsx +48 -22
- package/src/components/Icons/Icon.tsx +78 -61
- package/src/components/Icons/IconSvgs.tsx +22 -0
- package/src/components/Icons/IconTypes.tsx +91 -64
- package/src/components/Image/Image.stories.mdx +220 -0
- package/src/components/Image/Image.test.tsx +131 -29
- package/src/components/Image/Image.tsx +84 -56
- package/src/components/Image/ImageTypes.ts +22 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
- package/src/components/Input/Input.stories.tsx +23 -67
- package/src/components/Input/Input.test.tsx +4 -4
- package/src/components/Input/_Input.scss +23 -14
- package/src/components/Label/Label.stories.mdx +28 -7
- package/src/components/Label/Label.test.tsx +43 -12
- package/src/components/Label/Label.tsx +21 -34
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
- package/src/components/Link/Link.stories.mdx +41 -41
- package/src/components/Link/Link.test.tsx +33 -44
- package/src/components/Link/Link.tsx +117 -100
- package/src/components/List/List.stories.mdx +124 -51
- package/src/components/List/List.test.tsx +142 -63
- package/src/components/List/List.tsx +89 -93
- package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
- package/src/components/Modal/Modal.stories.mdx +3 -3
- package/src/components/Modal/_Modal.scss +2 -2
- package/src/components/Notification/Notification.stories.mdx +119 -111
- package/src/components/Notification/Notification.test.tsx +102 -126
- package/src/components/Notification/Notification.tsx +157 -161
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
- package/src/components/Pagination/Pagination.stories.mdx +26 -27
- package/src/components/Pagination/Pagination.stories.tsx +11 -16
- package/src/components/Pagination/Pagination.test.tsx +276 -140
- package/src/components/Pagination/Pagination.tsx +174 -154
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
- package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
- package/src/components/Radio/Radio.test.tsx +20 -4
- package/src/components/Radio/Radio.tsx +6 -3
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
- package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
- package/src/components/RadioGroup/RadioGroup.tsx +21 -29
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
- package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
- package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
- package/src/components/SearchBar/SearchBar.tsx +161 -46
- package/src/components/Select/Select.stories.mdx +188 -170
- package/src/components/Select/Select.test.tsx +132 -375
- package/src/components/Select/Select.tsx +121 -165
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
- package/src/components/Slider/Slider.stories.mdx +529 -0
- package/src/components/Slider/Slider.test.tsx +653 -0
- package/src/components/Slider/Slider.tsx +303 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
- 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 +17 -17
- package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
- package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
- package/src/components/StyleGuide/ColorCard.tsx +46 -0
- package/src/components/StyleGuide/Colors.stories.mdx +196 -0
- package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
- package/src/components/StyleGuide/Forms.stories.mdx +9 -7
- package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
- package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
- package/src/components/StyleGuide/Typography.stories.mdx +202 -189
- package/src/components/StyleGuide/UIDocCard.tsx +1 -1
- package/src/components/Tabs/Tabs.stories.mdx +73 -11
- package/src/components/Tabs/Tabs.tsx +88 -67
- package/src/components/Template/Template.stories.mdx +572 -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 +89 -90
- package/src/components/TextInput/TextInput.test.tsx +84 -85
- package/src/components/TextInput/TextInput.tsx +121 -95
- package/src/components/TextInput/TextInputTypes.tsx +8 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
- package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
- package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
- package/src/docs/Chakra.stories.mdx +246 -65
- package/src/docs/Intro.stories.mdx +18 -13
- package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
- package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
- package/src/hooks/useCarouselStyles.ts +34 -0
- package/src/hooks/useNYPLTheme.ts +67 -0
- package/src/hooks/useWindowSize.ts +40 -0
- package/src/index.ts +39 -16
- package/src/resources.scss +5 -5
- package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
- package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
- package/src/styles/base/_03-base.scss +25 -0
- package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
- package/src/styles/base/_place-holder.scss +14 -3
- package/src/styles/{03-space → space}/_space-inline.scss +14 -14
- package/src/styles/{03-space → space}/_space-inset.scss +10 -10
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +13 -62
- package/src/theme/components/accordion.ts +30 -0
- package/src/theme/components/breadcrumb.ts +77 -0
- package/src/theme/components/button.ts +91 -71
- package/src/theme/components/card.ts +174 -0
- package/src/theme/components/checkbox.ts +22 -29
- package/src/theme/components/checkboxGroup.ts +8 -0
- package/src/theme/components/componentWrapper.ts +10 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +18 -0
- package/src/theme/components/global.ts +82 -0
- package/src/theme/components/globalMixins.ts +24 -0
- package/src/theme/components/heading.ts +25 -13
- package/src/theme/components/helperErrorText.ts +9 -0
- package/src/theme/components/hero.ts +240 -0
- package/src/theme/components/horizontalRule.ts +13 -0
- package/src/theme/components/icon.ts +79 -0
- package/src/theme/components/image.ts +116 -0
- package/src/theme/components/label.ts +10 -0
- package/src/theme/components/link.ts +51 -0
- package/src/theme/components/list.ts +73 -0
- package/src/theme/components/notification.ts +93 -0
- package/src/theme/components/pagination.ts +20 -0
- package/src/theme/components/progressIndicator.ts +62 -0
- package/src/theme/components/radio.ts +22 -33
- package/src/theme/components/radioGroup.ts +8 -0
- package/src/theme/components/searchBar.ts +21 -0
- package/src/theme/components/select.ts +53 -0
- package/src/theme/components/skeletonLoader.ts +107 -0
- package/src/theme/components/slider.ts +79 -0
- package/src/theme/components/statusBadge.ts +26 -0
- package/src/theme/components/tabs.ts +102 -69
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +31 -0
- package/src/theme/components/textInput.ts +62 -0
- package/src/theme/components/videoPlayer.ts +49 -0
- package/src/theme/foundations/breakpoints.ts +8 -8
- package/src/theme/foundations/colors.ts +29 -13
- package/src/theme/foundations/global.ts +8 -0
- package/src/theme/foundations/radii.ts +6 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +24 -24
- package/src/theme/index.ts +74 -13
- package/src/utils/componentCategories.ts +12 -5
- package/src/utils/utils.ts +13 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
- package/dist/components/Image/Image.stories.d.ts +0 -18
- package/dist/components/List/List.stories.d.ts +0 -7
- package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
- package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
- package/dist/components/Template/Template.stories.d.ts +0 -30
- package/dist/theme/components/customRadioGroup.d.ts +0 -17
- package/src/components/Accordion/Accordion.stories.tsx +0 -66
- package/src/components/Accordion/_Accordion.scss +0 -81
- package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
- package/src/components/Button/_Button.scss +0 -56
- package/src/components/Card/_Card.scss +0 -308
- package/src/components/Form/_Form.scss +0 -67
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
- package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
- package/src/components/Hero/_Hero.scss +0 -256
- package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
- package/src/components/Icons/_Icons.scss +0 -116
- package/src/components/Image/Image.stories.tsx +0 -54
- package/src/components/Image/_Image.scss +0 -38
- package/src/components/Label/_Label.scss +0 -22
- package/src/components/Link/_Link.scss +0 -73
- package/src/components/List/List.stories.tsx +0 -139
- package/src/components/List/_List.scss +0 -76
- package/src/components/Notification/_Notification.scss +0 -110
- package/src/components/Pagination/_Pagination.scss +0 -40
- package/src/components/SearchBar/_SearchBar.scss +0 -16
- package/src/components/Select/_Select.scss +0 -82
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
- package/src/components/StatusBadge/_StatusBadge.scss +0 -23
- package/src/components/StyleGuide/Colors.stories.tsx +0 -289
- package/src/components/Template/Template.stories.tsx +0 -86
- package/src/components/Template/_Template.scss +0 -63
- package/src/components/TextInput/_TextInput.scss +0 -59
- package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
- package/src/styles/01-colors/_colors-brand.scss +0 -56
- package/src/styles/01-colors/_colors-utility.scss +0 -65
- package/src/styles/02-typography/_type-scale.css +0 -11
- package/src/styles/02-typography/_type-weight.css +0 -7
- package/src/styles/02-typography/_typefaces.css +0 -4
- package/src/styles/03-space/_space-stack.scss +0 -116
- package/src/styles/03-space/_space.css +0 -30
- package/src/styles/base/_04-base.scss +0 -19
- package/src/styles/base/_card-grid.scss +0 -78
- package/src/styles/base/_typography.scss +0 -11
- package/src/theme/components/customRadioGroup.ts +0 -18
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Meta,
|
|
3
|
+
Story,
|
|
4
|
+
Canvas,
|
|
5
|
+
ArgsTable,
|
|
6
|
+
Description,
|
|
7
|
+
} from "@storybook/addon-docs/blocks";
|
|
8
|
+
import { withDesign } from "storybook-addon-designs";
|
|
9
|
+
|
|
10
|
+
import Fieldset from "./Fieldset";
|
|
11
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
12
|
+
import DSProvider from "../../theme/provider";
|
|
13
|
+
|
|
14
|
+
<Meta
|
|
15
|
+
title={getCategory("Fieldset")}
|
|
16
|
+
component={Fieldset}
|
|
17
|
+
decorators={[withDesign]}
|
|
18
|
+
parameters={{
|
|
19
|
+
jest: ["Fieldset.test.tsx"],
|
|
20
|
+
}}
|
|
21
|
+
argTypes={{
|
|
22
|
+
children: { table: { disable: true } },
|
|
23
|
+
className: { table: { disable: true } },
|
|
24
|
+
id: { table: { disable: true } },
|
|
25
|
+
}}
|
|
26
|
+
/>
|
|
27
|
+
|
|
28
|
+
# Fieldset
|
|
29
|
+
|
|
30
|
+
| Component Version | DS Version |
|
|
31
|
+
| ----------------- | ---------- |
|
|
32
|
+
| Added | `0.25.3` |
|
|
33
|
+
| Latest | `0.25.3` |
|
|
34
|
+
|
|
35
|
+
<Description of={Fieldset} />
|
|
36
|
+
|
|
37
|
+
<Canvas withToolbar>
|
|
38
|
+
<Story
|
|
39
|
+
name="Basic"
|
|
40
|
+
args={{
|
|
41
|
+
isLegendHidden: false,
|
|
42
|
+
isRequired: false,
|
|
43
|
+
legendText: "This is the legend text",
|
|
44
|
+
optReqFlag: true,
|
|
45
|
+
}}
|
|
46
|
+
>
|
|
47
|
+
{(args) => (
|
|
48
|
+
<Fieldset {...args}>
|
|
49
|
+
<p>Text children in the Fieldset component.</p>
|
|
50
|
+
</Fieldset>
|
|
51
|
+
)}
|
|
52
|
+
</Story>
|
|
53
|
+
</Canvas>
|
|
54
|
+
|
|
55
|
+
<ArgsTable story="Basic" />
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { render, screen } from "@testing-library/react";
|
|
3
|
+
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
5
|
+
|
|
6
|
+
import Fieldset from "./Fieldset";
|
|
7
|
+
|
|
8
|
+
describe("Fieldset Accessibility", () => {
|
|
9
|
+
it("passes axe accessibility", async () => {
|
|
10
|
+
const { container } = render(
|
|
11
|
+
<Fieldset legendText="Legend Text">
|
|
12
|
+
<p>Some other fields</p>
|
|
13
|
+
</Fieldset>
|
|
14
|
+
);
|
|
15
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("passes axe accessibility with the legend hidden", async () => {
|
|
19
|
+
const { container } = render(
|
|
20
|
+
<Fieldset legendText="Legend Text" isLegendHidden>
|
|
21
|
+
<p>Some other fields</p>
|
|
22
|
+
</Fieldset>
|
|
23
|
+
);
|
|
24
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
describe("Fieldset", () => {
|
|
29
|
+
it("renders text in a legend and fieldset along with its children", () => {
|
|
30
|
+
render(
|
|
31
|
+
<Fieldset legendText="Legend Text">
|
|
32
|
+
<p>Some other fields</p>
|
|
33
|
+
</Fieldset>
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
expect(screen.getByRole("group")).toBeInTheDocument();
|
|
37
|
+
// `legend` has no HTML role
|
|
38
|
+
expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
|
|
39
|
+
expect(screen.getByText("Some other fields")).toBeInTheDocument();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("renders 'Optional' text by default in the legend", () => {
|
|
43
|
+
render(
|
|
44
|
+
<Fieldset legendText="Legend Text">
|
|
45
|
+
<p>Some other fields</p>
|
|
46
|
+
</Fieldset>
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
expect(screen.getByText(/Optional/i)).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it("renders 'Required' text in the legend", () => {
|
|
53
|
+
render(
|
|
54
|
+
<Fieldset legendText="Legend Text" isRequired>
|
|
55
|
+
<p>Some other fields</p>
|
|
56
|
+
</Fieldset>
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("can hide the 'Required'/'Optional' text in the legend but still show the main text", () => {
|
|
63
|
+
const { rerender } = render(
|
|
64
|
+
<Fieldset legendText="Legend Text" isRequired>
|
|
65
|
+
<p>Some other fields</p>
|
|
66
|
+
</Fieldset>
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
expect(screen.getByText(/Required/i)).toBeInTheDocument();
|
|
70
|
+
|
|
71
|
+
rerender(
|
|
72
|
+
<Fieldset legendText="Legend Text" optReqFlag={false}>
|
|
73
|
+
<p>Some other fields</p>
|
|
74
|
+
</Fieldset>
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
|
|
78
|
+
expect(screen.queryByText(/Optional/i)).not.toBeInTheDocument();
|
|
79
|
+
|
|
80
|
+
rerender(
|
|
81
|
+
<Fieldset legendText="Legend Text" isRequired optReqFlag={false}>
|
|
82
|
+
<p>Some other fields</p>
|
|
83
|
+
</Fieldset>
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
|
|
87
|
+
expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("renders the UI snapshot correctly", () => {
|
|
91
|
+
const basic = renderer
|
|
92
|
+
.create(
|
|
93
|
+
<Fieldset legendText="Legend Text">
|
|
94
|
+
<p>Some other fields</p>
|
|
95
|
+
</Fieldset>
|
|
96
|
+
)
|
|
97
|
+
.toJSON();
|
|
98
|
+
const required = renderer
|
|
99
|
+
.create(
|
|
100
|
+
<Fieldset legendText="Legend Text" isRequired>
|
|
101
|
+
<p>Some other fields</p>
|
|
102
|
+
</Fieldset>
|
|
103
|
+
)
|
|
104
|
+
.toJSON();
|
|
105
|
+
const hiddenHelperText = renderer
|
|
106
|
+
.create(
|
|
107
|
+
<Fieldset legendText="Legend Text" isRequired optReqFlag={false}>
|
|
108
|
+
<p>Some other fields</p>
|
|
109
|
+
</Fieldset>
|
|
110
|
+
)
|
|
111
|
+
.toJSON();
|
|
112
|
+
const hiddenLegend = renderer
|
|
113
|
+
.create(
|
|
114
|
+
<Fieldset legendText="Legend Text" isLegendHidden>
|
|
115
|
+
<p>Some other fields</p>
|
|
116
|
+
</Fieldset>
|
|
117
|
+
)
|
|
118
|
+
.toJSON();
|
|
119
|
+
|
|
120
|
+
expect(basic).toMatchSnapshot();
|
|
121
|
+
expect(required).toMatchSnapshot();
|
|
122
|
+
expect(hiddenHelperText).toMatchSnapshot();
|
|
123
|
+
expect(hiddenLegend).toMatchSnapshot();
|
|
124
|
+
});
|
|
125
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
3
|
+
|
|
4
|
+
interface FieldsetProps {
|
|
5
|
+
/** Children to render. Typically form-related components are used. */
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/** Additional class name to add. */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** ID that other components can cross reference for accessibility purposes */
|
|
10
|
+
id?: string;
|
|
11
|
+
/** Flag to show or hide the text in the `legend` element. False by default. */
|
|
12
|
+
isLegendHidden?: boolean;
|
|
13
|
+
/** Flag to render "Required" or "Optional" in the `legend`.
|
|
14
|
+
* False/"Optional" by default. */
|
|
15
|
+
isRequired?: boolean;
|
|
16
|
+
/** Text to display in the `legend` element. */
|
|
17
|
+
legendText?: string;
|
|
18
|
+
/** Flag to show or hide the "Required"/"Optional" text in the `legend`.
|
|
19
|
+
* True by default. */
|
|
20
|
+
optReqFlag?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A wrapper component that renders a `fieldset` element along with a `legend`
|
|
25
|
+
* element as its first child. Commonly used to wrap form components.
|
|
26
|
+
*/
|
|
27
|
+
const Fieldset: React.FC<FieldsetProps> = ({
|
|
28
|
+
children,
|
|
29
|
+
className,
|
|
30
|
+
id,
|
|
31
|
+
isLegendHidden = false,
|
|
32
|
+
isRequired = false,
|
|
33
|
+
legendText,
|
|
34
|
+
optReqFlag = true,
|
|
35
|
+
}) => {
|
|
36
|
+
const styles = useMultiStyleConfig("Fieldset", { isLegendHidden });
|
|
37
|
+
return (
|
|
38
|
+
<Box as="fieldset" id={id} __css={styles} className={className}>
|
|
39
|
+
<legend>
|
|
40
|
+
{legendText}
|
|
41
|
+
{optReqFlag && (
|
|
42
|
+
<Box __css={styles.helper}>
|
|
43
|
+
{isRequired ? "Required" : "Optional"}
|
|
44
|
+
</Box>
|
|
45
|
+
)}
|
|
46
|
+
</legend>
|
|
47
|
+
{children}
|
|
48
|
+
</Box>
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default Fieldset;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Fieldset renders the UI snapshot correctly 1`] = `
|
|
4
|
+
<fieldset
|
|
5
|
+
className="css-0"
|
|
6
|
+
>
|
|
7
|
+
<legend>
|
|
8
|
+
Legend Text
|
|
9
|
+
<div
|
|
10
|
+
className="css-0"
|
|
11
|
+
>
|
|
12
|
+
Optional
|
|
13
|
+
</div>
|
|
14
|
+
</legend>
|
|
15
|
+
<p>
|
|
16
|
+
Some other fields
|
|
17
|
+
</p>
|
|
18
|
+
</fieldset>
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`Fieldset renders the UI snapshot correctly 2`] = `
|
|
22
|
+
<fieldset
|
|
23
|
+
className="css-0"
|
|
24
|
+
>
|
|
25
|
+
<legend>
|
|
26
|
+
Legend Text
|
|
27
|
+
<div
|
|
28
|
+
className="css-0"
|
|
29
|
+
>
|
|
30
|
+
Required
|
|
31
|
+
</div>
|
|
32
|
+
</legend>
|
|
33
|
+
<p>
|
|
34
|
+
Some other fields
|
|
35
|
+
</p>
|
|
36
|
+
</fieldset>
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
exports[`Fieldset renders the UI snapshot correctly 3`] = `
|
|
40
|
+
<fieldset
|
|
41
|
+
className="css-0"
|
|
42
|
+
>
|
|
43
|
+
<legend>
|
|
44
|
+
Legend Text
|
|
45
|
+
</legend>
|
|
46
|
+
<p>
|
|
47
|
+
Some other fields
|
|
48
|
+
</p>
|
|
49
|
+
</fieldset>
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
exports[`Fieldset renders the UI snapshot correctly 4`] = `
|
|
53
|
+
<fieldset
|
|
54
|
+
className="css-0"
|
|
55
|
+
>
|
|
56
|
+
<legend>
|
|
57
|
+
Legend Text
|
|
58
|
+
<div
|
|
59
|
+
className="css-0"
|
|
60
|
+
>
|
|
61
|
+
Optional
|
|
62
|
+
</div>
|
|
63
|
+
</legend>
|
|
64
|
+
<p>
|
|
65
|
+
Some other fields
|
|
66
|
+
</p>
|
|
67
|
+
</fieldset>
|
|
68
|
+
`;
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
Story,
|
|
4
4
|
Canvas,
|
|
5
5
|
ArgsTable,
|
|
6
|
-
Preview,
|
|
7
6
|
Description,
|
|
8
7
|
} from "@storybook/addon-docs/blocks";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
@@ -13,15 +12,21 @@ import Form, { FormRow, FormField } from "./Form";
|
|
|
13
12
|
import { FormSpacing } from "./FormTypes";
|
|
14
13
|
import TextInput from "../TextInput/TextInput";
|
|
15
14
|
import Radio from "../Radio/Radio";
|
|
15
|
+
import RadioGroup from "../RadioGroup/RadioGroup";
|
|
16
16
|
import Checkbox from "../Checkbox/Checkbox";
|
|
17
|
+
import CheckboxGroup from "../CheckboxGroup/CheckboxGroup";
|
|
17
18
|
import Label from "../Label/Label";
|
|
18
19
|
import Button from "../Button/Button";
|
|
19
20
|
import Select from "../Select/Select";
|
|
20
21
|
import Heading from "../Heading/Heading";
|
|
21
22
|
import { HeadingLevels } from "../Heading/HeadingTypes";
|
|
22
23
|
import HorizontalRule from "../HorizontalRule/HorizontalRule";
|
|
24
|
+
import DatePicker from "../DatePicker/DatePicker";
|
|
25
|
+
import { DatePickerTypes } from "../DatePicker/DatePickerTypes";
|
|
23
26
|
import { action } from "@storybook/addon-actions";
|
|
24
27
|
|
|
28
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
29
|
+
|
|
25
30
|
<Meta
|
|
26
31
|
title={getCategory("Form")}
|
|
27
32
|
component={Form}
|
|
@@ -41,7 +46,7 @@ import { action } from "@storybook/addon-actions";
|
|
|
41
46
|
| Component Version | DS Version |
|
|
42
47
|
| ----------------- | ---------- |
|
|
43
48
|
| Added | `0.23.2` |
|
|
44
|
-
| Latest | `0.
|
|
49
|
+
| Latest | `0.25.1` |
|
|
45
50
|
|
|
46
51
|
<Description of={Form} />
|
|
47
52
|
|
|
@@ -51,7 +56,7 @@ The `Form` component renders a standard `<form>` element and should be used to h
|
|
|
51
56
|
|
|
52
57
|
`FormRow` should be used as a parent of multiple `FormField` components when you need to render multiple input components in a horizontal row.
|
|
53
58
|
|
|
54
|
-
<
|
|
59
|
+
<Canvas withToolbar>
|
|
55
60
|
<Story
|
|
56
61
|
name="Form"
|
|
57
62
|
args={{
|
|
@@ -70,18 +75,51 @@ The `Form` component renders a standard `<form>` element and should be used to h
|
|
|
70
75
|
>
|
|
71
76
|
{(args) => (
|
|
72
77
|
<Form {...args}>
|
|
78
|
+
<FormRow>
|
|
79
|
+
<FormField>
|
|
80
|
+
<TextInput
|
|
81
|
+
labelText="First Name"
|
|
82
|
+
helperText="Make sure to complete this field."
|
|
83
|
+
isRequired
|
|
84
|
+
/>
|
|
85
|
+
</FormField>
|
|
86
|
+
<FormField>
|
|
87
|
+
<TextInput
|
|
88
|
+
labelText="Last Name"
|
|
89
|
+
helperText="Make sure to complete this field."
|
|
90
|
+
isRequired
|
|
91
|
+
/>
|
|
92
|
+
</FormField>
|
|
93
|
+
<FormField>
|
|
94
|
+
<DatePicker
|
|
95
|
+
id="date-range"
|
|
96
|
+
dateType={DatePickerTypes.Full}
|
|
97
|
+
dateFormat="yyyy-MM-dd"
|
|
98
|
+
dateRange={true}
|
|
99
|
+
minDate="1/1/2021"
|
|
100
|
+
maxDate="1/1/2022"
|
|
101
|
+
labelText="Select the date range you want to visit NYPL"
|
|
102
|
+
nameFrom="visit-dates"
|
|
103
|
+
helperTextFrom="From this date."
|
|
104
|
+
helperTextTo="To this date."
|
|
105
|
+
helperText="Select a valid date range."
|
|
106
|
+
invalidText="Please select a valid date range."
|
|
107
|
+
showLabel={false}
|
|
108
|
+
/>
|
|
109
|
+
</FormField>
|
|
110
|
+
</FormRow>
|
|
73
111
|
<FormField>
|
|
74
112
|
<TextInput
|
|
75
113
|
labelText="Username"
|
|
76
114
|
helperText="Make sure to complete this field."
|
|
77
|
-
|
|
115
|
+
isRequired
|
|
78
116
|
/>
|
|
79
117
|
</FormField>
|
|
80
118
|
<FormField>
|
|
81
119
|
<TextInput
|
|
82
120
|
labelText="Password"
|
|
83
121
|
helperText="Make sure to complete this field."
|
|
84
|
-
|
|
122
|
+
isRequired
|
|
85
123
|
/>
|
|
86
124
|
</FormField>
|
|
87
125
|
<FormRow>
|
|
@@ -109,24 +147,24 @@ The `Form` component renders a standard `<form>` element and should be used to h
|
|
|
109
147
|
</FormRow>
|
|
110
148
|
<FormRow>
|
|
111
149
|
<FormField>
|
|
112
|
-
<
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
150
|
+
<CheckboxGroup
|
|
151
|
+
labelText="Checkbox Group"
|
|
152
|
+
name="cbg1"
|
|
153
|
+
optReqFlag={false}
|
|
154
|
+
>
|
|
155
|
+
<Checkbox labelText="Checkbox 1" showLabel />
|
|
156
|
+
<Checkbox labelText="Checkbox 2" showLabel />
|
|
157
|
+
<Checkbox labelText="Checkbox 3" showLabel />
|
|
158
|
+
<Checkbox labelText="Checkbox 4" showLabel />
|
|
159
|
+
</CheckboxGroup>
|
|
120
160
|
</FormField>
|
|
121
161
|
<FormField>
|
|
122
|
-
<
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
<br />
|
|
129
|
-
<Radio labelText="Radio 4" showLabel />
|
|
162
|
+
<RadioGroup labelText="Radio Group" name="rg1" optReqFlag={false}>
|
|
163
|
+
<Radio labelText="Radio 1" showLabel />
|
|
164
|
+
<Radio labelText="Radio 2" showLabel />
|
|
165
|
+
<Radio labelText="Radio 3" showLabel />
|
|
166
|
+
<Radio labelText="Radio 4" showLabel />
|
|
167
|
+
</RadioGroup>
|
|
130
168
|
</FormField>
|
|
131
169
|
<FormField>
|
|
132
170
|
<Select
|
|
@@ -137,6 +175,8 @@ The `Form` component renders a standard `<form>` element and should be used to h
|
|
|
137
175
|
<option>Option 1</option>
|
|
138
176
|
<option>Option 2</option>
|
|
139
177
|
<option>Option 3</option>
|
|
178
|
+
<option>Option 4</option>
|
|
179
|
+
<option>Option 5</option>
|
|
140
180
|
</Select>
|
|
141
181
|
</FormField>
|
|
142
182
|
</FormRow>
|
|
@@ -146,7 +186,7 @@ The `Form` component renders a standard `<form>` element and should be used to h
|
|
|
146
186
|
</Form>
|
|
147
187
|
)}
|
|
148
188
|
</Story>
|
|
149
|
-
</
|
|
189
|
+
</Canvas>
|
|
150
190
|
|
|
151
191
|
<ArgsTable story="Form" />
|
|
152
192
|
|
|
@@ -168,6 +208,7 @@ export const formRow = (size) => {
|
|
|
168
208
|
<option>Option 1</option>
|
|
169
209
|
<option>Option 2</option>
|
|
170
210
|
<option>Option 3</option>
|
|
211
|
+
<option>Option 4</option>
|
|
171
212
|
</Select>
|
|
172
213
|
</FormField>
|
|
173
214
|
<FormField>
|
|
@@ -179,6 +220,7 @@ export const formRow = (size) => {
|
|
|
179
220
|
<option>Option 1</option>
|
|
180
221
|
<option>Option 2</option>
|
|
181
222
|
<option>Option 3</option>
|
|
223
|
+
<option>Option 4</option>
|
|
182
224
|
</Select>
|
|
183
225
|
</FormField>
|
|
184
226
|
<FormField>
|
|
@@ -190,6 +232,7 @@ export const formRow = (size) => {
|
|
|
190
232
|
<option>Option 1</option>
|
|
191
233
|
<option>Option 2</option>
|
|
192
234
|
<option>Option 3</option>
|
|
235
|
+
<option>Option 4</option>
|
|
193
236
|
</Select>
|
|
194
237
|
</FormField>
|
|
195
238
|
</FormRow>
|
|
@@ -204,13 +247,13 @@ for (const formSpacing in FormSpacing) {
|
|
|
204
247
|
}
|
|
205
248
|
export const getForms = (list) => <ul style={{ listStyle: "none" }}>{list}</ul>;
|
|
206
249
|
|
|
207
|
-
By default, the `Form` component will handle the NYPL spacing around form input elements. The default spacing value is `large`, which corresponds to the CSS variable `--space-l` (2rem / 32px).
|
|
250
|
+
By default, the `Form` component will handle the NYPL spacing around form input elements. The default spacing value is `large`, which corresponds to the CSS variable `--nypl-space-l` (2rem / 32px).
|
|
208
251
|
|
|
209
252
|
**IMPORTANT:** The default spacing should not be overwritten without a very good reason.
|
|
210
253
|
|
|
211
254
|
Below are the spacing variants available with the `FormSpacing` enum.
|
|
212
255
|
|
|
213
|
-
<
|
|
256
|
+
<Canvas>
|
|
214
257
|
<Story
|
|
215
258
|
name="Spacing Variants"
|
|
216
259
|
args={{
|
|
@@ -219,7 +262,7 @@ Below are the spacing variants available with the `FormSpacing` enum.
|
|
|
219
262
|
>
|
|
220
263
|
{getForms(sizes)}
|
|
221
264
|
</Story>
|
|
222
|
-
</
|
|
265
|
+
</Canvas>
|
|
223
266
|
|
|
224
267
|
## Example Code
|
|
225
268
|
|
|
@@ -231,14 +274,14 @@ Below are the spacing variants available with the `FormSpacing` enum.
|
|
|
231
274
|
<TextInput
|
|
232
275
|
labelText="Username"
|
|
233
276
|
helperText="Make sure to complete this field."
|
|
234
|
-
|
|
277
|
+
isRequired
|
|
235
278
|
/>
|
|
236
279
|
</FormField>
|
|
237
280
|
<FormField>
|
|
238
281
|
<TextInput
|
|
239
282
|
labelText="Password"
|
|
240
283
|
helperText="Make sure to complete this field."
|
|
241
|
-
|
|
284
|
+
isRequired
|
|
242
285
|
/>
|
|
243
286
|
</FormField>
|
|
244
287
|
<FormRow>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { render } from "@testing-library/react";
|
|
2
|
+
import { render, screen } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
4
|
import renderer from "react-test-renderer";
|
|
5
5
|
|
|
6
6
|
import Form, { FormRow, FormField } from "./Form";
|
|
7
|
-
import { FormSpacing } from "./FormTypes";
|
|
7
|
+
// import { FormSpacing } from "./FormTypes";
|
|
8
8
|
import TextInput from "../TextInput/TextInput";
|
|
9
9
|
|
|
10
10
|
describe("Form Accessibility", () => {
|
|
@@ -32,40 +32,43 @@ describe("Form Snapshot", () => {
|
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
describe("Form", () => {
|
|
35
|
-
let container;
|
|
36
35
|
it("Renders a <form> element", () => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
expect(container.querySelector(".form")).toBeInTheDocument();
|
|
36
|
+
render(<Form />);
|
|
37
|
+
expect(screen.getByRole("form")).toBeInTheDocument();
|
|
41
38
|
});
|
|
42
39
|
|
|
43
|
-
it("Renders a <form> element with child
|
|
44
|
-
|
|
40
|
+
it("Renders a <form> element with child FormRow element", () => {
|
|
41
|
+
render(
|
|
45
42
|
<Form>
|
|
46
43
|
<FormRow />
|
|
47
44
|
</Form>
|
|
48
45
|
);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
expect(
|
|
52
|
-
expect(
|
|
46
|
+
const form = screen.getByRole("form");
|
|
47
|
+
const formRow = form.firstChild;
|
|
48
|
+
expect(form).toBeInTheDocument();
|
|
49
|
+
expect(formRow).toBeInTheDocument();
|
|
50
|
+
expect(formRow).toHaveStyle({
|
|
51
|
+
display: "grid",
|
|
52
|
+
});
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
it("Renders a <form> element with child
|
|
56
|
-
|
|
55
|
+
it("Renders a <form> element with child FormField element", () => {
|
|
56
|
+
render(
|
|
57
57
|
<Form>
|
|
58
58
|
<FormField />
|
|
59
59
|
</Form>
|
|
60
60
|
);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
expect(
|
|
64
|
-
expect(
|
|
61
|
+
const form = screen.getByRole("form");
|
|
62
|
+
const formField = form.firstChild;
|
|
63
|
+
expect(form).toBeInTheDocument();
|
|
64
|
+
expect(formField).toBeInTheDocument();
|
|
65
|
+
expect(formField).toHaveStyle({
|
|
66
|
+
display: "grid",
|
|
67
|
+
});
|
|
65
68
|
});
|
|
66
69
|
|
|
67
|
-
it("Renders a <form> element with
|
|
68
|
-
|
|
70
|
+
it("Renders a <form> element with FormRow, FormField and input elements properly nested", () => {
|
|
71
|
+
render(
|
|
69
72
|
<Form>
|
|
70
73
|
<FormRow>
|
|
71
74
|
<FormField>
|
|
@@ -74,33 +77,43 @@ describe("Form", () => {
|
|
|
74
77
|
</FormRow>
|
|
75
78
|
</Form>
|
|
76
79
|
);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
expect(
|
|
82
|
-
expect(
|
|
80
|
+
const form = screen.getByRole("form");
|
|
81
|
+
const formRow = form.firstChild;
|
|
82
|
+
const formField = formRow.firstChild;
|
|
83
|
+
const textInput = screen.getByRole("textbox");
|
|
84
|
+
expect(form).toBeInTheDocument();
|
|
85
|
+
expect(formRow).toBeInTheDocument();
|
|
86
|
+
expect(formRow).toHaveStyle({
|
|
87
|
+
display: "grid",
|
|
88
|
+
});
|
|
89
|
+
expect(formField).toBeInTheDocument();
|
|
90
|
+
expect(formField).toHaveStyle({
|
|
91
|
+
display: "grid",
|
|
92
|
+
});
|
|
93
|
+
expect(textInput).toBeInTheDocument();
|
|
83
94
|
});
|
|
84
95
|
|
|
85
96
|
it("Renders a <form> element with custom `action` and `method` attributes", () => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
expect(
|
|
90
|
-
expect(
|
|
91
|
-
"action",
|
|
92
|
-
"/end/point"
|
|
93
|
-
);
|
|
94
|
-
expect(container.querySelector(".form")).toHaveAttribute("method", "get");
|
|
97
|
+
render(<Form action="/end/point" method="get" />);
|
|
98
|
+
const form = screen.getByRole("form");
|
|
99
|
+
expect(form).toBeInTheDocument();
|
|
100
|
+
expect(form).toHaveAttribute("action", "/end/point");
|
|
101
|
+
expect(form).toHaveAttribute("method", "get");
|
|
95
102
|
});
|
|
96
103
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
// TO DO: There's somethign weird about checking for the "grid-gap" style.
|
|
105
|
+
// Other styles can be validated, but "grid-gap" is being ellusive.
|
|
106
|
+
// it("Renders a <form> element with spacing variant applied", () => {
|
|
107
|
+
// render(
|
|
108
|
+
// <Form spacing={FormSpacing.ExtraSmall}>
|
|
109
|
+
// <FormRow />
|
|
110
|
+
// </Form>
|
|
111
|
+
// );
|
|
112
|
+
// const form = screen.getByRole("form");
|
|
113
|
+
// const formRow = form.firstChild;
|
|
114
|
+
// expect(form).toBeInTheDocument();
|
|
115
|
+
// expect(formRow).toHaveStyle({
|
|
116
|
+
// "grid-gap": "var(--nypl-space-xs)",
|
|
117
|
+
// });
|
|
118
|
+
// });
|
|
106
119
|
});
|