@nypl/design-system-react-components 0.25.8 → 0.25.11

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 (282) hide show
  1. package/CHANGELOG.md +110 -1
  2. package/README.md +1 -1
  3. package/dist/components/Button/Button.d.ts +6 -6
  4. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  5. package/dist/components/Card/Card.d.ts +6 -4
  6. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  7. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  8. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  9. package/dist/components/DatePicker/DatePicker.d.ts +4 -3
  10. package/dist/components/Fieldset/Fieldset.d.ts +1 -3
  11. package/dist/components/Form/Form.d.ts +15 -14
  12. package/dist/components/Form/FormTypes.d.ts +2 -2
  13. package/dist/components/Heading/Heading.d.ts +7 -3
  14. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  15. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  16. package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
  17. package/dist/components/Icons/Icon.d.ts +4 -4
  18. package/dist/components/Icons/IconSvgs.d.ts +0 -21
  19. package/dist/components/Icons/IconTypes.d.ts +0 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/List/List.d.ts +1 -1
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +34 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +46 -0
  25. package/dist/components/Modal/Modal.d.ts +0 -4
  26. package/dist/components/Notification/Notification.d.ts +4 -2
  27. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  28. package/dist/components/Radio/Radio.d.ts +6 -5
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
  30. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  31. package/dist/components/Select/Select.d.ts +7 -2
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  33. package/dist/components/Slider/Slider.d.ts +3 -2
  34. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  35. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  36. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  37. package/dist/components/Table/Table.d.ts +29 -0
  38. package/dist/components/Template/Template.d.ts +30 -6
  39. package/dist/components/Text/Text.d.ts +2 -2
  40. package/dist/components/TextInput/TextInput.d.ts +4 -3
  41. package/dist/components/Toggle/Toggle.d.ts +3 -2
  42. package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
  43. package/dist/design-system-react-components.cjs.development.js +6721 -5777
  44. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  45. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  47. package/dist/design-system-react-components.esm.js +6774 -5839
  48. package/dist/design-system-react-components.esm.js.map +1 -1
  49. package/dist/index.d.ts +10 -8
  50. package/dist/resources.scss +0 -2
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +1 -1
  53. package/dist/theme/components/button.d.ts +0 -12
  54. package/dist/theme/components/card.d.ts +14 -2
  55. package/dist/theme/components/customTable.d.ts +56 -0
  56. package/dist/theme/components/fieldset.d.ts +2 -2
  57. package/dist/theme/components/global.d.ts +1 -1
  58. package/dist/theme/components/heading.d.ts +4 -0
  59. package/dist/theme/components/label.d.ts +1 -1
  60. package/dist/theme/components/link.d.ts +14 -1
  61. package/dist/theme/components/list.d.ts +0 -2
  62. package/dist/theme/components/logo.d.ts +4 -0
  63. package/dist/theme/components/notification.d.ts +13 -4
  64. package/dist/theme/components/searchBar.d.ts +9 -11
  65. package/dist/theme/components/select.d.ts +1 -0
  66. package/dist/theme/components/structuredContent.d.ts +33 -0
  67. package/dist/theme/components/template.d.ts +10 -10
  68. package/dist/theme/components/textInput.d.ts +4 -0
  69. package/dist/theme/components/toggle.d.ts +8 -5
  70. package/dist/utils/utils.d.ts +10 -0
  71. package/package.json +40 -37
  72. package/src/__tests__/utils/utils.test.ts +23 -1
  73. package/src/components/Accordion/Accordion.stories.mdx +15 -13
  74. package/src/components/Accordion/Accordion.test.tsx +45 -1
  75. package/src/components/Accordion/Accordion.tsx +20 -8
  76. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  77. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  78. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  79. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  80. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  81. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +15 -0
  82. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  83. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
  84. package/src/components/Button/Button.stories.mdx +93 -48
  85. package/src/components/Button/Button.test.tsx +0 -12
  86. package/src/components/Button/Button.tsx +7 -7
  87. package/src/components/Button/ButtonTypes.tsx +0 -1
  88. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  89. package/src/components/Card/Card.stories.mdx +186 -71
  90. package/src/components/Card/Card.test.tsx +45 -22
  91. package/src/components/Card/Card.tsx +21 -6
  92. package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
  93. package/src/components/Chakra/Box.stories.mdx +3 -3
  94. package/src/components/Chakra/Center.stories.mdx +5 -5
  95. package/src/components/Chakra/Flex.stories.mdx +113 -0
  96. package/src/components/Chakra/Grid.stories.mdx +3 -3
  97. package/src/components/Chakra/Stack.stories.mdx +2 -2
  98. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  99. package/src/components/Checkbox/Checkbox.tsx +13 -8
  100. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  101. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  102. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  103. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  104. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  105. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  106. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  107. package/src/components/DatePicker/DatePicker.test.tsx +6 -6
  108. package/src/components/DatePicker/DatePicker.tsx +17 -11
  109. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
  110. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  111. package/src/components/Fieldset/Fieldset.tsx +2 -4
  112. package/src/components/Form/Form.stories.mdx +75 -49
  113. package/src/components/Form/Form.test.tsx +92 -3
  114. package/src/components/Form/Form.tsx +28 -23
  115. package/src/components/Form/FormTypes.tsx +2 -2
  116. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  117. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  118. package/src/components/Heading/Heading.stories.mdx +59 -23
  119. package/src/components/Heading/Heading.test.tsx +82 -18
  120. package/src/components/Heading/Heading.tsx +31 -31
  121. package/src/components/Heading/HeadingTypes.tsx +6 -6
  122. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  123. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  124. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  125. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  126. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  127. package/src/components/Hero/Hero.stories.mdx +72 -53
  128. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  129. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  130. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  131. package/src/components/Icons/Icon.stories.mdx +78 -77
  132. package/src/components/Icons/Icon.test.tsx +1 -1
  133. package/src/components/Icons/Icon.tsx +5 -6
  134. package/src/components/Icons/IconSvgs.tsx +0 -42
  135. package/src/components/Icons/IconTypes.tsx +0 -24
  136. package/src/components/Image/Image.stories.mdx +66 -18
  137. package/src/components/Image/Image.tsx +21 -10
  138. package/src/components/Label/Label.stories.mdx +20 -19
  139. package/src/components/Link/Link.stories.mdx +102 -51
  140. package/src/components/Link/Link.test.tsx +38 -8
  141. package/src/components/Link/Link.tsx +19 -12
  142. package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
  143. package/src/components/List/List.stories.mdx +60 -29
  144. package/src/components/List/List.test.tsx +1 -1
  145. package/src/components/List/List.tsx +2 -2
  146. package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
  147. package/src/components/Logo/Logo.stories.mdx +222 -0
  148. package/src/components/Logo/Logo.test.tsx +98 -0
  149. package/src/components/Logo/Logo.tsx +97 -0
  150. package/src/components/Logo/LogoSvgs.tsx +66 -0
  151. package/src/components/Logo/LogoTypes.tsx +48 -0
  152. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  153. package/src/components/Modal/Modal.stories.mdx +20 -5
  154. package/src/components/Modal/Modal.tsx +2 -8
  155. package/src/components/Notification/Notification.stories.mdx +128 -38
  156. package/src/components/Notification/Notification.test.tsx +49 -1
  157. package/src/components/Notification/Notification.tsx +25 -12
  158. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
  159. package/src/components/Pagination/Pagination.stories.mdx +18 -7
  160. package/src/components/Pagination/Pagination.tsx +3 -3
  161. package/src/components/Placeholder/Placeholder.tsx +7 -14
  162. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
  163. package/src/components/Radio/Radio.stories.mdx +39 -19
  164. package/src/components/Radio/Radio.tsx +13 -9
  165. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  166. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  167. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  168. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  169. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  170. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  171. package/src/components/SearchBar/SearchBar.stories.mdx +115 -33
  172. package/src/components/SearchBar/SearchBar.tsx +72 -51
  173. package/src/components/Select/Select.stories.mdx +48 -14
  174. package/src/components/Select/Select.test.tsx +89 -0
  175. package/src/components/Select/Select.tsx +27 -12
  176. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  177. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  178. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  179. package/src/components/Slider/Slider.stories.mdx +72 -22
  180. package/src/components/Slider/Slider.tsx +15 -10
  181. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  182. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  183. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  184. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  185. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  186. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  187. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  188. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  189. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  190. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  191. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  192. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  193. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  194. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  195. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  196. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  197. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  198. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  199. package/src/components/Table/Table.stories.mdx +165 -0
  200. package/src/components/Table/Table.test.tsx +137 -0
  201. package/src/components/Table/Table.tsx +126 -0
  202. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  203. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  204. package/src/components/Tabs/Tabs.test.tsx +21 -5
  205. package/src/components/Tabs/Tabs.tsx +35 -20
  206. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  207. package/src/components/Template/Template.stories.mdx +132 -48
  208. package/src/components/Template/Template.test.tsx +128 -6
  209. package/src/components/Template/Template.tsx +93 -13
  210. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  211. package/src/components/Text/Text.stories.mdx +33 -11
  212. package/src/components/Text/Text.tsx +2 -2
  213. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  214. package/src/components/TextInput/TextInput.test.tsx +96 -0
  215. package/src/components/TextInput/TextInput.tsx +12 -8
  216. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  217. package/src/components/Toggle/Toggle.stories.mdx +33 -9
  218. package/src/components/Toggle/Toggle.tsx +14 -9
  219. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
  220. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
  222. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
  223. package/src/docs/Chakra.stories.mdx +5 -8
  224. package/src/docs/Intro.stories.mdx +2 -2
  225. package/src/index.ts +13 -6
  226. package/src/styles/base/_03-base.scss +1 -1
  227. package/src/styles/base/_place-holder.scss +7 -7
  228. package/src/styles.scss +1 -5
  229. package/src/theme/components/breadcrumb.ts +4 -4
  230. package/src/theme/components/button.ts +5 -12
  231. package/src/theme/components/card.ts +5 -2
  232. package/src/theme/components/checkbox.ts +1 -1
  233. package/src/theme/components/customTable.ts +63 -0
  234. package/src/theme/components/datePicker.ts +1 -1
  235. package/src/theme/components/global.ts +7 -7
  236. package/src/theme/components/heading.ts +13 -11
  237. package/src/theme/components/helperErrorText.ts +1 -1
  238. package/src/theme/components/image.ts +1 -1
  239. package/src/theme/components/link.ts +17 -5
  240. package/src/theme/components/list.ts +3 -5
  241. package/src/theme/components/logo.ts +54 -0
  242. package/src/theme/components/notification.ts +19 -9
  243. package/src/theme/components/searchBar.ts +11 -13
  244. package/src/theme/components/select.ts +1 -0
  245. package/src/theme/components/statusBadge.ts +1 -1
  246. package/src/theme/components/structuredContent.ts +74 -0
  247. package/src/theme/components/template.ts +10 -10
  248. package/src/theme/components/text.ts +6 -6
  249. package/src/theme/components/textInput.ts +2 -0
  250. package/src/theme/components/toggle.ts +10 -6
  251. package/src/theme/components/videoPlayer.ts +0 -2
  252. package/src/theme/foundations/global.ts +2 -2
  253. package/src/theme/foundations/typography.ts +84 -12
  254. package/src/theme/index.ts +6 -0
  255. package/src/utils/componentCategories.ts +2 -1
  256. package/src/utils/utils.ts +17 -0
  257. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  258. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  259. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  260. package/dist/components/Input/Input.d.ts +0 -36
  261. package/dist/components/Input/Input.stories.d.ts +0 -29
  262. package/dist/components/Input/InputTypes.d.ts +0 -6
  263. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  264. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  265. package/dist/helpers/getCSSVariable.d.ts +0 -1
  266. package/dist/interfaces.d.ts +0 -3
  267. package/dist/utils/bem.d.ts +0 -1
  268. package/src/__tests__/utils/bem.test.ts +0 -37
  269. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  270. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  271. package/src/components/CardEdition/CardEdition.tsx +0 -60
  272. package/src/components/CardEdition/_CardEdition.scss +0 -137
  273. package/src/components/Input/Input.stories.tsx +0 -133
  274. package/src/components/Input/Input.test.tsx +0 -266
  275. package/src/components/Input/Input.tsx +0 -81
  276. package/src/components/Input/InputTypes.tsx +0 -8
  277. package/src/components/Input/_Input.scss +0 -78
  278. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  279. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  280. package/src/helpers/getCSSVariable.tsx +0 -5
  281. package/src/interfaces.ts +0 -3
  282. package/src/utils/bem.ts +0 -44
