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

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 (307) hide show
  1. package/CHANGELOG.md +118 -1
  2. package/README.md +98 -50
  3. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
  4. package/dist/components/Button/Button.d.ts +13 -8
  5. package/dist/components/Button/ButtonTypes.d.ts +2 -1
  6. package/dist/components/Card/Card.d.ts +36 -52
  7. package/dist/components/Card/CardTypes.d.ts +0 -15
  8. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  9. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -2
  10. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  11. package/dist/components/DatePicker/DatePicker.d.ts +36 -34
  12. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  13. package/dist/components/Heading/Heading.d.ts +4 -4
  14. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  15. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  16. package/dist/components/Icons/Icon.d.ts +8 -0
  17. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  18. package/dist/components/Icons/IconTypes.d.ts +11 -0
  19. package/dist/components/Image/Image.d.ts +19 -9
  20. package/dist/components/Image/ImageTypes.d.ts +20 -0
  21. package/dist/components/Link/Link.d.ts +4 -0
  22. package/dist/components/List/List.d.ts +19 -14
  23. package/dist/components/Notification/Notification.d.ts +37 -16
  24. package/dist/components/Pagination/Pagination.d.ts +16 -13
  25. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  26. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  27. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  28. package/dist/components/Radio/Radio.d.ts +2 -0
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  30. package/dist/components/SearchBar/SearchBar.d.ts +3 -3
  31. package/dist/components/Select/Select.d.ts +2 -0
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  33. package/dist/components/Slider/Slider.d.ts +57 -0
  34. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  35. package/dist/components/Tabs/Tabs.d.ts +1 -1
  36. package/dist/components/TextInput/TextInput.d.ts +12 -0
  37. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  38. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  39. package/dist/design-system-react-components.cjs.development.js +6131 -3715
  40. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  41. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  42. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  43. package/dist/design-system-react-components.esm.js +6124 -3699
  44. package/dist/design-system-react-components.esm.js.map +1 -1
  45. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  46. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  47. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  48. package/dist/hooks/useWindowSize.d.ts +10 -0
  49. package/dist/index.d.ts +13 -8
  50. package/dist/resources.scss +180 -170
  51. package/dist/styles.css +1 -1
  52. package/dist/theme/components/button.d.ts +22 -8
  53. package/dist/theme/components/card.d.ts +168 -0
  54. package/dist/theme/components/checkbox.d.ts +5 -1
  55. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  56. package/dist/theme/components/componentWrapper.d.ts +11 -0
  57. package/dist/theme/components/datePicker.d.ts +16 -0
  58. package/dist/theme/components/fieldset.d.ts +27 -0
  59. package/dist/theme/components/global.d.ts +23 -13
  60. package/dist/theme/components/globalMixins.d.ts +9 -1
  61. package/dist/theme/components/heading.d.ts +5 -0
  62. package/dist/theme/components/helperErrorText.d.ts +10 -0
  63. package/dist/theme/components/hero.d.ts +1 -0
  64. package/dist/theme/components/horizontalRule.d.ts +14 -0
  65. package/dist/theme/components/image.d.ts +31 -0
  66. package/dist/theme/components/label.d.ts +5 -3
  67. package/dist/theme/components/link.d.ts +4 -0
  68. package/dist/theme/components/list.d.ts +89 -0
  69. package/dist/theme/components/notification.d.ts +75 -0
  70. package/dist/theme/components/pagination.d.ts +19 -0
  71. package/dist/theme/components/progressIndicator.d.ts +50 -0
  72. package/dist/theme/components/radioGroup.d.ts +12 -0
  73. package/dist/theme/components/select.d.ts +11 -2
  74. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  75. package/dist/theme/components/slider.d.ts +51 -0
  76. package/dist/theme/components/tabs.d.ts +54 -3
  77. package/dist/theme/components/textInput.d.ts +8 -1
  78. package/dist/theme/components/videoPlayer.d.ts +40 -0
  79. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  80. package/dist/theme/foundations/global.d.ts +6 -1
  81. package/dist/theme/foundations/radii.d.ts +5 -0
  82. package/dist/theme/foundations/spacing.d.ts +16 -16
  83. package/package.json +72 -83
  84. package/src/__tests__/setup.ts +2 -2
  85. package/src/components/Accordion/Accordion.stories.mdx +39 -44
  86. package/src/components/Autosuggest/Autosuggest.stories.mdx +3 -3
  87. package/src/components/Autosuggest/Autosuggest.stories.tsx +2 -1
  88. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  89. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +14 -10
  90. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +23 -0
  91. package/src/components/Breadcrumbs/Breadcrumbs.tsx +5 -1
  92. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +199 -1
  93. package/src/components/Button/Button.stories.mdx +15 -10
  94. package/src/components/Button/Button.test.tsx +21 -7
  95. package/src/components/Button/Button.tsx +22 -34
  96. package/src/components/Button/ButtonTypes.tsx +1 -0
  97. package/src/components/Button/__snapshots__/Button.test.tsx.snap +41 -10
  98. package/src/components/Card/Card.stories.mdx +296 -259
  99. package/src/components/Card/Card.test.tsx +156 -84
  100. package/src/components/Card/Card.tsx +195 -145
  101. package/src/components/Card/CardTypes.tsx +0 -17
  102. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  103. package/src/components/CardEdition/CardEdition.stories.tsx +15 -47
  104. package/src/components/CardEdition/_CardEdition.scss +22 -23
  105. package/src/components/Chakra/Box.stories.mdx +15 -16
  106. package/src/components/Chakra/Center.stories.mdx +31 -16
  107. package/src/components/Chakra/Grid.stories.mdx +28 -15
  108. package/src/components/Chakra/Stack.stories.mdx +35 -18
  109. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  110. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  111. package/src/components/Checkbox/Checkbox.tsx +39 -33
  112. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +90 -2
  113. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +82 -2
  114. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +29 -2
  115. package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -18
  116. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +47 -81
  117. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  118. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  119. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  120. package/src/components/DatePicker/DatePicker.tsx +159 -128
  121. package/src/components/DatePicker/_DatePicker.scss +33 -67
  122. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  123. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  124. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  125. package/src/components/Fieldset/Fieldset.tsx +52 -0
  126. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  127. package/src/components/Form/Form.stories.mdx +24 -6
  128. package/src/components/Form/Form.test.tsx +1 -1
  129. package/src/components/Form/Form.tsx +1 -0
  130. package/src/components/Grid/SimpleGrid.stories.mdx +32 -39
  131. package/src/components/Grid/SimpleGrid.test.tsx +4 -4
  132. package/src/components/Heading/Heading.stories.mdx +3 -4
  133. package/src/components/Heading/Heading.tsx +5 -5
  134. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  135. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  136. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  137. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  138. package/src/components/Hero/Hero.stories.mdx +12 -2
  139. package/src/components/Hero/Hero.tsx +1 -1
  140. package/src/components/Hero/HeroTypes.tsx +1 -0
  141. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +7 -7
  142. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  143. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  144. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  145. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  146. package/src/components/Icons/Icon.stories.mdx +12 -4
  147. package/src/components/Icons/Icon.test.tsx +18 -0
  148. package/src/components/Icons/Icon.tsx +16 -1
  149. package/src/components/Icons/IconSvgs.tsx +22 -0
  150. package/src/components/Icons/IconTypes.tsx +11 -0
  151. package/src/components/Image/Image.stories.mdx +220 -0
  152. package/src/components/Image/Image.test.tsx +131 -29
  153. package/src/components/Image/Image.tsx +84 -56
  154. package/src/components/Image/ImageTypes.ts +22 -0
  155. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  156. package/src/components/Input/Input.stories.tsx +23 -67
  157. package/src/components/Input/Input.test.tsx +4 -4
  158. package/src/components/Input/_Input.scss +23 -14
  159. package/src/components/Link/Link.tsx +4 -1
  160. package/src/components/List/List.stories.mdx +124 -49
  161. package/src/components/List/List.test.tsx +142 -63
  162. package/src/components/List/List.tsx +89 -93
  163. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  164. package/src/components/Modal/Modal.stories.mdx +3 -3
  165. package/src/components/Modal/_Modal.scss +2 -2
  166. package/src/components/Notification/Notification.stories.mdx +109 -112
  167. package/src/components/Notification/Notification.test.tsx +99 -110
  168. package/src/components/Notification/Notification.tsx +156 -159
  169. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  170. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  171. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  172. package/src/components/Pagination/Pagination.test.tsx +276 -146
  173. package/src/components/Pagination/Pagination.tsx +174 -154
  174. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  175. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  176. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  177. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  178. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  179. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  180. package/src/components/Radio/Radio.test.tsx +20 -4
  181. package/src/components/Radio/Radio.tsx +6 -3
  182. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  183. package/src/components/RadioGroup/RadioGroup.stories.mdx +3 -4
  184. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  185. package/src/components/RadioGroup/RadioGroup.tsx +19 -19
  186. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  187. package/src/components/SearchBar/SearchBar.Test.tsx +20 -1
  188. package/src/components/SearchBar/SearchBar.stories.mdx +113 -8
  189. package/src/components/SearchBar/SearchBar.tsx +20 -10
  190. package/src/components/Select/Select.test.tsx +12 -0
  191. package/src/components/Select/Select.tsx +5 -2
  192. package/src/components/Select/SelectTypes.tsx +1 -0
  193. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +28 -59
  194. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  195. package/src/components/SkeletonLoader/SkeletonLoader.tsx +74 -71
  196. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  197. package/src/components/Slider/Slider.stories.mdx +529 -0
  198. package/src/components/Slider/Slider.test.tsx +653 -0
  199. package/src/components/Slider/Slider.tsx +303 -0
  200. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  201. package/src/components/StyleGuide/Bidirectionality.stories.mdx +1 -1
  202. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  203. package/src/components/StyleGuide/Buttons.stories.mdx +89 -73
  204. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  205. package/src/components/StyleGuide/Colors.stories.mdx +171 -311
  206. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  207. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  208. package/src/components/StyleGuide/Iconography.stories.mdx +85 -91
  209. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  210. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  211. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  212. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  213. package/src/components/Tabs/Tabs.tsx +87 -64
  214. package/src/components/Template/Template.stories.mdx +25 -27
  215. package/src/components/TextInput/TextInput.stories.mdx +1 -1
  216. package/src/components/TextInput/TextInput.test.tsx +22 -2
  217. package/src/components/TextInput/TextInput.tsx +28 -8
  218. package/src/components/TextInput/TextInputTypes.tsx +2 -0
  219. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  220. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  222. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  223. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  224. package/src/docs/Chakra.stories.mdx +244 -63
  225. package/src/docs/Intro.stories.mdx +5 -2
  226. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  227. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  228. package/src/hooks/useCarouselStyles.ts +34 -0
  229. package/src/hooks/useNYPLTheme.ts +67 -0
  230. package/src/hooks/useWindowSize.ts +40 -0
  231. package/src/index.ts +22 -19
  232. package/src/resources.scss +5 -5
  233. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  234. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  235. package/src/styles/base/{_04-base.scss → _03-base.scss} +7 -2
  236. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  237. package/src/styles/base/_place-holder.scss +14 -3
  238. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  239. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  240. package/src/styles/space/_space-stack.scss +116 -0
  241. package/src/styles.scss +13 -60
  242. package/src/theme/components/button.ts +21 -15
  243. package/src/theme/components/card.ts +174 -0
  244. package/src/theme/components/checkbox.ts +8 -3
  245. package/src/theme/components/checkboxGroup.ts +8 -0
  246. package/src/theme/components/componentWrapper.ts +10 -0
  247. package/src/theme/components/datePicker.ts +17 -0
  248. package/src/theme/components/fieldset.ts +18 -0
  249. package/src/theme/components/global.ts +26 -15
  250. package/src/theme/components/globalMixins.ts +9 -1
  251. package/src/theme/components/heading.ts +10 -5
  252. package/src/theme/components/helperErrorText.ts +9 -0
  253. package/src/theme/components/hero.ts +4 -3
  254. package/src/theme/components/horizontalRule.ts +13 -0
  255. package/src/theme/components/icon.ts +9 -9
  256. package/src/theme/components/image.ts +116 -0
  257. package/src/theme/components/label.ts +3 -10
  258. package/src/theme/components/link.ts +5 -1
  259. package/src/theme/components/list.ts +73 -0
  260. package/src/theme/components/notification.ts +93 -0
  261. package/src/theme/components/pagination.ts +20 -0
  262. package/src/theme/components/progressIndicator.ts +62 -0
  263. package/src/theme/components/radio.ts +2 -2
  264. package/src/theme/components/radioGroup.ts +8 -0
  265. package/src/theme/components/select.ts +6 -3
  266. package/src/theme/components/skeletonLoader.ts +107 -0
  267. package/src/theme/components/slider.ts +79 -0
  268. package/src/theme/components/statusBadge.ts +1 -2
  269. package/src/theme/components/tabs.ts +49 -19
  270. package/src/theme/components/template.ts +8 -8
  271. package/src/theme/components/textInput.ts +5 -4
  272. package/src/theme/components/videoPlayer.ts +49 -0
  273. package/src/theme/foundations/breakpoints.ts +8 -8
  274. package/src/theme/foundations/global.ts +6 -1
  275. package/src/theme/foundations/radii.ts +6 -0
  276. package/src/theme/foundations/spacing.ts +24 -24
  277. package/src/theme/index.ts +41 -10
  278. package/src/utils/componentCategories.ts +4 -3
  279. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  280. package/dist/components/Image/Image.stories.d.ts +0 -18
  281. package/dist/components/List/List.stories.d.ts +0 -7
  282. package/dist/theme/components/customCheckboxGroup.d.ts +0 -18
  283. package/dist/theme/components/customRadioGroup.d.ts +0 -18
  284. package/src/components/Button/_Button.scss +0 -32
  285. package/src/components/Card/_Card.scss +0 -308
  286. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  287. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  288. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  289. package/src/components/Image/Image.stories.tsx +0 -54
  290. package/src/components/Image/_Image.scss +0 -38
  291. package/src/components/List/List.stories.tsx +0 -139
  292. package/src/components/List/_List.scss +0 -76
  293. package/src/components/Notification/_Notification.scss +0 -110
  294. package/src/components/Pagination/_Pagination.scss +0 -40
  295. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  296. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  297. package/src/styles/01-colors/_colors-brand.scss +0 -62
  298. package/src/styles/01-colors/_colors-utility.scss +0 -67
  299. package/src/styles/02-typography/_type-scale.css +0 -11
  300. package/src/styles/02-typography/_type-weight.css +0 -7
  301. package/src/styles/02-typography/_typefaces.css +0 -4
  302. package/src/styles/03-space/_space-stack.scss +0 -116
  303. package/src/styles/03-space/_space.css +0 -30
  304. package/src/styles/base/_card-grid.scss +0 -78
  305. package/src/styles/base/_typography.scss +0 -11
  306. package/src/theme/components/customCheckboxGroup.ts +0 -12
  307. package/src/theme/components/customRadioGroup.ts +0 -12
