@nypl/design-system-react-components 0.25.0 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/components/Accordion/Accordion.d.ts +14 -14
  3. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -14
  4. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  5. package/dist/components/Button/ButtonTypes.d.ts +2 -1
  6. package/dist/components/Card/Card.d.ts +1 -1
  7. package/dist/components/Card/CardTypes.d.ts +2 -2
  8. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +43 -0
  9. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  10. package/dist/components/DatePicker/DatePicker.d.ts +3 -3
  11. package/dist/components/Form/Form.d.ts +13 -8
  12. package/dist/components/Form/FormTypes.d.ts +2 -8
  13. package/dist/components/Grid/GridTypes.d.ts +9 -0
  14. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  15. package/dist/components/Heading/Heading.d.ts +4 -4
  16. package/dist/components/Hero/Hero.d.ts +19 -14
  17. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  18. package/dist/components/Icons/Icon.d.ts +13 -16
  19. package/dist/components/Icons/IconTypes.d.ts +78 -64
  20. package/dist/components/Label/Label.d.ts +5 -17
  21. package/dist/components/Link/Link.d.ts +8 -12
  22. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  23. package/dist/components/Select/Select.d.ts +32 -35
  24. package/dist/components/Select/SelectTypes.d.ts +4 -0
  25. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +1 -1
  26. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  27. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  28. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  29. package/dist/components/Template/Template.d.ts +91 -0
  30. package/dist/components/Text/Text.d.ts +16 -0
  31. package/dist/components/Text/TextTypes.d.ts +6 -0
  32. package/dist/components/TextInput/TextInput.d.ts +32 -31
  33. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  34. package/dist/design-system-react-components.cjs.development.js +2597 -1170
  35. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  36. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  37. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  38. package/dist/design-system-react-components.esm.js +2580 -1173
  39. package/dist/design-system-react-components.esm.js.map +1 -1
  40. package/dist/index.d.ts +8 -1
  41. package/dist/styles.css +1 -1
  42. package/dist/theme/components/accordion.d.ts +25 -0
  43. package/dist/theme/components/breadcrumb.d.ts +90 -0
  44. package/dist/theme/components/button.d.ts +17 -7
  45. package/dist/theme/components/checkbox.d.ts +7 -7
  46. package/dist/theme/components/customCheckboxGroup.d.ts +18 -0
  47. package/dist/theme/components/customRadioGroup.d.ts +4 -3
  48. package/dist/theme/components/global.d.ts +55 -0
  49. package/dist/theme/components/globalMixins.d.ts +15 -0
  50. package/dist/theme/components/heading.d.ts +50 -20
  51. package/dist/theme/components/hero.d.ts +492 -0
  52. package/dist/theme/components/icon.d.ts +13 -0
  53. package/dist/theme/components/label.d.ts +16 -0
  54. package/dist/theme/components/link.d.ts +45 -0
  55. package/dist/theme/components/radio.d.ts +8 -7
  56. package/dist/theme/components/searchBar.d.ts +20 -0
  57. package/dist/theme/components/select.d.ts +58 -0
  58. package/dist/theme/components/statusBadge.d.ts +25 -0
  59. package/dist/theme/components/tabs.d.ts +9 -9
  60. package/dist/theme/components/template.d.ts +105 -0
  61. package/dist/theme/components/text.d.ts +20 -0
  62. package/dist/theme/components/textInput.d.ts +105 -0
  63. package/dist/theme/foundations/global.d.ts +3 -0
  64. package/dist/theme/foundations/shadows.d.ts +4 -0
  65. package/dist/utils/utils.d.ts +6 -0
  66. package/package.json +3 -2
  67. package/src/components/Accordion/Accordion.stories.mdx +227 -33
  68. package/src/components/Accordion/Accordion.test.tsx +135 -19
  69. package/src/components/Accordion/Accordion.tsx +81 -56
  70. package/src/components/Autosuggest/Autosuggest.stories.mdx +1 -1
  71. package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -1
  72. package/src/components/Autosuggest/_Autosuggest.scss +2 -2
  73. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +46 -52
  74. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +31 -25
  75. package/src/components/Breadcrumbs/Breadcrumbs.tsx +71 -73
  76. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  77. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +100 -0
  78. package/src/components/Button/Button.stories.mdx +31 -27
  79. package/src/components/Button/Button.test.tsx +17 -5
  80. package/src/components/Button/ButtonTypes.tsx +1 -0
  81. package/src/components/Button/_Button.scss +3 -27
  82. package/src/components/Button/__snapshots__/Button.test.tsx.snap +11 -0
  83. package/src/components/Card/Card.stories.mdx +24 -20
  84. package/src/components/Card/Card.test.tsx +13 -19
  85. package/src/components/Card/Card.tsx +1 -1
  86. package/src/components/Card/CardTypes.tsx +2 -2
  87. package/src/components/Card/_Card.scss +1 -1
  88. package/src/components/CardEdition/CardEdition.stories.tsx +11 -6
  89. package/src/components/CardEdition/CardEdition.test.tsx +23 -31
  90. package/src/components/CardEdition/_CardEdition.scss +2 -2
  91. package/src/components/Chakra/Center.stories.mdx +31 -14
  92. package/src/components/Chakra/Grid.stories.mdx +79 -0
  93. package/src/components/Chakra/Stack.stories.mdx +4 -4
  94. package/src/components/Checkbox/Checkbox.tsx +9 -12
  95. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +2 -5
  96. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +249 -0
  97. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +345 -0
  98. package/src/components/CheckboxGroup/CheckboxGroup.tsx +148 -0
  99. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  100. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1360 -0
  101. package/src/components/DatePicker/DatePicker.test.tsx +4 -4
  102. package/src/components/DatePicker/DatePicker.tsx +13 -13
  103. package/src/components/DatePicker/_DatePicker.scss +1 -0
  104. package/src/components/Form/Form.stories.mdx +46 -21
  105. package/src/components/Form/Form.test.tsx +58 -45
  106. package/src/components/Form/Form.tsx +49 -21
  107. package/src/components/Form/FormTypes.tsx +3 -8
  108. package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
  109. package/src/components/Grid/GridTypes.tsx +9 -0
  110. package/src/components/Grid/SimpleGrid.stories.mdx +275 -0
  111. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  112. package/src/components/Grid/SimpleGrid.tsx +37 -0
  113. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  114. package/src/components/Heading/Heading.stories.mdx +1 -0
  115. package/src/components/Heading/Heading.tsx +12 -6
  116. package/src/components/HelperErrorText/_HelperErrorText.scss +1 -1
  117. package/src/components/Hero/Hero.stories.mdx +188 -121
  118. package/src/components/Hero/Hero.test.tsx +537 -107
  119. package/src/components/Hero/Hero.tsx +79 -92
  120. package/src/components/Hero/HeroTypes.tsx +17 -5
  121. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  122. package/src/components/HorizontalRule/_HorizontalRule.scss +1 -1
  123. package/src/components/Icons/Icon.stories.mdx +83 -74
  124. package/src/components/Icons/Icon.test.tsx +30 -22
  125. package/src/components/Icons/Icon.tsx +63 -61
  126. package/src/components/Icons/IconTypes.tsx +80 -64
  127. package/src/components/Input/_Input.scss +2 -2
  128. package/src/components/Label/Label.stories.mdx +28 -7
  129. package/src/components/Label/Label.test.tsx +43 -12
  130. package/src/components/Label/Label.tsx +21 -34
  131. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  132. package/src/components/Link/Link.stories.mdx +41 -41
  133. package/src/components/Link/Link.test.tsx +33 -44
  134. package/src/components/Link/Link.tsx +114 -100
  135. package/src/components/List/List.stories.mdx +0 -2
  136. package/src/components/List/List.stories.tsx +5 -5
  137. package/src/components/List/_List.scss +3 -3
  138. package/src/components/Modal/_Modal.scss +1 -1
  139. package/src/components/Notification/Notification.stories.mdx +12 -1
  140. package/src/components/Notification/Notification.test.tsx +3 -16
  141. package/src/components/Notification/Notification.tsx +9 -10
  142. package/src/components/Notification/_Notification.scss +4 -4
  143. package/src/components/Pagination/Pagination.test.tsx +16 -10
  144. package/src/components/RadioGroup/RadioGroup.stories.mdx +1 -1
  145. package/src/components/RadioGroup/RadioGroup.tsx +2 -10
  146. package/src/components/SearchBar/SearchBar.Test.tsx +151 -16
  147. package/src/components/SearchBar/SearchBar.stories.mdx +189 -219
  148. package/src/components/SearchBar/SearchBar.tsx +151 -46
  149. package/src/components/Select/Select.stories.mdx +188 -170
  150. package/src/components/Select/Select.test.tsx +125 -380
  151. package/src/components/Select/Select.tsx +118 -165
  152. package/src/components/Select/SelectTypes.tsx +4 -0
  153. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +13 -25
  154. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +7 -7
  155. package/src/components/SkeletonLoader/SkeletonLoader.tsx +4 -2
  156. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  157. package/src/components/SkeletonLoader/_SkeletonLoader.scss +3 -3
  158. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  159. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  160. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  161. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  162. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  163. package/src/components/StyleGuide/Bidirectionality.stories.mdx +16 -16
  164. package/src/components/StyleGuide/Buttons.stories.mdx +15 -15
  165. package/src/components/StyleGuide/Colors.stories.mdx +336 -0
  166. package/src/components/StyleGuide/Iconography.stories.mdx +88 -90
  167. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  168. package/src/components/Tabs/Tabs.tsx +7 -9
  169. package/src/components/Template/Template.stories.mdx +574 -0
  170. package/src/components/Template/Template.test.tsx +124 -0
  171. package/src/components/Template/Template.tsx +226 -0
  172. package/src/components/Text/Text.stories.mdx +70 -0
  173. package/src/components/Text/Text.test.tsx +63 -0
  174. package/src/components/Text/Text.tsx +55 -0
  175. package/src/components/Text/TextTypes.tsx +6 -0
  176. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  177. package/src/components/TextInput/TextInput.stories.mdx +89 -90
  178. package/src/components/TextInput/TextInput.test.tsx +65 -86
  179. package/src/components/TextInput/TextInput.tsx +101 -95
  180. package/src/components/TextInput/TextInputTypes.tsx +6 -0
  181. package/src/components/VideoPlayer/_VideoPlayer.scss +1 -1
  182. package/src/docs/Chakra.stories.mdx +4 -4
  183. package/src/docs/Intro.stories.mdx +15 -13
  184. package/src/index.ts +20 -0
  185. package/src/styles/01-colors/_colors-brand.scss +6 -0
  186. package/src/styles/01-colors/_colors-utility.scss +14 -12
  187. package/src/styles/base/_04-base.scss +2 -1
  188. package/src/styles/base/_place-holder.scss +1 -1
  189. package/src/styles.scss +10 -12
  190. package/src/theme/components/accordion.ts +30 -0
  191. package/src/theme/components/breadcrumb.ts +77 -0
  192. package/src/theme/components/button.ts +77 -63
  193. package/src/theme/components/checkbox.ts +15 -27
  194. package/src/theme/components/customCheckboxGroup.ts +12 -0
  195. package/src/theme/components/customRadioGroup.ts +4 -10
  196. package/src/theme/components/global.ts +71 -0
  197. package/src/theme/components/globalMixins.ts +16 -0
  198. package/src/theme/components/heading.ts +15 -8
  199. package/src/theme/components/hero.ts +239 -0
  200. package/src/theme/components/icon.ts +79 -0
  201. package/src/theme/components/label.ts +17 -0
  202. package/src/theme/components/link.ts +47 -0
  203. package/src/theme/components/radio.ts +20 -31
  204. package/src/theme/components/searchBar.ts +21 -0
  205. package/src/theme/components/select.ts +50 -0
  206. package/src/theme/components/statusBadge.ts +27 -0
  207. package/src/theme/components/tabs.ts +72 -69
  208. package/src/theme/components/template.ts +114 -0
  209. package/src/theme/components/text.ts +31 -0
  210. package/src/theme/components/textInput.ts +61 -0
  211. package/src/theme/foundations/colors.ts +29 -13
  212. package/src/theme/foundations/global.ts +3 -0
  213. package/src/theme/foundations/shadows.ts +5 -0
  214. package/src/theme/index.ts +37 -7
  215. package/src/utils/componentCategories.ts +8 -2
  216. package/src/utils/utils.ts +13 -0
  217. package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
  218. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  219. package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
  220. package/dist/components/Template/Template.stories.d.ts +0 -30
  221. package/src/components/Accordion/Accordion.stories.tsx +0 -66
  222. package/src/components/Accordion/_Accordion.scss +0 -81
  223. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  224. package/src/components/Form/_Form.scss +0 -67
  225. package/src/components/Hero/_Hero.scss +0 -256
  226. package/src/components/Icons/_Icons.scss +0 -116
  227. package/src/components/Label/_Label.scss +0 -22
  228. package/src/components/Link/_Link.scss +0 -73
  229. package/src/components/SearchBar/_SearchBar.scss +0 -16
  230. package/src/components/Select/_Select.scss +0 -82
  231. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
  232. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  233. package/src/components/StyleGuide/Colors.stories.tsx +0 -289
  234. package/src/components/Template/Template.stories.tsx +0 -86
  235. package/src/components/Template/_Template.scss +0 -63
  236. package/src/components/TextInput/_TextInput.scss +0 -59