@@ -1,6 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { render, screen, fireEvent } from "@testing-library/react";
3
3
  import { axe } from "jest-axe";
4
+ import renderer from "react-test-renderer";
4
5
  import userEvent from "@testing-library/user-event";
5
6
 
6
7
  import TextInput from "./TextInput";
@@ -368,3 +369,98 @@ describe("Textarea element type", () => {
368
369
  expect(screen.getByLabelText(/Custom textarea Label/i)).toBeInTheDocument();
369
370
  });
370
371
  });
372
+
373
+ describe("UI Snapshots", () => {
374
+ it("renders the text input UI snapshot correctly", () => {
375
+ const required = renderer
376
+ .create(
377
+ <TextInput
378
+ id="myTextInput"
379
+ isRequired
380
+ labelText="Custom Input Label"
381
+ placeholder="Input Placeholder"
382
+ type={TextInputTypes.text}
383
+ />
384
+ )
385
+ .toJSON();
386
+ const optional = renderer
387
+ .create(
388
+ <TextInput
389
+ id="myTextInput"
390
+ labelText="Custom Input Label"
391
+ placeholder="Input Placeholder"
392
+ type={TextInputTypes.text}
393
+ />
394
+ )
395
+ .toJSON();
396
+ const hiddenLabelText = renderer
397
+ .create(
398
+ <TextInput
399
+ id="myTextInput"
400
+ isRequired
401
+ labelText="Custom Input Label"
402
+ placeholder="Input Placeholder"
403
+ showLabel={false}
404
+ type={TextInputTypes.text}
405
+ />
406
+ )
407
+ .toJSON();
408
+ const withHelperText = renderer
409
+ .create(
410
+ <TextInput
411
+ helperText="Custom helper text"
412
+ id="myTextInput"
413
+ isRequired
414
+ labelText="Custom Input Label"
415
+ placeholder="Input Placeholder"
416
+ type={TextInputTypes.text}
417
+ />
418
+ )
419
+ .toJSON();
420
+ const errorState = renderer
421
+ .create(
422
+ <TextInput
423
+ id="myTextInput"
424
+ isInvalid
425
+ isRequired
426
+ labelText="Custom Input Label"
427
+ placeholder="Input Placeholder"
428
+ type={TextInputTypes.text}
429
+ />
430
+ )
431
+ .toJSON();
432
+ const disabledState = renderer
433
+ .create(
434
+ <TextInput
435
+ id="myTextInput"
436
+ isDisabled
437
+ isRequired
438
+ labelText="Custom Input Label"
439
+ placeholder="Input Placeholder"
440
+ type={TextInputTypes.text}
441
+ />
442
+ )
443
+ .toJSON();
444
+
445
+ expect(required).toMatchSnapshot();
446
+ expect(optional).toMatchSnapshot();
447
+ expect(hiddenLabelText).toMatchSnapshot();
448
+ expect(withHelperText).toMatchSnapshot();
449
+ expect(errorState).toMatchSnapshot();
450
+ expect(disabledState).toMatchSnapshot();
451
+ });
452
+ it("renders the textarea UI snapshot correctly", () => {
453
+ const basicTextarea = renderer
454
+ .create(
455
+ <TextInput
456
+ id="myTextarea"
457
+ labelText="Custom textarea Label"
458
+ placeholder="Textarea Placeholder"
459
+ type={TextInputTypes.textarea}
460
+ />
461
+ )
462
+ .toJSON();
463
+
464
+ expect(basicTextarea).toMatchSnapshot();
465
+ });
466
+ });
@@ -12,7 +12,9 @@ import {
12
12
  TextInputVariants,
13
13
  } from "./TextInputTypes";