@@ -5,17 +5,13 @@ exports[`Radio Button renders the UI snapshot correctly 1`] = `
5
5
  className=" css-0"
6
6
  id="radio-group-column"
7
7
  >
8
- <legend
9
- className=""
10
- >
11
- <span>
12
- column
13
- </span>
14
- <span
8
+ <legend>
9
+ column
10
+ <div
15
11
  className="css-0"
16
12
  >
17
13
  Optional
18
- </span>
14
+ </div>
19
15
  </legend>
20
16
  <div
21
17
  aria-label={null}
@@ -125,17 +121,13 @@ exports[`Radio Button renders the UI snapshot correctly 2`] = `
125
121
  className=" css-0"
126
122
  id="radio-group-row"
127
123
  >
128
- <legend
129
- className=""
130
- >
131
- <span>
132
- row
133
- </span>
134
- <span
124
+ <legend>
125
+ row
126
+ <div
135
127
  className="css-0"
136
128
  >
137
129
  Optional
138
- </span>
130
+ </div>
139
131
  </legend>
140
132
  <div
141
133
  aria-label={null}
@@ -245,17 +237,13 @@ exports[`Radio Button renders the UI snapshot correctly 3`] = `
245
237
  className=" css-0"
246
238
  id="radio-group-noLabel"
247
239
  >
248
- <legend
249
- className="sr-only"
250
- >
251
- <span>
252
- no label
253
- </span>
254
- <span
240
+ <legend>
241
+ no label
242
+ <div
255
243
  className="css-0"
256
244
  >
257
245
  Optional
258
- </span>
246
+ </div>
259
247
  </legend>
260
248
  <div
261
249
  aria-label="no label"
@@ -365,17 +353,13 @@ exports[`Radio Button renders the UI snapshot correctly 4`] = `
365
353
  className=" css-0"