@@ -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
- blockName: { table: { disable: true } },
31
- className: { table: { disable: true } },
32
- modifiers: { table: { disable: true } },
33
- attributes: { table: { disable: true } },
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.24.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` children. For optimal accessibility, the `labelText` property is a required prop, regardless of the label visibility. Additionally, while the `id` prop is optional, a unique `id` attribute is necessary for accessibility. If the prop is left blank, a value will be generated for you.
47
-
48
- <Preview withToolbar>
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
- id: "mySelect",
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 aria-selected={true}></option>
78
- <option aria-selected={false}>Red</option>
79
- <option aria-selected={false}>Green</option>
80
- <option aria-selected={false}>Blue</option>
81
- <option aria-selected={false}>Black</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
- </Preview>
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 labels. When `showLabel` is set to `false`, an `aria-label` attribute is added to the select input to maintain accessibility.
97
-
98
- <Preview>
99
- <Story
100
- name="Labelling Variations"
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
- <Select labelText="What is your favorite color?" showLabel={true}>
124
- <option aria-selected={true}></option>
125
- <option aria-selected={false}>Red</option>
126
- <option aria-selected={false}>Green</option>
127
- <option aria-selected={false}>Blue</option>
128
- <option aria-selected={false}>Black</option>
129
- <option aria-selected={false}>White</option>
130
- </Select>
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
- <Canvas>
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
- <Select
150
- labelText="What is your favorite color?"
151
- showLabel={true}
152
- helperText="Choose wisely!"
153
- >
154
- <option aria-selected={true}></option>
155
- <option aria-selected={false}>Red</option>
156
- <option aria-selected={false}>Green</option>
157
- <option aria-selected={false}>Blue</option>
158
- <option aria-selected={false}>Black</option>
159
- <option aria-selected={false}>White</option>
160
- </Select>
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
- <Canvas>
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
- <Select
182
- labelText="What is your favorite color?"
183
- showLabel={true}
184
- helperText="Choose wisely!"
185
- invalidText="Waaaaaa!"
186
- errored={true}
187
- >
188
- <option aria-selected={true}></option>
189
- <option aria-selected={false}>Red</option>
190
- <option aria-selected={false}>Green</option>
191
- <option aria-selected={false}>Blue</option>
192
- <option aria-selected={false}>Black</option>
193
- <option aria-selected={false}>White</option>
194
- </Select>
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
- ## Deprecated Implementation
198
-
199
- The `ariaLabel`, `helperTextId`, `isRequired` and `labelId` have been deprecated, but they are still available to use until they are removed in a future release. The code below uses all four deprecated props in conjunction with the `Label` and `HelperErrorText` components to render a fully functional and accessible select input.
200
-
201
- <Preview withToolbar>
202
- <Story
203
- name="Deprecated Implementation"
204
- args={{
205
- labelText: "What is your favorite color?",
206
- showLabel: false,
207
- }}
208
- >
209
- {(args) => (
210
- <>
211
- <Label htmlFor="select" optReqFlag="Required" id={"label"}>
212
- Fruit on your island
213
- </Label>
214
- <Select
215
- name="optionalLabelSelect"
216
- id={"select"}
217
- isRequired={false}
218
- ariaLabel="Select Label"
219
- labelId={"label"}
220
- helperTextId={"helperText"}
221
- selectedOption="Option Three"
222
- >
223
- <option aria-selected={true}>Option One</option>
224
- <option aria-selected={false}>Option Two</option>
225
- <option aria-selected={false}>Option Three</option>
226
- <option aria-selected={false}>Option Four</option>
227
- <option aria-selected={false}>Option Five</option>
228
- </Select>
229
- <HelperErrorText isError={false} id={"helperText"}>
230
- Once you pick a fruit for your island it cannot be changed, so choose
231
- wisely!
232
- </HelperErrorText>
233
- </>
234
- )}
235
- </Story>
236
- </Preview>
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
+ ```