14
14
  import Label from "../Label/Label";
15
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
15
+ import HelperErrorText, {
16
+ HelperErrorTextType,
17
+ } from "../HelperErrorText/HelperErrorText";
16
18
  import generateUUID from "../../helpers/generateUUID";
17
19
 
18
20
  export interface InputProps {
@@ -25,11 +27,11 @@ export interface InputProps {
25
27
  /** The starting value of the input field. */
26
28
  defaultValue?: string;
27
29
  /** Populates the HelperErrorText for the standard state */
28
- helperText?: string;
30
+ helperText?: HelperErrorTextType;
29
31
  /** ID that other components can cross reference for accessibility purposes */
30
32
  id?: string;
31
33
  /** Populates the HelperErrorText for the error state */
32
- invalidText?: string;
34
+ invalidText?: HelperErrorTextType;
33
35
  /** Adds the `disabled` and `aria-disabled` prop to the input when true */
34
36
  isDisabled?: boolean;
35
37
  /** Adds errored styling to the input/textarea and helper text elements */
@@ -63,7 +65,7 @@ export interface InputProps {
63
65
  type?: TextInputTypes;
64
66
  /** Populates the value of the input/textarea elements */
65
67
  value?: string;
66
- /** The variant to display. */
68
+ /** FOR INTERNAL DS USE ONLY: the input variant to display. */
67
69
  variantType?: TextInputVariants;
68
70
  }
69
71
 
@@ -111,7 +113,7 @@ const TextInput = React.forwardRef<TextInputRefType, InputProps>(
111
113
  const finalInvalidText = invalidText
112
114
  ? invalidText
113
115
  : "There is an error related to this field.";
114
- let footnote: string | React.ReactNode = isInvalid
116
+ let footnote: HelperErrorTextType = isInvalid
115
117
  ? finalInvalidText
116
118
  : helperText;
117
119
  let fieldOutput;
@@ -184,9 +186,11 @@ const TextInput = React.forwardRef<TextInputRefType, InputProps>(
184
186
  {fieldOutput}
185
187
  {footnote && showHelperInvalidText && !isHidden && (
186
188
  <Box __css={finalStyles.helper} aria-disabled={isDisabled}>
187
- <HelperErrorText isInvalid={isInvalid} id={`${id}-helperText`}>
188
- {footnote}
189
- </HelperErrorText>
189
+ <HelperErrorText
190
+ id={`${id}-helperText`}
191
+ isInvalid={isInvalid}
192
+ text={footnote}
193
+ />
190
194
  </Box>
191
195
  )}
192
196
  </Box>
@@ -0,0 +1,240 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`UI Snapshots renders the text input UI snapshot correctly 1`] = `
4
+ <div
5
+ className="css-0"
6
+ >
7
+ <label
8
+ className="css-0"
9
+ htmlFor="myTextInput"
10
+ id="myTextInput-label"
11
+ >
12
+ Custom Input Label
13
+ <div
14
+ className="css-0"
15
+ >
16
+ Required
17
+ </div>
18
+ </label>
19
+ <input
20
+ aria-required={true}
21
+ className="chakra-input css-0"
22
+ disabled={false}
23
+ id="myTextInput"
24
+ onBlur={[Function]}
25
+ onFocus={[Function]}
26
+ placeholder="Input Placeholder"
27
+ required={true}
28
+ step={null}
29
+ type="text"
30
+ />
31
+ </div>
32
+ `;
33
+
34
+ exports[`UI Snapshots renders the text input UI snapshot correctly 2`] = `
35
+ <div
36
+ className="css-0"
37
+ >
38
+ <label
39
+ className="css-0"
40
+ htmlFor="myTextInput"
41
+ id="myTextInput-label"
42
+ >
43
+ Custom Input Label
44
+ <div
45
+ className="css-0"
46
+ >
47
+ Optional
48
+ </div>
49
+ </label>
50
+ <input
51
+ className="chakra-input css-0"
52
+ disabled={false}
53
+ id="myTextInput"
54
+ onBlur={[Function]}
55
+ onFocus={[Function]}
56
+ placeholder="Input Placeholder"
57
+ required={false}
58
+ step={null}
59
+ type="text"
60
+ />
61
+ </div>
62
+ `;
63
+
64
+ exports[`UI Snapshots renders the text input UI snapshot correctly 3`] = `
65
+ <div
66
+ className="css-0"
67
+ >
68
+ <input
69
+ aria-label="Custom Input Label"
70
+ aria-required={true}
71
+ className="chakra-input css-0"
72
+ disabled={false}
73
+ id="myTextInput"
74
+ onBlur={[Function]}
75
+ onFocus={[Function]}
76
+ placeholder="Input Placeholder"
77
+ required={true}
78
+ step={null}
79
+ type="text"
80
+ />
81
+ </div>
82
+ `;
83
+
84
+ exports[`UI Snapshots renders the text input UI snapshot correctly 4`] = `
85
+ <div
86
+ className="css-0"
87
+ >
88
+ <label
89
+ className="css-0"
90
+ htmlFor="myTextInput"
91
+ id="myTextInput-label"
92
+ >
93
+ Custom Input Label
94
+ <div
95
+ className="css-0"
96
+ >
97
+ Required
98
+ </div>
99
+ </label>
100
+ <input
101
+ aria-describedby="myTextInput-helperText"
102
+ aria-required={true}
103
+ className="chakra-input css-0"
104
+ disabled={false}
105
+ id="myTextInput"
106
+ onBlur={[Function]}
107
+ onFocus={[Function]}
108
+ placeholder="Input Placeholder"
109
+ required={true}
110
+ step={null}
111
+ type="text"
112
+ />
113
+ <div
114
+ aria-disabled={false}
115
+ className="css-0"
116
+ >
117
+ <div
118
+ aria-atomic={true}
119
+ aria-live="off"
120
+ className=" css-0"
121
+ dangerouslySetInnerHTML={
122
+ Object {
123
+ "__html": "Custom helper text",
124
+ }
125
+ }
126
+ data-isinvalid={false}
127
+ id="myTextInput-helperText"
128
+ />
129
+ </div>
130
+ </div>
131
+ `;
132
+
133
+ exports[`UI Snapshots renders the text input UI snapshot correctly 5`] = `
134
+ <div
135
+ className="css-0"
136
+ >
137
+ <label
138
+ className="css-0"
139
+ htmlFor="myTextInput"
140
+ id="myTextInput-label"
141
+ >
142
+ Custom Input Label
143
+ <div
144
+ className="css-0"
145
+ >
146
+ Required
147
+ </div>
148
+ </label>
149
+ <input
150
+ aria-invalid={true}
151
+ aria-required={true}
152
+ className="chakra-input css-0"
153
+ disabled={false}
154
+ id="myTextInput"
155
+ onBlur={[Function]}
156
+ onFocus={[Function]}
157
+ placeholder="Input Placeholder"
158
+ required={true}
159
+ step={null}
160
+ type="text"
161
+ />
162
+ <div
163
+ aria-disabled={false}
164
+ className="css-0"
165
+ >
166
+ <div
167
+ aria-atomic={true}
168
+ aria-live="polite"
169
+ className=" css-0"
170
+ dangerouslySetInnerHTML={
171
+ Object {
172
+ "__html": "There is an error related to this field.",
173
+ }
174
+ }
175
+ data-isinvalid={true}
176
+ id="myTextInput-helperText"
177
+ />
178
+ </div>
179
+ </div>
180
+ `;
181
+
182
+ exports[`UI Snapshots renders the text input UI snapshot correctly 6`] = `
183
+ <div
184
+ className="css-0"
185
+ >
186
+ <label
187
+ className="css-0"
188
+ htmlFor="myTextInput"
189
+ id="myTextInput-label"
190
+ >
191
+ Custom Input Label
192
+ <div
193
+ className="css-0"
194
+ >
195
+ Required
196
+ </div>
197
+ </label>
198
+ <input
199
+ aria-required={true}
200
+ className="chakra-input css-0"
201
+ disabled={true}
202
+ id="myTextInput"
203
+ onBlur={[Function]}
204
+ onFocus={[Function]}
205
+ placeholder="Input Placeholder"
206
+ required={true}
207
+ step={null}
208
+ type="text"
209
+ />
210
+ </div>
211
+ `;
212
+
213
+ exports[`UI Snapshots renders the textarea UI snapshot correctly 1`] = `
214
+ <div
215
+ className="css-0"
216
+ >
217
+ <label
218
+ className="css-0"
219
+ htmlFor="myTextarea"
220
+ id="myTextarea-label"
221
+ >
222
+ Custom textarea Label
223
+ <div
224
+ className="css-0"
225
+ >
226
+ Optional
227
+ </div>
228
+ </label>
229
+ <textarea
230
+ className="chakra-textarea css-0"
231
+ disabled={false}
232
+ id="myTextarea"
233
+ onBlur={[Function]}
234
+ onFocus={[Function]}
235
+ placeholder="Textarea Placeholder"
236
+ required={false}
237
+ step={null}
238
+ />
239
+ </div>
240
+ `;
@@ -1,18 +1,25 @@
1
+ import { HStack, VStack, Grid, Box } from "@chakra-ui/react";
1
2
  import {
2
3
  Meta,
3
4
  Story,
4
5
  Canvas,
5
6
  ArgsTable,
6
7
  Description,
7
- } from "@storybook/addon-docs/blocks";
8
+ } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
- import { HStack, VStack, Grid, Box } from "@chakra-ui/react";
10
+
10
11
  import Heading from "../Heading/Heading";
11
12
  import SimpleGrid from "../Grid/SimpleGrid";
12
- import { getCategory } from "../../utils/componentCategories";
13
- import DSProvider from "../../theme/provider";
14
13
  import Toggle from "./Toggle";
15
14
  import { ToggleSizes } from "./ToggleSizes";
15
+ import { getCategory } from "../../utils/componentCategories";
16
+ import DSProvider from "../../theme/provider";
17
+ import { getStorybookEnumValues } from "../../utils/utils";
18
+
19
+ export const sizeEnumValues = getStorybookEnumValues(
20
+ ToggleSizes,
21
+ "ToggleSizes"
22
+ );
16
23
 
17
24
  <Meta
18
25
  title={getCategory("Toggle")}
@@ -26,8 +33,20 @@ import { ToggleSizes } from "./ToggleSizes";
26
33
  jest: ["Toggle.test.tsx"],
27
34
  }}