366
354
  id="radio-group-helperText"
367
355
  >
368
- <legend
369
- className=""
370
- >
371
- <span>
372
- helperText
373
- </span>
374
- <span
356
+ <legend>
357
+ helperText
358
+ <div
375
359
  className="css-0"
376
360
  >
377
361
  Optional
378
- </span>
362
+ </div>
379
363
  </legend>
380
364
  <div
381
365
  aria-label={null}
@@ -483,7 +467,9 @@ exports[`Radio Button renders the UI snapshot correctly 4`] = `
483
467
  <div
484
468
  aria-atomic={true}
485
469
  aria-live="off"
486
- className="helper-text"
470
+ className=" css-0"
471
+ data-isinvalid={false}
472
+ id="helperText-helperErrorText"
487
473
  >
488
474
  helper text
489
475
  </div>
@@ -496,17 +482,13 @@ exports[`Radio Button renders the UI snapshot correctly 5`] = `
496
482
  className=" css-0"
497
483
  id="radio-group-invalidText"
498
484
  >
499
- <legend
500
- className=""
501
- >
502
- <span>
503
- invalidText
504
- </span>
505
- <span
485
+ <legend>
486
+ invalidText
487
+ <div
506
488
  className="css-0"
507
489
  >
508
490
  Optional
509
- </span>
491
+ </div>
510
492
  </legend>
