@nypl/design-system-react-components 1.0.2 → 1.0.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 +53 -0
- package/README.md +171 -135
- package/dist/__tests__/mediaMatchMock.d.ts +79 -0
- package/dist/components/Card/Card.d.ts +8 -6
- package/dist/components/Heading/Heading.d.ts +6 -0
- package/dist/components/Icons/Icon.d.ts +1 -1
- package/dist/components/Icons/IconSvgs.d.ts +10 -0
- package/dist/components/Logo/Logo.d.ts +1 -1
- package/dist/components/Logo/LogoSvgs.d.ts +3 -0
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/Table/Table.d.ts +3 -2
- package/dist/components/Text/Text.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1700 -878
- 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 +1672 -881
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
- package/dist/hooks/__tests__/useNYPLBreakpoints.test.d.ts +1 -0
- package/dist/hooks/useNYPLBreakpoints.d.ts +13 -0
- package/dist/index.d.ts +2 -1
- package/dist/resources.scss +0 -4
- package/dist/styles.css +3 -2
- package/dist/theme/components/button.d.ts +7 -2
- package/dist/theme/components/checkbox.d.ts +1 -0
- package/dist/theme/components/customTable.d.ts +522 -34
- package/dist/theme/components/datePicker.d.ts +1 -0
- package/dist/theme/components/global.d.ts +5 -2
- package/dist/theme/components/heading.d.ts +5 -1
- package/dist/theme/components/image.d.ts +18 -0
- package/dist/theme/components/radio.d.ts +9 -0
- package/dist/theme/components/searchBar.d.ts +6 -0
- package/dist/theme/components/select.d.ts +4 -5
- package/dist/theme/components/structuredContent.d.ts +117 -17
- package/dist/theme/components/template.d.ts +4 -1
- package/dist/theme/components/text.d.ts +5 -1
- package/dist/theme/components/textInput.d.ts +4 -0
- package/dist/theme/components/toggle.d.ts +1 -0
- package/dist/theme/provider.d.ts +2 -1
- package/package.json +16 -16
- package/src/__tests__/fileMock.ts +0 -6
- package/src/__tests__/setup.ts +0 -27
- package/src/__tests__/utils/utils.test.ts +0 -18
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
- package/src/components/Accordion/Accordion.stories.mdx +0 -333
- package/src/components/Accordion/Accordion.test.tsx +0 -237
- package/src/components/Accordion/Accordion.tsx +0 -137
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
- package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
- package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
- package/src/components/Autosuggest/_Autosuggest.scss +0 -51
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
- package/src/components/Button/Button.stories.mdx +0 -320
- package/src/components/Button/Button.test.tsx +0 -184
- package/src/components/Button/Button.tsx +0 -95
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -178
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -100
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
- package/src/components/Card/Card.stories.mdx +0 -1041
- package/src/components/Card/Card.test.tsx +0 -388
- package/src/components/Card/Card.tsx +0 -346
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
- package/src/components/Chakra/Box.stories.mdx +0 -52
- package/src/components/Chakra/Center.stories.mdx +0 -96
- package/src/components/Chakra/Flex.stories.mdx +0 -111
- package/src/components/Chakra/Grid.stories.mdx +0 -89
- package/src/components/Chakra/Stack.stories.mdx +0 -109
- package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
- package/src/components/Checkbox/Checkbox.test.tsx +0 -350
- package/src/components/Checkbox/Checkbox.tsx +0 -152
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -661
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1842
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -76
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -103
- package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
- package/src/components/DatePicker/DatePicker.test.tsx +0 -940
- package/src/components/DatePicker/DatePicker.tsx +0 -450
- package/src/components/DatePicker/_DatePicker.scss +0 -100
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -908
- package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
- package/src/components/Fieldset/Fieldset.test.tsx +0 -155
- package/src/components/Fieldset/Fieldset.tsx +0 -55
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
- package/src/components/Form/Form.stories.mdx +0 -426
- package/src/components/Form/Form.test.tsx +0 -234
- package/src/components/Form/Form.tsx +0 -124
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
- package/src/components/Grid/SimpleGrid.stories.mdx +0 -336
- package/src/components/Grid/SimpleGrid.test.tsx +0 -79
- package/src/components/Grid/SimpleGrid.tsx +0 -49
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
- package/src/components/Heading/Heading.stories.mdx +0 -187
- package/src/components/Heading/Heading.test.tsx +0 -171
- package/src/components/Heading/Heading.tsx +0 -104
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
- package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
- package/src/components/Hero/Hero.stories.mdx +0 -378
- package/src/components/Hero/Hero.test.tsx +0 -611
- package/src/components/Hero/Hero.tsx +0 -203
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
- package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
- package/src/components/Icons/Icon.stories.mdx +0 -413
- package/src/components/Icons/Icon.test.tsx +0 -120
- package/src/components/Icons/Icon.tsx +0 -187
- package/src/components/Icons/IconSvgs.tsx +0 -64
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
- package/src/components/Image/Image.stories.mdx +0 -332
- package/src/components/Image/Image.test.tsx +0 -155
- package/src/components/Image/Image.tsx +0 -171
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
- package/src/components/Label/Label.stories.mdx +0 -100
- package/src/components/Label/Label.test.tsx +0 -116
- package/src/components/Label/Label.tsx +0 -55
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
- package/src/components/Link/Link.stories.mdx +0 -249
- package/src/components/Link/Link.test.tsx +0 -224
- package/src/components/Link/Link.tsx +0 -178
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
- package/src/components/List/List.stories.mdx +0 -393
- package/src/components/List/List.test.tsx +0 -265
- package/src/components/List/List.tsx +0 -156
- package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
- package/src/components/Logo/Logo.stories.mdx +0 -295
- package/src/components/Logo/Logo.test.tsx +0 -116
- package/src/components/Logo/Logo.tsx +0 -151
- package/src/components/Logo/LogoSvgs.tsx +0 -90
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
- package/src/components/Modal/Modal.stories.mdx +0 -294
- package/src/components/Modal/Modal.test.tsx +0 -157
- package/src/components/Modal/Modal.tsx +0 -154
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
- package/src/components/Notification/Notification.stories.mdx +0 -358
- package/src/components/Notification/Notification.test.tsx +0 -279
- package/src/components/Notification/Notification.tsx +0 -224
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
- package/src/components/Pagination/Pagination.stories.mdx +0 -184
- package/src/components/Pagination/Pagination.test.tsx +0 -419
- package/src/components/Pagination/Pagination.tsx +0 -269
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
- package/src/components/Placeholder/Placeholder.tsx +0 -19
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
- package/src/components/Radio/Radio.stories.mdx +0 -216
- package/src/components/Radio/Radio.test.tsx +0 -247
- package/src/components/Radio/Radio.tsx +0 -119
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -451
- package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -479
- package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
- package/src/components/RadioGroup/RadioGroup.tsx +0 -171
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1550
- package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
- package/src/components/SearchBar/SearchBar.test.tsx +0 -435
- package/src/components/SearchBar/SearchBar.tsx +0 -210
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1049
- package/src/components/Select/Select.stories.mdx +0 -439
- package/src/components/Select/Select.test.tsx +0 -358
- package/src/components/Select/Select.tsx +0 -183
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -895
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
- package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
- package/src/components/Slider/Slider.stories.mdx +0 -628
- package/src/components/Slider/Slider.test.tsx +0 -736
- package/src/components/Slider/Slider.tsx +0 -322
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2186
- package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
- package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
- package/src/components/StatusBadge/StatusBadge.tsx +0 -35
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
- package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
- package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
- package/src/components/StructuredContent/StructuredContent.tsx +0 -139
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
- package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
- package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
- package/src/components/StyleGuide/ColorCard.tsx +0 -43
- package/src/components/StyleGuide/Colors.stories.mdx +0 -201
- package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
- package/src/components/StyleGuide/Forms.stories.mdx +0 -94
- package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
- package/src/components/StyleGuide/Typography.stories.mdx +0 -419
- package/src/components/Table/Table.stories.mdx +0 -272
- package/src/components/Table/Table.test.tsx +0 -241
- package/src/components/Table/Table.tsx +0 -152
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
- package/src/components/Tabs/Tabs.stories.mdx +0 -338
- package/src/components/Tabs/Tabs.test.tsx +0 -298
- package/src/components/Tabs/Tabs.tsx +0 -264
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
- package/src/components/Template/Template.stories.mdx +0 -695
- package/src/components/Template/Template.test.tsx +0 -309
- package/src/components/Template/Template.tsx +0 -326
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
- package/src/components/Text/Text.stories.mdx +0 -103
- package/src/components/Text/Text.test.tsx +0 -63
- package/src/components/Text/Text.tsx +0 -50
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
- package/src/components/TextInput/TextInput.stories.mdx +0 -268
- package/src/components/TextInput/TextInput.test.tsx +0 -451
- package/src/components/TextInput/TextInput.tsx +0 -240
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -274
- package/src/components/Toggle/Toggle.stories.mdx +0 -237
- package/src/components/Toggle/Toggle.test.tsx +0 -170
- package/src/components/Toggle/Toggle.tsx +0 -128
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -470
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -212
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
- package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -192
- package/src/docs/Chakra.stories.mdx +0 -563
- package/src/docs/Welcome.stories.mdx +0 -148
- package/src/helpers/types.ts +0 -1
- package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
- package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
- package/src/hooks/useCarouselStyles.stories.mdx +0 -30
- package/src/hooks/useCarouselStyles.ts +0 -35
- package/src/hooks/useNYPLTheme.stories.mdx +0 -98
- package/src/hooks/useNYPLTheme.ts +0 -91
- package/src/hooks/useWindowSize.stories.mdx +0 -23
- package/src/hooks/useWindowSize.ts +0 -40
- package/src/index.ts +0 -136
- package/src/resources.scss +0 -6
- package/src/styles/base/_01-breakpoints.scss +0 -27
- package/src/styles/base/_02-mixins.scss +0 -103
- package/src/styles/base/_place-holder.scss +0 -33
- package/src/styles/space/_space-inline.scss +0 -79
- package/src/styles/space/_space-inset.scss +0 -57
- package/src/styles/space/_space-stack.scss +0 -116
- package/src/styles.scss +0 -23
- package/src/theme/components/accordion.ts +0 -25
- package/src/theme/components/breadcrumb.ts +0 -94
- package/src/theme/components/button.ts +0 -133
- package/src/theme/components/buttonGroup.ts +0 -10
- package/src/theme/components/card.ts +0 -237
- package/src/theme/components/checkbox.ts +0 -110
- package/src/theme/components/checkboxGroup.ts +0 -10
- package/src/theme/components/componentWrapper.ts +0 -14
- package/src/theme/components/customTable.ts +0 -77
- package/src/theme/components/datePicker.ts +0 -17
- package/src/theme/components/fieldset.ts +0 -23
- package/src/theme/components/global.ts +0 -91
- package/src/theme/components/globalMixins.ts +0 -24
- package/src/theme/components/heading.ts +0 -79
- package/src/theme/components/helperErrorText.ts +0 -14
- package/src/theme/components/hero.ts +0 -238
- package/src/theme/components/horizontalRule.ts +0 -17
- package/src/theme/components/icon.ts +0 -88
- package/src/theme/components/image.ts +0 -136
- package/src/theme/components/label.ts +0 -15
- package/src/theme/components/link.ts +0 -63
- package/src/theme/components/list.ts +0 -88
- package/src/theme/components/logo.ts +0 -58
- package/src/theme/components/notification.ts +0 -132
- package/src/theme/components/pagination.ts +0 -17
- package/src/theme/components/progressIndicator.ts +0 -67
- package/src/theme/components/radio.ts +0 -103
- package/src/theme/components/radioGroup.ts +0 -10
- package/src/theme/components/searchBar.ts +0 -19
- package/src/theme/components/select.ts +0 -72
- package/src/theme/components/skeletonLoader.ts +0 -113
- package/src/theme/components/skipNavigation.ts +0 -29
- package/src/theme/components/slider.ts +0 -95
- package/src/theme/components/statusBadge.ts +0 -26
- package/src/theme/components/structuredContent.ts +0 -149
- package/src/theme/components/tabs.ts +0 -109
- package/src/theme/components/template.ts +0 -114
- package/src/theme/components/text.ts +0 -38
- package/src/theme/components/textInput.ts +0 -65
- package/src/theme/components/toggle.ts +0 -109
- package/src/theme/components/videoPlayer.ts +0 -47
- package/src/theme/foundations/breakpoints.ts +0 -24
- package/src/theme/foundations/colors.ts +0 -212
- package/src/theme/foundations/global.ts +0 -43
- package/src/theme/foundations/radii.ts +0 -7
- package/src/theme/foundations/shadows.ts +0 -5
- package/src/theme/foundations/spacing.ts +0 -136
- package/src/theme/foundations/typography.ts +0 -107
- package/src/theme/index.ts +0 -131
- package/src/theme/provider.tsx +0 -9
- package/src/theme/types.ts +0 -1
- package/src/utils/componentCategories.ts +0 -152
- package/src/utils/interfaces.ts +0 -5
- package/src/utils/utils.ts +0 -84
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
import { VStack } from "@chakra-ui/react";
|
|
2
|
-
import {
|
|
3
|
-
ArgsTable,
|
|
4
|
-
Canvas,
|
|
5
|
-
Description,
|
|
6
|
-
Meta,
|
|
7
|
-
Story,
|
|
8
|
-
} from "@storybook/addon-docs";
|
|
9
|
-
import { withDesign } from "storybook-addon-designs";
|
|
10
|
-
|
|
11
|
-
import Button from "../Button/Button";
|
|
12
|
-
import Form, { FormField } from "../Form/Form";
|
|
13
|
-
import Select from "./Select";
|
|
14
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
15
|
-
import DSProvider from "../../theme/provider";
|
|
16
|
-
|
|
17
|
-
<Meta
|
|
18
|
-
title={getCategory("Select")}
|
|
19
|
-
component={Select}
|
|
20
|
-
decorators={[withDesign]}
|
|
21
|
-
parameters={{
|
|
22
|
-
design: {
|
|
23
|
-
type: "figma",
|
|
24
|
-
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A549",
|
|
25
|
-
},
|
|
26
|
-
jest: ["Select.test.tsx"],
|
|
27
|
-
}}
|
|
28
|
-
argTypes={{
|
|
29
|
-
children: { table: { disable: true } },
|
|
30
|
-
id: { control: false },
|
|
31
|
-
isDisabled: {
|
|
32
|
-
table: { defaultValue: { summary: false } },
|
|
33
|
-
},
|
|
34
|
-
isInvalid: {
|
|
35
|
-
table: { defaultValue: { summary: false } },
|
|
36
|
-
},
|
|
37
|
-
isRequired: {
|
|
38
|
-
table: { defaultValue: { summary: false } },
|
|
39
|
-
},
|
|
40
|
-
labelPosition: {
|
|
41
|
-
table: { defaultValue: { summary: "default" } },
|
|
42
|
-
},
|
|
43
|
-
name: { control: false },
|
|
44
|
-
key: { table: { disable: true } },
|
|
45
|
-
onChange: { control: false },
|
|
46
|
-
ref: { table: { disable: true } },
|
|
47
|
-
showHelperInvalidText: {
|
|
48
|
-
table: { defaultValue: { summary: true } },
|
|
49
|
-
},
|
|
50
|
-
showLabel: {
|
|
51
|
-
table: { defaultValue: { summary: true } },
|
|
52
|
-
},
|
|
53
|
-
showRequiredLabel: {
|
|
54
|
-
table: { defaultValue: { summary: true } },
|
|
55
|
-
},
|
|
56
|
-
selectType: {
|
|
57
|
-
control: false,
|
|
58
|
-
table: { defaultValue: { summary: "default" } },
|
|
59
|
-
},
|
|
60
|
-
value: { control: false },
|
|
61
|
-
}}
|
|
62
|
-
/>
|
|
63
|
-
|
|
64
|
-
# Select
|
|
65
|
-
|
|
66
|
-
| Component Version | DS Version |
|
|
67
|
-
| ----------------- | ---------- |
|
|
68
|
-
| Added | `0.7.0` |
|
|
69
|
-
| Latest | `1.0.2` |
|
|
70
|
-
|
|
71
|
-
## Table of Contents
|
|
72
|
-
|
|
73
|
-
- [Overview](#overview)
|
|
74
|
-
- [Component Props](#component-props)
|
|
75
|
-
- [Accessibility](#accessibility)
|
|
76
|
-
- [Option Elements](#option-elements)
|
|
77
|
-
- [Labelling Variations](#labelling-variations)
|
|
78
|
-
- [Errored](#errored)
|
|
79
|
-
- [Disabled](#disabled)
|
|
80
|
-
- [Getting Select Input Value](#getting-select-input-value)
|
|
81
|
-
|
|
82
|
-
## Overview
|
|
83
|
-
|
|
84
|
-
<Description of={Select} />
|
|
85
|
-
|
|
86
|
-
The `Select` component renders a `select` element along with its `option`
|
|
87
|
-
children. For optimal accessibility, the `labelText` property is a required
|
|
88
|
-
prop, regardless of the label visibility. Additionally, while the `id` prop is
|
|
89
|
-
optional, a unique `id` attribute is necessary for accessibility. If the prop
|
|
90
|
-
is left blank, a value will be generated for you.
|
|
91
|
-
|
|
92
|
-
## Component Props
|
|
93
|
-
|
|
94
|
-
<Canvas withToolbar>
|
|
95
|
-
<Story
|
|
96
|
-
name="Select with Controls"
|
|
97
|
-
args={{
|
|
98
|
-
className: undefined,
|
|
99
|
-
helperText: "This is the helper text.",
|
|
100
|
-
id: "select-id",
|
|
101
|
-
invalidText: "This is the error text :(",
|
|
102
|
-
isDisabled: false,
|
|
103
|
-
isInvalid: false,
|
|
104
|
-
isRequired: false,
|
|
105
|
-
labelPosition: "default",
|
|
106
|
-
labelText: "What is your favorite color?",
|
|
107
|
-
name: "color",
|
|
108
|
-
onChange: undefined,
|
|
109
|
-
showHelperInvalidText: undefined,
|
|
110
|
-
showLabel: true,
|
|
111
|
-
showRequiredLabel: true,
|
|
112
|
-
selectType: "default",
|
|
113
|
-
value: undefined,
|
|
114
|
-
}}
|
|
115
|
-
>
|
|
116
|
-
{(args) => (
|
|
117
|
-
<Select {...args}>
|
|
118
|
-
<option value="red">Red</option>
|
|
119
|
-
<option value="green">Green</option>
|
|
120
|
-
<option value="blue">Blue</option>
|
|
121
|
-
<option value="black">Black</option>
|
|
122
|
-
<option value="white">White</option>
|
|
123
|
-
</Select>
|
|
124
|
-
)}
|
|
125
|
-
</Story>
|
|
126
|
-
</Canvas>
|
|
127
|
-
|
|
128
|
-
<ArgsTable story="Select with Controls" />
|
|
129
|
-
|
|
130
|
-
## Accessibility
|
|
131
|
-
|
|
132
|
-
The `Select` component renders an HTML `<select>` element which is accessible.
|
|
133
|
-
It's the developer's responsibility to ensure that the appropriate `<option>`
|
|
134
|
-
elements are provided as children. Internally, a `Label` is associated with the
|
|
135
|
-
`<select>` element.
|
|
136
|
-
|
|
137
|
-
When `showLabel` is set to false, the `labelText` value will be set to the
|
|
138
|
-
`<select>`'s `aria-label` attribute.
|
|
139
|
-
|
|
140
|
-
Resources:
|
|
141
|
-
|
|
142
|
-
- [MDN select: The HTML Select element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
|
|
143
|
-
- [Chakra UI Select](https://chakra-ui.com/docs/components/form/select)
|
|
144
|
-
|
|
145
|
-
## Option Elements
|
|
146
|
-
|
|
147
|
-
The `Select` component renders all the necessary wrapping and associated text
|
|
148
|
-
elements, but the select options _need_ to be child `<option>` HTML elements.
|
|
149
|
-
|
|
150
|
-
```jsx
|
|
151
|
-
<Select id="select" labelText="What is your favorite color?" name="color">
|
|
152
|
-
<option value="red">Red</option>
|
|
153
|
-
<option value="green">Green</option>
|
|
154
|
-
<option value="blue">Blue</option>
|
|
155
|
-
<option value="black">Black</option>
|
|
156
|
-
<option value="white">White</option>
|
|
157
|
-
</Select>
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
There are two NYPL best practices to consider when using the `Select` component
|
|
161
|
-
and `option` HTML elements:
|
|
162
|
-
|
|
163
|
-
- Use no more than 10 options. If more than 10 options are needed, an
|
|
164
|
-
auto-complete text input is a good alternative.
|
|
165
|
-
- Use at least four options. If fewer than three options are needed, a radio
|
|
166
|
-
button group is a good alternative.
|
|
167
|
-
|
|
168
|
-
## Labelling Variations
|
|
169
|
-
|
|
170
|
-
A Select can be rendered with or without a visible label. If the label is visible,
|
|
171
|
-
it can be displayed above (the default) or inline with the select input using the
|
|
172
|
-
`labelPosition` prop. Note that the label will only display inline when the device
|
|
173
|
-
width exceeds the `--nypl-breakpoint-medium` breakpoint, or 600px. When `showLabel`
|
|
174
|
-
is set to `false`, an `aria-label` attribute is added to the select input to maintain
|
|
175
|
-
accessibility. If the component needs to be required, the `showRequiredLabel` prop
|
|
176
|
-
can be used to show or hide the "Required" text within the `label` element.
|
|
177
|
-
|
|
178
|
-
<Canvas>
|
|
179
|
-
<Story name="Labelling Variations">
|
|
180
|
-
<VStack align="stretch" spacing={8}>
|
|
181
|
-
<Select
|
|
182
|
-
helperText="Display the label"
|
|
183
|
-
id="label-example1"
|
|
184
|
-
labelText="What is your favorite color?"
|
|
185
|
-
name="color"
|
|
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
|
-
<Select
|
|
194
|
-
helperText="Do not display the label"
|
|
195
|
-
id="label-example2"
|
|
196
|
-
labelText="What is your favorite color?"
|
|
197
|
-
name="color"
|
|
198
|
-
showLabel={false}
|
|
199
|
-
>
|
|
200
|
-
<option value="red">Red</option>
|
|
201
|
-
<option value="green">Green</option>
|
|
202
|
-
<option value="blue">Blue</option>
|
|
203
|
-
<option value="black">Black</option>
|
|
204
|
-
<option value="white">White</option>
|
|
205
|
-
</Select>
|
|
206
|
-
<Select
|
|
207
|
-
helperText="Display the Required text"
|
|
208
|
-
id="label-example3"
|
|
209
|
-
isRequired
|
|
210
|
-
labelText="What is your favorite color?"
|
|
211
|
-
name="color"
|
|
212
|
-
>
|
|
213
|
-
<option value="red">Red</option>
|
|
214
|
-
<option value="green">Green</option>
|
|
215
|
-
<option value="blue">Blue</option>
|
|
216
|
-
<option value="black">Black</option>
|
|
217
|
-
<option value="white">White</option>
|
|
218
|
-
</Select>
|
|
219
|
-
<Select
|
|
220
|
-
helperText="Do not display the Required text"
|
|
221
|
-
id="label-example4"
|
|
222
|
-
isRequired
|
|
223
|
-
labelText="What is your favorite color?"
|
|
224
|
-
name="color"
|
|
225
|
-
showRequiredLabel={false}
|
|
226
|
-
>
|
|
227
|
-
<option value="red">Red</option>
|
|
228
|
-
<option value="green">Green</option>
|
|
229
|
-
<option value="blue">Blue</option>
|
|
230
|
-
<option value="black">Black</option>
|
|
231
|
-
<option value="white">White</option>
|
|
232
|
-
</Select>
|
|
233
|
-
<Select
|
|
234
|
-
helperText="Display the label inline"
|
|
235
|
-
id="label-example5"
|
|
236
|
-
isRequired
|
|
237
|
-
labelText="What is your favorite color?"
|
|
238
|
-
name="color"
|
|
239
|
-
labelPosition="inline"
|
|
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
|
-
</VStack>
|
|
248
|
-
</Story>
|
|
249
|
-
</Canvas>
|
|
250
|
-
|
|
251
|
-
## Errored
|
|
252
|
-
|
|
253
|
-
<Canvas>
|
|
254
|
-
<DSProvider>
|
|
255
|
-
<Select
|
|
256
|
-
helperText="This is the helper text."
|
|
257
|
-
id="errored"
|
|
258
|
-
invalidText="This is the error text :("
|
|
259
|
-
isInvalid
|
|
260
|
-
labelText="What is your favorite color?"
|
|
261
|
-
name="color"
|
|
262
|
-
>
|
|
263
|
-
<option value="red">Red</option>
|
|
264
|
-
<option value="green">Green</option>
|
|
265
|
-
<option value="blue">Blue</option>
|
|
266
|
-
<option value="black">Black</option>
|
|
267
|
-
<option value="white">White</option>
|
|
268
|
-
</Select>
|
|
269
|
-
</DSProvider>
|
|
270
|
-
</Canvas>
|
|
271
|
-
|
|
272
|
-
## Disabled
|
|
273
|
-
|
|
274
|
-
<Canvas>
|
|
275
|
-
<DSProvider>
|
|
276
|
-
<Select
|
|
277
|
-
helperText="This is the helper text."
|
|
278
|
-
id="disabled"
|
|
279
|
-
invalidText="This is the error text :("
|
|
280
|
-
isDisabled
|
|
281
|
-
labelText="What is your favorite color?"
|
|
282
|
-
name="color"
|
|
283
|
-
>
|
|
284
|
-
<option value="red">Red</option>
|
|
285
|
-
<option value="green">Green</option>
|
|
286
|
-
<option value="blue">Blue</option>
|
|
287
|
-
<option value="black">Black</option>
|
|
288
|
-
<option value="white">White</option>
|
|
289
|
-
</Select>
|
|
290
|
-
</DSProvider>
|
|
291
|
-
</Canvas>
|
|
292
|
-
|
|
293
|
-
## Getting Select Input Value
|
|
294
|
-
|
|
295
|
-
### Controlled Component using `value` and `onChange` props
|
|
296
|
-
|
|
297
|
-
If your application uses controlled React components and the Reservoir Design
|
|
298
|
-
System (DS) `Select` component must be controlled, you can pass and extract the
|
|
299
|
-
value through the `value` and `onChange` props. This will be called every time
|
|
300
|
-
a new `option` value is selected.
|
|
301
|
-
|
|
302
|
-
Try it out: open up the browser's console to see new values being logged on
|
|
303
|
-
each change.
|
|
304
|
-
|
|
305
|
-
```jsx
|
|
306
|
-
export function SelectControlledExample() {
|
|
307
|
-
const [value, setValue] = React.useState();
|
|
308
|
-
const onChange = (e) => {
|
|
309
|
-
// This will return the value selected through the event object.
|
|
310
|
-
console.log(e.target.value);
|
|
311
|
-
setValue(e.target.value);
|
|
312
|
-
};
|
|
313
|
-
return (
|
|
314
|
-
<Select
|
|
315
|
-
helperText="This is the helper text."
|
|
316
|
-
id="example-1"
|
|
317
|
-
labelText="What is your favorite color?"
|
|
318
|
-
name="color"
|
|
319
|
-
onChange={onChange}
|
|
320
|
-
value={value}
|
|
321
|
-
>
|
|
322
|
-
<option value="red">Red</option>
|
|
323
|
-
<option value="green">Green</option>
|
|
324
|
-
<option value="blue">Blue</option>
|
|
325
|
-
<option value="black">Black</option>
|
|
326
|
-
<option value="white">White</option>
|
|
327
|
-
</Select>
|
|
328
|
-
);
|
|
329
|
-
}
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
export function SelectControlledExample() {
|
|
333
|
-
const [value, setValue] = React.useState();
|
|
334
|
-
const onChange = (e) => {
|
|
335
|
-
// This will return the value selected through the event object.
|
|
336
|
-
console.log("Controlled value:", e.target.value);
|
|
337
|
-
setValue(e.target.value);
|
|
338
|
-
};
|
|
339
|
-
return (
|
|
340
|
-
<Select
|
|
341
|
-
helperText="This is the helper text."
|
|
342
|
-
id="example-1"
|
|
343
|
-
labelText="What is your favorite color?"
|
|
344
|
-
name="color"
|
|
345
|
-
onChange={onChange}
|
|
346
|
-
value={value}
|
|
347
|
-
>
|
|
348
|
-
<option value="red">Red</option>
|
|
349
|
-
<option value="green">Green</option>
|
|
350
|
-
<option value="blue">Blue</option>
|
|
351
|
-
<option value="black">Black</option>
|
|
352
|
-
<option value="white">White</option>
|
|
353
|
-
</Select>
|
|
354
|
-
);
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
<Canvas>
|
|
358
|
-
<DSProvider>
|
|
359
|
-
<SelectControlledExample />
|
|
360
|
-
</DSProvider>
|
|
361
|
-
</Canvas>
|
|
362
|
-
|
|
363
|
-
### Uncontrolled Component using `ref`s
|
|
364
|
-
|
|
365
|
-
If your application uses uncontrolled components, you can pass a React `ref`
|
|
366
|
-
prop to the DS Select component to get the selected value from the DOM. Note
|
|
367
|
-
that this example uses a `Form` and a `Button` to submit the form, only then
|
|
368
|
-
will the value be available.
|
|
369
|
-
|
|
370
|
-
Try it out: open up the browser's console to see new values being logged on
|
|
371
|
-
each change.
|
|
372
|
-
|
|
373
|
-
```jsx
|
|
374
|
-
export function SelectUncontrolledExample() {
|
|
375
|
-
const selectRef = React.createRef();
|
|
376
|
-
const onSubmit = () => {
|
|
377
|
-
const selectValue = selectRef.current.value;
|
|
378
|
-
console.log("Using uncontrolled ref:", selectValue);
|
|
379
|
-
};
|
|
380
|
-
return (
|
|
381
|
-
<Form id="form">
|
|
382
|
-
<FormField>
|
|
383
|
-
<Select
|
|
384
|
-
helperText="This is the helper text."
|
|
385
|
-
id="example-2"
|
|
386
|
-
labelText="What is your favorite color?"
|
|
387
|
-
name="color"
|
|
388
|
-
ref={selectRef}
|
|
389
|
-
>
|
|
390
|
-
<option value="red">Red</option>
|
|
391
|
-
<option value="green">Green</option>
|
|
392
|
-
<option value="blue">Blue</option>
|
|
393
|
-
<option value="black">Black</option>
|
|
394
|
-
<option value="white">White</option>
|
|
395
|
-
</Select>
|
|
396
|
-
<Button id="submit" onClick={onSubmit}>
|
|
397
|
-
Submit
|
|
398
|
-
</Button>
|
|
399
|
-
</FormField>
|
|
400
|
-
</Form>
|
|
401
|
-
);
|
|
402
|
-
}
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
export function SelectUncontrolledExample() {
|
|
406
|
-
const selectRef = React.createRef();
|
|
407
|
-
const onSubmit = () => {
|
|
408
|
-
const selectValue = selectRef.current.value;
|
|
409
|
-
console.log("Using uncontrolled ref:", selectValue);
|
|
410
|
-
};
|
|
411
|
-
return (
|
|
412
|
-
<Form id="form">
|
|
413
|
-
<FormField>
|
|
414
|
-
<Select
|
|
415
|
-
helperText="This is the helper text."
|
|
416
|
-
id="example-2"
|
|
417
|
-
labelText="What is your favorite color?"
|
|
418
|
-
name="color"
|
|
419
|
-
ref={selectRef}
|
|
420
|
-
>
|
|
421
|
-
<option value="red">Red</option>
|
|
422
|
-
<option value="green">Green</option>
|
|
423
|
-
<option value="blue">Blue</option>
|
|
424
|
-
<option value="black">Black</option>
|
|
425
|
-
<option value="white">White</option>
|
|
426
|
-
</Select>
|
|
427
|
-
<Button id="submit" onClick={onSubmit}>
|
|
428
|
-
Submit
|
|
429
|
-
</Button>
|
|
430
|
-
</FormField>
|
|
431
|
-
</Form>
|
|
432
|
-
);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
<Canvas>
|
|
436
|
-
<DSProvider>
|
|
437
|
-
<SelectUncontrolledExample />
|
|
438
|
-
</DSProvider>
|
|
439
|
-
</Canvas>
|