28
35
  argTypes={{
36
+ additionalStyles: { control: false },
37
+ defaultChecked: { control: false },
29
38
  id: { control: false },
30
- className: { control: false },
39
+ key: { table: { disable: true } },
40
+ name: { control: false },
41
+ onChange: { control: false },
42
+ ref: { table: { disable: true } },
43
+ size: {
44
+ control: {
45
+ type: "select",
46
+ table: { defaultValue: { summary: "ToggleSizes.Large" } },
47
+ options: sizeEnumValues.options,
48
+ },
49
+ },
31
50
  }}
32
51
  />
33
52
 
@@ -36,7 +55,7 @@ import { ToggleSizes } from "./ToggleSizes";
36
55
  | Component Version | DS Version |
37
56
  | ----------------- | ---------- |
38
57
  | Added | `0.25.8` |
39
- | Latest | `0.25.8` |
58
+ | Latest | `0.25.10` |
40
59
 
41
60
  <Description of={Toggle} />
42
61
 
@@ -52,17 +71,22 @@ The Toggle component label should clarify the action being performed. Labels sho
52
71
  <Story
53
72
  name="Toggle"
54
73
  args={{
55
- labelText: "Test Label",
56
- size: "large",
74
+ additionalStyles: undefined,
57
75
  defaultChecked: false,
58
76
  helperText: "This is the helper text!",
77
+ id: "toggle-1",
59
78
  invalidText: "",
79
+ isChecked: undefined,
60
80
  isDisabled: false,
61
81
  isInvalid: false,
62
82
  isRequired: false,
83
+ labelText: "Test Label",
84
+ name: "toggle-1",
85
+ onChange: undefined,
86
+ size: "ToogleSizes.Large",
63
87
  }}