511
493
  <div
512
494
  aria-label={null}
@@ -616,12 +598,8 @@ exports[`Radio Button renders the UI snapshot correctly 6`] = `
616
598
  className=" css-0"
617
599
  id="radio-group-optReq"
618
600
  >
619
- <legend
620
- className=""
621
- >
622
- <span>
623
- no optional or required label
624
- </span>
601
+ <legend>
602
+ no optional or required label
625
603
  </legend>
626
604
  <div
627
605
  aria-label={null}
@@ -731,17 +709,13 @@ exports[`Radio Button renders the UI snapshot correctly 7`] = `
731
709
  className=" css-0"
732
710
  id="radio-group-required"
733
711
  >
734
- <legend
735
- className=""
736
- >
737
- <span>
738
- required
739
- </span>
740
- <span
712
+ <legend>
713
+ required
714
+ <div
741
715
  className="css-0"
742
716
  >
743
- Required
744
- </span>
717
+ Optional
718
+ </div>
745
719
  </legend>
746
720
  <div
747
721
  aria-label={null}
@@ -853,17 +827,13 @@ exports[`Radio Button renders the UI snapshot correctly 8`] = `
853
827
  className=" css-0"
854
828
  id="radio-group-invalid"
855
829
  >
856
- <legend
857
- className=""
858
- >
859
- <span>
860
- invalid
861
- </span>
862
- <span
830
+ <legend>
831
+ invalid
832
+ <div
863
833
  className="css-0"
864
834
  >
865
835
  Optional
866
- </span>
836
+ </div>
867
837
  </legend>
868
838
  <div
869
839
  aria-label={null}
@@ -872,6 +842,7 @@ exports[`Radio Button renders the UI snapshot correctly 8`] = `
872
842
  >
