@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
|
@@ -1,69 +1,184 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import
|
|
2
|
+
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
3
|
+
|
|
4
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
5
|
+
import Select from "../Select/Select";
|
|
6
|
+
import TextInput from "../TextInput/TextInput";
|
|
7
|
+
import { TextInputTypes, TextInputVariants } from "../TextInput/TextInputTypes";
|
|
8
|
+
import Button from "../Button/Button";
|
|
9
|
+
import { ButtonTypes } from "../Button/ButtonTypes";
|
|
10
|
+
import Icon from "../Icons/Icon";
|
|
11
|
+
import { IconAlign, IconNames, IconSizes } from "../Icons/IconTypes";
|
|
12
|
+
import HelperErrorText from "../HelperErrorText/HelperErrorText";
|
|
13
|
+
import { SelectTypes } from "../Select/SelectTypes";
|
|
14
|
+
|
|
15
|
+
// Internal interfaces that are used only for `SearchBar` props.
|
|
16
|
+
interface SelectProps {
|
|
17
|
+
labelText: string;
|
|
18
|
+
name: string;
|
|
19
|
+
optionsData: string[];
|
|
20
|
+
}
|
|
21
|
+
interface TextInputProps {
|
|
22
|
+
labelText: string;
|
|
23
|
+
name: string;
|
|
24
|
+
onChange?: (
|
|
25
|
+
event:
|
|
26
|
+
| React.ChangeEvent<HTMLInputElement>
|
|
27
|
+
| React.ChangeEvent<HTMLTextAreaElement>
|
|
28
|
+
) => void;
|
|
29
|
+
placeholder: string;
|
|
30
|
+
value?: string;
|
|
31
|
+
}
|
|
3
32
|
|
|
4
33
|
export interface SearchBarProps {
|
|
5
|
-
/**
|
|
6
|
-
* defines a hidden string that labels
|
|
7
|
-
* the SearchBar
|
|
8
|
-
*/
|
|
9
|
-
ariaLabel?: string;
|
|
10
|
-
/** Populates aria-labelledby on the form;
|
|
11
|
-
* defines a visible string that labels
|
|
12
|
-
* the SearchBar
|
|
13
|
-
*/
|
|
14
|
-
ariaLabelledBy?: string;
|
|
15
|
-
/** Additional attributes passed to the form */
|
|
16
|
-
attributes?: { [key: string]: any };
|
|
17
|
-
/** BlockName for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
|
|
18
|
-
blockName?: string;
|
|
19
|
-
/** ClassName that appears in addition to "search-bar" */
|
|
20
|
-
className?: string;
|
|
21
|
-
/** Adds 'method' property to the form */
|
|
22
|
-
method?: string;
|
|
23
|
-
/** Adds 'action' property to the form */
|
|
34
|
+
/** Adds 'action' property to the `form` element. */
|
|
24
35
|
action?: string;
|
|
36
|
+
/** The onClick callback function for the `Button` component. */
|
|
37
|
+
buttonOnClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
|
|
38
|
+
/** A class name for the `form` element. */
|
|
39
|
+
className?: string;
|
|
40
|
+
/** The text to display below the form in a `HelperErrorText` component. */
|
|
41
|
+
helperErrorText?: string;
|
|
25
42
|
/** ID that other components can cross reference for accessibility purposes */
|
|
26
43
|
id?: string;
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
44
|
+
/** Optional string to populate the `HelperErrorText` for the error state
|
|
45
|
+
* when `isInvalid` is true. */
|
|
46
|
+
invalidText?: string;
|
|
47
|
+
/** Sets children form components in the disabled state. */
|
|
48
|
+
isDisabled?: boolean;
|
|
49
|
+
/** Sets children form components in the error state. */
|
|
50
|
+
isInvalid?: boolean;
|
|
51
|
+
/** Sets children form components in the required state. */
|
|
52
|
+
isRequired?: boolean;
|
|
53
|
+
/** Populates the `aria-label` attribute on the form element. */
|
|
54
|
+
labelText: string;
|
|
55
|
+
/** Adds 'method' property to the `form` element. */
|
|
56
|
+
method?: string;
|
|
57
|
+
/** Handler function when the form is submitted. */
|
|
30
58
|
onSubmit: (event: React.FormEvent) => void;
|
|
59
|
+
/** Required props to render a `Select` element. */
|
|
60
|
+
selectProps?: SelectProps | undefined;
|
|
61
|
+
/** Custom input element to render instead of a `TextInput` element. */
|
|
62
|
+
textInputElement?: JSX.Element;
|
|
63
|
+
/** Required props to render a `TextInput` element. */
|
|
64
|
+
textInputProps?: TextInputProps | undefined;
|
|
31
65
|
}
|
|
32
66
|
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
) {
|
|
67
|
+
/**
|
|
68
|
+
* Renders a wrapper `form` element to be used with `Select` (optional),
|
|
69
|
+
* `Input`, and `Button` components together.
|
|
70
|
+
*/
|
|
71
|
+
export default function SearchBar(props: SearchBarProps) {
|
|
38
72
|
const {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
blockName,
|
|
42
|
-
children,
|
|
73
|
+
action,
|
|
74
|
+
buttonOnClick = null,
|
|
43
75
|
className,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
76
|
+
helperErrorText,
|
|
77
|
+
id = generateUUID(),
|
|
78
|
+
invalidText,
|
|
79
|
+
isDisabled = false,
|
|
80
|
+
isInvalid = false,
|
|
81
|
+
isRequired = false,
|
|
82
|
+
labelText,
|
|
48
83
|
method,
|
|
49
|
-
|
|
84
|
+
onSubmit,
|
|
85
|
+
selectProps,
|
|
86
|
+
textInputElement,
|
|
87
|
+
textInputProps,
|
|
50
88
|
} = props;
|
|
51
|
-
|
|
52
|
-
const
|
|
89
|
+
const styles = useMultiStyleConfig("SearchBar", { hasSelect: selectProps });
|
|
90
|
+
const stateProps = {
|
|
91
|
+
helperText: "",
|
|
92
|
+
isDisabled,
|
|
93
|
+
isInvalid,
|
|
94
|
+
isRequired,
|
|
95
|
+
showHelperInvalidText: false,
|
|
96
|
+
showLabel: false,
|
|
97
|
+
};
|
|
98
|
+
const helperErrorTextID = generateUUID();
|
|
99
|
+
const ariaDescribedby = helperErrorTextID;
|
|
100
|
+
const footnote = isInvalid ? invalidText : helperErrorText;
|
|
101
|
+
const finalAriaLabel = footnote ? `${labelText} - ${footnote}` : labelText;
|
|
102
|
+
// Render the `Select` component.
|
|
103
|
+
const selectElem = selectProps && (
|
|
104
|
+
<Select
|
|
105
|
+
id={generateUUID()}
|
|
106
|
+
name={selectProps?.name}
|
|
107
|
+
labelText={selectProps?.labelText}
|
|
108
|
+
type={SelectTypes.SearchBar}
|
|
109
|
+
{...stateProps}
|
|
110
|
+
>
|
|
111
|
+
{selectProps?.optionsData.map((option) => (
|
|
112
|
+
<option key={option} value={option}>
|
|
113
|
+
{option}
|
|
114
|
+
</option>
|
|
115
|
+
))}
|
|
116
|
+
</Select>
|
|
117
|
+
);
|
|
118
|
+
// Render the `TextInput` component.
|
|
119
|
+
const textInputNative = textInputProps && (
|
|
120
|
+
<TextInput
|
|
121
|
+
id={generateUUID()}
|
|
122
|
+
labelText={textInputProps?.labelText}
|
|
123
|
+
placeholder={textInputProps?.placeholder}
|
|
124
|
+
onChange={textInputProps?.onChange}
|
|
125
|
+
name={textInputProps?.name}
|
|
126
|
+
type={TextInputTypes.text}
|
|
127
|
+
variantType={
|
|
128
|
+
selectElem
|
|
129
|
+
? TextInputVariants.SearchBarSelect
|
|
130
|
+
: TextInputVariants.SearchBar
|
|
131
|
+
}
|
|
132
|
+
value={textInputProps?.value}
|
|
133
|
+
{...stateProps}
|
|
134
|
+
/>
|
|
135
|
+
);
|
|
136
|
+
// Render the `Button` component.
|
|
137
|
+
const buttonElem = (
|
|
138
|
+
<Button
|
|
139
|
+
id={generateUUID()}
|
|
140
|
+
buttonType={ButtonTypes.SearchBar}
|
|
141
|
+
type="submit"
|
|
142
|
+
onClick={buttonOnClick}
|
|
143
|
+
isDisabled={isDisabled}
|
|
144
|
+
>
|
|
145
|
+
<Icon
|
|
146
|
+
name={IconNames.Search}
|
|
147
|
+
size={IconSizes.Small}
|
|
148
|
+
align={IconAlign.Left}
|
|
149
|
+
/>
|
|
150
|
+
Search
|
|
151
|
+
</Button>
|
|
152
|
+
);
|
|
153
|
+
// Render the `HelperErrorText` component.
|
|
154
|
+
const helperErrorTextElem = footnote && (
|
|
155
|
+
<HelperErrorText id={helperErrorTextID} isInvalid={isInvalid}>
|
|
156
|
+
{footnote}
|
|
157
|
+
</HelperErrorText>
|
|
158
|
+
);
|
|
159
|
+
// If a custom input element was passed, use that instead of the
|
|
160
|
+
// `TextInput` component.
|
|
161
|
+
const textInputElem = textInputElement || textInputNative;
|
|
53
162
|
|
|
54
163
|
return (
|
|
55
|
-
<
|
|
56
|
-
|
|
164
|
+
<Box
|
|
165
|
+
as="form"
|
|
57
166
|
id={id}
|
|
167
|
+
className={className}
|
|
58
168
|
role="search"
|
|
59
|
-
aria-label={
|
|
60
|
-
aria-
|
|
169
|
+
aria-label={finalAriaLabel}
|
|
170
|
+
aria-describedby={ariaDescribedby}
|
|
61
171
|
onSubmit={onSubmit}
|
|
62
172
|
method={method}
|
|
63
173
|
action={action}
|
|
64
|
-
{
|
|
174
|
+
__css={styles}
|
|
65
175
|
>
|
|
66
|
-
{
|
|
67
|
-
|
|
176
|
+
<Box __css={styles.topRow}>
|
|
177
|
+
{selectElem}
|
|
178
|
+
{textInputElem}
|
|
179
|
+
{buttonElem}
|
|
180
|
+
</Box>
|
|
181
|
+
{helperErrorTextElem}
|
|
182
|
+
</Box>
|
|
68
183
|
);
|
|
69
184
|
}
|
|
@@ -3,16 +3,14 @@ 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";
|
|
10
9
|
|
|
10
|
+
import { VStack } from "@chakra-ui/react";
|
|
11
11
|
import Select from "./Select";
|
|
12
|
-
import Label from "../Label/Label";
|
|
13
|
-
import HelperErrorText from "../HelperErrorText/HelperErrorText";
|
|
14
|
-
import { action } from "@storybook/addon-actions";
|
|
15
12
|
import { getCategory } from "../../utils/componentCategories";
|
|
13
|
+
import DSProvider from "../../theme/provider";
|
|
16
14
|
|
|
17
15
|
<Meta
|
|
18
16
|
title={getCategory("Select")}
|
|
@@ -27,10 +25,11 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
27
25
|
jest: ["Select.test.tsx"],
|
|
28
26
|
}}
|
|
29
27
|
argTypes={{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
children: { table: { disable: true } },
|
|
29
|
+
id: { table: { disable: true } },
|
|
30
|
+
name: { table: { disable: true } },
|
|
31
|
+
onChange: { table: { disable: true } },
|
|
32
|
+
value: { table: { disable: true } },
|
|
34
33
|
}}
|
|
35
34
|
/>
|
|
36
35
|
|
|
@@ -39,198 +38,217 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
39
38
|
| Component Version | DS Version |
|
|
40
39
|
| ----------------- | ---------- |
|
|
41
40
|
| Added | `0.7.0` |
|
|
42
|
-
| Latest | `0.
|
|
41
|
+
| Latest | `0.25.1` |
|
|
43
42
|
|
|
44
43
|
<Description of={Select} />
|
|
45
44
|
|
|
46
|
-
The `Select` component renders a `select` element along with its `option`
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
The `Select` component renders a `select` element along with its `option`
|
|
46
|
+
children. 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.
|
|
50
|
+
|
|
51
|
+
The `Select` component renders all the necessary wrapping and associated text
|
|
52
|
+
elements, but the select options _need_ to be child `<option>` HTML elements.
|
|
53
|
+
|
|
54
|
+
```jsx
|
|
55
|
+
<Select labelText="What is your favorite color?" name="color">
|
|
56
|
+
<option value="red">Red</option>
|
|
57
|
+
<option value="green">Green</option>
|
|
58
|
+
<option value="blue">Blue</option>
|
|
59
|
+
<option value="black">Black</option>
|
|
60
|
+
<option value="white">White</option>
|
|
61
|
+
</Select>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
<Canvas withToolbar>
|
|
49
65
|
<Story
|
|
50
66
|
name="Select"
|
|
51
67
|
args={{
|
|
52
|
-
|
|
68
|
+
helperText: "This is the helper text.",
|
|
69
|
+
invalidText: "This is the error text :(",
|
|
70
|
+
isDisabled: false,
|
|
71
|
+
isInvalid: false,
|
|
72
|
+
isRequired: false,
|
|
53
73
|
labelText: "What is your favorite color?",
|
|
74
|
+
name: "color",
|
|
54
75
|
showLabel: true,
|
|
55
76
|
showOptReqLabel: true,
|
|
56
|
-
helperText: "Choose wisely.",
|
|
57
|
-
invalidText: "Waaaaaaaa!",
|
|
58
|
-
errored: false,
|
|
59
|
-
required: true,
|
|
60
|
-
disabled: false,
|
|
61
|
-
selectedOption: "Green",
|
|
62
|
-
attributes: {
|
|
63
|
-
onFocus: action("focus"),
|
|
64
|
-
onBlur: action("blur"),
|
|
65
|
-
onChange: action("onChange"),
|
|
66
|
-
},
|
|
67
|
-
}}
|
|
68
|
-
argTypes={{
|
|
69
|
-
ariaLabel: { table: { disable: true } },
|
|
70
|
-
helperTextId: { table: { disable: true } },
|
|
71
|
-
isRequired: { table: { disable: true } },
|
|
72
|
-
labelId: { table: { disable: true } },
|
|
73
77
|
}}
|
|
74
78
|
>
|
|
75
79
|
{(args) => (
|
|
76
80
|
<Select {...args}>
|
|
77
|
-
<option
|
|
78
|
-
<option
|
|
79
|
-
<option
|
|
80
|
-
<option
|
|
81
|
-
<option
|
|
82
|
-
<option aria-selected={false}>White</option>
|
|
81
|
+
<option value="red">Red</option>
|
|
82
|
+
<option value="green">Green</option>
|
|
83
|
+
<option value="blue">Blue</option>
|
|
84
|
+
<option value="black">Black</option>
|
|
85
|
+
<option value="white">White</option>
|
|
83
86
|
</Select>
|
|
84
87
|
)}
|
|
85
88
|
</Story>
|
|
86
|
-
</
|
|
89
|
+
</Canvas>
|
|
87
90
|
|
|
88
91
|
<ArgsTable story="Select" />
|
|
89
92
|
|
|
90
|
-
### Deprecated Props
|
|
91
|
-
|
|
92
|
-
The following props have been deprecated: `ariaLabel`, `helperTextId`, `isRequired` and `labelId`. They are still available to use, but they will be removed in a future release.
|
|
93
|
-
|
|
94
93
|
## Labelling Variations
|
|
95
94
|
|
|
96
|
-
A Select can be rendered with or without visible
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
args={{
|
|
102
|
-
labelText: "What is your favorite color?",
|
|
103
|
-
showLabel: false,
|
|
104
|
-
showOptReqLabel: false,
|
|
105
|
-
}}
|
|
106
|
-
>
|
|
107
|
-
{(args) => (
|
|
108
|
-
<>
|
|
109
|
-
<Select {...args}>
|
|
110
|
-
<option aria-selected={true}></option>
|
|
111
|
-
<option aria-selected={false}>Red</option>
|
|
112
|
-
<option aria-selected={false}>Green</option>
|
|
113
|
-
<option aria-selected={false}>Blue</option>
|
|
114
|
-
<option aria-selected={false}>Black</option>
|
|
115
|
-
<option aria-selected={false}>White</option>
|
|
116
|
-
</Select>
|
|
117
|
-
</>
|
|
118
|
-
)}
|
|
119
|
-
</Story>
|
|
120
|
-
</Preview>
|
|
95
|
+
A Select can be rendered with or without a visible label. When `showLabel` is
|
|
96
|
+
set to `false`, an `aria-label` attribute is added to the select input to
|
|
97
|
+
maintain accessibility. If the component needs to be required, the
|
|
98
|
+
`showOptReqLabel` prop can be used to show or hide the "Required"/"Optional"
|
|
99
|
+
text within the `label` element.
|
|
121
100
|
|
|
122
101
|
<Canvas>
|
|
123
|
-
<
|
|
124
|
-
<
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
102
|
+
<Story name="Labelling Variations">
|
|
103
|
+
<VStack align="stretch" spacing={8}>
|
|
104
|
+
<Select
|
|
105
|
+
labelText="What is your favorite color?"
|
|
106
|
+
helperText="Display the label"
|
|
107
|
+
name="color"
|
|
108
|
+
>
|
|
109
|
+
<option value="red">Red</option>
|
|
110
|
+
<option value="green">Green</option>
|
|
111
|
+
<option value="blue">Blue</option>
|
|
112
|
+
<option value="black">Black</option>
|
|
113
|
+
<option value="white">White</option>
|
|
114
|
+
</Select>
|
|
115
|
+
<Select
|
|
116
|
+
labelText="What is your favorite color?"
|
|
117
|
+
helperText="Do not display the label"
|
|
118
|
+
name="color"
|
|
119
|
+
showLabel={false}
|
|
120
|
+
>
|
|
121
|
+
<option value="red">Red</option>
|
|
122
|
+
<option value="green">Green</option>
|
|
123
|
+
<option value="blue">Blue</option>
|
|
124
|
+
<option value="black">Black</option>
|
|
125
|
+
<option value="white">White</option>
|
|
126
|
+
</Select>
|
|
127
|
+
<Select
|
|
128
|
+
labelText="What is your favorite color?"
|
|
129
|
+
helperText="Display the Required/Optional text"
|
|
130
|
+
name="color"
|
|
131
|
+
isRequired
|
|
132
|
+
>
|
|
133
|
+
<option value="red">Red</option>
|
|
134
|
+
<option value="green">Green</option>
|
|
135
|
+
<option value="blue">Blue</option>
|
|
136
|
+
<option value="black">Black</option>
|
|
137
|
+
<option value="white">White</option>
|
|
138
|
+
</Select>
|
|
139
|
+
<Select
|
|
140
|
+
labelText="What is your favorite color?"
|
|
141
|
+
helperText="Do not display the Required/Optional text"
|
|
142
|
+
name="color"
|
|
143
|
+
showOptReqLabel={false}
|
|
144
|
+
isRequired
|
|
145
|
+
>
|
|
146
|
+
<option value="red">Red</option>
|
|
147
|
+
<option value="green">Green</option>
|
|
148
|
+
<option value="blue">Blue</option>
|
|
149
|
+
<option value="black">Black</option>
|
|
150
|
+
<option value="white">White</option>
|
|
151
|
+
</Select>
|
|
152
|
+
</VStack>
|
|
153
|
+
</Story>
|
|
131
154
|
</Canvas>
|
|
132
155
|
|
|
133
|
-
|
|
134
|
-
<Select
|
|
135
|
-
labelText="What is your favorite color?"
|
|
136
|
-
showLabel={false}
|
|
137
|
-
helperText="Choose wisely!"
|
|
138
|
-
>
|
|
139
|
-
<option aria-selected={true}></option>
|
|
140
|
-
<option aria-selected={false}>Red</option>
|
|
141
|
-
<option aria-selected={false}>Green</option>
|
|
142
|
-
<option aria-selected={false}>Blue</option>
|
|
143
|
-
<option aria-selected={false}>Black</option>
|
|
144
|
-
<option aria-selected={false}>White</option>
|
|
145
|
-
</Select>
|
|
146
|
-
</Canvas>
|
|
156
|
+
## Errored
|
|
147
157
|
|
|
148
158
|
<Canvas>
|
|
149
|
-
<
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
<DSProvider>
|
|
160
|
+
<Select
|
|
161
|
+
labelText="What is your favorite color?"
|
|
162
|
+
helperText="This is the helper text."
|
|
163
|
+
invalidText="This is the error text :("
|
|
164
|
+
name="color"
|
|
165
|
+
isInvalid
|
|
166
|
+
>
|
|
167
|
+
<option value="red">Red</option>
|
|
168
|
+
<option value="green">Green</option>
|
|
169
|
+
<option value="blue">Blue</option>
|
|
170
|
+
<option value="black">Black</option>
|
|
171
|
+
<option value="white">White</option>
|
|
172
|
+
</Select>
|
|
173
|
+
</DSProvider>
|
|
161
174
|
</Canvas>
|
|
162
175
|
|
|
163
|
-
|
|
164
|
-
<Select
|
|
165
|
-
labelText="What is your favorite color?"
|
|
166
|
-
showLabel={false}
|
|
167
|
-
helperText="Choose wisely!"
|
|
168
|
-
invalidText="Waaaaaa!"
|
|
169
|
-
errored={true}
|
|
170
|
-
>
|
|
171
|
-
<option aria-selected={true}></option>
|
|
172
|
-
<option aria-selected={false}>Red</option>
|
|
173
|
-
<option aria-selected={false}>Green</option>
|
|
174
|
-
<option aria-selected={false}>Blue</option>
|
|
175
|
-
<option aria-selected={false}>Black</option>
|
|
176
|
-
<option aria-selected={false}>White</option>
|
|
177
|
-
</Select>
|
|
178
|
-
</Canvas>
|
|
176
|
+
## Disabled
|
|
179
177
|
|
|
180
178
|
<Canvas>
|
|
181
|
-
<
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
179
|
+
<DSProvider>
|
|
180
|
+
<Select
|
|
181
|
+
labelText="What is your favorite color?"
|
|
182
|
+
helperText="This is the helper text."
|
|
183
|
+
invalidText="This is the error text :("
|
|
184
|
+
name="color"
|
|
185
|
+
isDisabled
|
|
186
|
+
>
|
|
187
|
+
<option value="red">Red</option>
|
|
188
|
+
<option value="green">Green</option>
|
|
189
|
+
<option value="blue">Blue</option>
|
|
190
|
+
<option value="black">Black</option>
|
|
191
|
+
<option value="white">White</option>
|
|
192
|
+
</Select>
|
|
193
|
+
</DSProvider>
|
|
195
194
|
</Canvas>
|
|
196
195
|
|
|
197
|
-
##
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
196
|
+
## Getting Select Data Value
|
|
197
|
+
|
|
198
|
+
### Controlled Component using `value` and `onChange` props
|
|
199
|
+
|
|
200
|
+
If your application uses controlled React components and the DS `Select`
|
|
201
|
+
component must be controlled, you can control and extract the data through the
|
|
202
|
+
`value` and `onChange` props. This will be called every time a new `option`
|
|
203
|
+
value is selected.
|
|
204
|
+
|
|
205
|
+
```jsx
|
|
206
|
+
const value = "red";
|
|
207
|
+
const onChange = (e) => {
|
|
208
|
+
// This will return the value selected through the event object.
|
|
209
|
+
console.log(e.target.value);
|
|
210
|
+
};
|
|
211
|
+
// ...
|
|
212
|
+
|
|
213
|
+
<Select
|
|
214
|
+
labelText="What is your favorite color?"
|
|
215
|
+
helperText="This is the helper text."
|
|
216
|
+
name="color"
|
|
217
|
+
value={value}
|
|
218
|
+
onChange={onChange}
|
|
219
|
+
>
|
|
220
|
+
<option value="red">Red</option>
|
|
221
|
+
<option value="green">Green</option>
|
|
222
|
+
<option value="blue">Blue</option>
|
|
223
|
+
<option value="black">Black</option>
|
|
224
|
+
<option value="white">White</option>
|
|
225
|
+
</Select>;
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Uncontrolled Component using `ref`s
|
|
229
|
+
|
|
230
|
+
If your application uses uncontrolled components, you can pass a React `ref`
|
|
231
|
+
prop to the DS Select component to get the selected value from the DOM.
|
|
232
|
+
|
|
233
|
+
```jsx
|
|
234
|
+
const selectRef = React.createRef<HTMLSelectElement>();
|
|
235
|
+
// ...
|
|
236
|
+
<Select
|
|
237
|
+
labelText="What is your favorite color?"
|
|
238
|
+
helperText="This is the helper text."
|
|
239
|
+
name="color"
|
|
240
|
+
>
|
|
241
|
+
<option value="red">Red</option>
|
|
242
|
+
<option value="green">Green</option>
|
|
243
|
+
<option value="blue">Blue</option>
|
|
244
|
+
<option value="black">Black</option>
|
|
245
|
+
<option value="white">White</option>
|
|
246
|
+
</Select>
|
|
247
|
+
|
|
248
|
+
// ...
|
|
249
|
+
// Get the value through:
|
|
250
|
+
const onSubmit = () => {
|
|
251
|
+
// ...
|
|
252
|
+
const selectValue = selectRef.current.value;
|
|
253
|
+
};
|
|
254
|
+
```
|