64
88
  >
65
- {(args) => <Toggle {...args} />}
89
+ {(args) => <Toggle {...args} size={sizeEnumValues.getValue(args.size)} />}
66
90
  </Story>
67
91
  </Canvas>
68
92
 
@@ -1,13 +1,16 @@
1
- import * as React from "react";
2
1
  import {
3
2
  Box,
4
3
  Switch,
5
4
  useMultiStyleConfig,
6
5
  useStyleConfig,
7
6
  } from "@chakra-ui/react";
8
- import generateUUID from "../../helpers/generateUUID";
7
+ import * as React from "react";
8
+
9
+ import HelperErrorText, {
10
+ HelperErrorTextType,
11
+ } from "../HelperErrorText/HelperErrorText";
9
12
  import { ToggleSizes } from "./ToggleSizes";
10
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
13
+ import generateUUID from "../../helpers/generateUUID";
11
14
 
12
15
  export interface ToggleProps {
13
16
  /** Optionally pass in additional Chakra-based styles. */
@@ -16,12 +19,12 @@ export interface ToggleProps {
16
19
  * If true, the toggle will be initially set to the "on" position. */
17
20
  defaultChecked?: boolean;
18
21
  /** Optional string to populate the HelperErrorText for standard state */
19
- helperText?: string;
22
+ helperText?: HelperErrorTextType;
20
23
  /** ID that other components can cross reference for accessibility purposes */
21
24
  id?: string;
22
25
  /** Optional string to populate the HelperErrorText for the error state
23
26
  * when `isInvalid` is true. */
24
- invalidText?: string;
27
+ invalidText?: HelperErrorTextType;
25
28
  /** When using the Toggle as a "controlled" form element, you can specify
26
29
  * the Toggle's checked state using this prop.
27
30
  * Learn more about controlled and uncontrolled form fields:
@@ -71,7 +74,7 @@ const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(
71
74
  onChange = onChangeDefault,
72
75
  size = ToggleSizes.Large,
73
76
  } = props;
74
- const footnote = isInvalid ? invalidText : helperText;
77
+ const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
75
78
  const ariaAttributes = {};
76
79
  const styles = useMultiStyleConfig("Toggle", {});
77
80
  const switchStyles = useStyleConfig("Switch");
@@ -105,9 +108,11 @@ const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(
105
108
  </Box>
106
109
  {footnote && (
107
110
  <Box __css={styles.helper}>
108
- <HelperErrorText isInvalid={isInvalid} id={`${id}-helperText`}>
109
- {footnote}
110
- </HelperErrorText>
111
+ <HelperErrorText
112
+ id={`${id}-helperText`}
113
+ isInvalid={isInvalid}
114
+ text={footnote}
115
+ />
111
116
  </Box>
112
117
  )}
113
118
  </>
@@ -5,7 +5,7 @@ exports[`Toggle Renders the UI snapshot correctly 1`] = `
5
5
  className="css-0"
6
6
  >
7
7
  <label
8
- className="chakra-switch css-u8kezd"
8
+ className="chakra-switch css-16pgy8f"
9
9
  onClick={[Function]}
10
10
  >
11
11
  <input
@@ -66,7 +66,7 @@ exports[`Toggle Renders the UI snapshot correctly 2`] = `
66
66
  className="css-0"
67
67
  >
68
68
  <label
69
- className="chakra-switch css-u8kezd"
69
+ className="chakra-switch css-16pgy8f"
70
70
  data-checked=""
71
71
  onClick={[Function]}
72
72
  >
@@ -131,7 +131,7 @@ exports[`Toggle Renders the UI snapshot correctly 3`] = `
131
131
  className="css-0"
132
132
  >
133
133
  <label
134
- className="chakra-switch css-u8kezd"
134
+ className="chakra-switch css-16pgy8f"
135
135
  data-invalid=""
136
136
  onClick={[Function]}
137
137
  >
@@ -195,7 +195,7 @@ exports[`Toggle Renders the UI snapshot correctly 4`] = `
195
195
  className="css-0"
196
196
  >
197
197
  <label
198
- className="chakra-switch css-u8kezd"
198
+ className="chakra-switch css-16pgy8f"
199
199
  data-disabled=""
200
200
  onClick={[Function]}
201
201
  >