873
843
  <label
874
844
  className="chakra-radio css-78joka"
845
+ data-invalid=""
875
846
  >
876
847
  <input
877
848
  aria-invalid={true}
@@ -922,6 +893,7 @@ exports[`Radio Button renders the UI snapshot correctly 8`] = `
922
893
  </label>
923
894
  <label
924
895
  className="chakra-radio css-78joka"
896
+ data-invalid=""
925
897
  >
926
898
  <input
927
899
  aria-invalid={true}
@@ -979,17 +951,13 @@ exports[`Radio Button renders the UI snapshot correctly 9`] = `
979
951
  className=" css-0"
980
952
  id="radio-group-disabled"
981
953
  >
982
- <legend
983
- className=""
984
- >
985
- <span>
986
- disabled
987
- </span>
988
- <span
954
+ <legend>
955
+ disabled
956
+ <div
989
957
  className="css-0"
990
958
  >
991
959
  Optional
992
- </span>
960
+ </div>
993
961
  </legend>
994
962
  <div
995
963
  aria-label={null}
@@ -998,6 +966,7 @@ exports[`Radio Button renders the UI snapshot correctly 9`] = `
998
966
  >
999
967
  <label
1000
968
  className="chakra-radio css-78joka"
969
+ data-disabled=""
1001
970
  >
1002
971
  <input
1003
972
  aria-disabled={true}
@@ -1048,6 +1017,7 @@ exports[`Radio Button renders the UI snapshot correctly 9`] = `
1048
1017
  </label>
1049
1018
  <label
1050
1019
  className="chakra-radio css-78joka"
1020
+ data-disabled=""
1051
1021
  >
1052
1022
  <input
1053
1023
  aria-disabled={true}
@@ -19,12 +19,13 @@ const optionsGroup = [
19
19
  "Villagers",
20
20
  ];
21
21
  const selectProps = {
22
- name: "nhItemSearch",
22
+ name: "selectName",
23
23
  labelText: "Select a category",
24
24
  optionsData: optionsGroup,
25
25
  };
26
26
  const textInputProps = {
27
27
  labelText: "Item Search",
28
+ name: "textInputName",
28
29
  placeholder: "Item Search",
29
30
  };
30
31
  const helperErrorText = "Search for items in Animal Crossing New Horizons";
@@ -102,6 +103,24 @@ describe("SearchBar", () => {
102
103
  expect(screen.queryByText(helperErrorText)).not.toBeInTheDocument();
103
104
  });
104
105
 
106
+ it("does not render the default invalid text from the Select or TextInput components", () => {
107
+ render(
108
+ <SearchBar
109
+ id="id"
110
+ labelText="searchbar"
111
+ onSubmit={searchBarSubmit}
112
+ selectProps={selectProps}
113
+ textInputProps={textInputProps}
114
+ helperErrorText={helperErrorText}
115
+ invalidText={invalidText}
116
+ isInvalid
117
+ />
118
+ );
119
+ expect(
120
+ screen.queryByText("There is an error related to this field.")
121
+ ).not.toBeInTheDocument();
122
+ });
123
+
105
124
  it("calls the callback function on submit ", () => {
106
125
  render(
107
126
  <SearchBar
@@ -40,6 +40,11 @@ import DSProvider from "../../theme/provider";
40
40
 
41
41
  # SearchBar
42
42
 
43
+ | Component Version | DS Version |
44
+ | ----------------- | ---------- |
45
+ | Added | `0.0.4` |
46
+ | Latest | `0.25.4` |
47
+
43
48
  <Description of={SearchBar} />
44
49
 
45
50
  The main wrapper element that is rendered is a `<form>` DOM element. All the
@@ -51,6 +56,9 @@ based on the required props.
51
56
  The `Select` dropdown narrows the search within a specific category, typically
52
57
  title or author. Toggle the `Select` through the Controls.
53
58
 
59
+ Note: The labels for the `Select` and `TextInput` components are not visible but
60
+ aria-labels are used to make these children components accessible.
61
+
54
62
  export const optionsGroup = [
55
63
  "Art",
56
64
  "Bushes",
@@ -68,13 +76,13 @@ export const optionsGroup = [
68
76
  <Story
69
77
  name="Basic"
70
78
  args={{
71
- showHelperText: true,
72
- showSelect: true,
79
+ helperErrorText: "Search for items in Animal Crossing New Horizons",
73
80
  invalidText: "Could not find the item :(",
74
81
  isDisabled: false,
75
82
  isInvalid: false,
76
83
  isRequired: false,
77
- helperErrorText: "Search for items in Animal Crossing New Horizons",
84
+ showHelperText: true,
85
+ showSelect: true,
78
86
  }}
79
87
  >
80
88
  {(args) => (
@@ -83,13 +91,14 @@ export const optionsGroup = [
83
91
  {...args}
84
92
  selectProps={
85
93
  args.showSelect && {
86
- name: "nhItemSearch",
87
94
  labelText: "Select a category",
95
+ name: "selectName",
88
96
  optionsData: optionsGroup,
89
97
  }
90
98
  }
91
99
  textInputProps={{
92
100
  labelText: "Item Search",
101
+ name: "textInputName",
93
102
  placeholder: "Item Search",
94
103
  }}
95
104
  helperErrorText={args.showHelperText && args.helperErrorText}
@@ -127,14 +136,19 @@ const selectProps = {
127
136
  ### TextInput Component
128
137
 
129
138
  To render the `TextInput` component, an object must be passed to the
130
- `textInputProps` prop. It _must_ include `labelText` and `placeholder`
139
+ `textInputProps` prop. It _must_ include `labelText`, `name`, and `placeholder`
131
140
  properties. The `labelText` value won't be rendered but will be used for its
132
- `aria-label` attribute.
141
+ `aria-label` attribute. Optional values to pass include `onChange` and `value`.
133
142
 
134
143
  ```
135
144
  const textInputProps = {
136
145
  labelText: "Item Search",
146
+ name: "textInputName",
147
+ onChange: (event) => {
148
+ console.log(event.target.value);
149
+ },
137
150
  placeholder: "Item Search",
151
+ value: "Horizon"
138
152
  };
139
153
 
140
154
  // ...
@@ -202,8 +216,8 @@ precedence.
202
216
  <Story
203
217
  name="Search Autocomplete"
204
218
  args={{
205
- isInvalid: false,
206
219
  isDisabled: false,
220
+ isInvalid: false,
207
221
  isRequired: false,
208
222
  }}
209
223
  >
@@ -237,9 +251,10 @@ handle the error state yourself.
237
251
  onSubmit={() => {}}
238
252
  textInputProps={{
239
253
  labelText: "Item Search",
254
+ name: "textInputName",
240
255
  placeholder: "Item Search",
241
256
  }}
242
- helperErrorText="Sorry, we can't find that item!"
257
+ helperErrorText="This is the helper text!"
243
258
  invalidText="Could not find the item :("
244
259
  isInvalid
245
260
  />
@@ -258,6 +273,7 @@ handle the disabled state yourself.
258
273
  obSubmit={() => {}}
259
274
  textInputProps={{
260
275
  labelText: "Item Search",
276
+ name: "textInputName",
261
277
  placeholder: "Item Search",
262
278
  }}
263
279
  helperErrorText="Reason for disabled state."
@@ -265,3 +281,92 @@ handle the disabled state yourself.
265
281
  />
266
282
  </DSProvider>
267
283
  </Canvas>
284
+
285
+ ### TextInput and onSubmit Values
286
+
287
+ _NOTE: open the browser console to see the values logged in the example below._
288
+
289
+ It is possible to get certain values from the `SearchBar` component by passing
290
+ callback functions as props.
291
+
292
+ The keyword value in the `TextInput` component can be accessed by passing a
293
+ function to the `onChange` property in the `textInputProp` prop. This is useful
294
+ for validating the keyword the user entered.
295
+
296
+ To get values when the form is submitted, you must:
297
+
298
+ - pass values for the `name` property in the `selectProps` and `textInputProps`
299
+ prop objects.
300
+ - get the values returned in the `onSubmit` callback function.
301
+
302
+ In the following example, the `name` for the `Select` is "selectName" and the
303
+ `name` for the `TextInput` is "textInputName". The `onSubmit` function can get
304
+ the submitted values through the `event` object. In the example below, the
305
+ values can be retrieved as `event.target.selectName.value` and
306
+ `event.target.textInputName.value`.
307
+
308
+ ```tsx
309
+ function SearchBarValueExample() {
310
+ const textInputOnChange = (event) => {
311
+ console.log(`onChange TextInput value: ${event.target.value}`);
312
+ };
313
+ const onSubmit = (event) => {
314
+ event.preventDefault();
315
+ console.log(`onSubmit Select value: ${event.target.searchName.value}`);
316
+ console.log(`onSubmit TextInput value ${event.target.textInputName.value}`);
317
+ };
318
+ return (
319
+ <SearchBar
320
+ onSubmit={onSubmit}
321
+ selectProps={{
322
+ labelText: "Select a category",
323
+ name: "selectName",
324
+ optionsData: optionsGroup,
325
+ }}
326
+ textInputProps={{
327
+ labelText: "Item Search",
328
+ name: "textInputName",
329
+ onChange: textInputOnChange,
330
+ placeholder: "Item Search",
331
+ }}
332
+ helperErrorText="Search for an item"
333
+ invalidText="Could not find the item :("
334
+ />
335
+ );
336
+ }
337
+ ```
338
+
339
+ export function SearchBarValueExample() {
340
+ const textInputOnChange = (event) => {
341
+ console.log(`onChange TextInput value: ${event.target.value}`);
342
+ };
343
+ const onSubmit = (event) => {
344
+ event.preventDefault();
345
+ console.log(`onSubmit Select value: ${event.target.selectName.value}`);
346
+ console.log(`onSubmit TextInput value ${event.target.textInputName.value}`);
347
+ };
348
+ return (
349
+ <SearchBar
350
+ onSubmit={onSubmit}
351
+ selectProps={{
352
+ labelText: "Select a category",
353
+ name: "selectName",
354
+ optionsData: optionsGroup,
355
+ }}
356
+ textInputProps={{
357
+ labelText: "Item Search",
358
+ name: "textInputName",
359
+ onChange: textInputOnChange,
360
+ placeholder: "Item Search",
361
+ }}
362
+ helperErrorText="Search for an item"
363
+ invalidText="Could not find the item :("
364
+ />
365
+ );
366
+ }
367
+
368
+ <Canvas>
369
+ <DSProvider>
370
+ <SearchBarValueExample />
371
+ </DSProvider>
372
+ </Canvas>
@@ -20,7 +20,14 @@ interface SelectProps {
20
20
  }
21
21
  interface TextInputProps {
22
22
  labelText: string;
23
+ name: string;
24
+ onChange?: (
25
+ event:
26
+ | React.ChangeEvent<HTMLInputElement>
27
+ | React.ChangeEvent<HTMLTextAreaElement>
28
+ ) => void;
23
29
  placeholder: string;
30
+ value?: string;
24
31
  }
25
32
 
26
33
  export interface SearchBarProps {
@@ -51,9 +58,6 @@ export interface SearchBarProps {
51
58
  onSubmit: (event: React.FormEvent) => void;
52
59
  /** Required props to render a `Select` element. */
53
60
  selectProps?: SelectProps | undefined;
54
- /** Will be used to visually display the label text for this
55
- * `SearchBar` component. False by default. */
56
- showLabel?: boolean;
57
61
  /** Custom input element to render instead of a `TextInput` element. */
58
62
  textInputElement?: JSX.Element;
59
63
  /** Required props to render a `TextInput` element. */
@@ -83,7 +87,14 @@ export default function SearchBar(props: SearchBarProps) {
83
87
  textInputProps,
84
88
  } = props;
85
89
  const styles = useMultiStyleConfig("SearchBar", { hasSelect: selectProps });
86
- const stateProps = { isDisabled, isInvalid, isRequired };
90
+ const stateProps = {
91
+ helperText: "",
92
+ isDisabled,
93
+ isInvalid,
94
+ isRequired,
95
+ showHelperInvalidText: false,
96
+ showLabel: false,
97
+ };
87
98
  const helperErrorTextID = generateUUID();
88
99
  const ariaDescribedby = helperErrorTextID;
89
100
  const footnote = isInvalid ? invalidText : helperErrorText;
@@ -94,8 +105,6 @@ export default function SearchBar(props: SearchBarProps) {
94
105
  id={generateUUID()}
95
106
  name={selectProps?.name}
96
107
  labelText={selectProps?.labelText}
97
- showLabel={false}
98
- helperText=""
99
108
  type={SelectTypes.SearchBar}
100
109
  {...stateProps}
101
110
  >
@@ -112,14 +121,15 @@ export default function SearchBar(props: SearchBarProps) {
112
121
  id={generateUUID()}
113
122
  labelText={textInputProps?.labelText}
114
123
  placeholder={textInputProps?.placeholder}
124
+ onChange={textInputProps?.onChange}
125
+ name={textInputProps?.name}
115
126
  type={TextInputTypes.text}
116
127
  variantType={
117
128
  selectElem
118
129
  ? TextInputVariants.SearchBarSelect
119
130
  : TextInputVariants.SearchBar
120
131
  }
121
- helperText=""
122
- showLabel={false}
132
+ value={textInputProps?.value}
123
133
  {...stateProps}
124
134
  />
125
135
  );
@@ -130,7 +140,7 @@ export default function SearchBar(props: SearchBarProps) {
130
140
  buttonType={ButtonTypes.SearchBar}
131
141
  type="submit"
132
142
  onClick={buttonOnClick}
133
- disabled={isDisabled}
143
+ isDisabled={isDisabled}
134
144
  >
135
145
  <Icon
136
146
  name={IconNames.Search}
@@ -142,7 +152,7 @@ export default function SearchBar(props: SearchBarProps) {
142
152
  );
143
153
  // Render the `HelperErrorText` component.
144
154
  const helperErrorTextElem = footnote && (
145
- <HelperErrorText id={helperErrorTextID} isError={isInvalid}>
155
+ <HelperErrorText id={helperErrorTextID} isInvalid={isInvalid}>
146
156
  {footnote}
147
157
  </HelperErrorText>
148
158
  );
@@ -149,6 +149,18 @@ describe("Select", () => {
149
149
  ).toBeInTheDocument();
150
150
  });
151
151
 
152
+ it("does not render the error text when 'isInvalid' is true and 'showHelperInvalidText' is false", () => {
153
+ render(
154
+ <Select {...baseProps} showHelperInvalidText={false} isInvalid>
155
+ {baseOptions}
156
+ </Select>
157
+ );
158
+
159
+ expect(
160
+ screen.queryByText("There is an error related to this field.")
161
+ ).not.toBeInTheDocument();
162
+ });
163
+
152
164
  it("renders custom error text when 'invalidText' prop is passed and 'isInvalid' prop is set to true", () => {
153
165
  render(
154
166
  <Select
@@ -38,6 +38,8 @@ export interface SelectProps {
38
38
  /** The callback function to get the selected value.
39
39
  * Should be passed along with `value` for controlled components. */
40
40
  onChange?: (event: React.FormEvent) => void;
41
+ /** Offers the ability to hide the helper/invalid text. */
42
+ showHelperInvalidText?: boolean;
41
43
  /** Offers the ability to show the select's label onscreen or hide it. Refer
42
44
  * to the `labelText` property for more information. */
43
45
  showLabel?: boolean;
@@ -70,6 +72,7 @@ const Select = React.forwardRef<
70
72
  labelText,
71
73
  name,
72
74
  onChange,
75
+ showHelperInvalidText = true,
73
76
  showLabel = true,
74
77
  showOptReqLabel = true,
75
78
  type = SelectTypes.Default,
@@ -131,9 +134,9 @@ const Select = React.forwardRef<
131
134
  >
132
135
  {children}
133
136
  </ChakraSelect>
134
- {footnote && (
137
+ {footnote && showHelperInvalidText && (
135
138
  <Box __css={styles.helper} aria-disabled={isDisabled}>
136
- <HelperErrorText isError={isInvalid} id={id + `-helperText`}>
139
+ <HelperErrorText isInvalid={isInvalid} id={id + `-helperText`}>
137
140
  {footnote}
138
141
  </HelperErrorText>
139
142
  </Box>
@@ -1,3 +1,4 @@
1
+ // Only used for internal purposes.
1
2
  export enum SelectTypes {
2
3
  Default = "default",
3
4
  SearchBar = "searchbar",